组合链作用
组合链是能够让模型按照不同的链路顺序执行,有点像工作流的概念,工作过程可以通过以下形式展示出来:
输入-> [链1] -> [链2] -> ... -> 最终输出
用到的函数
from langchain_classic.chains import SequentialChain
客服优先级划分代码实现
python
# 组合链 将多个链的重要组件按照顺序执行: 输入-> [链1] -> [链2] -> ... -> 最终输出
from langchain_classic.chains import SequentialChain, LLMChain
from langchain_classic.prompts import PromptTemplate
from langchain_core.runnables import RunnableParallel, RunnableLambda
def classify_name(output):
return {"classify_result":output.content}
def urgency_name(output):
return {"urgency_result":output.content}
def extraction_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会员的特权有哪些?",
"客服电话一直打不通,有没有其他联系方式?"
]
for i, issue in enumerate(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✅ 所有工单处理完成!")
输出结果可视化
powershell
处理工单 #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.
📋 分类: 客服渠道
🚨 紧急程度: 中级
📝 提取信息: 用户的核心问题是:客服电话无法接通,询问是否有其他联系方式。
============================================================
✅ 所有工单处理完成!