目录
[2.1 意图识别【判官】](#2.1 意图识别【判官】)
[2.2 咨询模式【打工1号】](#2.2 咨询模式【打工1号】)
[2.3 投诉通道【打工2号】](#2.3 投诉通道【打工2号】)
[2.4 闲聊时光【打工3号】](#2.4 闲聊时光【打工3号】)
[2.5 逻辑路由【委派任务】](#2.5 逻辑路由【委派任务】)
[2.6 用户输入](#2.6 用户输入)
一、系统架构
- 用户输入
- 意图识别
- 咨询
- 知识库检索
- 投诉
- 工单系统
- 闲聊
- 对话生成
- 咨询
- 结果格式化
- 输出响应
二、简单框架代码
2.1 意图识别【判官】
python
"""
小桃根据用户输入判断用户诉求
引入大模型对用户输入进行分析,划分为三类:
1、咨询
2、投诉
3、闲聊
"""
from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import ChatPromptTemplate
from langchain_openai import ChatOpenAI
# 1.初始化大语言模型
llm_if=ChatOpenAI(
base_url="https://api.siliconflow.cn/v1",
openai_api_key="sk-akvxpfqszjjtgohotfwfqhjaemigkxbgyhqfkkyzaburmukv",
model="Qwen/Qwen2.5-7B-Instruct",
temperature=0.5
)
# 2.意图识别
def intent(question):
intent_prompt=ChatPromptTemplate.from_template("""
你是经过客服培训的智能客服,现在你需要从文本的情感色彩、文字内容、用户需求等多角度分析用户输入的内容{user},\n
根据你的分析,将用户的意图归为以下三类中的一个:\n
第一类是咨询\n
第二类是投诉\n
第三类是闲聊\n
然后直接输出咨询或投诉或闲聊
""")
# 构建链
intent_chain =intent_prompt | llm_if | StrOutputParser()
response=intent_chain.invoke({"user":question})
return response
2.2 咨询模式【打工1号】
2.3 投诉通道【打工2号】
2.4 闲聊时光【打工3号】
python
"""
小桃认为用户希望与她闲聊
引入大模型与用户进行聊天
"""
from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import ChatPromptTemplate
# 1.初始化大语言模型
from intent_recognize import llm_if
def chat(user_content):
# 与用户闲聊
chat_prompt=ChatPromptTemplate.from_template("""
你是一个经过培训的网店客服,现在你需要与用户进行简单的闲聊,针对用户的问题{chat_text},和用户简单的聊几句,\n
回复内容尽量控制在50字以内,\n
""")
# 构建链
chat_chain=chat_prompt|llm_if|StrOutputParser()
response=chat_chain.invoke({"chat_text":user_content})
return response
2.5 逻辑路由【委派任务】
python
from chat import chat
# 定义逻辑路由
def route(info):
# 根据小桃意图分析的结果 路由到不同的处理链
if info=="咨询":
print("【进入咨询模式】")
return "待开发咨询对话"
elif info=="投诉":
print("【进入投诉通道】")
return "待开发投诉对话"
else:
print("【开启闲聊时光】")
response=chat(info)
return response
2.6 用户输入
python
from intent_recognize import intent
from route import route
def main():
print("你好!我是优购的智能客服【小桃】,很高兴为您服务,有什么是我能帮到您的吗?")
print("**** 输入 再见 ,将结束本次服务。****")
while True:
user_question=input("user:")
if user_question=="再见":
break
# 模型判官
small_peach = intent(user_question)
print("判官:", small_peach)
xiao_tao = route(small_peach)
print("小桃", xiao_tao)
print("--" * 50)
if __name__ == '__main__':
main()
三、当前进度演示
python
您好,亲~ 欢迎光临[优购],我是客服[小桃],很高兴为您服务!😊 请问有什么可以帮您的吗?
**** 输入 再见 ,将结束本次服务。****
user:你好
判官: 闲聊
【开启闲聊时光】
小桃 您好😊,亲,最近购物愉快吗?有什么好东西可以分享一下哦❤️
----------------------------------------------------------------------------------------------------
user:我的快递发货了吗
判官: 咨询
【进入咨询模式】
小桃 待开发咨询对话
----------------------------------------------------------------------------------------------------
user:你们给我发的商品质量太差了!
判官: 投诉
【进入投诉通道】
小桃 待开发投诉对话
----------------------------------------------------------------------------------------------------
user:再见
进程已结束,退出代码为 0