更新.gitignore以忽略临时文件,修改api_key文件,重构合并名词的逻辑,删除不再使用的脚本,优化对话到工单的处理流程,添加会话结果保存为JSON的功能,调整API调用参数,修复部分代码中的错误。

This commit is contained in:
2025-07-25 09:53:47 +08:00
parent 4d7ef54ae7
commit 2cbdc23fc0
13 changed files with 1205 additions and 27522 deletions
+13 -48
View File
@@ -42,8 +42,6 @@ logging.basicConfig(
class DifyCompareTest:
def __init__(self):
# 先词条后工单检索工作流
self.first_wiki_client = ChatClient(api_key="app-gocvuqduBnJptYNPpnW9V9R6", base_url=os.getenv("DIFY_BSAE_URL"))
# 词条与工单同时检索
self.both_wiki_worker_client = ChatClient(api_key="app-CPoOMaGDsLRPAe9TW7Xjhszy", base_url=os.getenv("DIFY_BSAE_URL"))
self.llm = OpenAiLLM(base_url=os.getenv("OPENAI_API_BASE"), model=os.getenv("MODEL_NAME"))
@@ -88,8 +86,8 @@ class DifyCompareTest:
time.sleep(1) # 等待1秒后重试
def process_workflow(self, workflow_name, client, inputs, query, old_answer):
"""处理单个工作流调用"""
def process_workflow(self, client, inputs, query, old_answer):
"""处理工作流调用"""
max_retries = 3
retry_count = 0
@@ -107,14 +105,14 @@ class DifyCompareTest:
except Exception as e:
retry_count += 1
if retry_count >= max_retries:
logging.error(f"{workflow_name}调用失败 (尝试 {max_retries} 次后): {e}")
logging.error(f"词条与工单同时检索调用失败 (尝试 {max_retries} 次后): {e}")
return '', ''
else:
import time
time.sleep(1) # 等待1秒后重试
def process_single_row(self, index, row):
"""处理单行数据的方法,用于多线程执行"""
"""处理单行数据的方法"""
try:
query = row["提问"]
old_answer = row["回答"]
@@ -125,47 +123,18 @@ class DifyCompareTest:
"user_name": "AutoCodeRun"
}
# 并行调用两个工作流
results = {'first_wiki': None, 'both_wiki_worker': None}
with ThreadPoolExecutor(max_workers=2) as workflow_executor:
# 提交两个工作流任务
futures = {
workflow_executor.submit(
self.process_workflow,
"先词条后工单工作流",
self.first_wiki_client,
inputs,
query,
old_answer
): 'first_wiki',
workflow_executor.submit(
self.process_workflow,
"词条与工单同时工作流",
self.both_wiki_worker_client,
inputs,
query,
old_answer
): 'both_wiki_worker'
}
# 收集结果
for future in as_completed(futures):
workflow_key = futures[future]
try:
answer, judge_result = future.result()
results[workflow_key] = (answer, judge_result)
except Exception as e:
logging.error(f"工作流执行失败 (行{index}): {e}")
results[workflow_key] = ('', '')
# 调用词条与工单同时检索工作流
answer, judge_result = self.process_workflow(
self.both_wiki_worker_client,
inputs,
query,
old_answer
)
# 构建结果
result_row = row.copy()
result_row["词条工单回答"] = results['first_wiki'][0]
result_row["词条工单回答对比"] = results['first_wiki'][1]
result_row["词条与工单同时回答"] = results['both_wiki_worker'][0]
result_row["词条与工单同时回答对比"] = results['both_wiki_worker'][1]
result_row["词条工单同时回答"] = answer
result_row["词条工单同时回答对比"] = judge_result
logging.info(f"成功处理第 {index + 1} 行数据")
return index, result_row
@@ -173,8 +142,6 @@ class DifyCompareTest:
except Exception as e:
logging.error(f"处理第 {index + 1} 行数据时出错: {e}")
result_row = row.copy()
result_row["先词条后工单回答"] = ''
result_row["先词条后工单回答对比"] = ''
result_row["词条与工单同时回答"] = ''
result_row["词条与工单同时回答对比"] = ''
return index, result_row
@@ -232,8 +199,6 @@ class DifyCompareTest:
logging.error(f"线程执行失败 (行{original_index + 1}): {e}")
# 添加失败的行
result_row = df.iloc[original_index].copy()
result_row["先词条后工单回答"] = '线程执行失败'
result_row["先词条后工单回答对比"] = '线程执行失败'
result_row["词条与工单同时回答"] = '线程执行失败'
result_row["词条与工单同时回答对比"] = '线程执行失败'
results[original_index] = result_row