关于优秀智能体设计,我们知道的全部
目录
-
提示词
-
- 读一读你的系统提示词
-
- 保持系统提示词简短
-
模型
-
- 果断弃用对旧模型的支持
-
- 非必要不用模型选择器
-
工具
-
- 围绕实际用例设计工具
-
- 只挑最小的工具子集
-
- 别让工具之间能力重叠
-
- 别让智能体缺胳膊少腿
-
- 工具名和参数名要直白
-
- 让工具来负责权限控制
-
- 把错误当成有用的反馈
-
- 区分不同类型的错误
-
上下文
-
- 智能体只知道它上下文里的东西
-
- 让智能体看得见自己所处的环境
-
- 别在任务进行到一半时压缩上下文
-
- 允许智能体自行压缩
-
技能
-
- 用技能来承载流程性知识
-
子智能体
-
- 把吃上下文的工作交给子智能体
-
- 给足上下文,让子智能体能独当一面
-
- 复用子智能体
-
- 由一个主智能体协调所有子智能体
-
护栏
-
- 把护栏放在智能体控制不到的地方运行
-
- 可信指令和不可信数据要分开
-
可观测性
-
- 一切都要记日志
-
- 给智能体一个上报自身故障的工具
-
总结
最近我读了《关于优秀 API 设计,我了解的方方面面》。它把所有干货塞进一个编号清单里的做法,我很喜欢。
于是这篇文章里,我采访了 Rubric 团队,照着同样的形式列了一份关于优秀智能体设计的清单,聊一聊我们在内部搭建智能体、也为 Graphite、Albertsons 等公司搭建智能体时积累的经验。
读这篇文章之前,你需要对智能体的工作原理有个基本了解。如果你是新手,建议先看看智能体运行框架(agent harness)和编码智能体(coding agent)的入门介绍。