langchain messages

[复制链接]
发表于 2025-12-23 02:20:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
Messages对象可以用在提示词和谈天信息中。现在重要有Message和MessageChunk两种范例,这里仅以Message类为主举行先容。Message类重要有以下几种:

      
  • AIMessage: 大模子返回的信息,雷同于OpenAI模子中assistant范例的消息。  
  • ChatMessage: ChatMessage有一个role字段,用于标识消息发送者的脚色或范例。  
  • FunctionMessage/ToolMessage:向LLM返回函数或工具得到的信息。FunctionMessage是ToolMessage的旧版本。  
  • SystemMessage: 体系脚色信息,雷同于OpenAI模子中system范例的消息。  
  • HumanMessage:用户脚色的信息,雷同于OpenAI模子中user范例的消息。
SystemMessage

SystemMessage 是 LangChain 中用于界说体系消息的一个类,重要用于预设或引导 AI 模子的运动。这类消息通常作为一系列输入消息中的第一个通报,以设定对话的上下文或引导 AI 的相应方式。
重要功能


      
  • 预设 AI 运动:通过体系消息,可以指定 AI 的脚色、名称或运动规范,从而影响后续的对话内容。  
  • 设置对话上下文:体系消息为整个对话提供初始的配景信息,有助于 AI 更好地明白和相应用户的哀求。
利用示例

  1. from langchain_core.messages import HumanMessage, SystemMessage
  2. messages = [
  3.     SystemMessage(
  4.         content="You are a helpful assistant! Your name is Bob."
  5.     ),
  6.     HumanMessage(
  7.         content="What is your name?"
  8.     )
  9. ]
  10. # 定义一个聊天模型并使用这些消息进行调用
  11. print(model.invoke(messages))
复制代码
在这个示例中,SystemMessage 被用来设定 AI 的名称为 Bob,并指明它是一个乐于助人的助手。当用户问到“你的名字是什么?”时,AI 会根据体系消息中的设定举行回应。
参数分析


      
  • content (str 或 List[Union[str, Dict]], 必须): 消息的重要内容,可以是字符串或字符串和字典的列表。  
  • id (Optional[str]): 消息的唯一标识符,通常由天生消息的提供者或模子提供。  
  • name (Optional[str]): 消息的名称,用于提供一个易于阅读的标识。  
  • response_metadata (dict, 可选): 相应的元数据,比方相应头、日志日志概率、token 计数等。  
  • type (Literal['system'], 默认值为 'system'): 消息的范例,用于序列化时区分差别范例的消息。
方法


      
  • pretty_print(): 无返回值,用于以可读的格式打印消息内容。  
  • pretty_repr(html: bool = False) → str: 返回消息的可读性高的字符串表现。假如 html 为 True,则返回包罗 HTML 标签的格式化字符串。
利用场景

SystemMessage 常用于以了局景:
      
  • 运动规范:指引 AI 在回复题目时依照特定的风格或规则。  
  • 上下文初始化:提供初始的配景信息,使 AI 更好地明白后续的用户输入。
留意事项


      
  • 序次紧张:SystemMessage 通常应作为消息序列中的第一个消息通报,以确保其对整个对话的引导作用。  
  • 内容计划:编写体系消息时,应明白、简便地形貌 AI 的脚色和盼望运动,以克制歧义。
通过公道利用 SystemMessage,可以显着提升 AI 对话的质量和划一性,使其更好地满意用户的需求。
HumanMessage

HumanMessage 是 LangChain 中用于界说来自人类用户的消息的一个类。它代表用户发送给 AI 模子的输入,是对话交互中的关键构成部门。通过 HumanMessage,用户可以向模子提出题目、发出指令或举行任何情势的交换,模子则基于这些消息天生相应的相应。
重要功能


      
  • 用户输入通报:HumanMessage 用于通报来自用户的现实输入,是驱动对话举行的焦点。  
  • 对话上下文构建:团结其他范例的消息(如 SystemMessage),HumanMessage 有助于构建完备的对话上下文,使模子可以或许更正确地明白用户意图。  
  • 消息标识与元数据:支持为每条消息分配唯一标识符和附加元数据,便于管理和追踪对话流程。
利用示例

以下示例展示了怎样利用 HumanMessage 与 SystemMessage 共同构建对话,并调用谈天模子天生相应:
  1. from langchain_core.messages import HumanMessage, SystemMessage
  2. messages = [
  3.     SystemMessage(
  4.         content="You are a helpful assistant! Your name is Bob."
  5.     ),
  6.     HumanMessage(
  7.         content="What is your name?"
  8.     )
  9. ]
  10. # 实例化一个聊天模型并使用这些消息进行调用
  11. model = ...  # 替换为具体的模型实例
  12. print(model.invoke(messages))
复制代码
在这个示例中,HumanMessage 用于通报用户的题目“你的名字是什么?”,而 SystemMessage 则为模子设定了初始的脚色和名称。当模子汲取到这些消息时,会根据体系消息中的指引举行相应。
参数分析


      
  • content (str 或 List[Union[str, Dict]], 必须):消息的重要内容,可以是单一字符串或字符串与字典的列表,用于形貌更复杂的消息布局。  
  • example (bool, 可选,默认值为 False):用于标志消息是否为示例对话的一部门。现在大多数模子忽略此参数,发起克制利用。  
  • id (str | None, 可选):消息的唯一标识符,通常由天生消息的提供者或模子提供,以便于消息的追踪和管理。  
  • name (str | None, 可选):消息的名称,用于提供一个易于阅读和辨认的标识。此字段的利用取决于模子的实现。  
  • response_metadata (dict, 可选):相应的元数据,比方相应头、日志日志概率(logprobs)、token 计数等,用于记载与消息干系的额外信息。  
  • type (Literal['human'], 默认值为 'human'):消息的范例,用于序列化时区分差别范例的消息。
方法


      
  • pretty_print(): 无返回值,用于以可读的格式打印消息内容,便于调试和检察。  
  • pretty_repr(html: bool = False) → str: 返回消息的可读性高的字符串表现。假如 html 为 True,则返回包罗 HTML 标签的格式化字符串,实用于须要在网页或富文本环境中展示的场景。
利用场景

HumanMessage 常用于以了局景:
      
  • 用户提问:用户向 AI 模子提出题目,寻求资助或信息。  
  • 指令实行:用户下达指令,要求模子实行特定任务,如天生文本、翻译语言等。  
  • 对话交互:在多轮对话中,用户通过多条 HumanMessage 与模子举行连续互动。  
  • 情绪交换:用户表达情绪、意见或反馈,模子根据这些信息做出相应的回应。
留意事项


      
  • 消息序次:在对话中,HumanMessage 应按照现实对话的序次通报,以确保模子可以或许精确明白对话的上下文和盼望。  
  • 内容清楚:编写 HumanMessage 时,应确保内容清楚、具体,克制歧义,以便模子可以或许正确明白用户意图。  
  • 唯一标识:为每条消息分配唯一的 id(假如大概),有助于在复杂对话或多线程对话中追踪消息泉源和相应。  
  • 克制滥用 example 参数:由于现在大多数模子忽略 example 参数,发起克制依靠此参数来标志
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表