运行(span)数据格式
推荐阅读
在深入了解此内容之前,阅读以下内容可能会有所帮助
LangSmith 以一种易于导出和导入的简单格式存储和处理跟踪数据。
这些字段中有许多是可选的或不重要的,但为了完整性而包含在内。**加粗**的字段是最重要的。
字段名 | 类型 | 描述 |
---|---|---|
id | UUID | span 的唯一标识符。 |
名称 | 字符串 | 与运行关联的名称。 |
输入 | 对象 | 提供给运行的输入映射或集合。 |
运行类型 | 字符串 | 运行类型,例如“llm”、“chain”、“tool”。 |
开始时间 | 日期时间 | 运行的开始时间。 |
结束时间 | 日期时间 | 运行的结束时间。 |
额外信息 | 对象 | 运行的任何额外信息。 |
错误 | 字符串 | 如果运行遇到错误,则为错误消息。 |
输出 | 对象 | 运行生成的输出映射或集合。 |
事件 | 对象数组 | 与运行关联的事件对象列表。这与流式执行的运行相关。 |
标签 | 字符串数组 | 与运行关联的标签。 |
跟踪 ID | UUID | 运行所属跟踪的唯一标识符。这也是跟踪根运行的 id 字段。 |
点分顺序 | 字符串 | 排序字符串,层次结构。格式:run_start_time Zrun_uuid .child_run_start_time Zchild_run_uuid ... |
状态 | 字符串 | 运行执行的当前状态,例如“错误”、“待处理”、“成功” |
子运行 ID | UUID 数组 | 所有子运行的 ID 列表。 |
直接子运行 ID | UUID 数组 | 此运行的直接子运行的 ID 列表。 |
父运行 ID | UUID 数组 | 所有父运行的 ID 列表。 |
反馈统计 | 对象 | 此运行的反馈统计汇总。 |
参考示例 ID | UUID | 与运行关联的参考示例的 ID。通常仅在评估运行中存在。 |
总 token 数 | 整数 | 运行处理的 token 总数。 |
提示 token 数 | 整数 | 运行提示中的 token 数。 |
完成 token 数 | 整数 | 运行完成中的 token 数。 |
总成本 | 字符串 | 与处理运行相关的总成本。 |
提示成本 | 字符串 | 与运行的提示部分相关的成本。 |
完成成本 | 字符串 | 与运行完成相关的成本。 |
首个 token 时间 | 日期时间 | 生成第一个 token 的时间。 |
会话 ID | 字符串 | 运行的会话标识符。 |
在数据集中 | 布尔值 | 指示运行是否包含在数据集中。 |
父运行 ID | UUID | 父运行的唯一标识符。 |
执行顺序(已弃用) | 整数 | 此运行在跟踪中执行的顺序。 |
序列化 | 对象 | 如果适用,执行运行的对象的序列化状态。 |
清单 ID(已弃用) | UUID | 与 span 关联的清单的标识符。 |
清单 S3 ID | UUID | 清单的 S3 标识符。 |
输入 S3 URL | 对象 | 输入的 S3 URL。 |
输出 S3 URL | 对象 | 输出的 S3 URL。 |
定价模型 ID | UUID | 应用于运行的定价模型的标识符。 |
应用路径 | 字符串 | 此运行的应用(UI)路径。 |
上次排队时间 | 日期时间 | span 上次排队的时间。 |
分享 token | 字符串 | 用于共享访问运行数据的 token。 |
以下是上述格式的运行 JSON 表示示例
{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"name": "string",
"inputs": {},
"run_type": "llm",
"start_time": "2024-04-29T00:49:12.090000",
"end_time": "2024-04-29T00:49:12.459000",
"extra": {},
"error": "string",
"execution_order": 1,
"serialized": {},
"outputs": {},
"parent_run_id": "f8faf8c1-9778-49a4-9004-628cdb0047e5",
"manifest_id": "82825e8e-31fc-47d5-83ce-cd926068341e",
"manifest_s3_id": "0454f93b-7eb6-4b9d-a203-f1261e686840",
"events": [{}],
"tags": ["foo"],
"inputs_s3_urls": {},
"outputs_s3_urls": {},
"trace_id": "df570c03-5a03-4cea-8df0-c162d05127ac",
"dotted_order": "20240429T004912090000Z497f6eca-6276-4993-bfeb-53cbbbba6f08",
"status": "string",
"child_run_ids": ["497f6eca-6276-4993-bfeb-53cbbbba6f08"],
"direct_child_run_ids": ["497f6eca-6276-4993-bfeb-53cbbbba6f08"],
"parent_run_ids": ["f8faf8c1-9778-49a4-9004-628cdb0047e5"],
"feedback_stats": {
"correctness": {
"n": 1,
"avg": 1.0
}
},
"reference_example_id": "9fb06aaa-105f-4c87-845f-47d62ffd7ee6",
"total_tokens": 0,
"prompt_tokens": 0,
"completion_tokens": 0,
"total_cost": "string",
"prompt_cost": "string",
"completion_cost": "string",
"price_model_id": "0b5d9575-bec3-4256-b43a-05893b8b8440",
"first_token_time": null,
"session_id": "1ffd059c-17ea-40a8-8aef-70fd0307db82",
"app_path": "string",
"last_queued_at": null,
"in_dataset": true,
"share_token": "d0430ac3-04a1-4e32-a7ea-57776ad22c1c"
}
dotted_order
是什么?
运行的点分顺序是一个可排序的键,它完整地指定了其在跟踪层次结构中的位置。
以下是一个示例
import langsmith as ls
@ls.traceable
def grandchild():
p("grandchild")
@ls.traceable
def child():
grandchild()
@ls.traceable
def parent():
child()
如果您打印出每个阶段的 ID,可能会得到以下结果
parent
run_id=0e01bf50-474d-4536-810f-67d3ee7ea3e7
trace_id=0e01bf50-474d-4536-810f-67d3ee7ea3e7
parent_run_id=null
dotted_order=20240919T171648521691Z0e01bf50-474d-4536-810f-67d3ee7ea3e7
child
run_id=a8024e23-5b82-47fd-970e-f6a5ba3f5097
trace_id=0e01bf50-474d-4536-810f-67d3ee7ea3e7
parent_run_id=0e01bf50-474d-4536-810f-67d3ee7ea3e7
dotted_order=20240919T171648521691Z0e01bf50-474d-4536-810f-67d3ee7ea3e7.20240919T171648523407Za8024e23-5b82-47fd-970e-f6a5ba3f5097
grandchild
run_id=0ec6b845-18b9-4aa1-8f1b-6ba3f9fdefd6
trace_id=0e01bf50-474d-4536-810f-67d3ee7ea3e7
parent_run_id=a8024e23-5b82-47fd-970e-f6a5ba3f5097
dotted_order=20240919T171648521691Z0e01bf50-474d-4536-810f-67d3ee7ea3e7.20240919T171648523407Za8024e23-5b82-47fd-970e-f6a5ba3f5097.20240919T171648523563Z0ec6b845-18b9-4aa1-8f1b-6ba3f9fdefd6
注意一些不变式
- “id”等于点分顺序的最后 36 个字符(最后一个“Z”后面的后缀)。例如,在孙级运行中查看
0ec6b845-18b9-4aa1-8f1b-6ba3f9fdefd6
。 - “trace_id”等于点分顺序中的第一个 UUID(即
dotted_order.split('.')[0].split('Z')[1]
)。 - 如果“parent_run_id”存在,它是点分顺序中的倒数第二个 UUID。例如,在孙级运行中查看
a8024e23-5b82-47fd-970e-f6a5ba3f5097
。 - 如果将 dotted_order 按点分割,每个片段的格式为 (
<run_start_time>Z<run_id>
)