Skip to content

Message

Message 类是一个基于 Pydantic 的数据模型,用于封装 LLM(大语言模型)对话中的每一条消息。以下是该类的详细作用说明:

1. 核心定位

Messageviolet_agents 项目中消息系统的统一数据结构,它既作为内部 Agent 之间传递消息的载体,也作为与 OpenAI 兼容 API 交互的桥梁。

2. 字段设计

字段类型作用
roleMessageRole("system", "user", "assistant", "tool")标识消息的发起角色
contentstr消息的正文内容
tool_call_idOptional[str]工具调用的唯一 ID,用于将工具返回结果与对应的调用请求关联起来
tool_callsOptional[list[Dict]]记录 Assistant 发起的工具调用请求列表
timestampdatetime消息创建的时间戳,自动填充当前时间
metadataOptional[Dict]可扩展的元数据字段,用于携带额外的上下文信息
nameOptional[str]消息发送者的名称(如工具名、Agent 名等)
reasoning_contentOptional[str]适配 DeepSeek 的思考链内容,记录 Agent 的内部推理过程,辅助调试和日志分析

3. 关键方法

  • to_openai_dict():将 Message 对象序列化为 OpenAI API 兼容的字典格式,排除 timestampmetadata 等内部字段,避免向 API 发送多余数据。

  • from_chat_completion_message()(静态方法):将 OpenAI SDK 返回的 ChatCompletionMessage 对象反向转换为项目内部的 Message 对象,实现外部 API 响应到内部模型的平滑映射。

4. 设计亮点

  1. 双格式兼容tool_calls 字段同时支持原生 Python 字典和 OpenAI SDK 类型,通过 _tool_calls_to_dict() 在初始化时统一规范化。

  2. 时间戳自动化:构造时自动填充 datetime.now(),无需手动传入。

  3. 序列化灵活to_openai_dict() 通过 exclude_none=True 自动移除值为 None 的字段,保证输出的简洁性。

  4. DeepSeek 适配reasoning_content 字段专门用于存储 DeepSeek 模型的推理过程(chain-of-thought),这对 Agent 调试和可解释性非常有价值。


总结Message 类本质上是一个消息协议层,它规范了项目内部消息的格式,同时提供了与 OpenAI 兼容 API 的双向转换能力,是 violet_agents 框架中 Agent 间通信和 LLM 交互的基础数据结构。