原文:https://blog.langchain.com/how-to-build-an-agent/
本文介绍了当我们有了想法之后,如何通过一系列的步骤来逐步实现一个agent 的过程
其中主要侧重思路和过程,不涉及具体的技术实现细节
下面内容为对原文的理解翻译学习,大家可以优先考虑阅读原文
Step 1: 举例说明agent的工作任务
首先挑选一些可以交给聪明实习生的工作,如果他都无法在足够的时间和资源的情况下完成,那么这个任务可能不适合agent
可以以想出5-10个具体的任务例子来开始,这样可以确保
- 验证你的想法的合理性,不会太琐碎或者模糊
- 可以为后续的效果衡量提供基准
例子:构建一个邮件agent
我们可以定义如下的任务:
- 优先处理来自关键利益相关者的紧急电子邮件
- 根据日程情况安排会议
- 忽略垃圾邮件或者不需要回复的电子邮件
- 根据公司文件回答产品问题
需要注意如下问题:
- 如果不能提供具体的例子,说明你的任务范围太宽泛了
- 如果传统软件效果更好时,不要考虑使用agent
Step2: 设计操作流程
编写详细的标准操作流程(SOP),其中包含有关人类如何执行任务或流程的分步说明
用于确认选择的问题范围是否清晰合理,同时确认agent 可能需要处理的关键步骤、决策和工作
例子:构建一个邮件agent
分步过程可能如下:
- 分析电子邮件内容和发件人等信息对回复优先级进行分类
- 检查当前日程,安排会议
- 根据电子邮件、发件人和日程安排背景起草回复
- 经过快速人工审核和批准后发送电子邮件
Step3: 只使用提示词来构建MVP版本
在此步骤中,专注于最关键的LLM 推理任务(如分类、决策等),并创建一个能有效处理这些任务的提示词
- 手动输入LLM 所需要的数据(暂时不要自动化)
- 根据最初列出的示例进行测试,以验证常用用力的性能
- 专注于理解LLM的推理过程
例子:构建一个邮件agent
这里我们可以首先处理基础步骤:按照紧急程度和意图对电子邮件进行分类
当我们编写好提示词后,可以手动输入如下内容:
1 | 邮件内容:我们下周可以开会讨论一下LangChain的产品路线图吗? |
大模型输出结果:
1 | 意图:会议请求 |
当LLM 在测试用例中始终可以正确执行后,我们就可以确信核心逻辑是合理的
Step4: 连接&编排
这时候我们需要将提示词与真实数据和用户输入进行连接
首先,确定所需的上下文或数据(如电子邮件内容、日程等),并计划如何以编程的方式访问它(如通过API 等)
之后,编写编排逻辑,将正确的数据连接到你的提示词中。在简单的场景下可以直接传递输入,但是对于复杂的工作流,则需要agent逻辑来决定使用哪个数据源进行查询,什么时候调用,如何组合他们的输出等
例子:构建一个邮件agent
对于电子邮件agent,此步骤可能涉及于邮件api 及日程api 的集成,我们可以构建如下编排逻辑
- 通过一封新邮件来触发agent 执行
- agent 通过CRM 等api 获取发件人信息
- 将全部内容传递给大模型,确定紧急程序以及是否需要响应
- 如果会议合适,它会检查日程并提议时间
- agent 起草回复
- 经过人工审核后,它会发送电子邮件
Step5: 测试&迭代
使用步骤1中定义的示例,手动测试MVP 版本,验证结果是否合理且准确
手动测试稳定后,即可扩展至自动化测试,增加更多示例,以确保一致性并捕捉极端情况
- 通过agent 以自动化编程方式运行所有示例(原始示例+新示例)
- 定义自动化成功指标,明确agent 的预期行为
- 通过人工审核来发现可能遗漏的问题
例子:构建一个邮件agent
对于电子邮件agent, 我们希望在几个关键点定义测试成功:
- 预期和安全:回复应专业、尊重,且不含幻觉或不适当的内容
- 意图和优先级检查:根据发件人和内容对电子邮件进行正确分类和优先排序
- 工具使用效率:agent 仅执行必要的工具(如不需要安排日程,则避免检查日历)
- 草稿质量:建议的回复内容,应清晰、于输入内容相关且准确
Step6: 步骤,扩展和优化
一旦MVP 运行稳定,就可以开始扩展其范围,如添加新功能、更广泛的用例,甚至添加多agent 工作流。对于每个新功能或集成,请重复步骤5中的测试过程,确保不会破坏现有功能
监控用户实际使用agent 的方式,发现准确性问题或延迟问题等
例子:构建一个邮件agent
部署了电子邮件agent 后,我们可以通过监控流量和常见问题发现未覆盖的用例