更新.gitignore以忽略临时文件,修改api_key文件,重构合并名词的逻辑,删除不再使用的脚本,优化对话到工单的处理流程,添加会话结果保存为JSON的功能,调整API调用参数,修复部分代码中的错误。
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user