refactor: Add applicationId in generate prompt
Some checks failed
sync2gitee / repo-sync (push) Has been cancelled
Typos Check / Spell Check with Typos (push) Has been cancelled

This commit is contained in:
zhangzhanwei 2025-09-12 17:16:35 +08:00 committed by zhanweizhang7
parent 6412c79794
commit b9b91925f0
4 changed files with 32 additions and 5 deletions

View File

@ -34,7 +34,7 @@ urlpatterns = [
path('workspace/<str:workspace_id>/application/<str:application_id>/speech_to_text', views.SpeechToText.as_view()),
path('workspace/<str:workspace_id>/application/<str:application_id>/play_demo_text', views.PlayDemoText.as_view()),
path('workspace/<str:workspace_id>/application/<str:application_id>/mcp_tools', views.McpServers.as_view()),
path('workspace/<str:workspace_id>/application/model/<str:model_id>/prompt_generate', views.PromptGenerateView.as_view()),
path('workspace/<str:workspace_id>/application/<str:application_id>/model/<str:model_id>/prompt_generate', views.PromptGenerateView.as_view()),
path('chat_message/<str:chat_id>', views.ChatView.as_view()),
]

View File

@ -7,6 +7,7 @@
@desc:
"""
import uuid_utils.compat as uuid
from django.db.models import QuerySet
from django.utils.translation import gettext_lazy as _
from drf_spectacular.utils import extend_schema
@ -15,7 +16,7 @@ from rest_framework.views import APIView
from application.api.application_chat import ApplicationChatQueryAPI, ApplicationChatQueryPageAPI, \
ApplicationChatExportAPI
from application.models import ChatUserType
from application.models import ChatUserType, Application
from application.serializers.application_chat import ApplicationChatQuerySerializers
from chat.api.chat_api import ChatAPI, PromptGenerateAPI
from chat.api.chat_authentication_api import ChatOpenAPI
@ -23,9 +24,17 @@ from chat.serializers.chat import OpenChatSerializers, ChatSerializers, DebugCha
from common.auth import TokenAuth
from common.auth.authentication import has_permissions
from common.constants.permission_constants import PermissionConstants, RoleConstants, ViewPermission, CompareConstants
from common.log.log import log
from common.result import result
from common.utils.common import query_params_to_single_dict
def get_application_operation_object(application_id):
application_model = QuerySet(model=Application).filter(id=application_id).first()
if application_model is not None:
return {
'name': application_model.name
}
return {}
class ApplicationChat(APIView):
authentication_classes = [TokenAuth]
@ -146,6 +155,7 @@ class ChatView(APIView):
return DebugChatSerializers(data={'chat_id': chat_id}).chat(request.data)
class PromptGenerateView(APIView):
authentication_classes = [TokenAuth]
@extend_schema(
methods=['POST'],
@ -157,5 +167,13 @@ class PromptGenerateView(APIView):
responses=None,
tags=[_('Application')] # type: ignore
)
def post(self, request: Request, workspace_id: str, model_id:str):
return PromptGenerateSerializer(data={'workspace_id': workspace_id, 'model_id': model_id}).generate_prompt(instance=request.data)
@has_permissions(PermissionConstants.APPLICATION_EDIT.get_workspace_application_permission(),
PermissionConstants.APPLICATION_EDIT.get_workspace_permission_workspace_manage_role(),
ViewPermission([RoleConstants.USER.get_workspace_role()],
[PermissionConstants.APPLICATION.get_workspace_application_permission()],
CompareConstants.AND),
RoleConstants.WORKSPACE_MANAGE.get_workspace_role())
@log(menu='Application', operate='Generate prompt',
get_operation_object=lambda r, k: get_application_operation_object(k.get('application_id')))
def post(self, request: Request, workspace_id: str, model_id:str, application_id: str):
return PromptGenerateSerializer(data={'workspace_id': workspace_id, 'model_id': model_id, 'application_id': application_id}).generate_prompt(instance=request.data)

View File

@ -31,7 +31,15 @@ class PromptGenerateAPI(APIMixin):
description="模型id",
type=OpenApiTypes.STR,
location='path',
required=True,)
required=True,
),
OpenApiParameter(
name="application_id",
description="应用id",
type=OpenApiTypes.STR,
location='path',
required=True,
),
]
@staticmethod

View File

@ -144,6 +144,7 @@ class DebugChatSerializers(serializers.Serializer):
class PromptGenerateSerializer(serializers.Serializer):
workspace_id = serializers.CharField(required=False, label=_('Workspace ID'))
model_id = serializers.CharField(required=False, allow_blank=True, allow_null=True, label=_("Model"))
application_id = serializers.CharField(required=False, allow_blank=True, allow_null=True, label=_("Application"))
def generate_prompt(self, instance: dict, with_valid=True):
if with_valid: