Skip to content

Commit 49b42ee

Browse files
committed
refactor: Add applicationId in generate prompt
1 parent 6412c79 commit 49b42ee

File tree

4 files changed

+32
-5
lines changed

4 files changed

+32
-5
lines changed

apps/application/urls.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
path('workspace/<str:workspace_id>/application/<str:application_id>/speech_to_text', views.SpeechToText.as_view()),
3535
path('workspace/<str:workspace_id>/application/<str:application_id>/play_demo_text', views.PlayDemoText.as_view()),
3636
path('workspace/<str:workspace_id>/application/<str:application_id>/mcp_tools', views.McpServers.as_view()),
37-
path('workspace/<str:workspace_id>/application/model/<str:model_id>/prompt_generate', views.PromptGenerateView.as_view()),
37+
path('workspace/<str:workspace_id>/application/<str:application_id>/model/<str:model_id>/prompt_generate', views.PromptGenerateView.as_view()),
3838
path('chat_message/<str:chat_id>', views.ChatView.as_view()),
3939

4040
]

apps/application/views/application_chat.py

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
@desc:
88
"""
99
import uuid_utils.compat as uuid
10+
from django.db.models import QuerySet
1011

1112
from django.utils.translation import gettext_lazy as _
1213
from drf_spectacular.utils import extend_schema
@@ -15,17 +16,25 @@
1516

1617
from application.api.application_chat import ApplicationChatQueryAPI, ApplicationChatQueryPageAPI, \
1718
ApplicationChatExportAPI
18-
from application.models import ChatUserType
19+
from application.models import ChatUserType, Application
1920
from application.serializers.application_chat import ApplicationChatQuerySerializers
2021
from chat.api.chat_api import ChatAPI, PromptGenerateAPI
2122
from chat.api.chat_authentication_api import ChatOpenAPI
2223
from chat.serializers.chat import OpenChatSerializers, ChatSerializers, DebugChatSerializers, PromptGenerateSerializer
2324
from common.auth import TokenAuth
2425
from common.auth.authentication import has_permissions
2526
from common.constants.permission_constants import PermissionConstants, RoleConstants, ViewPermission, CompareConstants
27+
from common.log.log import log
2628
from common.result import result
2729
from common.utils.common import query_params_to_single_dict
2830

31+
def get_application_operation_object(application_id):
32+
application_model = QuerySet(model=Application).filter(id=application_id).first()
33+
if application_model is not None:
34+
return {
35+
'name': application_model.name
36+
}
37+
return {}
2938

3039
class ApplicationChat(APIView):
3140
authentication_classes = [TokenAuth]
@@ -146,6 +155,7 @@ def post(self, request: Request, chat_id: str):
146155
return DebugChatSerializers(data={'chat_id': chat_id}).chat(request.data)
147156

148157
class PromptGenerateView(APIView):
158+
authentication_classes = [TokenAuth]
149159

150160
@extend_schema(
151161
methods=['POST'],
@@ -157,5 +167,13 @@ class PromptGenerateView(APIView):
157167
responses=None,
158168
tags=[_('Application')] # type: ignore
159169
)
160-
def post(self, request: Request, workspace_id: str, model_id:str):
161-
return PromptGenerateSerializer(data={'workspace_id': workspace_id, 'model_id': model_id}).generate_prompt(instance=request.data)
170+
@has_permissions(PermissionConstants.APPLICATION_EDIT.get_workspace_application_permission(),
171+
PermissionConstants.APPLICATION_EDIT.get_workspace_permission_workspace_manage_role(),
172+
ViewPermission([RoleConstants.USER.get_workspace_role()],
173+
[PermissionConstants.APPLICATION.get_workspace_application_permission()],
174+
CompareConstants.AND),
175+
RoleConstants.WORKSPACE_MANAGE.get_workspace_role())
176+
@log(menu='Application', operate='Generate prompt',
177+
get_operation_object=lambda r, k: get_application_operation_object(k.get('application_id')))
178+
def post(self, request: Request, workspace_id: str, model_id:str, application_id: str):
179+
return PromptGenerateSerializer(data={'workspace_id': workspace_id, 'model_id': model_id, 'application_id': application_id}).generate_prompt(instance=request.data)

apps/chat/api/chat_api.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,15 @@ def get_parameters():
3131
description="模型id",
3232
type=OpenApiTypes.STR,
3333
location='path',
34-
required=True,)
34+
required=True,
35+
),
36+
OpenApiParameter(
37+
name="application_id",
38+
description="应用id",
39+
type=OpenApiTypes.STR,
40+
location='path',
41+
required=True,
42+
),
3543
]
3644

3745
@staticmethod

apps/chat/serializers/chat.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,7 @@ def chat(self, instance: dict, base_to_response: BaseToResponse = SystemToRespon
144144
class PromptGenerateSerializer(serializers.Serializer):
145145
workspace_id = serializers.CharField(required=False, label=_('Workspace ID'))
146146
model_id = serializers.CharField(required=False, allow_blank=True, allow_null=True, label=_("Model"))
147+
application_id = serializers.CharField(required=False, allow_blank=True, allow_null=True, label=_("Application"))
147148

148149
def generate_prompt(self, instance: dict, with_valid=True):
149150
if with_valid:

0 commit comments

Comments
 (0)