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')
]
});