From 58bd5627bfc6dd59e92d55d2938038f648fb5ff5 Mon Sep 17 00:00:00 2001 From: Joshua <138381132+joshua20231026@users.noreply.github.com> Date: Tue, 7 May 2024 22:45:38 +0800 Subject: [PATCH] Add-Deepseek (#4157) --- .../model_providers/deepseek/__init__.py | 0 .../deepseek/_assets/icon_l_en.png | Bin 0 -> 8232 bytes .../deepseek/_assets/icon_s_en.png | Bin 0 -> 11573 bytes .../model_providers/deepseek/deepseek.py | 30 ++++++++++++++++++ .../model_providers/deepseek/deepseek.yaml | 28 ++++++++++++++++ .../model_providers/deepseek/llm/__init__.py | 0 .../deepseek/llm/_position.yaml | 2 ++ .../deepseek/llm/deepseek-chat.yaml | 26 +++++++++++++++ .../deepseek/llm/deepseek-coder.yaml | 26 +++++++++++++++ .../model_providers/deepseek/llm/llm.py | 27 ++++++++++++++++ 10 files changed, 139 insertions(+) create mode 100644 api/core/model_runtime/model_providers/deepseek/__init__.py create mode 100644 api/core/model_runtime/model_providers/deepseek/_assets/icon_l_en.png create mode 100644 api/core/model_runtime/model_providers/deepseek/_assets/icon_s_en.png create mode 100644 api/core/model_runtime/model_providers/deepseek/deepseek.py create mode 100644 api/core/model_runtime/model_providers/deepseek/deepseek.yaml create mode 100644 api/core/model_runtime/model_providers/deepseek/llm/__init__.py create mode 100644 api/core/model_runtime/model_providers/deepseek/llm/_position.yaml create mode 100644 api/core/model_runtime/model_providers/deepseek/llm/deepseek-chat.yaml create mode 100644 api/core/model_runtime/model_providers/deepseek/llm/deepseek-coder.yaml create mode 100644 api/core/model_runtime/model_providers/deepseek/llm/llm.py diff --git a/api/core/model_runtime/model_providers/deepseek/__init__.py b/api/core/model_runtime/model_providers/deepseek/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/api/core/model_runtime/model_providers/deepseek/_assets/icon_l_en.png b/api/core/model_runtime/model_providers/deepseek/_assets/icon_l_en.png new file mode 100644 index 0000000000000000000000000000000000000000..25254d7f533b431b5235f90b6b468f6049046d85 GIT binary patch literal 8232 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 a1Y}P)>K&h2S*%OWz$)MX0000000007YNdz( literal 0 HcmV?d00001 diff --git a/api/core/model_runtime/model_providers/deepseek/_assets/icon_s_en.png b/api/core/model_runtime/model_providers/deepseek/_assets/icon_s_en.png new file mode 100644 index 0000000000000000000000000000000000000000..3271f5cfe48fd9a4609bf11f1a2838812bf3769d GIT binary patch literal 11573 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 Xz`p$~0$v9W>*v7k*Ly9$hxz{ncCI&w literal 0 HcmV?d00001 diff --git a/api/core/model_runtime/model_providers/deepseek/deepseek.py b/api/core/model_runtime/model_providers/deepseek/deepseek.py new file mode 100644 index 0000000000..5fb821ed45 --- /dev/null +++ b/api/core/model_runtime/model_providers/deepseek/deepseek.py @@ -0,0 +1,30 @@ +import logging + +from core.model_runtime.entities.model_entities import ModelType +from core.model_runtime.errors.validate import CredentialsValidateFailedError +from core.model_runtime.model_providers.__base.model_provider import ModelProvider + +logger = logging.getLogger(__name__) + + +class DeepseekProvider(ModelProvider): + + def validate_provider_credentials(self, credentials: dict) -> None: + """ + Validate provider credentials + if validate failed, raise exception + + :param credentials: provider credentials, credentials form defined in `provider_credential_schema`. + """ + try: + model_instance = self.get_model_instance(ModelType.LLM) + + model_instance.validate_credentials( + model='deepseek-chat', + credentials=credentials + ) + except CredentialsValidateFailedError as ex: + raise ex + except Exception as ex: + logger.exception(f'{self.get_provider_schema().provider} credentials validate failed') + raise ex diff --git a/api/core/model_runtime/model_providers/deepseek/deepseek.yaml b/api/core/model_runtime/model_providers/deepseek/deepseek.yaml new file mode 100644 index 0000000000..b535053c36 --- /dev/null +++ b/api/core/model_runtime/model_providers/deepseek/deepseek.yaml @@ -0,0 +1,28 @@ +provider: deepseek +label: + en_US: Deepseek +icon_small: + en_US: icon_s_en.png +icon_large: + en_US: icon_l_en.png +background: "#FFFFFF" +help: + title: + en_US: Get your API Key from Deepseek + zh_Hans: 从 Deepseek 获取 API Key + url: + en_US: https://platform.deepseek.com/api_keys +supported_model_types: + - llm +configurate_methods: + - predefined-model +provider_credential_schema: + credential_form_schemas: + - variable: api_key + label: + en_US: API Key + type: secret-input + required: true + placeholder: + zh_Hans: 在此输入您的 API Key + en_US: Enter your API Key diff --git a/api/core/model_runtime/model_providers/deepseek/llm/__init__.py b/api/core/model_runtime/model_providers/deepseek/llm/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/api/core/model_runtime/model_providers/deepseek/llm/_position.yaml b/api/core/model_runtime/model_providers/deepseek/llm/_position.yaml new file mode 100644 index 0000000000..43d03f2ee9 --- /dev/null +++ b/api/core/model_runtime/model_providers/deepseek/llm/_position.yaml @@ -0,0 +1,2 @@ +- deepseek-chat +- deepseek-coder diff --git a/api/core/model_runtime/model_providers/deepseek/llm/deepseek-chat.yaml b/api/core/model_runtime/model_providers/deepseek/llm/deepseek-chat.yaml new file mode 100644 index 0000000000..a766a09a7b --- /dev/null +++ b/api/core/model_runtime/model_providers/deepseek/llm/deepseek-chat.yaml @@ -0,0 +1,26 @@ +model: deepseek-chat +label: + zh_Hans: deepseek-chat + en_US: deepseek-chat +model_type: llm +features: + - agent-thought +model_properties: + mode: chat + context_size: 32000 +parameter_rules: + - name: temperature + use_template: temperature + min: 0 + max: 1 + default: 0.5 + - name: top_p + use_template: top_p + min: 0 + max: 1 + default: 1 + - name: max_tokens + use_template: max_tokens + min: 1 + max: 32000 + default: 1024 diff --git a/api/core/model_runtime/model_providers/deepseek/llm/deepseek-coder.yaml b/api/core/model_runtime/model_providers/deepseek/llm/deepseek-coder.yaml new file mode 100644 index 0000000000..8f156be101 --- /dev/null +++ b/api/core/model_runtime/model_providers/deepseek/llm/deepseek-coder.yaml @@ -0,0 +1,26 @@ +model: deepseek-coder +label: + zh_Hans: deepseek-coder + en_US: deepseek-coder +model_type: llm +features: + - agent-thought +model_properties: + mode: chat + context_size: 16000 +parameter_rules: + - name: temperature + use_template: temperature + min: 0 + max: 1 + default: 0.5 + - name: top_p + use_template: top_p + min: 0 + max: 1 + default: 1 + - name: max_tokens + use_template: max_tokens + min: 1 + max: 32000 + default: 1024 diff --git a/api/core/model_runtime/model_providers/deepseek/llm/llm.py b/api/core/model_runtime/model_providers/deepseek/llm/llm.py new file mode 100644 index 0000000000..4d20a07447 --- /dev/null +++ b/api/core/model_runtime/model_providers/deepseek/llm/llm.py @@ -0,0 +1,27 @@ +from collections.abc import Generator +from typing import Optional, Union + +from core.model_runtime.entities.llm_entities import LLMResult +from core.model_runtime.entities.message_entities import PromptMessage, PromptMessageTool +from core.model_runtime.model_providers.openai_api_compatible.llm.llm import OAIAPICompatLargeLanguageModel + + +class DeepseekLargeLanguageModel(OAIAPICompatLargeLanguageModel): + def _invoke(self, model: str, credentials: dict, + prompt_messages: list[PromptMessage], model_parameters: dict, + tools: Optional[list[PromptMessageTool]] = None, stop: Optional[list[str]] = None, + stream: bool = True, user: Optional[str] = None) \ + -> Union[LLMResult, Generator]: + + self._add_custom_parameters(credentials) + + return super()._invoke(model, credentials, prompt_messages, model_parameters, tools, stop, stream, user) + + def validate_credentials(self, model: str, credentials: dict) -> None: + self._add_custom_parameters(credentials) + super().validate_credentials(model, credentials) + + @staticmethod + def _add_custom_parameters(credentials: dict) -> None: + credentials['mode'] = 'chat' + credentials['endpoint_url'] = 'https://api.deepseek.com/'