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", "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",

View File

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

View File

@ -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",

View File

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

View File

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

View File

@ -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,

View File

@ -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

View File

@ -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:

View File

@ -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

View File

@ -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,

View File

@ -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