多Agent系统设计模式
设计多Agent系统有多种方式,但我们常见两种广泛适用的模式:- 管理者模式(Agent作为工具):中央管理者/编排器将专业子Agent作为工具调用,并保持对话控制权。
- 交接模式:对等Agent将控制权移交给接管对话的专业Agent。这是去中心化的。
构建协作式Agent系统
npm install @ag-kit/agents @ag-kit/tools zod
import { Agent, OpenAIProvider } from '@ag-kit/agents';
const pageProcessorAgent = new Agent({
name: 'PageProcessorAgent',
description: '处理单页面:爬取、翻译、摘要',
model: new OpenAIProvider({
apiKey: process.env.OPENAI_API_KEY!,
defaultModel: process.env.OPENAI_MODEL || 'gpt-4o-mini'
}),
instructions: `你是PageProcessorAgent。处理单个页面:
1. 爬取页面内容
2. 根据需要翻译为目标语言
3. 提取关键点和实体
4. 返回结构化数据用于报告生成`
});
const reportGeneratorAgent = new Agent({
name: 'ReportGeneratorAgent',
description: '根据多个页面结果生成综合报告',
model: new OpenAIProvider({
apiKey: process.env.OPENAI_API_KEY!,
defaultModel: process.env.OPENAI_MODEL || 'gpt-4o'
}),
instructions: `你是ReportGeneratorAgent。生成综合报告:
1. 整合多个页面的结果
2. 创建带有关键见解的结构化摘要
3. 生成思维导图(mermaid格式)
4. 提供质量评估`
});
import { tool } from '@ag-kit/tools';
import { z } from 'zod';
// 将Agent包装为工具
function createAgentTool(agent: Agent, toolName: string) {
return tool(
async ({ url, content, targetLanguage, pageResults }) => {
let prompt = '';
switch (toolName) {
case 'process_page':
prompt = `处理此页面:${url}\n\n目标语言:${targetLanguage || 'en'}`;
break;
case 'generate_report':
prompt = `根据这些页面结果生成综合报告:\n\n${JSON.stringify(pageResults)}\n\n目标语言:${targetLanguage || 'en'}`;
break;
default:
prompt = content || url;
}
const result = await agent.run(prompt);
return result.data;
},
{
name: toolName,
description: agent.config.description || `Agent:${agent.config.name}`,
schema: z.object({
url: z.string().optional(),
content: z.string().optional(),
targetLanguage: z.string().optional(),
pageResults: z.array(z.any()).optional()
})
}
);
}
const orchestrator = new Agent({
name: 'multi-agent-orchestrator',
description: '协调多页面网页阅读和摘要工作流',
model: new OpenAIProvider({
apiKey: process.env.OPENAI_API_KEY!,
defaultModel: process.env.OPENAI_MODEL || 'gpt-4o'
}),
instructions: `你是多页面网页阅读的编排器。当给定URL时:
1. 使用todo_write为每个页面规划任务
2. 使用process_page协调页面处理
3. 使用generate_report协调报告生成
4. 以用户语言生成综合报告`,
tools: [
createAgentTool(pageProcessorAgent, 'process_page'),
createAgentTool(reportGeneratorAgent, 'generate_report')
]
});
此页面对您有帮助吗?