fixed_answer.py 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. import asyncio
  2. from sse_starlette import EventSourceResponse
  3. from utils.yaml_utils import fixed_question_intent_config
  4. from logger.loggering import server_logger
  5. from agent.fixed_intent import fixed_intent_identify_client
  6. from utils.tool_utils import get_fixed_problem_answer_txt_content ,verify_user_role
  7. def get_fixed_problem_answer_txt(trace_id, input , user_role):
  8. """
  9. 获取固定答案
  10. """
  11. # 验证用户角色,租户才能查询固定问题
  12. flag_tenant = verify_user_role(user_role)
  13. if not flag_tenant:
  14. # 普通用户直接返回
  15. return False , input
  16. result = fixed_intent_identify_client.recognize_intent(input)
  17. server_logger.info(trace_id=trace_id, msg=f"固定问题意图识别系统: input={input}, result={result}")
  18. # 获取固定问题 配置列表,判断意图识别是否在配置列表中
  19. if result not in get_fixed_problem_answer_recognize_out_list(trace_id=trace_id):
  20. # 不在 配置列表中
  21. return False , input
  22. answer_result = get_fixed_problem_answer_txt_content(result)
  23. return True , answer_result
  24. def get_fixed_problem_answer_recognize_out_list(trace_id: str):
  25. """
  26. 获取固定问题 意图识别结果配置列表
  27. 如:
  28. [
  29. "question_1",
  30. "question_2",
  31. "question_3",
  32. "question_4",
  33. "question_5",
  34. "question_6",
  35. "question_7",
  36. "question_8",
  37. "question_9",
  38. ]
  39. """
  40. fixed_problem_answer_list = fixed_question_intent_config["fixed_problem_answer"]
  41. recognize_intent_out_list = list(map(lambda x: x["out"], fixed_problem_answer_list))
  42. server_logger.info(trace_id=trace_id, msg=f"配置固定问题意图识别结果列表: recognize_intent_out_list={recognize_intent_out_list}")
  43. return recognize_intent_out_list