我们不再向智能体注入上下文,而是让它自行搜索上下文——这消除了我们大部分智能体错误

Reddit r/AI_Agents 工具

摘要

作者分享道,用智能体按需调用的搜索工具取代预先注入的上下文(该工具以 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 - 它收到的返回响应数量 如果你也在做类似的事,你的经验如何?还有什么对你也效果很好?
查看原文

相似文章