Messages

Messages #

一些语言模型接受消息列表作为输入并返回一条消息。消息有几种不同类型,所有消息都包含 role(角色)、content(内容)和 response_metadata(响应元数据)属性。

  • role 描述了是谁在发送消息。标准角色包括“user”(用户)、“assistant”(助手)、“system”(系统)和“tool”(工具)。LangChain 为不同的角色提供了不同的消息类。
  • content 属性描述了消息的内容,可以是以下几种:
    • 一个字符串(大多数模型处理这种类型的内容)
    • 字典列表(用于多模态输入,其中字典包含input type和input location的信息)

消息可以有一个可选的name属性,用于区分具有相同角色的多个发言者。例如,如果聊天记录中有两个用户,区分他们是有用的,但并非所有模型都支持此功能。

HumanMessage #

表示角色为“user”的消息。

AIMessage #

表示角色为“assistant”的消息,除了 content 属性外,这些消息还包含:

  • response_metadata: 包含响应的额外元数据,通常根据不同的模型提供商而有所不同。例如,log-probs和token使用情况等信息可能会存储在这里。
  • tool_calls: 代表模型调用工具的决定,作为AIMessage的一部分输出。可以通过 .tool_calls 属性访问。这一属性返回一个 ToolCalls 列表,ToolCall 是包含以下参数的字典:
    • name:应调用的工具名称
    • args:传递给工具的参数
    • id:工具调用的 ID

SystemMessage #

表示角色为“system”的消息,它告诉模型如何表现。不是所有模型提供商都支持。

ToolMessage #

表示角色为“tool”的消息,包含工具调用的结果。除了rolecontent 之外,这类消息还有:

  • tool_call_id 字段,表示生成该结果的工具调用的ID
  • artifact字段,用于传递工具执行的任意附加产物,这些产物对跟踪有用,但不应传递给模型。

FunctionMessage(已废弃) #

这是OpenAI旧版函数调用API的消息类型。应使用 ToolMessage来替代。

© 2024 青蛙小白
comments powered by Disqus