更新对话转工单处理逻辑,增强用户问题和解决方案提取功能,添加槽位填充支持,调整最大工作线程数为10,优化意图识别API,重排序匹配术语,改进数据模型以支持软件名称枚举,提升代码结构和可读性。
This commit is contained in:
@@ -23,30 +23,44 @@ def intent_recognize():
|
||||
if not query:
|
||||
return Response(json.dumps({"error": "缺少query参数"}, ensure_ascii=False), content_type='application/json; charset=utf-8', status=400)
|
||||
start_time = time.time()
|
||||
classification, keywords, rewrite, query_keys = recognizer.process_query(query)
|
||||
result = recognizer.process_query_with_slots(query)
|
||||
end_time = time.time()
|
||||
print(f"意图识别耗时: {end_time - start_time:.2f}秒")
|
||||
# keywords对象转为字符串
|
||||
|
||||
# 提取分类信息
|
||||
classification = result["classification"]
|
||||
|
||||
# 提取关键词信息
|
||||
keywords = result["keywords"]
|
||||
keywords_str = ""
|
||||
if keywords and keywords.terms:
|
||||
if keywords and keywords.get("terms"):
|
||||
term_details = []
|
||||
for term in keywords.terms:
|
||||
for term in keywords["terms"]:
|
||||
term_info = {
|
||||
"名称": term.name,
|
||||
"同义词": ";".join(term.synonymous) if term.synonymous else "",
|
||||
"描述": term.description
|
||||
"名称": term["name"],
|
||||
"同义词": ";".join(term["synonymous"]) if term["synonymous"] else "",
|
||||
"描述": term["description"]
|
||||
}
|
||||
term_details.append(term_info)
|
||||
keywords_str = term_details
|
||||
result = {
|
||||
|
||||
# 提取槽位填充信息
|
||||
slot_filling = result.get("slot_filling", {})
|
||||
|
||||
response_result = {
|
||||
"source_query": query,
|
||||
"source_query_keys": query_keys,
|
||||
"vertical_classification": classification.vertical_classification,
|
||||
"sub_classification": classification.sub_classification,
|
||||
"rewrite_query": rewrite.rewrite,
|
||||
"keywords": keywords_str
|
||||
"source_query_keys": result["query_keys"],
|
||||
"vertical_classification": classification["vertical_classification"],
|
||||
"sub_classification": classification["sub_classification"],
|
||||
"rewrite_query": result["rewrite"]["rewrite"],
|
||||
"keywords": keywords_str,
|
||||
"slot_filling": {
|
||||
"is_complete": slot_filling.get("is_complete", False),
|
||||
"missing_slots": slot_filling.get("missing_slots", {}),
|
||||
"filled_data": slot_filling.get("filled_data", {})
|
||||
}
|
||||
}
|
||||
return Response(json.dumps(result, ensure_ascii=False), content_type='application/json; charset=utf-8')
|
||||
return Response(json.dumps(response_result, ensure_ascii=False), content_type='application/json; charset=utf-8')
|
||||
except Exception as e:
|
||||
return Response(json.dumps({"error": str(e)}, ensure_ascii=False), content_type='application/json; charset=utf-8', status=500)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user