diff --git a/apps/knowledge/api/knowledge.py b/apps/knowledge/api/knowledge.py index d334ac3b1..1fa2c07d6 100644 --- a/apps/knowledge/api/knowledge.py +++ b/apps/knowledge/api/knowledge.py @@ -248,3 +248,21 @@ class HitTestAPI(SyncWebAPI): class EmbeddingAPI(SyncWebAPI): pass + + +class GetModelAPI(SyncWebAPI): + @staticmethod + def get_parameters(): + return [ + OpenApiParameter( + name="workspace_id", + description="工作空间id", + type=OpenApiTypes.STR, + location='path', + required=True, + ), + ] + + @staticmethod + def get_response(): + return DefaultResultSerializer diff --git a/apps/knowledge/urls.py b/apps/knowledge/urls.py index f2a2bdb1e..87eb2ab4e 100644 --- a/apps/knowledge/urls.py +++ b/apps/knowledge/urls.py @@ -7,6 +7,7 @@ urlpatterns = [ path('workspace//knowledge', views.KnowledgeView.as_view()), path('workspace//knowledge/base', views.KnowledgeBaseView.as_view()), path('workspace//knowledge/web', views.KnowledgeWebView.as_view()), + path('workspace//knowledge/model', views.KnowledgeView.Model.as_view()), path('workspace//knowledge/', views.KnowledgeView.Operate.as_view()), path('workspace//knowledge//sync', views.KnowledgeView.SyncWeb.as_view()), path('workspace//knowledge//generate_related', views.KnowledgeView.GenerateRelated.as_view()), diff --git a/apps/knowledge/views/knowledge.py b/apps/knowledge/views/knowledge.py index 712d0cd96..7154e7a34 100644 --- a/apps/knowledge/views/knowledge.py +++ b/apps/knowledge/views/knowledge.py @@ -8,8 +8,10 @@ from common.auth.authentication import has_permissions from common.constants.permission_constants import PermissionConstants from common.result import result from knowledge.api.knowledge import KnowledgeBaseCreateAPI, KnowledgeWebCreateAPI, KnowledgeTreeReadAPI, \ - KnowledgeEditAPI, KnowledgeReadAPI, KnowledgePageAPI, SyncWebAPI, GenerateRelatedAPI, HitTestAPI, EmbeddingAPI + KnowledgeEditAPI, KnowledgeReadAPI, KnowledgePageAPI, SyncWebAPI, GenerateRelatedAPI, HitTestAPI, EmbeddingAPI, \ + GetModelAPI from knowledge.serializers.knowledge import KnowledgeSerializer +from models_provider.serializers.model_serializer import ModelSerializer class KnowledgeView(APIView): @@ -193,11 +195,33 @@ class KnowledgeView(APIView): responses=GenerateRelatedAPI.get_response(), tags=[_('Knowledge Base')] # type: ignore ) + @has_permissions(PermissionConstants.KNOWLEDGE_EDIT.get_workspace_permission()) def put(self, request: Request, workspace_id: str, knowledge_id: str): return result.success(KnowledgeSerializer.Operate( data={'knowledge_id': knowledge_id, 'workspace_id': workspace_id, 'user_id': request.user.id} ).generate_related(request.data)) + class Model(APIView): + authentication_classes = [TokenAuth] + + @extend_schema( + methods=['GET'], + summary=_('Get model for knowledge base'), + description=_('Get model for knowledge base'), + operation_id=_('Get model for knowledge base'), # type: ignore + parameters=GetModelAPI.get_parameters(), + responses=GetModelAPI.get_response(), + tags=[_('Knowledge Base')] # type: ignore + ) + @has_permissions(PermissionConstants.KNOWLEDGE_EDIT.get_workspace_permission()) + def get(self, request: Request, workspace_id: str): + return result.success(ModelSerializer.Query( + data={ + 'workspace_id': workspace_id, + 'model_type': 'LLM' + } + ).list(workspace_id, True)) + class KnowledgeBaseView(APIView): authentication_classes = [TokenAuth]