文章目录
一、什么是 Message
一些语言模型将消息列表作为输入并返回消息。有几种不同类型的消息。所有消息都有一个 role、content 和 response_metadata 属性。
role 描述了 WHO 正在传达的信息。LangChain 为不同的角色提供了不同的消息类。
content 描述消息的内容。这可能是一些不同的事情:
- 字符串,大多数模型处理此类内容。
- 字典列表,用于多模态输入,其中字典包含有关该输入类型和输入位置的信息。
1、HumanMessage
这表示来自用户的消息。
2、AIMessage
这表示来自模型的消息。除了内容属性,这些消息还具有:
- response_metadata,该属性包含有关响应的其他元数据。这里的数据通常针对每个模型提供商。这是可以存储 log-probs 和 tocken 使用情况等信息的地方。
- tool_calls,这些表示语言模型调用工具的决定。它们作为一部分被包含在 AIMessage 的输出内。可以在具有 .tool_calls 属性的地方访问它们。此属性返回字典列表,每本词典都有以下关键字:
- name,被调用的 tool 的名字
- args,给这个 tool 的 argument
- id,这个 tool 调用的 id
3、SystemMessage
这表示一个 SystemMessage,该消息告诉模型如何操作。并非所有模型提供商都支持此功能。
4、FunctionMessage
这表示函数调用的结果。除了 role 和 content 外,此消息还有一个 name 参数,它传达了为产生此结果而调用的函数的名称。
5、ToolMessage
这表示工具调用的结果。这与 FunctionMessage 不同,以匹配 OpenAI 的函数和工具消息类型。除了role 和 content 外,此消息还有一个 tool_call_id 参数,该参数将调用的 id 传递给被调用以产生此结果的工具。
二、如何使用 Message
消息是聊天模型的输入和输出。它们有一些 content 和一个 role,描述了消息的来源。
1、如何修剪消息
跳转到另一篇文章 how to trim message
2、过滤消息
跳转到另一篇文章 how to filter message