local_function.py 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. from datetime import datetime
  2. from function.knowledge_dify import KnowledgeDify
  3. from logger.loggering import server_logger
  4. from utils.redis_utils import set_redis_result_cache_data
  5. from utils.tool_utils import verify_user_role
  6. from enums.common_enums import CacheDataKeyTypeEnum
  7. import json
  8. # 函数定义 要语义化,不能汉语拼音
  9. def get_current_datetime() -> str:
  10. """
  11. 获取当前的日期和时间
  12. """
  13. now = datetime.now()
  14. formatted_data = now.strftime("%Y-%m-%d %H:%M:%S")
  15. return formatted_data
  16. knowledge_dify = KnowledgeDify()
  17. async def get_knowledge_answer(question: str , trace_id: str , user_role: str) -> str:
  18. """
  19. 相关知识问题检索的工具
  20. 知识分类包括:政策法规、市场分析、基础、管理技术、案例库、高频问题、综合类
  21. 参数:
  22. question: 用户问题中(用户输入问题)
  23. trace_id: 日志链路跟踪ID
  24. user_role: 用户角色
  25. """
  26. # 如果是普通用户直接返回无,只有租户用户才能检索查询知识库
  27. if not verify_user_role(user_role):
  28. return "无"
  29. record_list = knowledge_dify.get_request_knowledge_dify(trace_id=trace_id, question=question)
  30. if record_list is None or len(record_list) == 0:
  31. return "无"
  32. # 设置缓存数据,用于智能查询
  33. retriever_resources_list = [record["segment"]["document"] for record in record_list]
  34. server_logger.info(trace_id=trace_id, msg=f"知识库检索结果列表: retriever_resources_list={retriever_resources_list}")
  35. await set_redis_result_cache_data(CacheDataKeyTypeEnum.RETRIEVER_RESOURCES.code, trace_id, json.dumps(retriever_resources_list))
  36. content_list = [record["segment"]["content"] for record in record_list]
  37. #server_logger.info(trace_id=trace_id, msg=f"知识库检索结果列表: content_list={content_list}")
  38. return "\n".join(content_list)