Overview
- What are agents? 什么是智能体?
- When (and when not) to use agents? 何时使用智能体以及何时不使用智能体?
- When and how to use frameworks? 何时以及如何使用框架?
- Build Block: The augmented LLM
- Workflow 工作流
- Agents 智能体
- Principles for Building effective agents 构建高效智能体的原则
- Agents in practice:Agent 应用实践
- Prompt engineering your tools 工具的提示词工程
What are agents? 什么是智能体?
Agent 有不同的定义,但最关键理解是要和 workflow 区分开来
Workflows are systems where LLMs and tools are orchestrated through predefined code paths.
Agents, on the other hand, are systems where LLMs dynamically direct their own processes and tool usage, maintaining control over how they accomplish tasks.
- 如何构建三件套: 检索、调用工具、读写记忆? 主要关注两个方面
- 定义接口
- 定义接口文档
接下来我们分别介绍 WorkFlow 和 Agent
Workflow 工作流
Workflow: Prompt chaining 工作流:提示词链
Principles for Building effective agents 构造智能体的原则
Agent 做成事情关键认知:
- 没有固定的 agent 构建套路, 要灵活、自由地组合上面的方法
- agent 本质上还是个 LLM,只不是增强版 LLM
- 把一个事情做事的关键: 仍然是在于有效衡量模型 performance 以及衡量迭代改进带来的变化
- 只有引入复杂性能明确带来更显著变好效果的时候,我们搞 workflow/agent; 不然就不做,否则白白引入复杂性
实操层面 Agent 做成的三个原则:
Maintain simplicity in your agent’s design.
Prioritize transparency by explicitly showing the agent’s planning steps.
Carefully craft your agent-computer interface (ACI) through thorough tool documentation and testing.
Agent 最关键的三个原则:
- 设计最简化, 复杂化就是给自己挖坑
- 要清清楚楚明明白白打出来具体的规划过程, 不黑盒化任何步骤
- 细扣工具文档和测试: 工具文档要详细,测试要全面细致
Agents in practice:Agent 应用实践
Agent 最合适的实践场景
Customer support 客户支持: 客户支持将常见的聊天机器人界面与通过工具集成获得的增强功能相结合。这对于更具开放性的智能体来说是很自然的契合
- 支持性互动自然地遵循对话流程,同时需要获取外部信息和执行操作
- 可以集成工具来提取客户数据、订单历史和知识库文章
- 诸如退款或更新工单等操作可通过编程方式处理
- 成功可以通过用户定义的解决方案来清晰衡量
Coding agents 编码智能体
- 代码解决方案可通过自动化测试进行验证
- 智能体可以利用测试结果作为反馈来迭代解决方案
- 代码问题空间定义明确且结构清晰
- 输出质量可以客观衡量
Prompt engineering your tools 工具的提示词工程
一些通用的 Agent PE 原则
- 给模型足够的 token,让它在陷入困境之前有时间”思考”
- 保持输入格式一致性,输入格式别太格式化、模板化;
- 确保没有格式上的 “额外负担”,例如必须准确统计数千行代码的数量,或者对其编写的任何代码进行字符串转义
- 一个经验 PE 法则: 人费多大劲能看懂,模型就得用多大劲能看懂;比如写的太粗糙简略,人都看不懂,不能指望模型分分钟看懂;是个人都能看懂,那模型大概率等分钟看懂;
- 仅仅根据描述和参数,是一目了然还是得细细琢磨?
- 好的工具定义应该至少包含介绍、实例、corner case、输入格式要求
- 不遗余力优化参数名的定义和描述的定义
- 测试工具使用,给一大堆测试输入,看看会犯什么错
- 在优化工具上的时间比优化 PE 时间更多
- 用防错设计 Poka-yoke 替代原始设计, 例如
原始设计:
def get_weather(location: str, unit: str):
"""
获取天气信息。
location: 城市名
unit: 单位(必须是 'C' 或 'F')
"""
防错设计: 用枚举值代替参数值,提供默认值,让错误输入自动被拒绝, 模型几乎无法生成无效参数,调用成功率显著提升
from typing import Literal
def get_weather(
location: Literal["Beijing", "Shanghai", "New York", "San Francisco"],
unit: Literal["C", "F"] = "C"
):
"""
获取天气信息。
"""
Reference
[1]. Building effective agents
转载请注明来源 goldandrabbit.github.io