Documentation Index
Fetch the complete documentation index at: https://docs.ag-kit.dev/llms.txt
Use this file to discover all available pages before exploring further.
多Agent系统使专业化的Agent能够协同处理复杂任务。每个Agent专注于特定领域,并通过编排模式进行协调。
多Agent系统设计模式
设计多Agent系统有多种方式,但我们常见两种广泛适用的模式:
- 管理者模式(Agent作为工具):中央管理者/编排器将专业子Agent作为工具调用,并保持对话控制权。
- 交接模式:对等Agent将控制权移交给接管对话的专业Agent。这是去中心化的。
本指南重点介绍管理者模式(Agent作为工具),这是最常见且最直接的方法。
npm install @langchain/openai @langchain/core @langchain/langgraph langchain zod
管理者模式(Agent作为工具)
在管理者模式中,中央编排器将专业Agent作为工具调用。编排器在整个对话过程中保持控制权,并决定何时调用每个专业Agent。
创建专业Agent
每个专业Agent专注于特定任务:
import { ChatOpenAI } from "@langchain/openai";
import { tool } from "langchain";
import { ToolNode } from "@langchain/langgraph/prebuilt";
import z from "zod";
const llm = new ChatOpenAI({
model: process.env.OPENAI_MODEL || "gpt-4o-mini",
apiKey: process.env.OPENAI_API_KEY,
configuration: {
baseURL: process.env.OPENAI_BASE_URL,
},
});
const writePoem = tool(
async ({ topic }) => {
return (
await llm.invoke([
{
role: "system",
content:
"你是一位专业诗人。根据提供的主题写一首诗。",
},
{
role: "user",
content: topic,
},
])
).content as string;
},
{
name: "writePoem",
description: "写一首诗",
schema: z.object({
topic: z.string().describe("诗歌的主题"),
}),
}
);
const writeStory = tool(
async ({ topic }) => {
return (
await llm.invoke([
{
role: "system",
content:
"你是一位专业故事讲述者。根据提供的主题写一个故事。",
},
{
role: "user",
content: topic,
},
])
).content as string;
},
{
name: "writeStory",
description: "写一个故事",
schema: z.object({
topic: z.string().describe("故事的主题"),
}),
}
);
const writeJoke = tool(
async ({ topic }) => {
return (
await llm.invoke([
{
role: "system",
content:
"你是一位专业喜剧演员。根据提供的主题写一个笑话。",
},
{
role: "user",
content: topic,
},
])
).content as string;
},
{
name: "writeJoke",
description: "写一个笑话",
schema: z.object({
topic: z.string().describe("笑话的主题"),
}),
}
);
const tools = [writePoem, writeStory, writeJoke];
const toolNode = new ToolNode(tools);
创建编排器
编排器通过委托给专业Agent来协调工作流。它将专业Agent包装为工具: