From 6b5d5c15aefc9e59f7a290dfd1f8d0f0e538a0ce Mon Sep 17 00:00:00 2001 From: jiangweidong <1053570670@qq.com> Date: Fri, 25 Jul 2025 15:21:12 +0800 Subject: [PATCH] feat: Add an embedded form to ChatAI --- apps/jumpserver/conf.py | 2 ++ apps/jumpserver/settings/custom.py | 2 ++ apps/settings/const.py | 6 ++++++ apps/settings/serializers/feature.py | 12 +++++++++++- apps/settings/serializers/public.py | 2 ++ 5 files changed, 23 insertions(+), 1 deletion(-) diff --git a/apps/jumpserver/conf.py b/apps/jumpserver/conf.py index e06fdff40..ed0752f63 100644 --- a/apps/jumpserver/conf.py +++ b/apps/jumpserver/conf.py @@ -697,6 +697,8 @@ class Config(dict): # Chat AI 'CHAT_AI_ENABLED': False, + 'CHAT_AI_METHOD': 'api', + 'CHAT_AI_EMBED_URL': '', 'CHAT_AI_TYPE': 'gpt', 'GPT_BASE_URL': '', 'GPT_API_KEY': '', diff --git a/apps/jumpserver/settings/custom.py b/apps/jumpserver/settings/custom.py index dc83f05db..4145a7133 100644 --- a/apps/jumpserver/settings/custom.py +++ b/apps/jumpserver/settings/custom.py @@ -237,6 +237,8 @@ ASSET_SIZE = 'small' # Chat AI CHAT_AI_ENABLED = CONFIG.CHAT_AI_ENABLED +CHAT_AI_METHOD = CONFIG.CHAT_AI_METHOD +CHAT_AI_EMBED_URL = CONFIG.CHAT_AI_EMBED_URL CHAT_AI_TYPE = CONFIG.CHAT_AI_TYPE GPT_BASE_URL = CONFIG.GPT_BASE_URL GPT_API_KEY = CONFIG.GPT_API_KEY diff --git a/apps/settings/const.py b/apps/settings/const.py index d64b6ee2f..b0f9154ae 100644 --- a/apps/settings/const.py +++ b/apps/settings/const.py @@ -1,4 +1,5 @@ from django.db.models import TextChoices +from django.utils.translation import gettext_lazy as _ class ImportStatus(TextChoices): @@ -7,6 +8,11 @@ class ImportStatus(TextChoices): error = 'error', 'Error' +class ChatAIMethodChoices(TextChoices): + api = 'api', 'API' + embed = 'embed', _('Embed') + + class ChatAITypeChoices(TextChoices): gpt = 'gpt', 'GPT' deep_seek = 'deep-seek', 'DeepSeek' diff --git a/apps/settings/serializers/feature.py b/apps/settings/serializers/feature.py index d1be6ab31..4ff3c684e 100644 --- a/apps/settings/serializers/feature.py +++ b/apps/settings/serializers/feature.py @@ -13,7 +13,9 @@ __all__ = [ 'ChatAISettingSerializer', 'VirtualAppSerializer', 'AmazonSMSerializer', ] -from settings.const import ChatAITypeChoices, GPTModelChoices, DeepSeekModelChoices +from settings.const import ( + ChatAITypeChoices, GPTModelChoices, DeepSeekModelChoices, ChatAIMethodChoices +) class AnnouncementSerializer(serializers.Serializer): @@ -124,6 +126,14 @@ class ChatAISettingSerializer(serializers.Serializer): CHAT_AI_ENABLED = serializers.BooleanField( required=False, label=_('Chat AI') ) + CHAT_AI_METHOD = serializers.ChoiceField( + default=ChatAIMethodChoices.api, choices=ChatAIMethodChoices.choices, + label=_("Method"), required=False, + ) + CHAT_AI_EMBED_URL = serializers.CharField( + allow_blank=True, required=False, label=_('Base URL'), + help_text=_('The base URL of the Chat service.') + ) CHAT_AI_TYPE = serializers.ChoiceField( default=ChatAITypeChoices.gpt, choices=ChatAITypeChoices.choices, label=_("Types"), required=False, diff --git a/apps/settings/serializers/public.py b/apps/settings/serializers/public.py index 3106beb9c..2b85d766c 100644 --- a/apps/settings/serializers/public.py +++ b/apps/settings/serializers/public.py @@ -71,6 +71,8 @@ class PrivateSettingSerializer(PublicSettingSerializer): VAULT_ENABLED = serializers.BooleanField() VIRTUAL_APP_ENABLED = serializers.BooleanField() CHAT_AI_ENABLED = serializers.BooleanField() + CHAT_AI_METHOD = serializers.CharField() + CHAT_AI_EMBED_URL = serializers.CharField() CHAT_AI_TYPE = serializers.CharField() GPT_MODEL = serializers.CharField() FILE_UPLOAD_SIZE_LIMIT_MB = serializers.IntegerField()