LangChain4j学习(二)
前提:使用LangChain4j + SpringBoot + DashScope通义千问
JavaAI:LangChain4j学习(一) 集成SpringBoot和阿里通义千问DashScope
基础聊天
使用基础 API
ChatMessage
目前有四种类型的聊天消息
UserMessage:来自用户的消息。 用户可以是应用程序的最终用户 (人类) 或应用程序本身。 根据 LLM 支持的形式,可以包含文本 或其他方式。
AiMessage:由 AI 生成的消息,通常是AI模型接收消息后的响应结果,如果是聊天,则响应为回复的消息,如果是工具调用,则效应为工具调用的具体信息 。
SystemMessage:来自系统的消息。 通常位于对话的开头,作为开发人员应该定义此消息的内容。 通常会写LLM 在对话中的角色的说明, 它应该如何表现,以何种方式回答等。
CustomMessage:可以包含任意属性的自定义消息。此消息类型只能由支持它的实现使用(目前只有 Ollama)。
注意:此处的UserMessage导包为 import dev.langchain4j.data.message.UserMessage;
public String MultipleChatMessage( String message) {
ChatLanguageModel model = QwenChatModel.builder()
.apiKey("xxxxxxxxxxxxxxxxxxx")
.modelName("qwen-plus")
.build();
UserMessage firstUserMessage = UserMessage.from("你好,我是小可");
AiMessage firstAiMessage = model.chat(firstUserMessage).aiMessage();
UserMessage secondUserMessage = UserMessage.from("我是谁?");
AiMessage secondAiMessage = model.chat(firstUserMessage, firstAiMessage, secondUserMessage).aiMessage();
return model.chat(message);
}
记忆存储
基础API 和 高级API的 存储方式有所不同,以下介绍五种
- 低级:使用ConversationalChain
- 高级:使用AiService
- 高级:使用AiService ,每一位用户聊天记录单独存储
- 高级:使用AiService ,使用MapDB存储聊天内容
- 高级:使用AiService ,每一位用户聊天记录单独存储,使用MapDB存储聊天内容
使用ConversationalChain
优点:可以完全控制聊天记录,决定是否要将特定消息添加到内存中
如果需要,可以在保存之前处理/修改消息
public void memoryMaxToken1(){
ChatMemory chatMemory = TokenWindowChatMemory.withMaxTokens(300,new QwenTokenizer(apiKey, modelName));
ChatLanguageModel model = QwenChatModel.builder()
.modelName(modelName)
.build();
chatMemory.add(userMessage("你好,我是小可"));
AiMessage ans = model.chat(chatMemory.messages()).aiMessage();
logger.info("ans:{}",ans.text());
chatMemory.add(ans);
chatMemory.add(userMessage("我是谁"));
AiMessage ansWithName = model.chat(chatMemory.messages()).aiMessage();
logger.info("ans:{}",ans.text());
chatMemory.add(ans);
}
使用AiService
如果使用AiService需要langchain4j版本大于等于1.0.0-beta2
且需要在pom.xml中导入依赖
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-spring-boot-starter</artifactId

最低0.47元/天 解锁文章
1217

被折叠的 条评论
为什么被折叠?



