🐳 第六章 Agent一轮工作的全过程
📄 一句话概括

chunk 是流式输出的一小段;逐段保留换回的是完整的输出过程——先说什么后说什么、哪里被打断,全文里这些全丢了。

📝 本节和前面几节的关系

6.5 把 chunk 列进四类事件,这一节单独回答:拼好的全文已经有了,碎片还留着干嘛?

一、chunk 是什么

模型输出是流式的:一段回复由几十个小片段(chunk)依次吐出。

存储上,每个 chunk 是流水里一条小事件——一段 200 字的回复按 20 个 chunk 流出,就是 20 条。

二、留 chunk 留的是什么

时序信息:

这些在拼好的全文里全部丢失——全文像幻灯片,chunk 流像录像。

三、算一笔账:存储换过程

回放像录像 vs 像幻灯片——差的就是这些碎片。

而成本呢?几十 KB 级别。这买卖不用犹豫。

四、对调试的具体价值

五、动手 Demo:为什么还要保留 assistant/chunk

两种留法的回放效果,加一笔存储账:

ways = [("只留拼好的全文", "像看幻灯片 - 只有结论"),
        ("逐段保留 chunk", "像看录像 - 连节奏都在")]
for a, b in ways:
    print("  %-16s -> %s" % (a, b))
print()
print("  200 字回复 / 20 个 chunk => 每段约 10 字")
print("  多存: 几十 KB 级别;  换回: 完整的输出过程")

实跑输出:

--------------------------------------------------------------------
为什么还要保留 assistant/chunk
--------------------------------------------------------------------
  chunk = 流式输出的一小段。一段回复是几十个 chunk 拼出来的。

  做法               回放效果
  ----------------------------------------
  只留拼好的全文     像看幻灯片——只有结论
  逐段保留 chunk     像看录像——连节奏都在
  ----------------------------------------

  留 chunk 的理由:**时序信息在里面**——先说什么后说什么、
  哪里停顿了、哪里被工具调用打断,全文里这些全丢了。

  算一笔账:一段 200 字的回复按 20 个 chunk 流出——

    每段约 10 字
    存储            多几十条小事件(JSONL 里很便宜)
    换回的          完整的输出过程

  便宜,而且买回来的是【过程】——这买卖划算。

时序信息在碎片里——这是留 chunk 的唯一理由,也是充分的理由。 成本几十 KB、收益完整过程——这买卖不用犹豫。 调试三例里最有用的是定位跑偏点——第几个 chunk 之后变的不对。

30 秒实验

  1. 算一笔账:一段 500 字的回复按 50 个 chunk 流出,多存多少?
  2. 举一个【只有 chunk 流才能还原】的用户投诉场景。
  3. 说说【幻灯片】与【录像】的比喻分别对应哪种留法。

常见误区

  1. 错误:全文都存了,chunk 是冗余,删掉省空间。——纠正:时序信息只在 chunk 里——删了就还原不了过程。
  2. 错误:chunk 只有界面打字机效果有用。——纠正:调试定位跑偏点靠它——第几段开始不对一目了然。
  3. 错误:存 chunk 成本太高。——纠正:几十 KB 级别——JSONL 追加存储很便宜。
自测三问(点开对答案) 1. chunk 是什么? —— 流式输出的一小段——一段回复由几十个 chunk 依次吐出拼成。 2. 留 chunk 留下的是什么? —— **时序信息**:顺序、停顿、与工具调用的交错点。 3. 两种留法的比喻是什么? —— 全文=**幻灯片**(只有结论);chunk 流=**录像**(连过程带节奏)。

相关笔记