search.py 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. from concurrent.futures import ThreadPoolExecutor
  2. from fastapi import APIRouter
  3. from schemas import ResponseWrapper
  4. from schemas.schemas import ContentParam, DatasetParam
  5. from service.content_service import get_contents, add_contents, get_content
  6. from service.dataset_service import get_datasets, add_datasets
  7. from service.search_service import query_data
  8. from utils.deepseek_utils import generate_summary_query
  9. router = APIRouter()
  10. # 创建线程池执行器
  11. executor = ThreadPoolExecutor(max_workers=10)
  12. @router.get("/query", response_model=ResponseWrapper)
  13. async def query(query, datasetIds):
  14. res = query_data(query, datasetIds.split(','))
  15. data = {'results': res}
  16. return ResponseWrapper(
  17. status_code=200,
  18. detail="success",
  19. data=data
  20. )
  21. @router.get("/chat", response_model=ResponseWrapper)
  22. async def chat(query, datasetIds):
  23. res = query_data(query, datasetIds.split(','))
  24. chat_res = generate_summary_query(query, res)
  25. data = {'results': res, 'chat_res': chat_res}
  26. return ResponseWrapper(
  27. status_code=200,
  28. detail="success",
  29. data=data
  30. )
  31. @router.get("/content/list", response_model=ResponseWrapper)
  32. async def content_list(page: int = 1, pageSize: int = 10, datasetId: int = None):
  33. data = get_contents(page, pageSize, datasetId)
  34. return ResponseWrapper(
  35. status_code=200,
  36. detail="success",
  37. data=data
  38. )
  39. @router.post("/content/add", response_model=ResponseWrapper)
  40. async def add_content(content_param: ContentParam):
  41. res = add_contents(content_param)
  42. return ResponseWrapper(
  43. status_code=200,
  44. detail="success",
  45. data=res
  46. )
  47. @router.get("/dataset/list", response_model=ResponseWrapper)
  48. async def dataset_list():
  49. data = get_datasets()
  50. return ResponseWrapper(
  51. status_code=200,
  52. detail="success",
  53. data=data
  54. )
  55. @router.post("/dataset/add", response_model=ResponseWrapper)
  56. async def get_dataset(dataset_param: DatasetParam):
  57. res = add_datasets(dataset_param)
  58. return ResponseWrapper(
  59. status_code=200,
  60. detail="success",
  61. data=res
  62. )
  63. @router.get("/content/get", response_model=ResponseWrapper)
  64. async def content_get(docId):
  65. data = get_content(docId)
  66. return ResponseWrapper(
  67. status_code=200,
  68. detail="success",
  69. data=data
  70. )