核心检索链定义,后面 Agent 会把这个当 Tool 用 我用LangChain搭客服Agent处理3万条FAQ的实战踩坑前不久接了个电商后台项目客户是个做家居用品的中型商家客服团队每天要回两三千条咨询大多是「发货没」「尺码怎么选」「能不能开发票」这种重复性问题。他们想上个智能客服先拦住 80% 的标准咨询人工只接复杂工单。知识库大概有 3 万条 FAQ 文档格式杂得很有 Word、PDF、网页导出的 HTML还有一堆客服群里沉淀的聊天记录 TXT。选型时在 LangChain 和 LlamaIndex 里纠结半天说实话最开始我倾向于 LlamaIndex索引构建那套 API 确实顺手。但转念一想项目后期肯定要挂工具——查订单物流、改收货地址、申请退款这些都要 Agent 去调 API。LangChain 的 Tool/Toolkit 体系和 ReAct Agent 现成社区生态也更活改动成本低。试了一圈发现用create_react_agent配合AgentExecutor落地最快哪怕中间层封装得有点重赶工期它最稳。向量库选了 Milvus 立alone 版部署在客户内网服务器上数据不出域。Embedding 模型用的bge-large-zh-v1.5本地跑延迟能接受。LLM 走的私有化部署的 Qwen2-72B显存压力大但安全合规过得去。python核心检索链定义后面 Agent 会把这个当 Tool 用from langchain.chains import create_retrieval_chainfrom langchain.chains.combine_documents import create_stuff_documents_chainfrom langchain_core.prompts import ChatPromptTemplateretrieval_prompt ChatPromptTemplate.from_template(你是家居电商智能客服仅根据下面检索到的知识库片段回答用户问题。如果片段里没有答案直接说“知识库暂无相关信息”禁止编造。片段{context}问题{input})document_chain create_stuff_documents_chain(llm, retrieval_prompt)retrieval_chain create_retrieval_chain(vectorstore.as_retriever(search_kwargs{k: 5}), document_chain)切分策略差点把我整吐了这是个大坑。文档里全是「规格参数表」那种半结构化文本加上客服聊天记录的长上下文。最先用RecursiveCharacterTextSplitter(chunk_size500, chunk_overlap50)上线测试一看检索全是断句问「床垫承重多少」能匹配到「床垫」和「承重」在两个 chunk 里回答直接幻觉。当时我觉得加大 chunk_size 到 1000 就行结果发现噪音更多Top-K 里全是无关段落。后来咬牙上了语义切分SemanticChunker配合breakpoint_threshold_typegradient虽然嵌入调用量翻倍、建库慢了 40 分钟但检索准确率肉眼可见地涨上来了。还有个插曲PDF 里的表格被PyMuPDF解析成乱七八糟的文本。没办法只能针对规格书那类文件单独写脚本用pdfplumber抠表格转 Markdown 再入库。有意思的是这一步把「长宽高」「材质」「承重」这些字段结构化后Agent 回答参数类问题基本零幻觉了。python语义切分配置建库慢但检索准from langchain_experimental.text_splitter import SemanticChunkerfrom langchain_community.embeddings import HuggingFaceEmbeddingsembed_model HuggingFaceEmbeddings(model_name/models/bge-large-zh-v1.5)text_splitter SemanticChunker(embed_model,breakpoint_threshold_typegradient,breakpoint_threshold_amount85)Agent 给工具描述写模糊了上线第一天被用户薅秃ReAct Agent 绑了三个 Toolfaq_retriever、order_query_api、transfer_human。提示词里对词里对order_query_api的描述写的是「查询订单信息输入订单号」。结果用户发「我的货到哪了」Agent 直接报错Missing required parameter: order_id。当时我觉得这锅不在我用户不给单号我咋查。结果复盘发现用户根本不知道要给单号他们习惯说「帮我查一下」。坑死了得在 Agent 系统提示词里加强约束缺参数时必须先追问不能直接报错抛异常。改完后效果好多了但偶尔还是会把「查物流」和「改地址」搞混后来在 Tool 的args_schema里加了Literal类型约束配合 Few-shot 示例才稳住。pythonTool 定义加上严格参数校验和示例from langchain_core.tools import StructuredToolfrom pydantic import BaseModel, Fieldfrom typing import Literalclass OrderQueryInput(BaseModel):order_id: str Field(description18位数字订单号例如202407290001234567)query_type: Literal[logistics, detail, refund_status] Field(description查询类型物流轨迹/订单详情/退款进度)order_tool StructuredTool.from_function(funcquery_order_api,nameorder_query_api,description查询订单物流、详情或退款进度。必须提供订单号。如果用户未提供先追问。,args_schemaOrderQueryInput,return_directFalse)还有一个细节AgentExecutor默认max_iterations15有次 Agent 陷入「调用检索 - 觉得不够 - 再调用检索」的死循环把 Token 烧光了。加上early_stopping_methodforce和自定义的max_execution_time30秒熔断才彻底杜绝跑飞。落地后的数据反馈跑了两周日均拦住 1600 条标准咨询人工客服工单量下降 62%。剩下的 38% 里有 15% 是 Agent 识别意图不对转人工多为组合意图如「换货且改地址」23% 是知识库真没覆盖到的新 SKU 问题。下一步打算把客服转人工的对话日志跑一遍 Embedding 聚类自动生成候补 FAQ 补库。这套 LangChain Milvus 本地大模型的架构在内网环境下跑通闭环维护成本比预期低不少。本文基于实际项目经验整理欢迎在评论区交流技术问题。

相关新闻

最新新闻

2026年5款OPPO会议记录工具实测对比:哪款更称职谁才是王者

2026年5款OPPO会议记录工具实测对比:哪款更称职谁才是王者

先说明白核心判断 针对OPPO生态下职场新人的入职培训记录、产品知识学习需求,本次实测的五款工具各有适配场景:仅需要对应会议平台配套记录,腾讯会议、Zoom IQ足够使用;深度绑定企业飞书协作可以选飞书妙记;做海外会议…

2026/7/29 14:13:32
Buzz 部署指南:搭建开源消息与协作服务环境

Buzz 部署指南:搭建开源消息与协作服务环境

随着团队协作、个人知识管理以及实时通信需求不断增加,越来越多开发者开始尝试部署自己的开源服务,以减少对第三方平台的依赖,并获得更加灵活的管理方式。block/buzz 是一个开源项目,开发者可以根据项目定位搭建属于自己的服务环境…

2026/7/29 14:13:32
“双ISP“是两个宽带出口?90%的人一开始都理解错了

“双ISP“是两个宽带出口?90%的人一开始都理解错了

做跨境的朋友,买代理 IP 时多半见过"双ISP"这个词,还常被当成高价卖点。可一问"双ISP 到底是啥",十个有九个会说:"是不是有两个宽带出口,断一个还有一个顶上?"❌ 错。这么理解,你可能白花钱,甚至买到照样被封的号。这篇用大白话把它讲透,顺便解…

2026/7/29 14:13:32
华为ICT学院昇腾开发者高校训练营暨CANN启航营在兰州大学开营

华为ICT学院昇腾开发者高校训练营暨CANN启航营在兰州大学开营

2026年7月28日,由华为技术有限公司主办,兰州大学信息科学与工程学院、萃英学院、开源软件与实时系统教育部工程研究中心联合承办的华为ICT学院昇腾开发者高校训练营暨CANN启航营在兰州大学榆中校区秦岭堂正式开营。来自兰州大学的90余名学生参加本次训练…

2026/7/29 14:13:32
使用Arduino与BLHeli Suite识别与调试无名电调固件

使用Arduino与BLHeli Suite识别与调试无名电调固件

1. 项目概述:从一次“炸机”说起 事情得从我桌上那个烧得面目全非的MTO1804无刷电机和它那神秘的“无名”电调说起。那天,我正试图给一个自制的小型四轴飞行器做最后的调试,满心期待它能平稳离地。结果,在给电调上电的瞬间&#x…

2026/7/29 14:13:32
Windows Subsystem for Android完整指南:在Windows 11上运行安卓应用的终极方案

Windows Subsystem for Android完整指南:在Windows 11上运行安卓应用的终极方案

Windows Subsystem for Android完整指南:在Windows 11上运行安卓应用的终极方案 【免费下载链接】WSA Developer-related issues and feature requests for Windows Subsystem for Android 项目地址: https://gitcode.com/gh_mirrors/ws/WSA Windows Subsyst…

2026/7/29 14:08:31

月新闻