AgentMessage.md

完整json对话日志注解

{
  "messages": [
    // ==============================================
    // 1. 用户提问
    // ==============================================
    {
      "type": "HumanMessage",                  // 消息类型:用户消息
      "content": "10 + 5 等于多少",            // 消息内容
      "additional_kwargs": {},                  // 附加参数
      "response_metadata": {},                  // 响应元数据
      "id": "64620d58-44b2-4563-b521-911bf1e22237"  // 消息唯一ID
    },

    // ==============================================
    // 2. AI 第一次响应:调用计算器工具
    // ==============================================
    {
      "type": "AIMessage",                     // 消息类型:AI消息
      "content": "",                           // 本次回复内容为空(仅调用工具)
      "additional_kwargs": {
        "refusal": null                        // 无拒绝内容
      },
      "response_metadata": {
        "token_usage": {
          "completion_tokens": 116,            // 模型生成token数
          "prompt_tokens": 457,                // 输入提示token数
          "total_tokens": 573,                 // 总token数
          "completion_tokens_details": {
            "accepted_prediction_tokens": null,  // 无预测接受token
            "audio_tokens": null,                // 无音频token
            "reasoning_tokens": 63,              // 推理过程消耗token
            "rejected_prediction_tokens": null,  // 无预测拒绝token
            "text_tokens": 116                   // 纯文本生成token
          },
          "prompt_tokens_details": {
            "audio_tokens": null,              // 无音频输入token
            "cached_tokens": null,             // 无缓存token
            "text_tokens": 457                 // 输入文本token数
          }
        },
        "model_provider": "openai",            // 模型提供商标识
        "model_name": "qwen3.5-flash",         // 模型名称
        "system_fingerprint": null,            // 系统指纹
        "id": "chatcmpl-af9abe53-bc42-96e5-85f1-d578b357f6d0",  // 对话ID
        "finish_reason": "tool_calls",         // 结束原因:调用工具
        "logprobs": null                       // 无概率日志
      },
      "id": "lc_run--019d22ad-b05a-74f3-a7ac-d3c17b9a7d42-0",  // 运行ID
      "tool_calls": [                          // 工具调用列表
        {
          "name": "calculator",                // 调用工具名:计算器
          "args": {
            "operation": "add",               // 运算类型:加法
            "a": 10,                          // 运算数1
            "b": 5                            // 运算数2
          },
          "id": "call_dc13fc4ca7e8437e88057c29",  // 工具调用ID
          "type": "tool_call"                 // 类型:工具调用
        }
      ],
      "invalid_tool_calls": [],               // 无效工具调用
      "usage_metadata": {
        "input_tokens": 457,                  // 输入token
        "output_tokens": 116,                 // 输出token
        "total_tokens": 573,                  // 总token
        "input_token_details": {},            // 输入token详情
        "output_token_details": {
          "reasoning": 63                     // 输出中推理token
        }
      }
    },

    // ==============================================
    // 3. 工具返回结果
    // ==============================================
    {
      "type": "ToolMessage",                  // 消息类型:工具返回消息
      "content": "15.0",                      // 工具执行结果
      "name": "calculator",                   // 工具名称
      "id": "2866328e-ca4f-43dc-9702-911ebf703c61",  // 消息ID
      "tool_call_id": "call_dc13fc4ca7e8437e88057c29"  // 对应工具调用ID
    },

    // ==============================================
    // 4. AI 最终回答
    // ==============================================
    {
      "type": "AIMessage",                    // 消息类型:AI最终回复消息
      "content": "10 + 5 等于 15",            // 最终回答内容
      "additional_kwargs": {
        "refusal": null                       // 无拒绝
      },
      "response_metadata": {
        "token_usage": {
          "completion_tokens": 45,            // 本次生成token
          "prompt_tokens": 527,               // 本次输入token
          "total_tokens": 572,                // 本次总token
          "completion_tokens_details": {
            "accepted_prediction_tokens": null,
            "audio_tokens": null,
            "reasoning_tokens": 30,           // 本次推理token
            "rejected_prediction_tokens": null,
            "text_tokens": 45                 // 本次文本token
          },
          "prompt_tokens_details": {
            "audio_tokens": null,
            "cached_tokens": null,
            "text_tokens": 527
          }
        },
        "model_provider": "openai",
        "model_name": "qwen3.5-flash",
        "system_fingerprint": null,
        "id": "chatcmpl-cc57cbb8-191a-9aaa-882d-218385328ab9",
        "finish_reason": "stop",              // 结束原因:正常完成
        "logprobs": null
      },
      "id": "lc_run--019d22ad-b5d0-7852-8027-c2acec6ce071-0",
      "tool_calls": [],                       // 无额外工具调用
      "invalid_tool_calls": [],
      "usage_metadata": {
        "input_tokens": 527,
        "output_tokens": 45,
        "total_tokens": 572,
        "input_token_details": {},
        "output_token_details": {
          "reasoning": 30
        }
      }
    }
  ]
}

对话日志参数说明(文字版)

本文档对应“10+5等于多少”的对话日志,按消息类型分类,逐字段解释所有参数含义,清晰易懂,可直接复制到Markdown文件中使用。

一、整体结构说明

整个日志的最外层是 messages 数组,用于存储完整的对话流程,包含4条核心消息(用户消息、AI首次响应、工具返回、AI最终回答),每条消息为一个对象,包含多个描述性参数。

二、逐消息参数详细说明

(一)第一条消息:用户消息(HumanMessage)

作用:记录用户发送的提问内容及相关标识信息,参数如下:

  • type:消息类型,值为“HumanMessage”,表示该消息是用户发送的。
  • content:消息具体内容,此处为用户的提问“10 + 5 等于多少”。
  • additional_kwargs:附加参数,为空对象({}),表示无额外补充参数。
  • response_metadata:响应元数据,为空对象({}),表示无额外响应相关的元信息。
  • id:消息唯一标识(UUID),值为“64620d58-44b2-4563-b521-911bf1e22237”,用于区分不同消息。

(二)第二条消息:AI首次响应(AIMessage)

作用:记录AI首次响应的内容(仅调用工具,无直接回答)、工具调用信息及token消耗等数据,参数如下:

  • type:消息类型,值为“AIMessage”,表示该消息是AI发送的。
  • content:AI的回复内容,此处为空字符串(""),因为AI本次仅调用工具,未直接给出回答。
  • additional_kwargs:附加参数对象,包含一个子参数 refusal,值为“null”,表示AI未拒绝回答。
  • response_metadata:响应元数据对象,包含AI响应的详细信息,子参数如下:

    • token_usage:token消耗统计对象,记录AI响应过程中消耗的token数量:

      • completion_tokens:AI生成内容消耗的token数,值为116。
      • prompt_tokens:用户输入提示消耗的token数,值为457。
      • total_tokens:总消耗token数,值为573(completion_tokens + prompt_tokens)。
      • completion_tokens_details:生成token的详细分类:

        • accepted_prediction_tokens:被接受的预测token,值为“null”,表示无相关数据。
        • audio_tokens:音频相关token,值为“null”,表示无音频内容。
        • reasoning_tokens:AI推理过程消耗的token数,值为63。
        • rejected_prediction_tokens:被拒绝的预测token,值为“null”,表示无相关数据。
        • text_tokens:纯文本生成消耗的token数,值为116。
      • prompt_tokens_details:输入提示token的详细分类:

        • audio_tokens:音频相关输入token,值为“null”,表示无音频输入。
        • cached_tokens:缓存token,值为“null”,表示无缓存可用。
        • text_tokens:纯文本输入消耗的token数,值为457。
    • model_provider:模型服务提供商,值为“openai”。
    • model_name:使用的AI模型名称,值为“qwen3.5-flash”。
    • system_fingerprint:系统指纹,值为“null”,用于标识系统版本,此处无相关数据。
    • id:对话请求ID,值为“chatcmpl-af9abe53-bc42-96e5-85f1-d578b357f6d0”,标识本次AI响应的请求。
    • finish_reason:AI响应结束的原因,值为“tool_calls”,表示AI因调用工具而结束本次响应。
    • logprobs:日志概率数据,值为“null”,表示无相关概率日志。
  • id:运行会话ID,值为“lc_run--019d22ad-b05a-74f3-a7ac-d3c17b9a7d42-0”,标识本次AI运行的会话。
  • tool_calls:工具调用列表(数组),包含1个工具调用对象,子参数如下:

    • name:调用的工具名称,值为“calculator”,表示调用计算器工具。
    • args:工具调用的参数对象,用于指定工具的操作:

      • operation:运算类型,值为“add”,表示执行加法运算。
      • a:第一个运算数,值为10。
      • b:第二个运算数,值为5。
    • id:工具调用唯一ID,值为“call_dc13fc4ca7e8437e88057c29”,用于关联工具调用与工具返回结果。
    • type:调用类型,值为“tool_call”,表示该操作是工具调用。
  • invalid_tool_calls:无效工具调用列表,为空数组([]),表示无无效的工具调用。
  • usage_metadata:token使用元数据,与response_metadata.token_usage内容一致,用于重复记录token消耗情况:

    • input_tokens:输入token数,值为457。
    • output_tokens:输出token数,值为116。
    • total_tokens:总token数,值为573。
    • input_token_details:输入token详情,为空对象({})。
    • output_token_details:输出token详情,包含reasoning子参数,值为63,表示推理过程消耗的token数。

(三)第三条消息:工具返回消息(ToolMessage)

作用:记录计算器工具的执行结果,关联对应的工具调用,参数如下:

  • type:消息类型,值为“ToolMessage”,表示该消息是工具返回的结果。
  • content:工具执行的结果,值为“15.0”,即10+5的计算结果。
  • name:工具名称,值为“calculator”,与调用的工具名称一致。
  • id:工具消息唯一ID,值为“2866328e-ca4f-43dc-9702-911ebf703c61”。
  • tool_call_id:关联的工具调用ID,值为“call_dc13fc4ca7e8437e88057c29”,与第二条消息中工具调用的ID一致,用于关联工具调用和返回结果。

(四)第四条消息:AI最终回答(AIMessage)

作用:记录AI根据工具返回结果,给出的最终用户回答,参数与第二条AI消息基本一致,差异点已标注:

  • type:消息类型,值为“AIMessage”,表示该消息是AI发送的。
  • content:AI的最终回答内容,值为“10 + 5 等于 15”,根据工具返回结果生成。
  • additional_kwargs:附加参数对象,refusal值为“null”,无拒绝回答。
  • response_metadata:响应元数据对象,与第二条消息结构一致,差异点:

    • token_usage:token消耗统计不同,completion_tokens为45、prompt_tokens为527、total_tokens为572,reasoning_tokens为30(本次推理消耗更少)。
    • id:对话请求ID,值为“chatcmpl-cc57cbb8-191a-9aaa-882d-218385328ab9”,与第二条消息的请求ID不同(为新的请求)。
    • finish_reason:结束原因,值为“stop”,表示AI正常完成回答,无需继续调用工具。
  • id:运行会话ID,值为“lc_run--019d22ad-b5d0-7852-8027-c2acec6ce071-0”,与第二条消息的会话ID不同。
  • tool_calls:工具调用列表,为空数组([]),表示本次AI回答无需再调用工具。
  • invalid_tool_calls:无效工具调用列表,为空数组([])。
  • usage_metadata:token使用元数据,与本次response_metadata.token_usage一致,input_tokens为527、output_tokens为45、total_tokens为572,reasoning为30。

三、补充说明

  • 所有id类参数均为UUID(唯一标识),用于区分不同的消息、请求、工具调用,确保日志的唯一性和可追溯性。
  • token相关参数用于统计AI运行过程中的资源消耗,reasoning_tokens表示AI进行逻辑推理(如判断是否需要调用工具、如何根据工具结果生成回答)消耗的token。
  • 本文档纯文字说明,无代码块,可直接复制到Markdown文件,也可根据需求调整格式(如添加标题层级、加粗重点参数)。
添加新评论