Dovetail 优化 Chat 与 AI Agent 引用质量及多轮对话溯源机制
Quality work you don’t see
Dovetail 通过修复多轮对话历史清理导致的引用丢失,并统一 Chat 与 AI Agent 的执行路径,解决了 Slack 和邮件中引用无法渲染的问题。团队将工具循环步数上限从 10 提升至 20,新增引用解析率指标以监控质量,确保回答可追溯至客户原始数据。
Dovetail 的承诺是“基于事实构建,而非凭感觉”。每一次 Chat 和 Agent 的回复都附有引用以佐证这一点——每个答案都能追溯到客户实际说过的话。
一旦这一承诺落空,我们就未能兑现诺言,因此我们养成了自己持续监控的习惯,在问题成为别人的麻烦之前尽早发现它。
我们如何在您发现之前捕捉到问题
我们大力推行内部试用(dogfooding)。每一条反馈都会直接进入我们自己工作区中的一个 Channel,团队每天早晨都会打开查看——我们用该产品来构建该产品。一个 Dovetail Agent 也会每周运行一次,将整个 Channel 的内容综合成摘要发布到我们的团队 Slack 中,确保没有任何反馈长期无人阅读。最后,我们的 AI 卓越中心(AI Center of Excellence)会每周审查每一条反馈,以关注质量并确保我们在出现新问题时及时做出反应。
我们已经用四大支柱标准来衡量每一项 AI 功能:有据可依性(groundedness)、任务成功率、正确归因以及可靠性。在 Chat 和 Agents 中,“有据可依性”是我们用来衡量引用质量的指标。为了帮助提高引用质量,我们创建了一个新指标来衡量我们丢弃无意义引用的频率。当审查这个指标时,我们意识到出了问题。
我们发现,虽然 Chat 和 Agents 在第一个问题后能可靠地返回引用,但在后续追问中经常会丢失引用。
多轮对话中的有据可依性

7 月,我们收到反馈称 Chat 经常“产生幻觉”。当我们调查此事时,发现大多数情况并非真正的幻觉,但 Chat 仍然告诉用户这是幻觉。这是因为在第一条消息和第二条消息之间,我们清理了消息历史记录,导致 Chat 看不到它用来推导答案的搜索结果——因此,当用户要求提供来源或证据时,Chat 认为这些都是它编造的。
我们修复了这个问题,但这引入了另一个问题——懒惰。现在 Chat 可以完全访问自己的历史记录,它更倾向于引用原始响应中的结果,而不是运行新的搜索。这让我们引用系统感到困惑,因为它找不到 Chat 所提到的搜索结果。
这导致了大多数的引用失败,我们通过允许 Chat 引用历史搜索结果迅速解决了这个问题。
结构化引用

在底层,我们使用 AWS 来部署模型。我们力求尽可能贴近前沿技术,以便您可以利用最佳可用技术来查询数据。不幸的是,Claude Sonnet 5 在 AWS 上的发布取消了对强制格式的支持。
这是一个问题,因为前沿 LLM 模型在您提供更多指令信息时往往难以遵循,尤其是在涉及特定格式时。在较长的对话中,Claude 会错误地格式化引用,导致系统崩溃。
在我们确保该模型在所有情况下都能正确解析引用之前,我们暂时暂停了对 Sonnet 5 的测试。
AI Agents 引用出站内容
AI Agents 会写入 Slack 和电子邮件,而在这些地方引用并未渲染。我们将结构化引用接入了 send_email 和 send_slack,并在发送前将其解析为深层链接。Slack 将它们渲染为可点击链接。电子邮件使用完整的 markdown-it 规则集,因此链接和引用得以保留。
触发式和计划式运行现在会在提示指导中获得明确的“包含引用”提醒。如果没有人在回路中要求提供来源,模型就会放松警惕。
我们还把 AI Agents 统一到与 Chat 相同的执行路径上,将其作为一种修饰符而非独立的策略。这意味着上述所有修复都统一适用于产品内的 Chat 和 AI Agents。
你得到的效果:Slack 和电子邮件中的 AI Agent 消息引用方式与产品内 Chat 相同,且链接可跳转至有效位置。
引用解析与用户体验
- 现在,引用先前对话轮次的后续引用会显示一个带有工具提示“来源已在对话早前提供”的回退徽章,而不是静默丢弃
- DatumSummary 引用像 Datum 一样进行解析。此前它们返回空
source_items并渲染为无效标记 - Doc 引用解析为规范的
/docs/路径,不再将“Untitled”显示为来源标签 - 视频引用具有缩略图和片段回退机制
create_doc返回深度链接;评论工具可深度链接到特定评论
完成回合
工具循环有一个步骤预算。引用会消耗一个步骤,因此复杂的多搜索回合曾达到上限并返回空结果。
- 将上限从 10 提高到 20
- 当预算耗尽时,我们强制生成最终书面答案,而不是什么都不返回(并通过后续修复确保该路径在
toolChoice: none下不会硬性报错) - 修复了导致 Bedrock 400 错误的思考块和出错工具调用中的重放 bug
- 改进了提示词 schema 验证失败时的诊断信息。这曾是之前最难以诊断的故障类别
你得到的效果:减少“出错了”这类回合,尤其是在处理困难的多搜索问题时。
指标

我们已经广泛监控了所有 AI 功能的有据性。在此基础上,引用现在拥有自己的专属信号:跟踪跨 Chat、Slack 和 AI Agent 电子邮件的解析率,并按对话深度、失败原因和对象类型进行细分。
A contextual_chat_multi_turn 评估针对产品使用的同一 CitationResolver 运行,其结果汇入同一份周报摘要,正是这份摘要发现了最初的回归问题。因此,当质量出现回归时,我们在用户察觉之前就能看到。
未来展望
频道仍然存在。每日站会仍以它开场。Agent 仍每周发布其摘要。大多数周里,其中并无重大事件,而这正是重点所在——我们宁愿在站会上自己发现 bug,也不愿听你们反馈。
原作者保留版权;来源:Dovetail。本站维护者确认获准转载,非公共领域或开放许可证声明。 原文来源(转载授权由站点维护者确认) · 中文译文由 CxHub 客户体验社区生成,并非官方译文。
来源:Dovetail · dovetail.com