我们不再向智能体注入上下文,而是让它自行搜索上下文——这消除了我们大部分智能体错误
摘要
作者分享道,用智能体按需调用的搜索工具取代预先注入的上下文(该工具以 OpenSearch 中的结构化文档为支撑)大幅减少了智能体错误,并提升了可追溯性。
tl;dr 不要基于用户查询/RAG等将自定义上下文注入提示词,而是让智能体使用带参数(query、filter、search_type、temporal、limit)的工具自行搜索。这是让智能体变得可控的最大杠杆。我在公司构建AI智能体。最初,我们的上下文层是Obsidian风格的技能markdown文件、文件夹和交叉链接。我们最初会做向量搜索/RAG,并将上下文与提示词一起注入。我们曾反复遇到这些挑战,并一头扎进试图修复它的兔子洞。不断出问题的是:上下文污染/偏离主题。一旦markdown文件超过约50个,智能体就会在文档之间游荡,并拾取与任务无关的指令。我们尝试构建显式导航路径并把所有内容互链起来,但收效甚微。没有来源证明。随着知识库的增长,我们无法可靠地说出是哪个上下文片段驱动了某个特定动作。用户不会信任一个不能展示其工作过程的智能体。对我们真正有效的是:用结构化文档代替markdown。我们将上下文移入JSON/结构化文档。智能体在看起来像代码的内容上导航要好得多。我们大约有10-12种文档类型,每种类型内有5-8个字段。让智能体自己搜索,而不是把内容喂到它嘴边。我们没有预先注入上下文,而是向它提供了关于现有上下文的元信息,并让它负责搜索和发现正确的片段(为智能体提供基于工具的搜索能力,而不是由我们在上游运行RAG/提示扩展)。对于搜索,我们创建了一个名为search_resources的工具,它会在存储结构化文档的opensearch索引上运行查询——我们创建的这个工具有5个参数:
* query - 选择它要运行的查询
* filter - 按特定文档类型过滤
* search_type - 定义搜索类型(语义/句法)
* temporal - 如果数据具有基于时间的过期性,则添加 temporal True/False
* limit - 它收到的返回响应数量
如果你也在做类似的事,你的经验如何?还有什么对你也效果很好?
相似文章
更好的语义搜索无法修复从不验证上下文的智能体
文章认为,更好的语义搜索或更大的上下文窗口无法修复不可靠的AI智能体;相反,智能体必须在回答或行动之前重新打开原始来源以验证检索到的上下文。
我们将智能体的上下文窗口减半,效果反而更好了。有点出乎意料
一位开发者分享,将智能体的上下文窗口减少一半意外地提升了其在客户资格筛选和CRM自动化方面的表现,暗示过多的上下文可能掩盖糟糕的架构并导致决策犹豫不决。
将规划与执行分离解决了我的代理上下文膨胀的大部分问题
本文讨论了一种通过将规划阶段与执行分离来减少AI代理上下文膨胀的技术,从而提高了代理的效率和准确性。
更少上下文,更智能代理:面向长周期工具使用的LLM代理的高效上下文工程
本文评估了企业工具使用工作流中LLM代理的上下文工程配置,表明选择性修剪的摘要化相比全上下文基线实现了91.6%的准确率,同时将令牌使用量减少了60%以上。
我在尝试为不同会话中的不同代理确保上下文连续性中学到的东西
作者介绍了 AICTX,一个开源工具,它能在编码代理会话之间保留结构化的操作状态,从而减少代理每次重新发现仓库上下文的需求。