import asyncio from sse_starlette import EventSourceResponse from utils.yaml_utils import fixed_question_intent_config from logger.loggering import server_logger from agent.fixed_intent import fixed_intent_identify_client from utils.tool_utils import get_fixed_problem_answer_txt_content ,verify_user_role def get_fixed_problem_answer_txt(trace_id, input , user_role): """ 获取固定答案 """ # 验证用户角色,租户才能查询固定问题 flag_tenant = verify_user_role(user_role) if not flag_tenant: # 普通用户直接返回 return False , input result = fixed_intent_identify_client.recognize_intent(input) server_logger.info(trace_id=trace_id, msg=f"固定问题意图识别系统: input={input}, result={result}") # 获取固定问题 配置列表,判断意图识别是否在配置列表中 if result not in get_fixed_problem_answer_recognize_out_list(trace_id=trace_id): # 不在 配置列表中 return False , input answer_result = get_fixed_problem_answer_txt_content(result) return True , answer_result def get_fixed_problem_answer_recognize_out_list(trace_id: str): """ 获取固定问题 意图识别结果配置列表 如: [ "question_1", "question_2", "question_3", "question_4", "question_5", "question_6", "question_7", "question_8", "question_9", ] """ fixed_problem_answer_list = fixed_question_intent_config["fixed_problem_answer"] recognize_intent_out_list = list(map(lambda x: x["out"], fixed_problem_answer_list)) server_logger.info(trace_id=trace_id, msg=f"配置固定问题意图识别结果列表: recognize_intent_out_list={recognize_intent_out_list}") return recognize_intent_out_list