在系统中,每个智能体都可以通过一个独立的配置文件来定义它的角色、使用的模型、可以调用的工具以及行为约束。下面以创建一个“SQL 查询助手”为例,说明从配置到运行的完整步骤。
1. 新建配置文件
在 agents/ 目录下创建 sql_assistant.yaml:
name: sql_assistant
description: 将自然语言转为 SQL 并解释查询结果
model: gpt-4o
temperature: 0.0
tools:
- database_query
- table_schema_reader
memory:
type: buffer
max_tokens: 3000
instruction: |
你是一个数据库查询专家。你的工作流程:
1. 先读取相关表的 schema,理解数据结构和字段含义。
2. 将用户的问题转换为正确的 SQL 语句。
3. 使用 database_query 工具执行 SQL。
4. 用通俗的中文解释查询结果。
重要约束:
- 只允许 SELECT 查询,禁止任何修改数据库的操作。
- 如果问题不清晰,主动向用户澄清。
2. 加载并使用智能体
通过内置的加载器即可将配置实例化为可运行的智能体对象:
from agent_framework import AgentLoader
# 从 YAML 配置创建智能体
agent = AgentLoader.from_yaml("agents/sql_assistant.yaml")
# 用户提问
question = "上个月销量最高的前 5 个产品是哪些?"
response = agent.run(question)
print(response)
3. 配置项详解
| 配置项 | 类型 | 说明 |
|--------|------|------|
| name | 字符串 | 智能体的唯一标识,用于日志和调度。 |
| description | 字符串 | 简短描述智能体的用途,便于管理。 |
| model | 字符串 | 底层语言模型名称,如 gpt-4o、gpt-3.5-turbo。 |
| temperature | 浮点数 | 0~1,控制输出随机性。事实型任务建议设为 0。 |
| tools | 列表 | 授权给该智能体的工具名称列表,需提前在系统中注册。 |
| memory | 对象 | type 可选 buffer(滑动窗口记忆)或 summary(自动摘要记忆),max_tokens 限制记忆长度。 |
| instruction | 字符串 | 系统提示词,定义角色、步骤和硬性规则。 |
4. 代码中按需覆盖配置
当需要临时调整参数而不修改文件时,可在加载时传入覆盖值:
agent = AgentLoader.from_yaml(
"agents/sql_assistant.yaml",
override={"model": "claude-3-opus", "temperature": 0.1}
)
5. 常见自定义场景
- 增加工具:只要在
tools列表中添加已注册的工具名,该智能体就自动获得调用能力。 - 调整记忆策略:对于长时间对话,可将
memory.type改为summary,防止丢失上下文。 - 细化行为指令:在
instruction中明确写出不允许做的事、必须遵循的步骤和输出格式,能极大提高智能体的可靠性。
通过上述配置方法,你可以像组装积木一样,快速构建出面向不同业务的专用智能体,无需修改一行核心代码。