多智能体客服系统排行榜:Python情感识别电商
多智能体系统落地时,最棘手的挑战莫过于让不同职能的智能体既保持独立运作,又能无缝协同。以电商客服场景为例:系统必须同时解析用户情绪、调取商品知识库、判定是否需要升级为人工处理——单看是三个独立原子任务,但串联起来才能构成完整的服务闭环。本文基于ADK框架与A2A协议,交付一个可直接运行的多智能体客服系统,从架构设计到代码实现均经过真实项目验证。
引言
AI正在重塑客户服务模式。以往用户查询订单状态或申请退款,往往陷入冗长的排队与机械回复。如今,基于大语言模型的多智能体系统能够7×24小时不间断运行,精准理解用户意图、识别情绪倾向,并提供个性化回应——这正是AI智能体在该场景中的核心价值。
本文将项目中的建模实践沉淀为一套可投入对话的AI智能体方案。ADK为构建高推理能力的智能体提供了成熟框架,A2A协议则为智能体间的通信与协作定义了标准接口——二者结合,构成了多智能体系统的技术底座。
文章曾为客户设计过基于LangChain框架的多智能体协作架构,将电商客服全流程拆解为用户交互、商品查询、订单处理三个核心智能体,每个智能体通过专属系统提示词划定边界,借助标准化的Tool抽象完成协作。最终采用DeepSeek大语言模型与FastAPI后端,实现了模块化、可扩展的客服系统。本文的架构思路一脉相承,但改用更轻量、更标准化的ADK+A2A方案。
ADK框架概述
ADK(Agent Development Kit)是一个模块化框架,专为生产级AI智能体设计。其核心理念清晰明确:让智能体开发贴近传统软件工程实践——可扩展、可测试、可部署。开发者能够像搭积木一样组合智能体的能力、工具和通信方式,无需在复杂状态机与回调地狱中挣扎。
以企业自动化入职流程为例:HR智能体负责收集文档,IT智能体负责开户,财务智能体负责注册薪酬系统。借助A2A协议,一个协调智能体可以发起流程,并将任务委派给各个专业远程智能体——彼此独立运行、各司其职、实时反馈,实现端到端的自动化体验。
项目架构概览
本系统的核心流程简洁明了:接收客户文字消息,解析意图与情感,然后路由至合适的智能体处理。
Streamlit演示界面
系统工作步骤
- 接收客户查询作为输入
- 调用三个独立的远程智能体:
- 情感识别智能体:分析用户消息的情感,分类为积极、中性或消极
- 知识检索智能体:通过检索增强生成从预定义知识库中查找答案
- 升级处理智能体:处理愤怒或沮丧的用户,模拟升级至人工支持
- 协调智能体作为宿主编排整个工作流——先调用情感识别智能体评估语气,再根据情感极性将查询路由至对应智能体
整个流程的核心是A2A协议提供的标准化协作框架。通过发布Agent Card,智能体之间可以互相发现能力;通过严格的JSON-RPC协议,确保消息格式一致性。
以用户输入"我非常不满意,你们的产品有问题"为例:
- 服务发现:协调智能体查询情感识别智能体的AgentCard,确认其具备"情感分类"能力
- 通信:将用户消息以标准JSON-RPC请求发送,情感识别智能体返回"消极"结果
- 协作:协调智能体确认升级处理智能体的能力后,将原始消息转发并完成升级
模型集成策略
不同智能体匹配差异化的模型,才能在精度、速度与成本之间取得平衡:
- 情感识别与升级处理智能体 — 采用Llama-3.1-8B指令微调版本,针对短文本与指令式提示优化,适合快速情感分析
- 知识检索智能体 — 采用Qwen3-30B,具备可靠的函数调用能力与高召回率
- 嵌入模型 — 采用Qwen3-Embedding-8B,生成高质量向量嵌入,驱动RAG检索
工具函数实现
AI智能体的实际能力高度依赖它所绑定的工具。以下是系统三个核心工具的实现。
知识库初始化与RAG流水线
系统的查询解决核心是一个知识库类,它加载FAQ的JSON文件,将文本分块后用嵌入模型向量化,最终构建向量索引——这就是一套完整的RAG流水线。
工作流程:先用文本分割器将FAQ条目切分为512词的语义块,再用嵌入模型映射为高维向量存入索引。用户提交查询时,系统检索最相关的前K个块,将其与用户问题一并送入大语言模型生成上下文感知的精准回答。
知识库数据源可以是内部帮助台系统、内容管理平台、API知识库或实时文档——生产部署中可灵活替换。
查询解决工具
这个函数将用户问题发送至RAG引擎。如果找到相关内容且模型生成了有意义的回答,则返回以 KB_RESULT 为前缀的结果;否则返回 NO_KB_MATCH,防止系统在缺乏信息时编造答案。
情感分类工具
情感分类函数使用简洁的提示词模板,将用户消息的情绪倾向分类为积极、中性或消极三类。底层通过大语言模型API完成推理,若结果不在三分类内,默认回退为中性。
升级处理工具
当用户发送沮丧或负面的消息时,系统通过升级处理工具模拟将案例移交人工支持。这个函数记录事件日志并返回用户友好的响应。在生产环境中,可以对接工单系统或即时通讯工具通知团队。
远程智能体创建
工具函数就位后,使用ADK的 LlmAgent 类创建智能体。每个智能体通过声明式方式配置四个关键组件:名称、大语言模型、工具集合和定义行为的指令提示。
三个远程智能体:
- 情感识别智能体:接收用户消息,调用
analyze_sentiment工具 - 知识检索智能体:调用
search_knowledge_base工具查询知识库,确保仅返回有意义的回答 - 升级处理智能体:处理需人工介入的案例,调用
handle_escalation工具
A2A服务封装
为了让远程智能体暴露到网络中,需将其包装在A2A服务中。ADK提供了官方的 A2aAgentExecutor,无缝桥接A2A协议与ADK运行时,极大简化服务端设置。
from google.adk.a2a.executor.a2a_agent_executor import (
A2aAgentExecutor, A2aAgentExecutorConfig
)
def wrap_agent_as_server(agent_bot: LlmAgent, bot_card):
artifact_service=InMemoryArtifactService(),
session_service=InMemorySessionService(),
memory_service=InMemoryMemoryService()
协调智能体与客户端通信
协调智能体是整个系统的核心调度者。它作为一个工具,使用A2A客户端与各远程智能体通信。每个 create_task 调用执行三步流程:(1)通过AgentCard端点进行A2A服务发现;(2)使用官方客户端工厂创建连接;(3)发送标准消息并处理响应流。
系统编排与启动
run_agents.py 是多智能体系统的主入口,负责编排整个启动序列。它利用异步编程与线程机制,将每个智能体作为独立的Uvicorn后台服务启动。
启动流程
launch_agent_server():每个智能体服务在独立线程中启动,实现并发probe_agent_health():轮询每个智能体的AgentCard健康检查端点,确保就绪boot_all_agents():按正确顺序编排启动序列:- 启动三个远程专业智能体(端口10020-10022)
- 等待健康检查通过
- 实例化协调智能体(依赖就绪后创建)
- 启动协调智能体(端口10023)并确认就绪
import asyncio, threading, time
def launch_agent_server(build_fn, port_num: int, label: str):
app_instance = build_fn()
uvicorn.run(app_instance.build(), host="127.0.0.1", port=port_num, log_level="warning")
worker = threading.Thread(target=_serve, name=f"agent-{label}", daemon=True)
执行启动命令:
python -m a2a_customer_routing.multi_agent.run_agents
客户端交互界面
多智能体后端就绪后,使用Streamlit构建聊天界面,通过A2A协议与协调智能体直接通信。一个关键技术挑战是Streamlit的同步框架与A2A SDK异步客户端的适配——解决办法是在独立后台线程中运行异步A2A通信,避免事件循环冲突,确保界面保持响应。
核心逻辑分为两层:异步函数 call_orchestrator_async 使用A2A SDK官方客户端处理协议通信;同步包装函数供Streamlit组件调用。
import httpx, asyncio, threading
from a2a.client import ClientFactory, create_text_message_object
from a2a.utils.constants import AGENT_CARD_WELL_KNOWN_PATH
def invoke_async_in_thread(async_op):
loop = asyncio.new_event_loop()
asyncio.set_event_loop(loop)
result_container.append(loop.run_until_complete(async_op))
worker = threading.Thread(target=_runner)
return result_container[0] if result_container else ""
实际应用场景
这套架构可以拓展到多种业务场景:
| 应用场景 | 核心能力 | 预期价值 |
|---|---|---|
| 客服升级回退 | 常见问题自动解决,复杂问题路由人工 | 降低人力成本40%-60% |
| 自动化入职引导 | 引导新客户或员工完成设置,实时答疑 | 缩短入职周期50% |
| 内部帮助台 | 处理IT、HR、财务请求,无需人工分拣 | 工单处理效率提升3-5倍 |
| API触发编排 | 协调订单跟踪、退款处理等多后端服务 | 业务流程自动化率提升 |
| 多语言支持 | 检测语言和情感,路由到区域专属智能体 | 覆盖全球用户,24/7运行 |
总结
回到开篇提出的三个核心问题,看看这套方案是如何回答的。
问题一:如何构建多个独立且可协作的客服智能体?
→ 解决方案:使用ADK的 LlmAgent 类声明式定义三个专业智能体——情感识别、知识检索和升级处理,每个智能体绑定专属工具和模型,通过系统提示词限定行为边界。ADK的模块化架构让各智能体职责单一、便于独立测试和维护。
问题二:如何实现智能体之间的标准化通信与协作?
→ 解决方案:采用A2A协议的AgentCard服务发现机制与JSON-RPC通信格式。每个智能体在标准端点发布能力描述,协调智能体通过查询AgentCard确认目标技能,再发送标准化请求并处理响应流。这就像一个积木式架构,智能体可以独立开发、部署和替换,整个系统的可扩展性和可维护性都上了一个台阶。
问题三:如何根据用户情感智能路由查询?
→ 解决方案:协调智能体作为核心调度器,先调用情感识别智能体分析情感极性,再根据结果选择路由路径——正面/中性路由至知识检索智能体进行RAG查询,负面路由至升级处理智能体模拟人工转接。整个过程真正实现了情感感知的智能客服体验。
技术创新与业务价值
- 模型-任务匹配策略:情感识别用轻量级8B模型,知识检索用30B强推理模型,精度和成本兼顾
- 标准化跨框架协作:通过A2A协议打通不同框架的智能体,避免厂商锁定
- RAG防幻觉机制:无匹配内容时明确返回
NO_KB_MATCH,防止模型编造答案 - 异步线程桥接:Streamlit同步界面与A2A异步客户端的桥接方案,为类似场景提供了通用参考
