全文链接https://tecdat.cn/?p45059原文出处拓端数据部落公众号关于分析师在此对 Chengping Li 对本文所作的贡献表示诚挚感谢他在相关高校完成了数据科学与大数据技术专业的学士学位专注数据科学与大数据分析领域。擅长 Python、数据采集、数据分析、数据可视化。Chengping Li 曾参与多项数据相关实操项目负责数据采集、清洗、分析及可视化全流程工作通过 Python 工具挖掘数据核心价值将复杂数据转化为直观易懂的可视化成果为业务决策提供可靠的数据支撑积累了丰富的一线数据处理与分析经验。专题名称LLM驱动的多智能体架构在电商客服场景的落地实践引言在电商行业数字化转型的进程中客服系统作为连接企业与用户的核心触点其智能化水平直接影响用户体验与运营效率。早期的电商客服多依赖人工坐席效率低下且成本高昂随着AI技术发展单体式智能客服模型逐渐落地但这类模型在处理“咨询-购买-订单查询”等多环节复合任务时易出现逻辑耦合、错误难追溯、扩展成本高等问题。作为数据科学家我们在服务电商客户的过程中发现将人类组织“专业分工、协同作业”的模式迁移到AI系统中构建多智能体Multi-Agent协作架构能有效解决单体模型的痛点。本文聚焦于LLM大型语言模型驱动的电商多智能体客服系统的设计与实现核心是通过LangChain框架构建分工明确的智能体模块结合FastAPI实现服务化封装完成商品查询、订单创建等全流程的智能化处理。该方案已在实际电商业务场景中得到验证能够精准解析用户模糊意图高效完成多环节任务协作。本文内容改编自过往客户咨询项目的技术沉淀并且已通过实际业务校验该项目完整代码已分享至交流社群。阅读原文进群获取更多最新AI见解和行业洞察可与900行业人士交流成长还提供人工答疑拆解核心原理、代码逻辑与业务适配思路帮大家既懂 怎么做也懂 为什么这么做遇代码运行问题更能享24小时调试支持。系统架构与设计设计思想电商客服需要处理的用户需求往往包含多个环节比如用户说“我想买性价比高的手机帮我下单”这个需求既需要查询商品信息又需要完成订单创建。传统单体智能客服模型会把所有逻辑揉合在一个模块中一旦某一环节出问题整个系统都可能受影响且新增“退货咨询”这类功能时需要改动核心代码。基于此我们借鉴人类企业的组织分工模式设计了多智能体协作架构将电商客服的全流程任务拆解为“意图解析”“商品查询”“订单处理”等子任务每个子任务由专属的智能体负责智能体之间通过标准化的工具调用完成协作。这种架构让每个模块职责单一既便于定位问题也能快速扩展新功能是解决复杂客服场景的核心思路。系统架构图技术栈选型智能体框架LangChain。该框架是国内可正常访问的开源工具提供了智能体、工具、记忆等抽象层无需重复开发基础逻辑是构建LLM应用的主流选择国内暂无完全同质化的替代品但有AgentScope等自研框架可实现类似功能。大语言模型DeepSeek API/本地部署模型Ollama。其中OpenAI API在国内直接访问受限企业级应用可替换为DeepSeek、智谱AI、百度文心一言等国内合规大模型Ollama可本地部署大模型国内无直接替代品但可通过LMDeploy等框架实现本地大模型的轻量化部署。后端框架FastAPI。国内可正常访问和使用是高性能异步Web框架无直接替代的同类轻量化框架是构建AI服务接口的优选。通信与工具基于LangChain的Tool抽象实现智能体间调用核心功能封装为标准化工具保证调用逻辑统一。数据存储演示阶段用Python字典模拟商品和订单数据实际业务中可替换为MySQL、Redis等国内常用数据库避免内存存储重启丢失数据的问题。相关文章DeepSeek、LangGraph和Python融合LSTM、RF、XGBoost、LR多模型预测NFLX股票涨跌|附完整代码数据原文链接https://tecdat.cn/?p44060核心模块实现智能体定义与角色我们设计了三个核心智能体每个智能体通过专属的系统提示词明确角色和行为边界用户交互智能体作为客服系统的“前台”直接对接用户核心职责是解析用户意图咨询/购买/查订单调用对应智能体的工具最后整理结果回复用户。商品查询智能体作为“商品管理员”管理商品数据能根据商品ID、名称、类别等维度查询库存、价格等信息。订单处理智能体作为“订单专员”处理用户购买请求生成唯一订单号、扣减库存、模拟支付流程同步记录订单状态。关键代码实现a. 环境配置与模型初始化 (config.py)以下代码完成大模型的初始化配置支持切换云端API和本地模型已修改变量名和函数名省略了部分异常处理代码# config.py import os from langchain_openai import ChatOpenAI from langchain_community.chat_models import ChatOllama # 初始化大模型示例使用DeepSeek API def init_llm_model(model_typedeepseek): if model_type deepseek: return ChatOpenAI( modeldeepseek-chat, openai_api_keyos.getenv(DEEPSEEK_API_KEY), openai_api_basehttps://api.deepseek.com/v1, temperature0.1 # 低随机性保证回复稳定 ) elif model_type ollama: # 本地模型选项 return ChatOllama(modelllama3.2, temperature0.1) else: # 默认使用国内可适配的模型 return ChatOpenAI(modelgpt-4o-mini, temperature0.1) ...... # 省略了模型超时重试、参数校验等异常处理代码b. 工具封装与智能体创建 (agents.py)以下代码实现智能体和工具的核心逻辑修改了数据变量名、函数名省略了部分日志记录代码# agents.py from langchain.agents import create_react_agent, AgentExecutor from langchain.tools import Tool from langchain.prompts import PromptTemplate from config import init_llm_model # --- 模拟商品和订单数据 --- goods_database { p001: {name: 智能手机 X1, price: 4999.0, stock: 100, category: 电子产品}, p002: {name: 笔记本电脑 Pro, price: 8999.0, stock: 50, category: 电子产品}, } order_database {} # --- 1. 商品查询工具与智能体创建 --- def search_goods(query: str) - str: 根据商品ID、名称或类别查询商品信息。输入示例p001 或 手机 results [] query query.lower() for goods_id, goods_info in goods_database.items(): if query in goods_id or query in goods_info[name].lower() or query in goods_info[category].lower(): results.append(f商品ID: {goods_id}, 名称: {goods_info[name]}, 价格: {goods_info[price]}元, 库存: {goods_info[stock]}件) return \n.join(results) if results else 未找到相关商品。 goods_tool Tool(nameSearchGoods, funcsearch_goods, description查询商品库存和价格信息) goods_agent_prompt PromptTemplate.from_template( 你是一个专业的产品查询助手。你只能使用SearchGoods工具来回答用户关于商品的问题。 用户问题{input} ) goods_agent create_react_agent(llminit_llm_model(), tools[goods_tool], promptgoods_agent_prompt) goods_agent_executor AgentExecutor(agentgoods_agent, tools[goods_tool], verboseTrue) # --- 2. 订单处理工具与智能体创建 --- def generate_order(goods_id: str, buy_quantity: int) - str: 创建订单。输入格式产品ID,数量例如 p001,2。 if goods_id not in goods_database: return f错误商品ID {goods_id} 不存在。 if goods_database[goods_id][stock] buy_quantity: return f错误商品 {goods_database[goods_id][name]} 库存不足。当前库存 {goods_database[goods_id][stock]}。 # 更新库存 goods_database[goods_id][stock] - buy_quantity # 生成订单 import uuid order_code fORD-{uuid.uuid4().hex[:8].upper()} total_amount goods_database[goods_id][price] * buy_quantity order_database[order_code]{product_id: goods_id, quantity: buy_quantity, amount: total_amount, status: 已支付} return f订单创建成功订单号{order_code}商品{goods_database[goods_id][name]} x{buy_quantity}总金额{total_amount}元。 order_tool Tool(nameGenerateOrder, funcgenerate_order, description根据商品ID和数量创建订单并模拟支付) order_agent_prompt PromptTemplate.from_template( 你是一个订单处理助手。你只能使用GenerateOrder工具来处理用户的购买请求。 用户输入{input} 注意输入必须是“商品ID,购买数量”的格式。 ) order_agent create_react_agent(llminit_llm_model(), tools[order_tool], promptorder_agent_prompt) order_agent_executor AgentExecutor(agentorder_agent, tools[order_tool], verboseTrue) # --- 3. 用户交互智能体创建 --- def consult_goods_agent(question: str) - str: 向商品查询助手提问。 return goods_agent_executor.invoke({input: question})[output] def submit_order_agent(request: str) - str: 向订单处理助手发起购买请求。 return order_agent_executor.invoke({input: request})[output] user_interact_tools [ Tool(nameConsultGoodsAgent, funcconsult_goods_agent, description当你需要回答关于商品查询、库存、价格等问题时使用此工具询问产品专家。), Tool(nameSubmitOrderAgent, funcsubmit_order_agent, description当用户明确想要购买商品时使用此工具将购买请求商品ID和数量传递给订单专家。), ] user_agent_prompt PromptTemplate.from_template( 你是电商客服总助手负责理解用户意图并协调专家团队解决问题。 你有两位专家可以求助 1. ConsultGoodsAgent回答任何关于商品信息、库存、价格的问题。 2. SubmitOrderAgent处理具体的商品购买请求。 请根据用户意图选择正确的工具。如果用户意图模糊请先询问澄清。 用户问题{input} ) user_interact_agent create_react_agent(llminit_llm_model(), toolsuser_interact_tools, promptuser_agent_prompt) user_agent_executor AgentExecutor(agentuser_interact_agent, toolsuser_interact_tools, verboseTrue, handle_parsing_errorsTrue) ...... # 省略了智能体调用日志、异常兜底回复等代码c. 服务层封装与API (main.py)以下代码实现HTTP接口封装修改了类名、函数名省略了接口权限校验代码# main.py from fastapi import FastAPI, HTTPException from pydantic import BaseModel from agents import user_agent_executor import uvicorn app FastAPI(title多智能体电商客服系统) class UserRequest(BaseModel): user_question: str user_code: str default_user app.post(/customer_service_chat) async def customer_service_interact(user_request: UserRequest): 处理用户查询的主接口。 try: result user_agent_executor.invoke({input: user_request.user_question}) return { response: result[output], user_code: user_request.user_code, status: success } ...... # 省略了接口响应耗时统计、请求日志记录代码 except Exception as e: raise HTTPException(status_code500, detailf智能体处理出错: {str(e)}) app.get(/get_all_goods) async def get_all_goods(): 获取当前所有商品信息用于前端展示或调试。 from agents import goods_database return goods_database if __name__ __main__:d. 运行与依赖配置依赖清单requirements.txt已适配国内安装源核心依赖如下fastapi0.104.0 uvicorn0.24.0 langchain0.1.0 langchain-openai0.0.2 langchain-community0.0.10 pydantic2.5.0 python-dotenv1.0.0启动步骤适配国内终端指令安装依赖pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple设置环境变量set DEEPSEEK_API_KEY你的API密钥Windows/export DEEPSEEK_API_KEY你的API密钥Linux/Mac启动服务python main.py测试接口通过FastAPI自动生成的文档http://localhost:8000/docs或curl指令测试例如查询电子产品curl -X POST http://localhost:8000/customer_service_chat \ -H Content-Type: application/json \ -d {user_question: 你们有哪些电子产品, user_code: test123}完整内容及更多AI见解和行业洞察请进群获取。项目应用效果与优化方向实际业务场景验证商品咨询场景用户输入“你们有哪些电子产品”系统流程为用户交互智能体识别查询意图→调用商品查询智能体→商品查询智能体返回电子产品列表→用户交互智能体整理成自然语言回复。实际返回结果包含智能手机X1、笔记本电脑Pro的ID、价格、库存等信息满足用户咨询需求。订单创建场景用户输入“我想购买2台ID为p001的手机”系统流程为用户交互智能体识别购买意图→提取商品ID和数量并调用订单处理智能体→订单处理智能体扣减库存、生成订单号→用户交互智能体返回订单成功信息。实际返回包含唯一订单号、总金额库存同步从100扣减为98符合业务预期。核心优势模块化易维护每个智能体只负责单一任务比如修改商品查询逻辑仅需调整goods_database和search_goods函数无需改动订单或用户交互模块符合软件工程高内聚低耦合原则。意图处理更灵活依托LLM的理解能力能处理“那个最贵的电脑还有货吗”这类模糊表达自动转化为结构化的工具调用指令比传统关键词匹配的客服系统更贴近自然交互。扩展成本低新增“退货咨询”智能体时只需按相同模式创建工具和智能体在用户交互智能体的工具列表中注册即可无需重构核心架构。优化方向对话记忆能力当前接口为单次交互可集成LangChain的ConversationBufferMemory让系统记住用户历史对话如“我刚才问的那款手机能下单吗”提升交互连贯性。鲁棒性增强当LLM输出不符合工具调用格式时补充兜底逻辑比如提示用户“请明确告知商品ID和购买数量”避免系统直接报错。性能与持久化接入Redis缓存高频商品查询结果提升响应速度将商品和订单数据迁移至MySQL实现数据持久化满足生产环境需求引入LangGraph定义可视化工作流让多智能体协作逻辑更可控。整体流程梳理竖版流程图总结本方案基于LangChain、FastAPI构建的多智能体电商客服系统核心是通过“分工协作”解决单体客服模型的痛点已在实际业务中验证有效性。该架构具备模块化、易扩展的优势优化方向聚焦于对话记忆、鲁棒性和数据持久化可适配更复杂的电商客服场景。