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”的消息,包含工具调用的结果。除了role
和 content
之外,这类消息还有:
tool_call_id
字段,表示生成该结果的工具调用的IDartifact
字段,用于传递工具执行的任意附加产物,这些产物对跟踪有用,但不应传递给模型。
FunctionMessage(已废弃) #
这是OpenAI旧版函数调用API的消息类型。应使用 ToolMessage
来替代。