当前位置: 首页 > news >正文

Langchain项目-多功能客服

LangChain项目之多功能客服
设计思路是:将客服场景拆解为独立的工具函数(订单查询、退换货处理、常见问题解答),然后让 LLM Agent 根据用户意图自主选择合适的工具来响应。这种"工具驱动"的架构模式在实际项目中非常常见,也是 LangChain Agent 最典型的使用方式。

# customer_service_agent.pyfrom langchain_openaiimportChatOpenAI from langchain_core.toolsimporttool from langchain_core.promptsimportChatPromptTemplate, MessagesPlaceholder from langchain.agentsimportAgentExecutor, create_openai_tools_agent# legacy,新项目推荐 LangGraphfrom langchain_core.messagesimportHumanMessage, AIMessage from langchain_community.chat_message_historiesimportChatMessageHistory from langchain_core.runnables.historyimportRunnableWithMessageHistory from rich.consoleimportConsole from dotenvimportload_dotenvimportjson load_dotenv()console=Console()# ============================# 工具定义# ============================@tool def search_faq(query: str)->str:"""搜索常见问题解答库。适合回答产品使用、政策、流程等问题。""" faq_data={"退款":"退款政策:7天内无理由退款,需要原包装。申请退款请联系客服。","发货":"一般1-3个工作日发货,节假日顺延。急需可选顺丰加急。","保修":"正规渠道购买享有官方1年保修,屏幕损坏不在保修范围内。","优惠":"新用户首单8折优惠,会员用户积分可抵扣货款。","支付":"支持微信、支付宝、银行卡,不支持货到付款。",}forkeyword, answerinfaq_data.items():ifkeywordinquery:returnanswerreturn"未找到相关FAQ,建议联系在线客服获取更多帮助。"@tool def check_order(order_id: str)->str:""" 查询订单状态和物流信息。 输入订单编号(如 ORD-12345678),返回订单详情。""" orders={"ORD-12345678":{"status":"已发货","items":"Python编程书 × 1","amount":89.9,"shipping":"顺丰:SF1234567890,预计明天到达"},"ORD-87654321":{"status":"待发货","items":"AI开发课程 × 1","amount":299.0,"shipping":"预计明天发货"}}order=orders.get(order_id)iforder:returnjson.dumps(order,ensure_ascii=False)returnf"订单 {order_id} 不存在,请确认订单号是否正确。"@tool def submit_complaint(order_id: str, complaint_type: str, description: str)->str:""" 提交售后投诉或申请。 complaint_type: 退款申请/质量问题/物流问题/其他"""importdatetime ticket_id=f"TKT-{datetime.datetime.now().strftime('%Y%m%d%H%M%S')}"return(f"投诉已受理!工单编号:{ticket_id}\n"f"类型:{complaint_type}\n"f"相关订单:{order_id}\n"f"预计24小时内客服跟进处理。")@tool def recommend_products(user_need: str)->str:"""根据用户需求推荐适合的产品。""" catalog=[{"name":"Python入门到精通","price":89,"tag":"编程 Python 初学者"},{"name":"AI Agent实战课程","price":299,"tag":"AI 机器学习 Agent"},{"name":"LangChain实战教程","price":199,"tag":"LangChain Python AI"},{"name":"数据分析全攻略","price":159,"tag":"数据分析 pandas Excel"},]# 简单的关键词匹配results=[]foritemincatalog:ifany(keywordinuser_needforkeywordinitem["tag"].split()): results.append(f"• {item['name']} - ¥{item['price']}")ifresults:return"根据您的需求,为您推荐:\n"+"\n".join(results)return"暂无完全匹配的推荐,请描述更多您的需求。"# ============================# Agent 构建# ============================tools=[search_faq, check_order, submit_complaint, recommend_products]system_message="""你是"小慧",一位热心、专业的客服助手。## 你的职责- 解答用户的产品和服务相关问题 - 查询订单状态和物流信息 - 处理售后申请和投诉 - 根据用户需求推荐合适的产品## 服务准则1. 始终保持热情、耐心、专业的态度2. 先理解用户需求,再给出帮助3. 使用工具前先思考哪个工具最合适4. 如果无法解决,礼貌地转接人工客服(告知用户联系400-123-4567)5. 用友好的语气,避免生硬的机器人感## 权限限制- 不能修改订单金额 - 不能直接执行退款,只能提交申请""" prompt=ChatPromptTemplate.from_messages([("system", system_message), MessagesPlaceholder(variable_name="chat_history"),("human","{input}"), MessagesPlaceholder(variable_name="agent_scratchpad"),])llm=ChatOpenAI(model="gpt-4.1",temperature=0.3)agent=create_openai_tools_agent(llm, tools, prompt)agent_executor=AgentExecutor(agent=agent,tools=tools,verbose=False,max_iterations=5,handle_parsing_errors=True)# 会话历史管理store={}def get_session_history(session_id: str)->ChatMessageHistory:ifsession_id notinstore: store[session_id]=ChatMessageHistory()returnstore[session_id]agent_with_history=RunnableWithMessageHistory(agent_executor, get_session_history,input_messages_key="input",history_messages_key="chat_history")# ============================# 主程序# ============================def main(): session_id="customer_001"console.print("\n[bold cyan]小慧:[/bold cyan]您好!我是小慧,很高兴为您服务!""请问有什么可以帮助您的?😊")whileTrue: user_input=input("\n[你]:").strip()ifnot user_input:continueifuser_input.lower()in["quit","exit","退出"]: console.print("[bold cyan]小慧:[/bold cyan]感谢您的光临,再见!👋")breakresult=agent_with_history.invoke({"input":user_input},config={"configurable":{"session_id":session_id}})console.print(f"\n[bold cyan]小慧:[/bold cyan]{result['output']}")if__name__=="__main__":main()
http://www.jsqmd.com/news/1052134/

相关文章:

  • 进化式AI代码生成:策略基因、经验复用与系统架构实践
  • 装过两套大户型的过来人,说说功能沙发和软体家具选哪家好 - 深圳市民HLL
  • NeuroTrace框架:基于推理溯源图的对抗样本检测与可解释性分析
  • 机器学习解析病毒RNA假结动态机制:从分子动力学到药物设计
  • 3个步骤解决网盘限速:LinkSwift下载助手完全指南
  • CircuitJS1 Desktop Mod:三步掌握免费离线电路仿真终极指南
  • 换过3套大户型功能沙发,给大家说说哪些品牌更靠谱 - 深圳市民HLL
  • p053基于Hadoop 的国产电影数据分析与可视化2(设计源文件+万字报告+讲解)(支持资料、图片参考_降重降ai)
  • 基于Rust的静态信息流控制框架Filament设计与实现
  • 无需重训练实现多模型融合:扩散模型去噪对齐原理与实践
  • Ubuntu 20.04 Redis生产级安全加固实战指南
  • 2026宁波漏水检测维修本地口碑防水商家榜单:厨卫/阳台/屋面/地下室渗漏水维修,持证施工+明码实价,防水补漏公司TOP5推荐 - 即刻修防水
  • BlenderGIS终极指南:5个简单步骤将地理数据变为惊艳3D场景 [特殊字符]
  • 虚拟电厂核心术语表 2026.6
  • 2026宿迁漏水检测维修本地口碑防水商家榜单:厨卫/阳台/屋面/地下室渗漏水维修,持证施工+明码实价,防水补漏公司TOP5推荐 - 即刻修防水
  • LinkSwift网盘直链下载助手:九大网盘一键解析,告别限速的终极解决方案
  • 3个场景+4个技巧,让你彻底告别Windows窗口尺寸烦恼
  • 基于属性图与时间推理的长对话AI记忆系统设计与实现
  • B站缓存视频转换终极指南:3分钟学会m4s转MP4完整方法
  • 机器学习在弱引力透镜宇宙学中的应用:应对系统误差与分布偏移挑战
  • emWin仿真开发实战:硬件按键模拟与GUI集成调试指南
  • 从灾难性遗忘到概念瓶颈:CI-CBM实现免示例增量学习
  • 2026岳阳防水补漏避坑指南:卫生间/厨房/阳台/屋顶/地下室漏水检测维修全攻略,正规施工+透明报价+口碑榜靠谱服务商推荐 - 安佳防水
  • 终极macOS炉石传说助手:HSTracker卡组跟踪与游戏分析完整指南
  • CompressO:免费开源的视频图片压缩神器,让文件大小减半的秘密武器
  • 2026安康防水补漏避坑指南:卫生间/厨房/阳台/屋顶/地下室漏水检测维修全攻略,正规施工+透明报价+口碑榜靠谱服务商推荐 - 安佳防水
  • 2026年装大户型选功能沙发,有没有靠谱的品牌可以推荐? - 深圳市民HLL
  • 042、Bug 修复全流程:从复现到定位到验证的五步工程法
  • 基于SAM的地质图像多任务分割:Petro-SAM框架实践与优化
  • 2026年当下西安加固源头公司业内推荐:恒大加固深度解析与选型指南 - 品牌鉴赏官2026