第三章:模型每轮究竟收到什么
我们已经读到了公告 A,它明确说“暂不支持图片导出”。模型写草稿时,却采用了转述 B 的“图片也能完整迁移”。在认定模型忽略证据之前,先要确认:A 的那句话真的进入了这一轮请求吗?
模型不是一直注视着电脑,也不会自动读遍保存的文件。运行程序要把需要的信息组织成请求,模型才能据此产生下一次响应。这个准备过程,连接着模型、工具、历史、记忆和技能。
本章产物是一份标出职责的输入包。学完后,你应能说出每项信息为什么在场、遗漏后可能怎样,以及哪些内容只是被保存了、还没有交给模型。
3.1 一轮请求,是一次信息交接
把本轮请求想成一个交接包,会比想成一句万能提示词更准确。里面既要说明当前做什么,也要交代已经发生什么,以及可以用哪些方式继续。
在消息简报中,第一次请求可能有目标、约束和工具说明;读取 A 后,下一次请求还要包含实际结果。若又发现 B 与 A 冲突,后续请求应当保留这项冲突,而非只写“已经查过资料”。
这里把交接包中的信息统称为本轮上下文。它不只是聊天记录,也包括任务说明、相关材料和工具定义。后面讨论压缩时,处理的正是这类输入;现在先看它怎样形成。
3.2 用五张卡片组织这一轮
下面是一份教学示意,不是完整接口格式,也不是某次真实模型请求的日志:
| 信息卡片 | 本轮提供什么 | 为什么需要 |
|---|---|---|
| 持续适用的说明 | 怎样工作、怎样对待不确定性 | 建立较稳定的行为约定 |
| 本次任务 | 去重、核对来源,最多形成三条草稿,不发送 | 决定这次要完成的目标与范围 |
| 相关历史 | 已经读了 A,发现它与 B 的图片说法冲突 | 避免把已经做过的事和待办混在一起 |
| 工具结果 | A 的实际正文,含“暂不支持图片” | 为判断提供可以解释的材料 |
| 工具调用说明 | 能读取哪些材料,需要提供什么编号 | 让模型知道可选动作与输入约定 |
这些卡片不必全部以同样形式放在一段文字里。常见模型接口会区分系统说明、用户消息、模型响应和工具结果;工具定义还可能放在独立字段中。Hermes 需要将相应信息组织并适配到所用的接口。
因此,Prompt 组装不仅是“把几段话拼起来”。它还要保持消息角色、调用与返回的对应关系,选择适用材料,并配合模型接口和会话生命周期。
同一段文字,来源为何重要
用户说“不要发送”,是在给本次任务划范围。工具正文里出现“请马上转发”,则是材料中的文字。两句话不能因为都进入了请求,就获得同样地位。
运行程序保留消息来源与结构,模型才能更好地区分任务、历史行动和外部内容。实际执行的授权还要由工具和运行环境承接;单靠在提示词里写一句话,不能构成所有资源的访问控制。第十四章再深入这条边界。
3.3 准备得不同,模型面对的任务就不同
比较两份交接。第一份只带入一条摘要:“甲工具更新了导出功能,材料已核对。”它没有保留来源、图片限制或冲突。模型即使想谨慎,也很难从这句话恢复被省略的条件。
第二份则明确写出:A 是原公告,限定为纯文本;B 是同一事件的转述,图片说法与 A 冲突;本轮仍需决定保留哪些说法。模型接下来可以针对冲突行动,而不必重新猜测已经发生过什么。
| 检查对象 | 第一份输入 | 第二份输入 |
|---|---|---|
| 事件是否重复 | 没有交代 | 指明 A、B 属于同一事件 |
| 结论边界 | 只有“导出功能” | 保留纯文本与图片限制 |
| 工作进度 | 笼统写“已核对” | 分开已取得材料与尚待判断 |
| 下一步方向 | 容易继续泛泛总结 | 可以围绕具体冲突核对 |
这并不保证第二份一定得到正确答案,但它避免了把关键条件在交接前就丢掉。模型判断质量与输入组织共同影响结果。更换模型,有时能改善解释能力,却不能确保补回程序没有提供的事实。
反过来,也不是材料越多越好。把所有旧网页、所有技能和所有历史都放进来,会增加体积、混入无关约束,还可能把这周与上周的事实放在一起。选择哪些材料,必须服务于当前目标。
3.4 Hermes 为什么分开稳定说明与每轮变化
消息简报需要多轮推进,但并非每项信息都会变化。持续适用的行为说明和某次会话的起始材料,相对稳定;刚取得的工具结果、用户新补充的要求,则会随着过程增加。
在本书依据的 Hermes 版本里,系统提示按不同来源和稳定程度组织,形成会话中复用的部分;另外还有调用时补充的信息。正常的本轮请求准备,不等于每次都重新从磁盘读取并重建所有说明。压缩等特定边界又可能触发重建。
这样的选择有两个值得学习的目的:一是让多轮任务中的共同约定保持连续,二是保留稳定前缀,以便在支持的模型服务中复用已有计算。
这里的缓存是计算复用,不是跨会话记忆,也不代表模型在后台替我们保存了所有事实。服务如何计费、缓存哪些前缀,仍有各自规则。需要稳定的是实际发送的内容和顺序,而不只是文件名称。
另一种办法:每轮全部重新整理
最直观的替代方案,是每轮重新读出所有说明与资料,重新拼出系统提示。它容易体现最新文件,但会让变化更频繁,也需要处理旧约定与新约定怎样进入正在执行的任务。
Hermes 保持部分会话输入稳定,便需要明确更新在什么时候生效。例如,一份长期材料已经写到磁盘,不应立刻推断所有已打开的会话都重新读到了它。当前对话还可以通过工具返回知道刚发生过什么,长期材料的加载则有另一套时机。
这就是设计取舍:稳定性、及时性和重复计算不能只靠一句“每轮使用最新内容”同时解决。理解加载与更新的边界,比背诵某层提示叫什么更有用。记忆章会用具体时间线继续展开。
3.5 工具说明与工具执行为什么分开
本轮输入可以告诉模型:“有一个读取材料的工具,调用时需要材料编号。”这相当于提供行动菜单和使用约定。模型提出“读取 A”后,还需要运行程序找到执行者,真正读取并返回结果。
如果模型只得到“读取材料”四个字,没有输入约定,它可能不知道怎样指明 A;如果得到了发送工具的说明,却没有本次“不发送”的任务边界,选择空间又可能偏离要求。
同样,硬盘里安装了很多工具,不等于模型本轮看到了全部说明。工具系统需要根据配置和可用性组织列表。下一章就沿着这条链,区分系统知道什么、模型看到什么、实际执行了什么。
3.6 亲手整理一份交接包
现在给出一个变化:用户补充“我只想看原公告;无法核实的转述不要写成正文结论”。此时已经读到 A、B,C 尚未读到。
你可以在纸上写出本轮输入:保留当前任务与新约束,保留 A 的原文条件,说明 B 与 A 的关系,再记下 C 尚未取得。可用工具应当足以继续读取,发送能力此阶段没有用途。
再检查三件事:有没有把待办写成已完成?有没有把转述升级为用户指令?有没有假定模型能自动看见未带入的 C?
这是本章的学习成果。你不需要构造真实接口,也能判断一份模型输入是否给出了合理的决策条件。后续的上下文管理,会在材料变多时继续使用同一套检查方法。
本章要点
- 模型依据本次请求实际带入的信息响应,保存过的文件不会自动成为本轮输入。
- 请求包含不同来源和职责的信息;Prompt 组装还涉及消息结构、工具定义与接口适配。
- 输入应保留目标、证据、进度与缺口,避免用笼统摘要替代关键条件。
- Hermes 在会话中复用部分稳定提示,并在相应时机补充或重建;稳定性、及时性与计算复用需要取舍。
- 工具说明提供选择条件,实际执行由运行程序和工具承接。
理解题
1. 工具已经读到了 A,但模型输入只有“材料已核对”,主要缺了什么?
缺少能支持判断的具体材料和边界,例如 A 的来源、纯文本导出范围与图片限制。“已核对”只是一个状态声明,不能让模型恢复被省略的条件。应先检查交接内容,再判断模型是否忽视了证据。
2. 每轮重建所有说明,是否一定比复用会话中的部分内容更正确?
不一定。重建更容易带入文件更新,但也需要处理进行中任务的约定变化、重复计算和材料选择。复用有助于保持连续与前缀稳定,却必须明确更新边界。应根据任务的及时性要求和运行设计比较。
3. 模型知道一个发送工具的名称,是否说明它已经具备发送结果?
名称和调用说明只表示一种可供判断的能力。是否可见、当前任务是否授权、能否找到执行者、执行环境是否可用以及是否取得确认,是后续不同问题。不能从一份输入说明直接推断外部动作已发生。
下一章:工具怎样从可用走到执行。