全栈开发知识库

14. 多Agent

整体架构: 一个总的调度的Agent,类似网关,去识别分发到对应的子Agent中。

OpenAIAgents中的挂载方式分两种:

  • Agent As Tools(管理员模式): 把其他Agent作为协调Agent的工具,思想完全同单Agent下的Agent和工具的关系,整个控制权在协调Agent上。
  • Handoffs(转接):将用户的问题直接交给handoffs上的Agent。思想是直接将Agent挂载Agent下,整个控制权在具体干活的Agent上。

二者本质的区别是控制权的问题。

架构设计理念

中心化调度: 所有的用户请求首先由一个“全知全能”的调度器接收,由它决定分发给哪个专家。

专才专用: 每个业务智能体只关注自己领域的 Prompt 和工具,避免 Prompt 污染,提升任务成功率。

流式响应: 全链路支持 Server-Sent Events (SSE),让用户感知到智能体的思考过程 (Thinking Process)。

调度智能体(Orchestrator)

角色: 门房、总指挥。

核心职责:

意图识别: 分析用户输入是 "电脑坏了" (技术问题) 还是 "哪有维修店" (服务问题)。要做什么

智能路由: 绝不直接回答技术细节(如“蓝屏怎么修”)将会话控制权 transfer 给对应的下游智能体。不做什么

流式响应: 实时将智能体的结果推送给用户。

边界守则:只决策,不执行

多轮对话系统架构

第一种 传统Pipeline

graph LR
    A[用户输入] --> B[NLU<br/>自然语言理解]
    B --> C[DM<br/>对话管理]
    C --> D[NLG<br/>自然语言生成]
    D --> E[系统响应]

    style B fill:#e1f5fe
    style C fill:#fff3e0
    style D fill:#e8f5e9

传统对话系统采用流水线架构,将对话过程拆分为独立的模块:

  • NLU(Natural Language Understanding),理解用户意图,提取实体。
  • DM(Dialogue Management),管理对话状态,决策下一步动作
  • NLG(Natural Language Generation):将动作转换为自然语言

NLU主要模块包含:

  • 意图识别(Intent Recognition): 判断用户想做什么
    • 输入: 我想查一下订单
    • 输出: intent=查询订单
  • 实体提取(Entity Extraction): 提取关键信息
    • 输入: 订单号是12345
    • 输出: order_id=12345

意图识别(Intent Recognition)指的是让智能体理解用户通过自然语言表达的意图或目的。意图识别是智能助手的典型能力,例如用户在对话中输入“我想查看今天的 AI 新闻”,其中“查看新闻”为用户意图,也就是用户希望智能体执行的操作

DM模块详解:
- 对话状态追踪(DST): 记录当前对话状态 - 对话策略(Policy): 决定下一步动作

传统架构的优缺点:

优点 缺点
模块化,易于调试 模块间误差累积
各模块可独立优化 需要大量标注数据
可解释性强 对新领域适应性差
适合垂直领域 开发成本高

端到端架构(Seq2Seq)

graph LR
    A[用户输入] --> B[Seq2Seq模型<br/>Encoder-Decoder]
    B --> C[系统响应]

    style B fill:#f3e5f5

技术演进: 1. Seq2Seq + Attention(2014-2017) 2. Transformer(2017-2019) 3. 预训练语言模型(GPT、BERT,2018-2020) 4. 大语言模型(ChatGPT、GPT-4,2022至今)

端到端架构的优缺点:

优点 缺点
无需人工设计特征 可解释性差
可以处理开放域对话 难以融入业务逻辑
生成更自然流畅 幻觉问题(生成错误信息)
泛化能力强 难以精确控制对话流程

LLM驱动的对话架构】

graph TB
    subgraph "LLM驱动架构"
        subgraph Context["Context 上下文"]
            C1[对话历史]
            C2[槽位状态]
            C3[当前Flow]
        end

        subgraph Action["Action 动作"]
            A1[内置动作]
            A2[自定义动作]
            A3[LLM生成]
        end

        subgraph Memory["Memory 记忆"]
            M1[Tracker状态]
            M2[对话栈]
            M3[Flow历史]
        end
    end

    Context --> Action
    Action --> Memory
    Memory --> Context

    style Context fill:#e3f2fd
    style Action fill:#fff8e1
    style Memory fill:#f3e5f5

LLM驱动的对话架构结合了传统架构的可控性和大模型的理解能力,

核心三元设计:

要素 英文 职责 实现
C Context 提供完整上下文 Tracker + 对话历史 + 槽位
A Action 执行具体动作 可插拔动作体系
M Memory 记忆对话状态 对话栈 + Flow历史

核心设计思想:

用LLM理解用户意图,用结构化命令控制对话流程,用可编程动作执行业务逻辑。

架构优势:

特性 说明
可控性 Flow定义精确控制对话流程
灵活性 支持Flow嵌套、中断、恢复
可扩展性 动作系统可插拔,易于扩展
可调试性 状态可追踪,流程可观测
企业级 支持多轮对话、槽位收集、知识检索

让LLM负责理解,让框架负责控制,让开发者负责业务。

本页由 Markdown 自动渲染 · 共 628 篇笔记