什么是 Eino ADK?

Eino ADK 是一个专为 Go 语言设计的 Agent 和 Multi-Agent 开发框架,设计上参考了 Google-ADK 中对 Agent 与协作机制的定义。

它不仅是一个工具库,更是一套完整的智能体开发体系:通过统一的抽象接口、灵活的组合模式和强大的协作机制,将复杂的 AI 应用拆解为独立、可组合的智能体单元,让开发者能够像搭建乐高积木一样构建复杂的智能体系统:

  • 少写胶水:统一接口与事件流,复杂任务拆解更自然。
  • 快速编排:预设范式 + 工作流,分分钟搭好管线。
  • 更可控:可中断、可恢复、可审计,Agent 协作过程 “看得见”。

无论你是 AI 应用的新手,还是经验丰富的开发者,ADK 都能为你提供合适的工具和模式。它的设计哲学是 "简单的事情简单做,复杂的事情也能做"—— 让开发者能够专注于业务逻辑的实现,而不必担心底层的技术复杂性。

核心构建

🧠 ChatModelAgent:智能决策的大脑

ChatModelAgent 是 ADK 中最重要的预构建组件,它封装了与大语言模型的交互逻辑,实现了经典的 ReAct(Reason-Act-Observe)模式,运行过程为:

  1. 调用 LLM(Reason)
  2. LLM 返回工具调用请求(Action)
  3. ChatModelAgent 执行工具(Act)
  4. 将工具结果返回给 LLM(Observation),结合之前的上下文继续生成,直到模型判断不需要调用 Tool 后结束。

ReAct

ReAct 模式的核心是 **“思考 → 行动 → 观察 → 再思考”** 的闭环,解决传统 Agent “盲目行动” 或 “推理与行动脱节” 的痛点,以下是几种可能的实践场景:

  • 行业赛道分析:使用 ReAct 模式避免了一次性搜集全部信息导致的信息过载,通过逐步推理聚焦核心问题;同时使用数据验证思考,而非凭空靠直觉决策,过程可解释,提升了生成报告的准确性。
    • Think-1:判断赛道潜力,需要 “政策支持力度、行业增速、龙头公司盈利能力、产业链瓶颈”4 类信息。
    • Act-1:调用 API 获取行业财报整体数据
    • Think-2:分析数据,判断行业高增长 + 政策背书,但上游价格上涨可能挤压中下游利润,需要进一步验证是否有影响
    • Act-2: 调用 API 获取供需、行业研报等详细数据
    • Think-3: 整合结论生成分析报告,附关键数据来源
  • IT 故障运维:使用 ReAct 模式逐步缩小问题范围,避免盲目操作;每一步操作有理有据,方便运维工程师实施解决方案前的二次验证,为后续复盘与制定预防措施提供基础。
    • Think-1:理清故障的常见原因,例如宕机的常见原因是 “CPU 过载、内存不足、磁盘满、服务崩溃”,需要先查基础监控数据
    • Act-1:调用「监控系统 API」查询服务器打点数据
    • Think-2:判断主因,例如 CPU 利用率异常则进一步排查哪些进程 CPU 占用高
    • Act-2:用「进程管理工具」查 TOP 进程,看是否有异常服务
    • Think-3:发现日志服务异常,可能是 “日志文件过大” 或 “配置错误”,需要进一步查看日志服务的配置和日志文件大小
    • Act-3:bash 执行命令,发现日志文件过大,同时配置未开启滚动,也未设置最大日志大小
    • Think-4:向运维工程师提供可行的解决方案:清理日志,修改配置并开启滚动,重启日志服务与应用

ChatModelAgent 利用 LLM 强大的功能进行推理、理解自然语言、作出决策、生成相应、进行工具交互,充当智能体应用程序 "思考" 的部分。您可以使用 ADK 快速构建具有 ReAct 能力的 ChatModelAgent

import github.com/cloudwego/eino/adk

// 创建一个包含多个工具的 ReAct ChatModelAgent
chatAgent := adk.NewChatModelAgent(ctx, &adk.ChatModelAgentConfig{
    Name:        "intelligent_assistant",
    Description: "An intelligent assistant capable of using multiple tools to solve complex problems",
    Instruction: "You are a professional assistant who can use the provided tools to help users solve problems",
    Model:       openaiModel,
    ToolsConfig: adk.ToolsConfig{
        Tools: []tool.BaseTool{
            searchTool,
            calculatorTool,
            weatherTool,
        },
    }
})

🎭 WorkflowAgents:精密的流水线

Eino ADK 提供了专用于协调子 Agent 执行流程的 WorkflowAgents 模式,用于通过预定义逻辑管理 Agent 的运行方式,产生确定的执行过程,协助实现可预测可控制的多 Agent 协作方式。您可以按需对下列模式进行排列组合,结合 ChatModelAgent 构造出符合自身需求的完整工作流水线 **:**

  • Sequential Agent: 将配置中注册的 Agents 按顺序依次执行一次后结束,运行遵循以下原则:
    • 线性执行:严格按照 SubAgents 数组的顺序执行。
    • 运行结果传递:配置中的每个 Agent 都能够获取 Sequential Agent 的完整输入以及前序 Agent 的输出。
    • 支持提前退出:如果任何一个子 Agent 产生退出 / 中断动作,整个 Sequential 流程会立即终止。
  • 可能的实践场景有:
    • 数据 ETLExtractAgent(从 MySQL 抽取订单数据)→ TransformAgent(清洗空值、格式化日期)→ LoadAgent(加载到数据仓库)
    • CI / CD 流水线CodeCloneAgent(从代码仓库拉取代码)→UnitTestAgent(运行单元测试,用例失败时返回错误与分析报告)→CompileAgent(编译代码)→DeployAgent(部署到目标环境)
import github.com/cloudwego/eino/adk

// 依次执行 制定研究计划 -> 搜索资料 -> 撰写报告
sequential := adk.NewSequentialAgent(ctx, &adk.SequentialAgentConfig{
    Name: "research_pipeline",
    SubAgents: []adk.Agent{
        planAgent,    // 制定研究计划
        searchAgent,  // 搜索资料
        writeAgent,   // 撰写报告
    },
})




Sequential

  • Parallel Agent: 将配置中注册的 Agents 并发执行,所有 Agent 执行完毕后结束,运行遵循以下原则:
    • 并发执行:所有子 Agent 同时启动,在独立的 goroutine 中并行执行。
    • 共享输入:所有子 Agent 接收调用 Pararllel Agent 时相同的初始输入。
    • 等待与结果聚合:内部使用 sync.WaitGroup 等待所有子 Agent 执行完成,收集所有子 Agent 的执行结果并按接收顺序输出到 AsyncIterator 中。
  • 可能的实践场景有:
    • 多源数据采集MySQLCollector(采集用户表)+ PostgreSQLCollector(采集订单表)+ MongoDBCollector(采集商品评论)
    • 多渠道推送WeChatPushAgent(推送到微信公众号)+ SMSPushAgent(发送短信)+ AppPushAgent(推送到 APP)
import github.com/cloudwego/eino/adk

// 并发执行 情感分析 + 关键词提取 + 内容摘要
parallel := adk.NewParallelAgent(ctx, &adk.ParallelAgentConfig{
    Name: "multi_analysis",
    SubAgents: []adk.Agent{
        sentimentAgent,  // 情感分析
        keywordAgent,    // 关键词提取
        summaryAgent,    // 内容摘要
    },
})

parallel

  • Loop Agent: 将配置中注册的 Agents 按顺序依次执行并循环多次,运行遵循以下原则:
    • 循环执行:重复执行 SubAgents 序列,每次循环都是一个完整的 Sequential 执行过程。
    • 运行结果累积:每次迭代的结果都会累积,后续迭代的输入可以访问所有历史信息。
    • 条件退出:支持通过输出包含 ExitAction 的事件或达到最大迭代次数来终止循环,配置 MaxIterations=0 时表示无限循环。
  • 可能的实践场景有:
    • 数据同步CheckUpdateAgent(检查源库增量)→ IncrementalSyncAgent(同步增量数据)→ VerifySyncAgent(验证一致性)
    • 压力测试StartClientAgent(启动测试客户端)→ SendRequestsAgent(发送请求)→ CollectMetricsAgent(收集性能指标)
import github.com/cloudwego/eino/adk

// 循环执行 5 次,每次顺序为:分析当前状态 -> 提出改进方案 -> 验证改进效果
loop := adk.NewLoopAgent(ctx, &adk.LoopAgentConfig{
    Name: "iterative_optimization",
    SubAgents: []adk.Agent{
        analyzeAgent,  // 分析当前状态
        improveAgent,  // 提出改进方案
        validateAgent, // 验证改进效果
    },
    MaxIterations: 5,
})

loop

🛠️ 预构建的 Multi-Agent 范式

Eino ADK 基于日常 Multi-Agent 协作实践中沉淀的最佳工程经验,为用户提供两种预构建的 Multi-Agent 范式,无需从头设计协作逻辑即可开箱即用,覆盖「集中式协调」与「结构化问题解决」两大核心场景,高效支撑复杂任务的智能协作。

🎯 Supervisor 模式:集中式协调

Supervisor Agent 是 ADK 提供的一种中心化 Multi-Agent 协作模式,旨在为集中决策与分发执行的通用场景提供解决方案,由一个 Supervisor Agent(监督者) 和多个 SubAgent (子 Agent)组成,其中:

  • Supervisor Agent 负责任务的分配、子 Agent 完成后的结果汇总与下一步决策。
  • 子 Agents 专注于执行具体任务,并在完成后自动将任务控制权交回 Supervisor。

Supervisor

Supervisor 模式有如下特点:

  • 中心化控制:Supervisor 统一管理子 Agent,可根据输入与子 Agent 执行结果动态调整任务分配。
  • 确定性回调:子 Agent 执行完毕后会将运行结果返回到 Supervisor Agent,避免协作流程中断。
  • 松耦合扩展:子 Agent 可独立开发、测试和替换,方便拓展与维护。

Supervisor 模式的这种层级化的结构非常适合于动态协调多个专业 Agent 完成复杂任务的场景,例如:

  • 科研项目管理:Supervisor 分配调研、实验、报告撰写任务给不同子 Agent。
  • 客户服务流程:Supervisor 根据用户问题类型,分配给技术支持、售后、销售等子 Agent。
import github.com/cloudwego/eino/adk/prebuilt/supervisor

// 科研项目管理:创建一个监督者模式的 multi-agent
// 包含 research(调研),experimentation(实验),report(报告)三个子 Agent
supervisor, err := supervisor.New(ctx, &supervisor.Config{
    SupervisorAgent: supervisorAgent,
    SubAgents: []adk.Agent{
        researchAgent,
        experimentationAgent,
        reportAgent,
    },
})


🎯 Plan-Execute 模式:结构化问题解决

Plan-Execute Agent 是 ADK 提供的基于「规划 - 执行 - 反思」范式的 Multi-Agent 协作模式(参考论文 Plan-and-Solve Prompting),旨在解决复杂任务的分步拆解、执行与动态调整问题,通过 Planner(规划器)、Executor(执行器)和 Replanner(重规划器) 三个核心智能体的协同工作,实现任务的结构化规划、工具调用执行、进度评估与动态重规划,最终达成用户目标,其中:

  • Planner:根据用户目标,生成一个包含详细步骤且结构化的初始任务计划
  • Executor:执行当前计划中的首个步骤
  • Replanner:评估执行进度,决定是修正计划继续交由 Executor 运行,或是结束任务

Plan-Execute

Plan-Execute 模式有如下特点:

  • 明确的分层架构:通过将任务拆解为规划、执行和反思重规划三个阶段,形成层次分明的认知流程,体现了 “先思考再行动,再根据反馈调整” 的闭环认知策略,在各类场景中都能达到较好的效果。
  • 动态迭代优化:Replanner 根据执行结果和当前进度,实时判断任务是否完成或需调整计划,支持动态重规划。该机制有效解决了传统单次规划难以应对环境变化和任务不确定性的瓶颈,提升了系统的鲁棒性和灵活性。
  • 职责分明且松耦合:Plan-Execute 模式由多个智能体协同工作,支持独立开发、测试和替换。模块化设计方便扩展和维护,符合工程最佳实践。
  • 具备良好扩展性:不依赖特定的语言模型、工具或 Agent,方便集成多样化外部资源,满足不同应用场景需求。

Plan-Execute 模式的「规划 → 执行 → 重规划」闭环结构非常适合需要多步骤推理、动态调整和工具集成的复杂任务场景,例如:

  • 复杂研究分析:通过规划分解研究问题,执行多轮数据检索与计算,动态调整研究方向和假设,提升分析深度和准确性。
  • 自动化工作流管理:将复杂业务流程拆解为结构化步骤,结合多种工具(如数据库查询、API 调用、计算引擎)逐步执行,并根据执行结果动态优化流程。
  • 多步骤问题解决:适用于需要分步推理和多工具协作的场景,如法律咨询、技术诊断、策略制定等,确保每一步执行都有反馈和调整。
  • 智能助理任务执行:支持智能助理根据用户目标规划任务步骤,调用外部工具完成具体操作,并根据重规划思考结合用户反馈调整后续计划,提升任务完成的完整性和准确性。
import github.com/cloudwego/eino/adk/prebuilt/planexecute

// Plan-Execute 模式的科研助手
researchAssistant := planexecute.New(ctx, &planexecute.Config{
    Planner: adk.NewChatModelAgent(ctx, &adk.ChatModelAgentConfig{
        Name: "research_planner",
        Instruction: "制定详细的研究计划,包括文献调研、数据收集、分析方法等",
        Model: gpt4Model,
    }),
    Executor: adk.NewChatModelAgent(ctx, &adk.ChatModelAgentConfig{
        Name: "research_executor",
        ToolsConfig: adk.ToolsConfig{
            Tools: []tool.BaseTool{
                scholarSearchTool,
                dataAnalysisTool,
                citationTool,
            },
        },
    }),
    Replanner: replannerAgent,
})
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐