JavaAI: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的 存储方式有所不同,以下介绍五种

  1. 低级:使用ConversationalChain
  2. 高级:使用AiService
  3. 高级:使用AiService ,每一位用户聊天记录单独存储
  4. 高级:使用AiService ,使用MapDB存储聊天内容
  5. 高级:使用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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值