perf: deepseek

pull/14889/head
feng 2025-02-13 15:57:10 +08:00 committed by ZhaoJiSen
parent 404d58a9c9
commit c0ffe45ce9
11 changed files with 48 additions and 20 deletions

View File

@ -264,7 +264,6 @@
"ChangeViewHelpText": "Click to switch different views",
"Chat": "Chat",
"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?",
"ChdirHelpText": "By default, the execution directory is the user's home directory",
"CheckAssetsAmount": "Check asset quantity",

View File

@ -278,7 +278,6 @@
"ChangeViewHelpText": "クリックして異なるビューを切り替え",
"Chat": "チャット",
"ChatAI": "スマートアンサー",
"ChatAITypeHelpText": "ページ切り替え専用で、切り替えタイプを変更した後は、下の属性を更新する必要があります。",
"ChatHello": "こんにちは!お手伝いできることがあれば何でもお申し付けください。",
"ChdirHelpText": "デフォルトの実行ディレクトリは実行ユーザーのホームディレクトリです",
"CheckAssetsAmount": "資産の数量を確認",

View File

@ -264,7 +264,6 @@
"ChangeViewHelpText": "Clique para alternar diferentes pontos de vista",
"Chat": "Chat",
"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? ",
"ChdirHelpText": "O diretório de execução padrão é o diretório home do usuário de execução",
"CheckAssetsAmount": "Verificar Quantidade de Ativos",

View File

@ -264,7 +264,6 @@
"ChangeViewHelpText": "点击切换不同视图",
"Chat": "聊天",
"ChatAI": "智能问答",
"ChatAITypeHelpText": "仅用于页面切换,切换类型后需更新下方属性才能生效。",
"ChatHello": "你好!我能为你提供什么帮助?",
"ChdirHelpText": "默认执行目录为执行用户的 home 目录",
"CheckAssetsAmount": "校对资产数量",

View File

@ -351,7 +351,6 @@
"Charset": "字元集",
"Chat": "聊天",
"ChatAI": "智慧問答",
"ChatAITypeHelpText": "僅用於頁面切換,切換類型後需更新下方屬性方能生效。",
"ChatHello": "你好!我能為你提供什麼幫助?",
"ChdirHelpText": "默認執行目錄為執行用戶的 home 目錄",
"CheckAssetsAmount": "校對資產數量",

View File

@ -682,10 +682,13 @@ class Config(dict):
# Chat AI
'CHAT_AI_ENABLED': False,
'CHAT_AI_TYPE': 'gpt',
'GPT_API_KEY': '',
'GPT_BASE_URL': '',
'GPT_API_KEY': '',
'GPT_PROXY': '',
'GPT_MODEL': 'gpt-4o-mini',
'DEEPSEEK_BASE_URL': '',
'DEEPSEEK_API_KEY': '',
'DEEPSEEK_PROXY': '',
'DEEPSEEK_MODEL': 'deepseek-chat',
'VIRTUAL_APP_ENABLED': False,

View File

@ -222,11 +222,14 @@ ASSET_SIZE = 'small'
# Chat AI
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_API_KEY = CONFIG.GPT_API_KEY
GPT_PROXY = CONFIG.GPT_PROXY
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
VIRTUAL_APP_ENABLED = CONFIG.VIRTUAL_APP_ENABLED

View File

@ -41,16 +41,21 @@ class ChatAITestingAPI(GenericAPIView):
data={'msg': _('Chat AI is not enabled')}
)
proxy = config['GPT_PROXY']
tp = config['CHAT_AI_TYPE']
if tp == ChatAITypeChoices.gpt:
url = config['GPT_BASE_URL']
api_key = config['GPT_API_KEY']
proxy = config['GPT_PROXY']
model = config['GPT_MODEL']
else:
url = config['DEEPSEEK_BASE_URL']
api_key = config['DEEPSEEK_API_KEY']
proxy = config['DEEPSEEK_PROXY']
model = config['DEEPSEEK_MODEL']
kwargs = {
'base_url': config['GPT_BASE_URL'] or None,
'api_key': config['GPT_API_KEY'],
'base_url': url or None,
'api_key': api_key,
}
try:
if proxy:

View File

@ -194,7 +194,17 @@ class ChatPrompt(JMSBaseModel):
return self.name
def get_chatai_model():
if settings.CHAT_AI_TYPE == ChatAITypeChoices.gpt:
return settings.GPT_MODEL
return settings.DEEPSEEK_MODEL
def get_chatai_data():
data = {
'url': settings.GPT_BASE_URL,
'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

View File

@ -143,6 +143,17 @@ class ChatAISettingSerializer(serializers.Serializer):
default=GPTModelChoices.gpt_4o_mini, choices=GPTModelChoices.choices,
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(
default=DeepSeekModelChoices.deepseek_chat, choices=DeepSeekModelChoices.choices,
label=_("DeepSeek Model"), required=False,

View File

@ -9,7 +9,7 @@ from common.const.signals import OP_LOG_SKIP_SIGNAL
from common.db.models import JMSBaseModel
from common.utils import get_logger, lazyproperty
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 users.models import User
from .status import Status
@ -121,11 +121,12 @@ class Terminal(StorageMixin, TerminalStatusMixin, JMSBaseModel):
@staticmethod
def get_chat_ai_setting():
data = get_chatai_data()
return {
'GPT_BASE_URL': settings.GPT_BASE_URL,
'GPT_API_KEY': settings.GPT_API_KEY,
'GPT_PROXY': settings.GPT_PROXY,
'GPT_MODEL': get_chatai_model(),
'GPT_BASE_URL': data['url'],
'GPT_API_KEY': data['api_key'],
'GPT_PROXY': data['proxy'],
'GPT_MODEL': data['model'],
}
@staticmethod