mirror of https://github.com/jumpserver/jumpserver
perf: deepseek
parent
404d58a9c9
commit
c0ffe45ce9
|
@ -264,7 +264,6 @@
|
||||||
"ChangeViewHelpText": "Click to switch different views",
|
"ChangeViewHelpText": "Click to switch different views",
|
||||||
"Chat": "Chat",
|
"Chat": "Chat",
|
||||||
"ChatAI": "Chat AI",
|
"ChatAI": "Chat AI",
|
||||||
"ChatAITypeHelpText": "Only used for page switching. After switching the type, you need to update the following properties to take effect.",
|
|
||||||
"ChatHello": "Hello, can I help you?",
|
"ChatHello": "Hello, can I help you?",
|
||||||
"ChdirHelpText": "By default, the execution directory is the user's home directory",
|
"ChdirHelpText": "By default, the execution directory is the user's home directory",
|
||||||
"CheckAssetsAmount": "Check asset quantity",
|
"CheckAssetsAmount": "Check asset quantity",
|
||||||
|
|
|
@ -278,7 +278,6 @@
|
||||||
"ChangeViewHelpText": "クリックして異なるビューを切り替え",
|
"ChangeViewHelpText": "クリックして異なるビューを切り替え",
|
||||||
"Chat": "チャット",
|
"Chat": "チャット",
|
||||||
"ChatAI": "スマートアンサー",
|
"ChatAI": "スマートアンサー",
|
||||||
"ChatAITypeHelpText": "ページ切り替え専用で、切り替えタイプを変更した後は、下の属性を更新する必要があります。",
|
|
||||||
"ChatHello": "こんにちは!お手伝いできることがあれば何でもお申し付けください。",
|
"ChatHello": "こんにちは!お手伝いできることがあれば何でもお申し付けください。",
|
||||||
"ChdirHelpText": "デフォルトの実行ディレクトリは実行ユーザーのホームディレクトリです",
|
"ChdirHelpText": "デフォルトの実行ディレクトリは実行ユーザーのホームディレクトリです",
|
||||||
"CheckAssetsAmount": "資産の数量を確認",
|
"CheckAssetsAmount": "資産の数量を確認",
|
||||||
|
|
|
@ -264,7 +264,6 @@
|
||||||
"ChangeViewHelpText": "Clique para alternar diferentes pontos de vista",
|
"ChangeViewHelpText": "Clique para alternar diferentes pontos de vista",
|
||||||
"Chat": "Chat",
|
"Chat": "Chat",
|
||||||
"ChatAI": "Resposta inteligente",
|
"ChatAI": "Resposta inteligente",
|
||||||
"ChatAITypeHelpText": "Utilizado apenas para a troca de página. Após alterar o tipo, é necessário atualizar os atributos abaixo para que a mudança tenha efeito.",
|
|
||||||
"ChatHello": "Olá! Como posso ajudá-lo? ",
|
"ChatHello": "Olá! Como posso ajudá-lo? ",
|
||||||
"ChdirHelpText": "O diretório de execução padrão é o diretório home do usuário de execução",
|
"ChdirHelpText": "O diretório de execução padrão é o diretório home do usuário de execução",
|
||||||
"CheckAssetsAmount": "Verificar Quantidade de Ativos",
|
"CheckAssetsAmount": "Verificar Quantidade de Ativos",
|
||||||
|
|
|
@ -264,7 +264,6 @@
|
||||||
"ChangeViewHelpText": "点击切换不同视图",
|
"ChangeViewHelpText": "点击切换不同视图",
|
||||||
"Chat": "聊天",
|
"Chat": "聊天",
|
||||||
"ChatAI": "智能问答",
|
"ChatAI": "智能问答",
|
||||||
"ChatAITypeHelpText": "仅用于页面切换,切换类型后需更新下方属性才能生效。",
|
|
||||||
"ChatHello": "你好!我能为你提供什么帮助?",
|
"ChatHello": "你好!我能为你提供什么帮助?",
|
||||||
"ChdirHelpText": "默认执行目录为执行用户的 home 目录",
|
"ChdirHelpText": "默认执行目录为执行用户的 home 目录",
|
||||||
"CheckAssetsAmount": "校对资产数量",
|
"CheckAssetsAmount": "校对资产数量",
|
||||||
|
|
|
@ -351,7 +351,6 @@
|
||||||
"Charset": "字元集",
|
"Charset": "字元集",
|
||||||
"Chat": "聊天",
|
"Chat": "聊天",
|
||||||
"ChatAI": "智慧問答",
|
"ChatAI": "智慧問答",
|
||||||
"ChatAITypeHelpText": "僅用於頁面切換,切換類型後需更新下方屬性方能生效。",
|
|
||||||
"ChatHello": "你好!我能為你提供什麼幫助?",
|
"ChatHello": "你好!我能為你提供什麼幫助?",
|
||||||
"ChdirHelpText": "默認執行目錄為執行用戶的 home 目錄",
|
"ChdirHelpText": "默認執行目錄為執行用戶的 home 目錄",
|
||||||
"CheckAssetsAmount": "校對資產數量",
|
"CheckAssetsAmount": "校對資產數量",
|
||||||
|
|
|
@ -682,10 +682,13 @@ class Config(dict):
|
||||||
# Chat AI
|
# Chat AI
|
||||||
'CHAT_AI_ENABLED': False,
|
'CHAT_AI_ENABLED': False,
|
||||||
'CHAT_AI_TYPE': 'gpt',
|
'CHAT_AI_TYPE': 'gpt',
|
||||||
'GPT_API_KEY': '',
|
|
||||||
'GPT_BASE_URL': '',
|
'GPT_BASE_URL': '',
|
||||||
|
'GPT_API_KEY': '',
|
||||||
'GPT_PROXY': '',
|
'GPT_PROXY': '',
|
||||||
'GPT_MODEL': 'gpt-4o-mini',
|
'GPT_MODEL': 'gpt-4o-mini',
|
||||||
|
'DEEPSEEK_BASE_URL': '',
|
||||||
|
'DEEPSEEK_API_KEY': '',
|
||||||
|
'DEEPSEEK_PROXY': '',
|
||||||
'DEEPSEEK_MODEL': 'deepseek-chat',
|
'DEEPSEEK_MODEL': 'deepseek-chat',
|
||||||
'VIRTUAL_APP_ENABLED': False,
|
'VIRTUAL_APP_ENABLED': False,
|
||||||
|
|
||||||
|
|
|
@ -222,11 +222,14 @@ ASSET_SIZE = 'small'
|
||||||
|
|
||||||
# Chat AI
|
# Chat AI
|
||||||
CHAT_AI_ENABLED = CONFIG.CHAT_AI_ENABLED
|
CHAT_AI_ENABLED = CONFIG.CHAT_AI_ENABLED
|
||||||
GPT_API_KEY = CONFIG.GPT_API_KEY
|
CHAT_AI_TYPE = CONFIG.CHAT_AI_TYPE
|
||||||
GPT_BASE_URL = CONFIG.GPT_BASE_URL
|
GPT_BASE_URL = CONFIG.GPT_BASE_URL
|
||||||
|
GPT_API_KEY = CONFIG.GPT_API_KEY
|
||||||
GPT_PROXY = CONFIG.GPT_PROXY
|
GPT_PROXY = CONFIG.GPT_PROXY
|
||||||
GPT_MODEL = CONFIG.GPT_MODEL
|
GPT_MODEL = CONFIG.GPT_MODEL
|
||||||
CHAT_AI_TYPE = CONFIG.CHAT_AI_TYPE
|
DEEPSEEK_BASE_URL = CONFIG.DEEPSEEK_BASE_URL
|
||||||
|
DEEPSEEK_API_KEY = CONFIG.DEEPSEEK_API_KEY
|
||||||
|
DEEPSEEK_PROXY = CONFIG.DEEPSEEK_PROXY
|
||||||
DEEPSEEK_MODEL = CONFIG.DEEPSEEK_MODEL
|
DEEPSEEK_MODEL = CONFIG.DEEPSEEK_MODEL
|
||||||
|
|
||||||
VIRTUAL_APP_ENABLED = CONFIG.VIRTUAL_APP_ENABLED
|
VIRTUAL_APP_ENABLED = CONFIG.VIRTUAL_APP_ENABLED
|
||||||
|
|
|
@ -41,16 +41,21 @@ class ChatAITestingAPI(GenericAPIView):
|
||||||
data={'msg': _('Chat AI is not enabled')}
|
data={'msg': _('Chat AI is not enabled')}
|
||||||
)
|
)
|
||||||
|
|
||||||
proxy = config['GPT_PROXY']
|
|
||||||
tp = config['CHAT_AI_TYPE']
|
tp = config['CHAT_AI_TYPE']
|
||||||
if tp == ChatAITypeChoices.gpt:
|
if tp == ChatAITypeChoices.gpt:
|
||||||
|
url = config['GPT_BASE_URL']
|
||||||
|
api_key = config['GPT_API_KEY']
|
||||||
|
proxy = config['GPT_PROXY']
|
||||||
model = config['GPT_MODEL']
|
model = config['GPT_MODEL']
|
||||||
else:
|
else:
|
||||||
|
url = config['DEEPSEEK_BASE_URL']
|
||||||
|
api_key = config['DEEPSEEK_API_KEY']
|
||||||
|
proxy = config['DEEPSEEK_PROXY']
|
||||||
model = config['DEEPSEEK_MODEL']
|
model = config['DEEPSEEK_MODEL']
|
||||||
|
|
||||||
kwargs = {
|
kwargs = {
|
||||||
'base_url': config['GPT_BASE_URL'] or None,
|
'base_url': url or None,
|
||||||
'api_key': config['GPT_API_KEY'],
|
'api_key': api_key,
|
||||||
}
|
}
|
||||||
try:
|
try:
|
||||||
if proxy:
|
if proxy:
|
||||||
|
|
|
@ -194,7 +194,17 @@ class ChatPrompt(JMSBaseModel):
|
||||||
return self.name
|
return self.name
|
||||||
|
|
||||||
|
|
||||||
def get_chatai_model():
|
def get_chatai_data():
|
||||||
if settings.CHAT_AI_TYPE == ChatAITypeChoices.gpt:
|
data = {
|
||||||
return settings.GPT_MODEL
|
'url': settings.GPT_BASE_URL,
|
||||||
return settings.DEEPSEEK_MODEL
|
'api_key': settings.GPT_API_KEY,
|
||||||
|
'proxy': settings.GPT_PROXY,
|
||||||
|
'model': settings.GPT_MODEL,
|
||||||
|
}
|
||||||
|
if settings.CHAT_AI_TYPE != ChatAITypeChoices.gpt:
|
||||||
|
data['url'] = settings.DEEPSEEK_BASE_URL
|
||||||
|
data['api_key'] = settings.DEEPSEEK_API_KEY
|
||||||
|
data['proxy'] = settings.DEEPSEEK_PROXY
|
||||||
|
data['model'] = settings.DEEPSEEK_MODEL
|
||||||
|
|
||||||
|
return data
|
||||||
|
|
|
@ -143,6 +143,17 @@ class ChatAISettingSerializer(serializers.Serializer):
|
||||||
default=GPTModelChoices.gpt_4o_mini, choices=GPTModelChoices.choices,
|
default=GPTModelChoices.gpt_4o_mini, choices=GPTModelChoices.choices,
|
||||||
label=_("GPT Model"), required=False,
|
label=_("GPT Model"), required=False,
|
||||||
)
|
)
|
||||||
|
DEEPSEEK_BASE_URL = serializers.CharField(
|
||||||
|
allow_blank=True, required=False, label=_('Base URL'),
|
||||||
|
help_text=_('The base URL of the Chat service.')
|
||||||
|
)
|
||||||
|
DEEPSEEK_API_KEY = EncryptedField(
|
||||||
|
allow_blank=True, required=False, label=_('API Key'),
|
||||||
|
)
|
||||||
|
DEEPSEEK_PROXY = serializers.CharField(
|
||||||
|
allow_blank=True, required=False, label=_('Proxy'),
|
||||||
|
help_text=_('The proxy server address of the GPT service. For example: http://ip:port')
|
||||||
|
)
|
||||||
DEEPSEEK_MODEL = serializers.ChoiceField(
|
DEEPSEEK_MODEL = serializers.ChoiceField(
|
||||||
default=DeepSeekModelChoices.deepseek_chat, choices=DeepSeekModelChoices.choices,
|
default=DeepSeekModelChoices.deepseek_chat, choices=DeepSeekModelChoices.choices,
|
||||||
label=_("DeepSeek Model"), required=False,
|
label=_("DeepSeek Model"), required=False,
|
||||||
|
|
|
@ -9,7 +9,7 @@ from common.const.signals import OP_LOG_SKIP_SIGNAL
|
||||||
from common.db.models import JMSBaseModel
|
from common.db.models import JMSBaseModel
|
||||||
from common.utils import get_logger, lazyproperty
|
from common.utils import get_logger, lazyproperty
|
||||||
from orgs.utils import tmp_to_root_org
|
from orgs.utils import tmp_to_root_org
|
||||||
from settings.models import get_chatai_model
|
from settings.models import get_chatai_data
|
||||||
from terminal.const import TerminalType as TypeChoices
|
from terminal.const import TerminalType as TypeChoices
|
||||||
from users.models import User
|
from users.models import User
|
||||||
from .status import Status
|
from .status import Status
|
||||||
|
@ -121,11 +121,12 @@ class Terminal(StorageMixin, TerminalStatusMixin, JMSBaseModel):
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def get_chat_ai_setting():
|
def get_chat_ai_setting():
|
||||||
|
data = get_chatai_data()
|
||||||
return {
|
return {
|
||||||
'GPT_BASE_URL': settings.GPT_BASE_URL,
|
'GPT_BASE_URL': data['url'],
|
||||||
'GPT_API_KEY': settings.GPT_API_KEY,
|
'GPT_API_KEY': data['api_key'],
|
||||||
'GPT_PROXY': settings.GPT_PROXY,
|
'GPT_PROXY': data['proxy'],
|
||||||
'GPT_MODEL': get_chatai_model(),
|
'GPT_MODEL': data['model'],
|
||||||
}
|
}
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
|
|
Loading…
Reference in New Issue