LLM驱动的多智能体架构在电商客服场景的落地实践
2023年7月31日
|
报告
在电商行业数字化转型的进程中,客服系统作为连接企业与用户的核心触点,其智能化水平直接影响用户体验与运营效率。
本项目完整报告、代码和数据资料已分享至会员群
加入会员群
电商客服需要处理的用户需求往往包含多个环节,比如用户说“我想买性价比高的手机,帮我下单”,这个需求既需要查询商品信息,又需要完成订单创建。传统单体智能客服模型会把所有逻辑揉合在一个模块中,一旦某一环节出问题,整个系统都可能受影响,且新增“退货咨询”这类功能时,需要改动核心代码。
基于此,我们借鉴人类企业的组织分工模式,设计了多智能体协作架构:将电商客服的全流程任务拆解为“意图解析”“商品查询”“订单处理”等子任务,每个子任务由专属的智能体负责,智能体之间通过标准化的工具调用完成协作。这种架构让每个模块职责单一,既便于定位问题,也能快速扩展新功能,是解决复杂客服场景的核心思路。
本项目完整报告、代码和数据资料
下载资料(17页)
系统架构图

技术栈选型
- 智能体框架:LangChain。该框架是国内可正常访问的开源工具,提供了智能体、工具、记忆等抽象层,无需重复开发基础逻辑,是构建LLM应用的主流选择,国内暂无完全同质化的替代品,但有AgentScope等自研框架可实现类似功能。
- 大语言模型:DeepSeek API/本地部署模型(Ollama)。其中OpenAI API在国内直接访问受限,企业级应用可替换为DeepSeek、智谱AI、百度文心一言等国内合规大模型;Ollama可本地部署大模型,国内无直接替代品,但可通过LMDeploy等框架实现本地大模型的轻量化部署。
- 后端框架:FastAPI。国内可正常访问和使用,是高性能异步Web框架,无直接替代的同类轻量化框架,是构建AI服务接口的优选。
- 通信与工具:基于LangChain的Tool抽象实现智能体间调用,核心功能封装为标准化工具,保证调用逻辑统一。
- 数据存储:演示阶段用Python字典模拟商品和订单数据,实际业务中可替换为MySQL、Redis等国内常用数据库,避免内存存储重启丢失数据的问题。
核心模块实现
智能体定义与角色
我们设计了三个核心智能体,每个智能体通过专属的系统提示词明确角色和行为边界:
- 用户交互智能体:作为客服系统的“前台”,直接对接用户,核心职责是解析用户意图(咨询/购买/查订单),调用对应智能体的工具,最后整理结果回复用户。
- 商品查询智能体:作为“商品管理员”,管理商品数据,能根据商品ID、名称、类别等维度查询库存、价格等信息。
- 订单处理智能体:作为“订单专员”,处理用户购买请求,生成唯一订单号、扣减库存、模拟支付流程,同步记录订单状态。
关键代码实现
最受欢迎的见解
- Python员工数据人力流失预测:ADASYN采样CatBoost算法、LASSO特征选择与动态不平衡处理及多模型对比研究
- R分布式滞后非线性模型DLNM分析某城市空气污染与健康数据:多维度可视化优化滞后效应解读
- Python古代文物成分分析与鉴别研究:灰色关联度、岭回归、K-means聚类、决策树分析
- Python TensorFlow OpenCV的卷积神经网络CNN人脸识别系统构建与应用实践
- Python用Transformer、SARIMAX、RNN、LSTM、Prophet时间序列预测对比分析用电量、零售销售、公共安全、交通事故数据
- MATLAB贝叶斯超参数优化LSTM预测设备寿命应用——以航空发动机退化数据为例
- Python谷歌商店Google Play APP评分预测:LASSO、多元线性回归、岭回归模型对比研究
- Python+AI提示词糖尿病预测模型融合构建:伯努利朴素贝叶斯、逻辑回归、决策树、随机森林、支持向量机SVM应用
DeepSeek、LangGraph和Python融合LSTM、RF、XGBoost、LR多模型预测NFLX股票涨跌|附完整代码数据
探索观点随时查看您喜欢的主题
关键代码实现
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_type="deepseek"):
if model_type == "deepseek":
return ChatOpenAI(
model="deepseek-chat",
openai_api_key=os.getenv("DEEPSEEK_API_KEY"),
openai_api_base="https://api.deepseek.com/v1",
temperature=0.1 # 低随机性,保证回复稳定
)
elif model_type == "ollama":
# 本地模型选项
return ChatOllama(model="llama3.2", temperature=0.1)
else:
# 默认使用国内可适配的模型
return ChatOpenAI(model="gpt-4o-mini", temperature=0.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(name="SearchGoods", func=search_goods, description="查询商品库存和价格信息")
goods_agent_prompt = PromptTemplate.from_template(
"""你是一个专业的产品查询助手。你只能使用`SearchGoods`工具来回答用户关于商品的问题。
用户问题:{input}
"""
)
goods_agent = create_react_agent(llm=init_llm_model(), tools=[goods_tool], prompt=goods_agent_prompt)
goods_agent_executor = AgentExecutor(agent=goods_agent, tools=[goods_tool], verbose=True)
# --- 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 = f"ORD-{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(name="GenerateOrder", func=generate_order, description="根据商品ID和数量创建订单并模拟支付")
order_agent_prompt = PromptTemplate.from_template(
"""你是一个订单处理助手。你只能使用`GenerateOrder`工具来处理用户的购买请求。
用户输入:{input}
注意:输入必须是“商品ID,购买数量”的格式。
"""
)
order_agent = create_react_agent(llm=init_llm_model(), tools=[order_tool], prompt=order_agent_prompt)
order_agent_executor = AgentExecutor(agent=order_agent, tools=[order_tool], verbose=True)
# --- 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(name="ConsultGoodsAgent", func=consult_goods_agent, description="当你需要回答关于商品查询、库存、价格等问题时,使用此工具询问产品专家。"),
Tool(name="SubmitOrderAgent", func=submit_order_agent, description="当用户明确想要购买商品时,使用此工具将购买请求(商品ID和数量)传递给订单专家。"),
]
user_agent_prompt = PromptTemplate.from_template(
"""你是电商客服总助手,负责理解用户意图并协调专家团队解决问题。
你有两位专家可以求助:
1. ConsultGoodsAgent:回答任何关于商品信息、库存、价格的问题。
2. SubmitOrderAgent:处理具体的商品购买请求。
请根据用户意图,选择正确的工具。如果用户意图模糊,请先询问澄清。
用户问题:{input}
"""
)
user_interact_agent = create_react_agent(llm=init_llm_model(), tools=user_interact_tools, prompt=user_agent_prompt)
user_agent_executor = AgentExecutor(agent=user_interact_agent, tools=user_interact_tools, verbose=True, handle_parsing_errors=True)
...... # 省略了智能体调用日志、异常兜底回复等代码
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_code=500, detail=f"智能体处理出错: {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)已适配国内安装源,核心依赖如下:
fastapi>=0.104.0
uvicorn>=0.24.0
langchain>=0.1.0
langchain-openai>=0.0.2
langchain-community>=0.0.10
pydantic>=2.5.0
python-dotenv>=1.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构建的多智能体电商客服系统,核心是通过“分工协作”解决单体客服模型的痛点,已在实际业务中验证有效性。
- 该架构具备模块化、易扩展的优势,优化方向聚焦于对话记忆、鲁棒性和数据持久化,可适配更复杂的电商客服场景。

每日分享最新报告和数据资料至会员群
关于会员群
- 会员群主要以数据研究、报告分享、数据工具讨论为主;
- 加入后免费阅读、下载相关数据内容,并同步海内外优质数据文档;
- 老用户可九折续费。
- 提供报告PDF代找服务
非常感谢您阅读本文,如需帮助请联系我们!

Python用Seedream4.5图像生成模型API调用与多场景应用|附代码教程
轻量级本地AI代理Nanobot部署OpenClaw替代方案实践|附代码教程
LLM嵌入K-Means、DBSCAN聚类、PCA主成分分析新闻文本聚类研究|附代码数据


