mirror of
https://github.com/jumpserver/jumpserver.git
synced 2025-09-05 17:30:30 +00:00
feat: 系统设置可配置gpt (#12207)
* feat: 系统设置可配置gpt * perf: 添加gpt的terminal config --------- Co-authored-by: feng <1304903146@qq.com>
This commit is contained in:
@@ -3,11 +3,13 @@ import uuid
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
from rest_framework import serializers
|
||||
|
||||
from assets.const import Protocol
|
||||
from common.serializers.fields import EncryptedField
|
||||
|
||||
__all__ = [
|
||||
'AnnouncementSettingSerializer', 'OpsSettingSerializer',
|
||||
'VaultSettingSerializer', 'TicketSettingSerializer'
|
||||
'VaultSettingSerializer', 'TicketSettingSerializer',
|
||||
'ChatAISettingSerializer'
|
||||
]
|
||||
|
||||
|
||||
@@ -54,6 +56,44 @@ class VaultSettingSerializer(serializers.Serializer):
|
||||
)
|
||||
|
||||
|
||||
class ChatAISettingSerializer(serializers.Serializer):
|
||||
PREFIX_TITLE = _('Chat AI')
|
||||
GPT_MODEL_CHOICES = []
|
||||
|
||||
CHAT_AI_ENABLED = serializers.BooleanField(
|
||||
required=False, label=_('Enable Vault')
|
||||
)
|
||||
GPT_BASE_URL = serializers.CharField(
|
||||
max_length=256, allow_blank=True, required=False, label=_('Base Url')
|
||||
)
|
||||
GPT_API_KEY = EncryptedField(
|
||||
max_length=256, allow_blank=True, required=False, label=_('Api Key'),
|
||||
)
|
||||
GPT_PROXY = serializers.CharField(
|
||||
max_length=256, allow_blank=True, required=False, label=_('Proxy')
|
||||
)
|
||||
GPT_MODEL = serializers.ChoiceField(
|
||||
default='', choices=GPT_MODEL_CHOICES, label=_("GPT Model"), required=False,
|
||||
)
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super().__init__(*args, **kwargs)
|
||||
self.set_GPT_MODEL_choices()
|
||||
|
||||
def set_GPT_MODEL_choices(self):
|
||||
field_gpt_model = self.fields.get("GPT_MODEL")
|
||||
if not field_gpt_model:
|
||||
return
|
||||
gpt_api_model = Protocol.gpt_protocols()[Protocol.chatgpt]['setting']['api_mode']
|
||||
choices = gpt_api_model['choices']
|
||||
field_gpt_model._choices = choices
|
||||
field_gpt_model.default = gpt_api_model['default']
|
||||
cls = self.__class__
|
||||
if cls.GPT_MODEL_CHOICES:
|
||||
return
|
||||
cls.GPT_MODEL_CHOICES.extend(choices)
|
||||
|
||||
|
||||
class TicketSettingSerializer(serializers.Serializer):
|
||||
PREFIX_TITLE = _('Ticket')
|
||||
|
||||
|
Reference in New Issue
Block a user