LangChain+FastAPI实战:电商多智能体客服系统从入门到精通,收藏这一篇就够了!
在此对 Chengping Li 对本文所作的贡献表示诚挚感谢,他在相关高校完成了数据科学与大数据技术专业的学士学位,专注数据科学与大数据分析领域。擅长 Python、数据采集、数据分析、数据可视化。Chengping Li 曾参与多项数据相关实操项目,负责数据采集、清洗、分析及可视化全流程工作,通过 Python 工具挖掘数据核心价值,将复杂数据转化为直观易懂的可视化成果,为业务决策提供可靠的数
关于分析师
在此对 Chengping Li 对本文所作的贡献表示诚挚感谢,他在相关高校完成了数据科学与大数据技术专业的学士学位,专注数据科学与大数据分析领域。擅长 Python、数据采集、数据分析、数据可视化。Chengping Li 曾参与多项数据相关实操项目,负责数据采集、清洗、分析及可视化全流程工作,通过 Python 工具挖掘数据核心价值,将复杂数据转化为直观易懂的可视化成果,为业务决策提供可靠的数据支撑,积累了丰富的一线数据处理与分析经验。

在电商行业数字化转型的进程中,客服系统作为连接企业与用户的核心触点,其智能化水平直接影响用户体验与运营效率**(点击文末“阅读原文”获取完整智能体、代码、数据、文档)。**
早期的电商客服多依赖人工坐席,效率低下且成本高昂;随着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股票涨跌|附完整代码数据
原文链接:tecdat.cn/?p=44060
核心模块实现
智能体定义与角色
我们设计了三个核心智能体,每个智能体通过专属的系统提示词明确角色和行为边界:
- 用户交互智能体:作为客服系统的“前台”,直接对接用户,核心职责是解析用户意图(咨询/购买/查订单),调用对应智能体的工具,最后整理结果回复用户。
- 商品查询智能体:作为“商品管理员”,管理商品数据,能根据商品ID、名称、类别等维度查询库存、价格等信息。
- 订单处理智能体:作为“订单专员”,处理用户购买请求,生成唯一订单号、扣减库存、模拟支付流程,同步记录订单状态。
关键代码实现
a. 环境配置与模型初始化 (config.py)
以下代码完成大模型的初始化配置,支持切换云端API和本地模型,已修改变量名和函数名,省略了部分异常处理代码:
# config.pyimport osfrom langchain_openai import ChatOpenAIfrom 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.pyfrom langchain.agents import create_react_agent, AgentExecutorfrom langchain.tools import Toolfrom langchain.prompts import PromptTemplatefrom 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. 商品查询工具与智能体创建 ---defsearch_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. 订单处理工具与智能体创建 ---defgenerate_order(goods_id: str, buy_quantity: int) -> str:"""创建订单。输入格式:'产品ID,数量',例如 'p001,2'。"""if goods_id notin goods_database:returnf"错误:商品ID {goods_id} 不存在。"if goods_database[goods_id]["stock"] < buy_quantity:returnf"错误:商品 {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": "已支付"}returnf"订单创建成功!订单号:{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. 用户交互智能体创建 ---defconsult_goods_agent(question: str) -> str:"""向商品查询助手提问。"""return goods_agent_executor.invoke({"input": question})["output"]defsubmit_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.pyfrom fastapi import FastAPI, HTTPExceptionfrom pydantic import BaseModelfrom agents import user_agent_executorimport uvicornapp = FastAPI(title="多智能体电商客服系统")classUserRequest(BaseModel): user_question: str user_code: str = "default_user"@app.post("/customer_service_chat")asyncdefcustomer_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")asyncdefget_all_goods():"""获取当前所有商品信息(用于前端展示或调试)。"""from agents import goods_databasereturn goods_databaseif __name__ == "__main__":
d. 运行与依赖配置
依赖清单(requirements.txt)已适配国内安装源,核心依赖如下:
fastapi>=0.104.0uvicorn>=0.24.0langchain>=0.1.0langchain-openai>=0.0.2langchain-community>=0.0.10pydantic>=2.5.0python-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构建的多智能体电商客服系统,核心是通过“分工协作”解决单体客服模型的痛点,已在实际业务中验证有效性。
- 该架构具备模块化、易扩展的优势,优化方向聚焦于对话记忆、鲁棒性和数据持久化,可适配更复杂的电商客服场景。

学AI大模型的正确顺序,千万不要搞错了
🤔2026年AI风口已来!各行各业的AI渗透肉眼可见,超多公司要么转型做AI相关产品,要么高薪挖AI技术人才,机遇直接摆在眼前!
有往AI方向发展,或者本身有后端编程基础的朋友,直接冲AI大模型应用开发转岗超合适!
就算暂时不打算转岗,了解大模型、RAG、Prompt、Agent这些热门概念,能上手做简单项目,也绝对是求职加分王🔋

📝给大家整理了超全最新的AI大模型应用开发学习清单和资料,手把手帮你快速入门!👇👇
学习路线:
✅大模型基础认知—大模型核心原理、发展历程、主流模型(GPT、文心一言等)特点解析
✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑
✅开发基础能力—Python进阶、API接口调用、大模型开发框架(LangChain等)实操
✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用
✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代
✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经
以上6大模块,看似清晰好上手,实则每个部分都有扎实的核心内容需要吃透!
我把大模型的学习全流程已经整理📚好了!抓住AI时代风口,轻松解锁职业新可能,希望大家都能把握机遇,实现薪资/职业跃迁~
这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

更多推荐

所有评论(0)