统一的数据格式

在Agent的返回值里,规定其用字符串而不是包装为数值结构,这里的重点是要抓住,Agent是强在对信息做了阅读理解,然后输出答案,我们要做的,主要就是处理好数据,让各个工具的数据流保持一致,就算中途为了更好地检索内容用了不同的数据格式,最后也要转成统一的数据格式,能够在转换时可以顺利地流通,这样Agent也好处理信息,也就是说,要发挥好Agent这种独特的能力,就是要让其做它擅长的事,数据处理这种在到端之前就应该处理好

保证系统流畅的重要性

类似联网搜索的函数,之所以多数都写成try,是因为查找的过程中,遇到网络波动,或者检索时没有关键词,导致检索不到内容时,需要让Agent忽略掉该信息放置一个返回值提示没有获取到信息,而不是因为检查不到而卡在这里,首先保证整个系统的流畅运行,这样起码可以进入循环,可以在下一轮让Agent可以继续搜索,而不是直接就结束了

数据流处理的重要性

在编写检索到信息并输出的逻辑时,不要看Agent是流式输出就也写成一边搜索一边输出的逻辑,让Agent将搜索到的内容搜索完了,收集起来再输出会更好,因为收集起来后可以做一下筛选,排序,让其质量更高,这样Agent处理信息时输出的结果也会更好

对于一些拥有特殊复杂结构的数据,可以提前设置为Agent读到的时去匹配写好的语义,让其更好地理解,能够提高效率,比如Agent接收到的是一个既有复杂的字典结构,同时有很多特殊的编码,这个时候可以通过预设翻译,也就是说写好规则,直接将特殊的数据结构通过字典对应的形式转为好理解的语义。

提示词的灵活运用

提示词里,不止是可以写例子,执行任务的Agent可以加上能力范围,也就是什么能做,什么不能做,这样的限制是很有必要的,因为很多时候Agent就是自己做了多余的事,从而导致结果出现幻觉,甚至是无法被解析

有时候,即使提示词里写清楚了规则,Agent还是会出现问题,可以写一些兜底逻辑,比如提示词里写着输出时直接写参数值,不要带引号,但是实际输出时还是可能会有这种情况出现,就需要在输出的逻辑里提前清楚引号 ####轮次限制 写ReAct框架时,需要限制最大轮次,可能有的人会担心这样会不会打断了正在优化的部分,但是实际上,Agent实际在迭代时要不了这么多次,次数多起来,很有可能是陷入了死循环,为了防止消耗多余的token,需要限制最大轮次,一般是3-5次,有的特殊一点也会写8次

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐