|
|
@ -0,0 +1,58 @@
|
|
|
|
|
|
|
|
package xyz.wbsite.ai;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
|
|
|
|
|
import dev.langchain4j.data.document.Document;
|
|
|
|
|
|
|
|
import dev.langchain4j.data.segment.TextSegment;
|
|
|
|
|
|
|
|
import dev.langchain4j.memory.chat.MessageWindowChatMemory;
|
|
|
|
|
|
|
|
import dev.langchain4j.model.input.PromptTemplate;
|
|
|
|
|
|
|
|
import dev.langchain4j.rag.DefaultRetrievalAugmentor;
|
|
|
|
|
|
|
|
import dev.langchain4j.rag.content.injector.DefaultContentInjector;
|
|
|
|
|
|
|
|
import dev.langchain4j.rag.content.retriever.EmbeddingStoreContentRetriever;
|
|
|
|
|
|
|
|
import dev.langchain4j.service.AiServices;
|
|
|
|
|
|
|
|
import dev.langchain4j.service.SystemMessage;
|
|
|
|
|
|
|
|
import dev.langchain4j.store.embedding.EmbeddingStoreIngestor;
|
|
|
|
|
|
|
|
import dev.langchain4j.store.embedding.inmemory.InMemoryEmbeddingStore;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import java.util.List;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* Easy-RAG 自定义注入提示词
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
public class Easy_RAG_Augmentor_Example {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public static void main(String[] args) {
|
|
|
|
|
|
|
|
// 加载文档
|
|
|
|
|
|
|
|
List<Document> documents = CollUtil.newArrayList(Document.from("小明+小芳=小强"));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 创建一个内存存储器,用于存储文档和其嵌入
|
|
|
|
|
|
|
|
InMemoryEmbeddingStore<TextSegment> embeddingStore = new InMemoryEmbeddingStore<>();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 使用easy-rag,可以最快捷的方式使用rag
|
|
|
|
|
|
|
|
EmbeddingStoreIngestor.ingest(documents, embeddingStore);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PromptTemplate promptTemplate = PromptTemplate.from("{{userMessage}} \n\n 使用以下信息回答:\n{{contents}}");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Assistant assistant = AiServices.builder(Assistant.class)
|
|
|
|
|
|
|
|
.chatLanguageModel(Helper.getChatModel())
|
|
|
|
|
|
|
|
.chatMemory(MessageWindowChatMemory.withMaxMessages(10))
|
|
|
|
|
|
|
|
// .contentRetriever(EmbeddingStoreContentRetriever.from(embeddingStore))
|
|
|
|
|
|
|
|
.retrievalAugmentor(DefaultRetrievalAugmentor.builder()
|
|
|
|
|
|
|
|
.contentRetriever(EmbeddingStoreContentRetriever.from(embeddingStore))
|
|
|
|
|
|
|
|
.contentInjector(DefaultContentInjector.builder().promptTemplate(promptTemplate).build())
|
|
|
|
|
|
|
|
.build()
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
.build();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
String chat = assistant.chat("小明+小芳等于什么");
|
|
|
|
|
|
|
|
System.out.println(chat);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 助手
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
interface Assistant {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
String chat(String userMessage);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|