Token Profile
Token profile 面向离散 token 或 token chunk 的增量输出。
适用场景
- AI NPC 对话。
- AI Coding 多 Agent 协作中的流式文本或工具结果说明。
- 实时交互式代理返回的文本增量。
阅读方式
- 先看 Descriptor 公共头,理解 token 序列怎么被 profile、schema 和 chunk 偏移锚定。
- 再看 Schema 与 Body,理解 token 单位、位置范围、终止语义和 stop reason。
- 最后看 Payload Frame,理解真正的 token chunk 在 wire 上是什么样子。
报文设计骨架
Mock Dump 示例
下面同样使用 JSON 风格 mock dump 做结构示意。重点不是某个字节偏移,而是让你看到 token profile 如何把公共头、descriptor、序列语义和 token chunk 接在一起。
json
{
"message_type": "RESULT_PUSH",
"common_header": {
"version_major": 1,
"wire_format": 0,
"msg_type": "RESULT_PUSH",
"header_len": 40,
"meta_len": 24,
"body_len": 96,
"session_id": "0x00000034",
"frame_id": "0x00000c21",
"view_id": "0x00000000",
"route_id": "0x00000009",
"trace_id": "0x8e6a6e6db54a11af"
},
"fixed_metadata": {
"result_status": "partial",
"flow_scope": "session",
"flow_credit_delta": 1
},
"typed_payload_descriptor": {
"profile_id": "token",
"schema_id": "llm.chat.delta.v1",
"schema_version": 1,
"stream_semantics": "ordered_incremental",
"offset": 128,
"length": 36,
"descriptor_flags": ["stop_reason_present"]
},
"profile_body": {
"token": {
"token_unit": "bpe",
"sequence_start": 128,
"sequence_end": 136,
"terminal": false,
"stop_reason": "none"
}
},
"payload_frame": {
"token_chunk": " and then retries over TCP"
}
}使用者最关心的语义
partial表示当前 token chunk 已可消费,但序列尚未结束。terminal表示本次 operation 或该 profile 下的输出已经到达终止点。- stop reason 是否显式给出,取决于 schema 与 profile 解释,而不是公共头硬编码。
工程上要避免的误区
- 不要把 token 流伪装成 tensor section。
- 不要假设 logits、候选分布和采样状态一定属于公共必选字段。
- 不要把“文本流”误解成 token profile 的唯一形态;它本质上描述的是离散序列增量语义。