组合链作用
组合链是能够让模型按照不同的链路顺序执行,有点像工作流的概念,工作过程可以通过以下形式展示出来:
输入-> [链1] -> [链2] -> … -> 最终输出
用到的函数
from langchain_classic.chains import SequentialChain
客服优先级划分代码实现
# 组合链 将多个链的重要组件按照顺序执行: 输入-> [链1] -> [链2] -> ... -> 最终输出fromlangchain_classic.chainsimportSequentialChain,LLMChainfromlangchain_classic.promptsimportPromptTemplatefromlangchain_core.runnablesimportRunnableParallel,RunnableLambdadefclassify_name(output):return{"classify_result":output.content}defurgency_name(output):return{"urgency_result":output.content}defextraction_name(output):return{"extract_result":output.content}print("🚀 客服工单处理系统流水线")print("="*60)classification_chain=LLMChain(llm=llm,prompt=PromptTemplate.from_template("已知现有的分类标签有[订单问题,产品质量,技术问题,咨询问题,客服渠道]这5个标签,现在你需要将用户的问题:{input}分配到合适的一个标签,请直接输出标签结果"),output_key='classify_result',verbose=True)urgency_chain=LLMChain(llm=llm,prompt=PromptTemplate.from_template("请根据当前标签划分紧急程度,高级包括订单问题,产品质量;中级包括技术问题和客服渠道;低级包括咨询问题,请直接输出高级/中级/低级中的某一个级别即可,现在标签为:{classify_result}"),output_key='urgency_result',verbose=True)extraction_chain=LLMChain(llm=llm,prompt=PromptTemplate.from_template("请提取用户的问题描述,总结用户核心的问题。用户问题为{input},请总结核心问题"),output_key='extract_result',verbose=True)custom_service_pipeline=SequentialChain(chains=[classification_chain,urgency_chain,extraction_chain],input_variables=['input'],output_variables=['classify_result','urgency_result','extract_result'],verbose=True)customer_issues=["我的订单 #12345 还没发货,已经过了承诺的3天发货时间了,我很着急!","昨天刚买的手机屏幕有裂痕,我要退货退款!","你们的APP闪退问题什么时候能修复?已经持续一周了","我想咨询一下VIP会员的特权有哪些?","客服电话一直打不通,有没有其他联系方式?"]fori,issueinenumerate(customer_issues,1):print(f"\n{'='*60}")print(f"处理工单 #{i}:")print(f"问题:{issue}")print(f"{'-'*60}")result=custom_service_pipeline({"input":issue})print(f"📋 分类:{result['classify_result']}")print(f"🚨 紧急程度:{result['urgency_result']}")print(f"📝 提取信息:{result['extract_result']}")print(f"{'='*60}")print("\n✅ 所有工单处理完成!")输出结果可视化
处理工单#1:问题: 我的订单#12345 还没发货,已经过了承诺的3天发货时间了,我很着急!------------------------------------------------------------/www/learning_langchain/./langchain_leaning1.py:102: LangChainDeprecationWarning: The method `Chain.__call__` was deprecated in langchain-classic 0.1.0 and will be removed in 1.0.Use `invoke` instead.result = custom_service_pipeline({"input": issue})> Entering new SequentialChain chain...> Entering new LLMChain chain...Prompt after formatting: 已知现有的分类标签有[订单问题,产品质量,技术问题,咨询问题,客服渠道]这5个标签,现在你需要将用户的问题:我的订单#12345 还没发货,已经过了承诺的3天发货时间了,我很着急!分配到合适的一个标签,请直接输出标签结果> Finished chain.> Entering new LLMChain chain...Prompt after formatting: 请根据当前标签划分紧急程度,高级包括订单问题,产品质量;中级包括技术问题和客服渠道;低级包括咨询问题,请直接输出高级/中级/低级中的某一个级别即可,现在标签为:订单问题 > Finished chain.> Entering new LLMChain chain...Prompt after formatting: 请提取用户的问题描述,总结用户核心的问题。用户问题为我的订单#12345 还没发货,已经过了承诺的3天发货时间了,我很着急!,请总结核心问题> Finished chain.> Finished chain.📋 分类: 订单问题 🚨 紧急程度: 高级 📝 提取信息: 用户的核心问题是:订单#12345超过了承诺的3天发货时间还未发货,用户对此感到着急。============================================================ ============================================================ 处理工单#2:问题: 昨天刚买的手机屏幕有裂痕,我要退货退款!------------------------------------------------------------> Entering new SequentialChain chain...> Entering new LLMChain chain...Prompt after formatting: 已知现有的分类标签有[订单问题,产品质量,技术问题,咨询问题,客服渠道]这5个标签,现在你需要将用户的问题:昨天刚买的手机屏幕有裂痕,我要退货退款!分配到合适的一个标签,请直接输出标签结果 > Finished chain.> Entering new LLMChain chain...Prompt after formatting: 请根据当前标签划分紧急程度,高级包括订单问题,产品质量;中级包括技术问题和客服渠道;低级包括咨询问题,请直接输出高级/中级/低级中的某一个级别即可,现在标签为:产品质量 > Finished chain.> Entering new LLMChain chain...Prompt after formatting: 请提取用户的问题描述,总结用户核心的问题。用户问题为昨天刚买的手机屏幕有裂痕,我要退货退款!,请总结核心问题 > Finished chain.> Finished chain.📋 分类: 产品质量 🚨 紧急程度: 高级 📝 提取信息: 用户的核心问题是:新购买的手机屏幕出现裂痕,要求退货退款。 ============================================================ ============================================================ 处理工单#3:问题: 你们的APP闪退问题什么时候能修复?已经持续一周了------------------------------------------------------------> Entering new SequentialChain chain...> Entering new LLMChain chain...Prompt after formatting: 已知现有的分类标签有[订单问题,产品质量,技术问题,咨询问题,客服渠道]这5个标签,现在你需要将用户的问题:你们的APP闪退问题什么时候能修复?已经持续一周了分配到合适的一个标签,请直接输出标签结果 > Finished chain.> Entering new LLMChain chain...Prompt after formatting: 请根据当前标签划分紧急程度,高级包括订单问题,产品质量;中级包括技术问题和客服渠道;低级包括咨询问题,请直接输出高级/中级/低级中的某一个级别即可,现在标签为:技术问题 > Finished chain.> Entering new LLMChain chain...Prompt after formatting: 请提取用户的问题描述,总结用户核心的问题。用户问题为你们的APP闪退问题什么时候能修复?已经持续一周了,请总结核心问题 > Finished chain.> Finished chain.📋 分类: 技术问题 🚨 紧急程度: 中级 📝 提取信息: 用户的核心问题是:你们的APP存在闪退问题,这种情况已经持续了一周时间,用户希望知道这个问题什么时候能够得到修复。 ============================================================ ============================================================ 处理工单#4:问题: 我想咨询一下VIP会员的特权有哪些?------------------------------------------------------------> Entering new SequentialChain chain...> Entering new LLMChain chain...Prompt after formatting: 已知现有的分类标签有[订单问题,产品质量,技术问题,咨询问题,客服渠道]这5个标签,现在你需要将用户的问题:我想咨询一下VIP会员的特权有哪些?分配到合适的一个标签,请直接输出标签结果 > Finished chain.> Entering new LLMChain chain...Prompt after formatting: 请根据当前标签划分紧急程度,高级包括订单问题,产品质量;中级包括技术问题和客服渠道;低级包括咨询问题,请直接输出高级/中级/低级中的某一个级别即可,现在标签为:咨询问题 > Finished chain.> Entering new LLMChain chain...Prompt after formatting: 请提取用户的问题描述,总结用户核心的问题。用户问题为我想咨询一下VIP会员的特权有哪些?,请总结核心问题 > Finished chain.> Finished chain.📋 分类: 咨询问题 🚨 紧急程度: 低级 📝 提取信息: 用户的核心问题是:VIP会员有哪些特权? ============================================================ ============================================================ 处理工单#5:问题: 客服电话一直打不通,有没有其他联系方式?------------------------------------------------------------> Entering new SequentialChain chain...> Entering new LLMChain chain...Prompt after formatting: 已知现有的分类标签有[订单问题,产品质量,技术问题,咨询问题,客服渠道]这5个标签,现在你需要将用户的问题:客服电话一直打不通,有没有其他联系方式?分配到合适的一个标签,请直接输出标签结果 > Finished chain.> Entering new LLMChain chain...Prompt after formatting: 请根据当前标签划分紧急程度,高级包括订单问题,产品质量;中级包括技术问题和客服渠道;低级包括咨询问题,请直接输出高级/中级/低级中的某一个级别即可,现在标签为:客服渠道 > Finished chain.> Entering new LLMChain chain...Prompt after formatting: 请提取用户的问题描述,总结用户核心的问题。用户问题为客服电话一直打不通,有没有其他联系方式?,请总结核心问题 > Finished chain.> Finished chain.📋 分类: 客服渠道 🚨 紧急程度: 中级 📝 提取信息: 用户的核心问题是:客服电话无法接通,询问是否有其他联系方式。 ============================================================ ✅ 所有工单处理完成!