LangChain入门:用RouterChain实现智能客服问题分类
创作时间:
作者:
@小白创作中心
LangChain入门:用RouterChain实现智能客服问题分类
引用
CSDN
1.
https://blog.csdn.net/wangjiansui/article/details/137510754
在构建智能客服系统时,准确识别并分类用户的问题至关重要。LangChain的RouterChain提供了一种动态选择下一个处理链的机制,根据用户的问题内容,选择最合适的处理模板进行回答。
任务设定
假设我们的鲜花运营智能客服ChatBot需要处理两大类问题:
- 鲜花养护:如保持花的健康、浇水、施肥等。
- 鲜花装饰:如搭配花束、装饰场地等。
我们的目标是根据问题类型,将任务分配给相应的ChatBot A或ChatBot B。
整体框架
RouterChain(路由链)能够根据用户问题动态选择下一个链。它首先使用路由器链确定问题更适合哪个处理模板,然后将问题发送到该处理模板进行回答。如果问题不适合任何已定义的处理模板,它会被发送到默认链。
在这个示例中,我们将使用LLMRouterChain和MultiPromptChain组合实现路由功能。MultiPromptChain会调用LLMRouterChain选择与问题最相关的提示,然后使用该提示回答问题。
具体步骤
- 构建处理模板:为鲜花护理和鲜花装饰定义两个字符串模板。
- 初始化语言模型:导入并实例化语言模型。
- 构建目标链:根据模板构建对应的LLMChain,并存储在一个字典中。
- 构建LLM路由链:使用提示信息构建路由模板,并创建LLMRouterChain。
- 构建默认链:准备一个默认链,用于处理不适合任何处理模板的问题。
- 构建多提示链:使用MultiPromptChain整合路由链、目标链和默认链,形成决策系统。
具体实现
- 构建提示信息的模板:
flower_care_template = "你是一个经验丰富的园丁,擅长解答关于养花育花的问题。下面是需要你来回答的问题: {input}"
flower_deco_template = "你是一位网红插花大师,擅长解答关于鲜花装饰的问题。下面是需要你来回答的问题: {input}"
prompt_infos = [
{
"name": "flower_care",
"description": "适合回答关于鲜花护理的问题",
"prompt": flower_care_template
},
{
"name": "flower_deco",
"description": "适合回答关于鲜花装饰的问题",
"prompt": flower_deco_template
}
]
- 初始化语言模型:
from langchain.chat_models import ChatOpenAI
llm = ChatOpenAI(temperature=0)
- 构建目标链:
from langchain.chains import LLMChain
from langchain.prompts import PromptTemplate
chains = {}
for p_info in prompt_infos:
prompt = PromptTemplate(
template=p_info["prompt"],
input_variables=["input"]
)
chain = LLMChain(llm=llm, prompt=prompt)
chains[p_info["name"]] = chain
- 构建LLM路由链:
from langchain.chains.router.llm_router import LLMRouterChain, RouterOutputParser
from langchain.chains.router.multi_prompt_prompt import MULTI_PROMPT_ROUTER_TEMPLATE
destinations = [f"{p['name']}: {p['description']}" for p in prompt_infos]
destinations_str = "\n".join(destinations)
router_template = MULTI_PROMPT_ROUTER_TEMPLATE.format(destinations=destinations_str)
router_prompt = PromptTemplate(
template=router_template,
input_variables=["input"]
)
router_chain = LLMRouterChain.from_llm(llm, router_prompt)
- 构建默认链:
from langchain.chains import ConversationChain
default_chain = ConversationChain(llm=llm, output_key="text")
- 构建多提示链:
from langchain.chains.router import MultiPromptChain
chain = MultiPromptChain(
router_chain=router_chain,
destination_chains=chains,
default_chain=default_chain,
verbose=True
)
测试
现在我们可以测试一下这个系统:
response = chain.run("如何让玫瑰花保持新鲜?")
print(response)
response = chain.run("如何用玫瑰花装饰客厅?")
print(response)
通过以上步骤,我们就完成了一个简单的基于LangChain的智能客服系统,能够根据用户提问的意图,自动选择合适的处理链进行回答。
热门推荐
微信文字转语音功能全攻略:内置功能与第三方工具推荐
静息心率应控制在55-60次/分钟,专家提出冠心病心率管理新建议
南澳塔斯马尼亚深度游:十二使徒岩、摇篮山与海鲜盛宴
《非诚勿扰》取景地:三亚亚龙湾热带天堂森林公园全攻略
宝宝添加辅食便秘怎么回事
抗生素致白细胞降低怎么办?四大原因及应对方案
树莓派语音助手:不只是音乐播放器
迷你洗衣机:省空间,洗涤效果如何
重庆话和四川话的区别,你真的了解吗?看完涨知识了!
大银幕刮起“四川风”:影像如何讲好四川故事?
智能化养殖年出栏百万羽,河北东里寨村蹚出乡村振兴新路
烤箱空气炸锅都能做:家庭版烤乳鸽制作教程
传统与创新:粤港两地烤乳鸽的风味传奇
落雪为安!小雪节气全国赏雪地图出炉 带你看粉装玉砌山河颜
直立行走:人类进化的里程碑与适应挑战
长沙冬游:三大景点玩转“南方雪国”
长沙古城北门潮宗街:千年古迹焕发新时代活力
长沙秋日摄影攻略:四大绝美取景地+实用拍摄技巧
秦始皇动用70万劳役建阿房宫,考古证实为“烂尾楼”
秦始皇统一制度,开创中国封建专制新时代
秦始皇首创中央集权,奠定中国两千多年政治格局
如何在武汉同济医院顺利报销?武汉同济医院的报销规定有哪些?
赵匡胤:被低估的宋朝开国皇帝,统一中原72年
从胡辣汤到烧鸡:河南六大特色小吃完全指南
1月旅行适合去的10个目的地,风景优质,出行性价比高
铁锅选购完全指南:材质、尺寸、品牌选购要点
生铁熟铁还是0涂层?双十一炒锅选购完全指南
湖南桂阳:十大景点展现千年文化魅力
白细胞减少症诊断指南:5种主要检查方法详解
穿越千年,揭秘中国最早历法:黄帝历与夏历的传奇历程