更新多个模块,优化API密钥管理,增强意图识别和Excel数据验证功能,添加置信度评分,改进日志记录和错误处理机制,支持调试模式,提升代码可读性和灵活性。
This commit is contained in:
@@ -8,13 +8,17 @@ import concurrent.futures
|
||||
from functools import wraps
|
||||
from pydantic import BaseModel, Field
|
||||
from langchain.output_parsers import PydanticOutputParser
|
||||
from rag2_0.tool.ModelTool import OpenAiLLM
|
||||
import sys
|
||||
from dotenv import load_dotenv
|
||||
import httpx
|
||||
import traceback
|
||||
import re
|
||||
import logging
|
||||
|
||||
# 将项目根目录添加到Python路径
|
||||
sys.path.append(os.getcwd())
|
||||
from rag2_0.tool.ModelTool import OpenAiLLM
|
||||
|
||||
load_dotenv()
|
||||
|
||||
# 配置日志
|
||||
@@ -31,7 +35,7 @@ logger = logging.getLogger("dialogue_to_workorder")
|
||||
# ================ 模型定义 ================
|
||||
class UserQuestionAndSolution(BaseModel):
|
||||
user_question: str = Field(description="用户的核心问题")
|
||||
solution: str = Field(description="坐席提供的解决方案")
|
||||
solution: str = Field(description="坐席提供的解决方案,解决方案如果存在多个步骤,使用中文分号隔开")
|
||||
|
||||
class UserQuestionAndSolutionList(BaseModel):
|
||||
user_question_list: list[UserQuestionAndSolution] = Field(description="客户问题列表")
|
||||
@@ -236,7 +240,7 @@ class DialogueToWorkorder:
|
||||
```json
|
||||
{{
|
||||
"user_question": "技改软件打开报错",
|
||||
"solution": "1、告知报错原因 2、通过远程辅助解决"
|
||||
"solution": "1、告知报错原因;2、通过远程辅助解决"
|
||||
}}
|
||||
```
|
||||
=======对话记录如下所示=======
|
||||
@@ -426,14 +430,15 @@ class DialogueToWorkorder:
|
||||
# 分析用户问题和解决方案
|
||||
user_question_list = self.get_user_question_and_solution(conversation_rows)
|
||||
|
||||
# 获取第一个问题和解决方案,用于后续分析
|
||||
if user_question_list and len(user_question_list) > 0:
|
||||
first_question = user_question_list[0]
|
||||
user_question_str = first_question.user_question
|
||||
solution_str = first_question.solution
|
||||
else:
|
||||
user_question_str = ""
|
||||
solution_str = ""
|
||||
user_question_str=""
|
||||
for user_question in user_question_list:
|
||||
user_question_str = user_question_str + user_question.user_question.strip() + "\n"
|
||||
user_question_str = user_question_str.strip()
|
||||
|
||||
solution_str=""
|
||||
for user_question in user_question_list:
|
||||
solution_str = solution_str + user_question.solution.strip() + "\n"
|
||||
solution_str = solution_str.strip()
|
||||
|
||||
# 分析是否抱怨、是否投诉、抱怨级别
|
||||
is_dissatisfaction, dissatisfaction_level, dissatisfaction_reasoning, is_complaint = (
|
||||
@@ -455,15 +460,9 @@ class DialogueToWorkorder:
|
||||
# 创建工单列表
|
||||
workorder_list = []
|
||||
|
||||
for user_question in user_question_list:
|
||||
user_question_str = user_question.user_question
|
||||
solution_str = user_question.solution
|
||||
|
||||
# 创建新的工单字典,复制基本信息
|
||||
workorder_dict = base_workorder_dict.copy()
|
||||
|
||||
# 更新工单字典
|
||||
workorder_dict.update({
|
||||
# 更新工单字典
|
||||
base_workorder_dict.update({
|
||||
"产品线": product_line,
|
||||
"产品名称": product_name,
|
||||
"模块名称": module_name,
|
||||
@@ -474,9 +473,29 @@ class DialogueToWorkorder:
|
||||
"是否投诉": "是" if is_complaint else '否',
|
||||
"解决方案": (solution_str + '\n存在抱怨:' + dissatisfaction_reasoning) if is_dissatisfaction else solution_str
|
||||
})
|
||||
workorder_list.append(base_workorder_dict)
|
||||
# for user_question in user_question_list:
|
||||
# user_question_str = user_question.user_question
|
||||
# solution_str = user_question.solution
|
||||
|
||||
# 将工单添加到列表中
|
||||
workorder_list.append(workorder_dict)
|
||||
# # 创建新的工单字典,复制基本信息
|
||||
# workorder_dict = base_workorder_dict.copy()
|
||||
|
||||
# # 更新工单字典
|
||||
# workorder_dict.update({
|
||||
# "产品线": product_line,
|
||||
# "产品名称": product_name,
|
||||
# "模块名称": module_name,
|
||||
# "客户问题": user_question_str,
|
||||
# "问题类型": problem_type,
|
||||
# "是否抱怨": "是" if is_dissatisfaction else '否',
|
||||
# "抱怨级别": dissatisfaction_level if is_dissatisfaction else '',
|
||||
# "是否投诉": "是" if is_complaint else '否',
|
||||
# "解决方案": (solution_str + '\n存在抱怨:' + dissatisfaction_reasoning) if is_dissatisfaction else solution_str
|
||||
# })
|
||||
|
||||
# # 将工单添加到列表中
|
||||
# workorder_list.append(workorder_dict)
|
||||
|
||||
return workorder_list
|
||||
|
||||
|
||||
Reference in New Issue
Block a user