knowledge.py 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338
  1. from drf_spectacular.types import OpenApiTypes
  2. from drf_spectacular.utils import OpenApiParameter
  3. from common.mixins.api_mixin import APIMixin
  4. from common.result import ResultSerializer, DefaultResultSerializer
  5. from knowledge.serializers.common import BatchSerializer, BatchMoveSerializer
  6. from knowledge.serializers.common import GenerateRelatedSerializer
  7. from knowledge.serializers.knowledge import KnowledgeBaseCreateRequest, KnowledgeModelSerializer, KnowledgeEditRequest, \
  8. KnowledgeWebCreateRequest, HitTestSerializer, KnowledgeImportRequest
  9. class KnowledgeCreateResponse(ResultSerializer):
  10. def get_data(self):
  11. return KnowledgeModelSerializer()
  12. class KnowledgeReadAPI(APIMixin):
  13. @staticmethod
  14. def get_parameters():
  15. return [
  16. OpenApiParameter(
  17. name="workspace_id",
  18. description="工作空间id",
  19. type=OpenApiTypes.STR,
  20. location='path',
  21. required=True,
  22. ),
  23. OpenApiParameter(
  24. name="knowledge_id",
  25. description="知识库id",
  26. type=OpenApiTypes.STR,
  27. location='path',
  28. required=True,
  29. )
  30. ]
  31. @staticmethod
  32. def get_response():
  33. return KnowledgeCreateResponse
  34. class KnowledgeBaseCreateAPI(APIMixin):
  35. @staticmethod
  36. def get_parameters():
  37. return [
  38. OpenApiParameter(
  39. name="workspace_id",
  40. description="工作空间id",
  41. type=OpenApiTypes.STR,
  42. location='path',
  43. required=True,
  44. )
  45. ]
  46. @staticmethod
  47. def get_request():
  48. return KnowledgeBaseCreateRequest
  49. @staticmethod
  50. def get_response():
  51. return KnowledgeCreateResponse
  52. class KnowledgeWebCreateAPI(APIMixin):
  53. @staticmethod
  54. def get_parameters():
  55. return [
  56. OpenApiParameter(
  57. name="workspace_id",
  58. description="工作空间id",
  59. type=OpenApiTypes.STR,
  60. location='path',
  61. required=True,
  62. )
  63. ]
  64. @staticmethod
  65. def get_request():
  66. return KnowledgeWebCreateRequest
  67. @staticmethod
  68. def get_response():
  69. return KnowledgeCreateResponse
  70. class KnowledgeEditAPI(APIMixin):
  71. @staticmethod
  72. def get_parameters():
  73. return [
  74. OpenApiParameter(
  75. name="workspace_id",
  76. description="工作空间id",
  77. type=OpenApiTypes.STR,
  78. location='path',
  79. required=True,
  80. ),
  81. OpenApiParameter(
  82. name="knowledge_id",
  83. description="知识库id",
  84. type=OpenApiTypes.STR,
  85. location='path',
  86. required=True,
  87. )
  88. ]
  89. @staticmethod
  90. def get_request():
  91. return KnowledgeEditRequest
  92. @staticmethod
  93. def get_response():
  94. return KnowledgeCreateResponse
  95. class KnowledgeTreeReadAPI(KnowledgeReadAPI):
  96. @staticmethod
  97. def get_parameters():
  98. return [
  99. OpenApiParameter(
  100. name="workspace_id",
  101. description="工作空间id",
  102. type=OpenApiTypes.STR,
  103. location='path',
  104. required=True,
  105. ),
  106. OpenApiParameter(
  107. name="folder_id",
  108. description="文件夹id",
  109. type=OpenApiTypes.STR,
  110. location='query',
  111. required=True,
  112. ),
  113. OpenApiParameter(
  114. name="user_id",
  115. description="用户id",
  116. type=OpenApiTypes.STR,
  117. location='query',
  118. required=False,
  119. ),
  120. OpenApiParameter(
  121. name="name",
  122. description="名称",
  123. type=OpenApiTypes.STR,
  124. location='query',
  125. required=False,
  126. ),
  127. OpenApiParameter(
  128. name="desc",
  129. description="描述",
  130. type=OpenApiTypes.STR,
  131. location='query',
  132. required=False,
  133. ),
  134. ]
  135. class KnowledgePageAPI(KnowledgeReadAPI):
  136. @staticmethod
  137. def get_parameters():
  138. return [
  139. OpenApiParameter(
  140. name="workspace_id",
  141. description="工作空间id",
  142. type=OpenApiTypes.STR,
  143. location='path',
  144. required=True,
  145. ),
  146. OpenApiParameter(
  147. name="current_page",
  148. description="当前页码",
  149. type=OpenApiTypes.INT,
  150. location='path',
  151. required=True,
  152. ),
  153. OpenApiParameter(
  154. name="page_size",
  155. description="每页条数",
  156. type=OpenApiTypes.INT,
  157. location='path',
  158. required=True,
  159. ),
  160. OpenApiParameter(
  161. name="folder_id",
  162. description="文件夹id",
  163. type=OpenApiTypes.STR,
  164. location='query',
  165. required=True,
  166. ),
  167. OpenApiParameter(
  168. name="name",
  169. description="名称",
  170. type=OpenApiTypes.STR,
  171. location='query',
  172. required=False,
  173. ),
  174. OpenApiParameter(
  175. name="desc",
  176. description="描述",
  177. type=OpenApiTypes.STR,
  178. location='query',
  179. required=False,
  180. ),
  181. ]
  182. class SyncWebAPI(APIMixin):
  183. @staticmethod
  184. def get_parameters():
  185. return [
  186. OpenApiParameter(
  187. name="workspace_id",
  188. description="工作空间id",
  189. type=OpenApiTypes.STR,
  190. location='path',
  191. required=True,
  192. ),
  193. OpenApiParameter(
  194. name="knowledge_id",
  195. description="知识库id",
  196. type=OpenApiTypes.STR,
  197. location='path',
  198. required=True,
  199. ),
  200. OpenApiParameter(
  201. name="sync_type",
  202. description="同步类型 (replace: 替换同步, complete: 完整同步)",
  203. type=OpenApiTypes.STR,
  204. location='query',
  205. required=True,
  206. ),
  207. ]
  208. @staticmethod
  209. def get_response():
  210. return DefaultResultSerializer
  211. class GenerateRelatedAPI(SyncWebAPI):
  212. @staticmethod
  213. def get_request():
  214. return GenerateRelatedSerializer
  215. class HitTestAPI(SyncWebAPI):
  216. @staticmethod
  217. def get_request():
  218. return HitTestSerializer
  219. class EmbeddingAPI(SyncWebAPI):
  220. pass
  221. class GetModelAPI(SyncWebAPI):
  222. @staticmethod
  223. def get_parameters():
  224. return [
  225. OpenApiParameter(
  226. name="workspace_id",
  227. description="工作空间id",
  228. type=OpenApiTypes.STR,
  229. location='path',
  230. required=True,
  231. ),
  232. ]
  233. @staticmethod
  234. def get_response():
  235. return DefaultResultSerializer
  236. class KnowledgeExportAPI(APIMixin):
  237. @staticmethod
  238. def get_parameters():
  239. return [
  240. OpenApiParameter(
  241. name="workspace_id",
  242. description="工作空间id",
  243. type=OpenApiTypes.STR,
  244. location='path',
  245. required=True,
  246. ),
  247. OpenApiParameter(
  248. name="knowledge_id",
  249. description="知识库id",
  250. type=OpenApiTypes.STR,
  251. location='path',
  252. required=True,
  253. ),
  254. ]
  255. @staticmethod
  256. def get_response():
  257. return DefaultResultSerializer
  258. class KnowledgeBatchOperateAPI(APIMixin):
  259. @staticmethod
  260. def get_parameters():
  261. return [
  262. OpenApiParameter(
  263. name="workspace_id",
  264. description="工作空间id",
  265. type=OpenApiTypes.STR,
  266. location='path',
  267. required=True,
  268. )
  269. ]
  270. @staticmethod
  271. def get_request():
  272. return BatchSerializer
  273. @staticmethod
  274. def get_move_request():
  275. return BatchMoveSerializer
  276. class KnowledgeImportAPI(APIMixin):
  277. @staticmethod
  278. def get_parameters():
  279. return [
  280. OpenApiParameter(
  281. name="workspace_id",
  282. description="工作空间id",
  283. type=OpenApiTypes.STR,
  284. location='path',
  285. required=True,
  286. ),
  287. ]
  288. @staticmethod
  289. def get_request():
  290. return KnowledgeImportRequest
  291. @staticmethod
  292. def get_response():
  293. return DefaultResultSerializer