乐学LangChain(3):多轮对话和批量对话

大模型向量数据库机器学习

1 关于对话模型的Message

内置的消息类型:

  • SystemMessage :设定AI行为规则或背景信息。比如设定AI的初始状态、行为模式或对话的总体目标。比如“作为一个代码专家”,或者“返回json格式”。通常作为输入消息序列中的第一个 传递。
  • HumanMessage :表示来自用户输入。比如“实现 一个快速排序方法”
  • AIMessage :存储AI回复的内容。这可以是文本,也可以是调用工具的请求
  • ChatMessage :可以自定义角色的通用消息类型
  • FunctionMessage/ToolMessage :函数调用/工具消息,用于函数调用结果的消息类型
  
from langchain_openai import ChatOpenAI  
from langchain_core.messages import SystemMessage, HumanMessage  
import dotenv  
dotenv.load_dotenv()  
  
messages=[  
    SystemMessage(content="你是一个专业的python代码编写助手"),  
    HumanMessage(content="你是谁")  
]  
chat_model = ChatOpenAI(model="Qwen/Qwen3-14B")  
response=chat_model.invoke(messages)  
print(response.content)

picture.image

2、批量调用

多个消息可以批量发送。

  
from langchain_openai import ChatOpenAI  
from langchain_core.messages import SystemMessage, HumanMessage,AIMessage  
import dotenv  
dotenv.load_dotenv()  
  
messages1=[  
    SystemMessage(content="你是一个专业的python代码编写助手"),  
    HumanMessage(content="请用户实现一段冒泡算法"),  
]  
  
messages2=[  
    SystemMessage(content="你是一个专业的java代码编写助手"),  
    HumanMessage(content="请用户实现一段冒泡算法"),  
]  
  
messages3=[  
    SystemMessage(content="你是一个专业的js代码编写助手"),  
    HumanMessage(content="请用户实现一段冒泡算法"),  
]  
  
messages_arr = [messages1, messages2, messages3]  
  
chat_model = ChatOpenAI(model="Qwen/Qwen3-14B")  
response=chat_model.batch(messages_arr)  
print(response)  

3、异步调用

为了尽可能简化自定义链的创建,LangChain实现了一个"Runnable"协议。许多LangChain组件实现了 Runnable 协议,包括聊天模型、提示词模板、输出解析器、检索器、代理(智能体)等。

Runnable 定义的公共的调用方法如下:

  • invoke : 处理单条输入,等待LLM完全推理完成后再返回调用结果

  • stream : 流式响应,逐字输出LLM的响应结果

  • batch : 处理批量输入

这些也有相应的异步方法,应该与 asyncio 的 await 语法一起使用以实现并发:

  • astream : 异步流式响应

  • ainvoke : 异步处理单条输入

  • abatch : 异步处理批量输入

  • astream_log : 异步流式返回中间步骤,以及最终响应

0
0
0
0
关于作者
关于作者

文章

0

获赞

0

收藏

0

相关资源
火山引擎大规模机器学习平台架构设计与应用实践
围绕数据加速、模型分布式训练框架建设、大规模异构集群调度、模型开发过程标准化等AI工程化实践,全面分享如何以开发者的极致体验为核心,进行机器学习平台的设计与实现。
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论