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的智能客服系统,能够根据用户提问的意图,自动选择合适的处理链进行回答。
热门推荐
小麦不耐受:饮食禁忌与应对策略
处理人际关系的智慧:沟通、信任与适度距离的重要性
GPT(GPT1-GPT4-GPT4o)模型的发展历程:从起源到未来
哪些茶叶有助于调节肠胃功能和缓情绪?——从医生角度探讨选择
三十多种法国生蚝品种齐全
原神每日委托攻略:如何轻松完成8个任务
广东韶关旅游必去十大景点,你去过几个?
过年熬夜守岁玩超嗨!中医教你滋阴平补调身体 熬夜后不适多按2穴位
别再“鸡娃”了!学习潜力靠培养,而不是逼迫
刚性自动化是什么?刚性自动化的应用场景与优缺点详解
油价调整有何规律?如何预测油价变动趋势?
当《哪吒2》重构神话,看传统文化如何借创新之力焕发新生
新手理解ComfyUI节点
洪泽湖&洪泽,美美与共!
糖友喝茶指南:这5种茶饮改善胰岛素敏感性
Windows系统没有可用管理员账户怎么办?
2024龙年出生姓杨的男孩名字推荐!
只买一辆车,“电车”好,还是“油车”好?内行人:搞清3个情况
取消来电提醒的多种方法
真正的强者,把情绪摁下去,把本事提上来
狗狗能否食用鸡蛋壳?科学解答来了
前世今生的因果关系,前世今生因果的句子
褪黑素增强机体免疫功能
数子法、数目法傻傻分不清楚?围棋到底是怎么判定输赢的
2024年国债市场与金融数据分析报告
大手笔并购 爱尔眼科加速扩张
怎么测量平方面积
纳达尔:ATP年终总决赛是我最大遗憾,退役后想重拾运动爱好
住手!别再用隔夜米做蛋炒饭了
研究发现BRD4 BD2抑制剂有望用于治疗急性髓系白血病