Forráskód Böngészése

add deepseek-coder-v2 in siliconflow (#6149)

SiliconFlow, Inc 8 hónapja
szülő
commit
3e18d32ce5

+ 30 - 0
api/core/model_runtime/model_providers/siliconflow/llm/deepdeek-coder-v2-instruct.yaml

@@ -0,0 +1,30 @@
+model: deepseek-ai/DeepSeek-Coder-V2-Instruct
+label:
+  en_US: deepseek-ai/DeepSeek-Coder-V2-Instruct
+model_type: llm
+features:
+  - agent-thought
+model_properties:
+  mode: chat
+  context_size: 32768
+parameter_rules:
+  - name: temperature
+    use_template: temperature
+  - name: max_tokens
+    use_template: max_tokens
+    type: int
+    default: 512
+    min: 1
+    max: 4096
+    help:
+      zh_Hans: 指定生成结果长度的上限。如果生成结果截断,可以调大该参数。
+      en_US: Specifies the upper limit on the length of generated results. If the generated results are truncated, you can increase this parameter.
+  - name: top_p
+    use_template: top_p
+  - name: frequency_penalty
+    use_template: frequency_penalty
+pricing:
+  input: '1.33'
+  output: '1.33'
+  unit: '0.000001'
+  currency: RMB

+ 1 - 3
api/core/model_runtime/model_providers/siliconflow/llm/deepseek-v2-chat.yaml

@@ -1,11 +1,9 @@
 model: deepseek-ai/deepseek-v2-chat
 label:
-  en_US: deepseek-ai/deepseek-v2-chat
+  en_US: deepseek-ai/DeepSeek-V2-Chat
 model_type: llm
 features:
-  - multi-tool-call
   - agent-thought
-  - stream-tool-call
 model_properties:
   mode: chat
   context_size: 32768

+ 1 - 3
api/core/model_runtime/model_providers/siliconflow/llm/glm4-9b-chat.yaml

@@ -1,11 +1,9 @@
 model: zhipuai/glm4-9B-chat
 label:
-  en_US: zhipuai/glm4-9B-chat
+  en_US: THUDM/glm-4-9b-chat
 model_type: llm
 features:
-  - multi-tool-call
   - agent-thought
-  - stream-tool-call
 model_properties:
   mode: chat
   context_size: 32768

+ 1 - 3
api/core/model_runtime/model_providers/siliconflow/llm/qwen2-57b-a14b-instruct.yaml

@@ -1,11 +1,9 @@
 model: alibaba/Qwen2-57B-A14B-Instruct
 label:
-  en_US: alibaba/Qwen2-57B-A14B-Instruct
+  en_US: Qwen/Qwen2-57B-A14B-Instruct
 model_type: llm
 features:
-  - multi-tool-call
   - agent-thought
-  - stream-tool-call
 model_properties:
   mode: chat
   context_size: 32768

+ 1 - 3
api/core/model_runtime/model_providers/siliconflow/llm/qwen2-72b-instruct.yaml

@@ -1,11 +1,9 @@
 model: alibaba/Qwen2-72B-Instruct
 label:
-  en_US: alibaba/Qwen2-72B-Instruct
+  en_US: Qwen/Qwen2-72B-Instruct
 model_type: llm
 features:
-  - multi-tool-call
   - agent-thought
-  - stream-tool-call
 model_properties:
   mode: chat
   context_size: 32768

+ 1 - 3
api/core/model_runtime/model_providers/siliconflow/llm/qwen2-7b-instruct.yaml

@@ -1,11 +1,9 @@
 model: alibaba/Qwen2-7B-Instruct
 label:
-  en_US: alibaba/Qwen2-7B-Instruct
+  en_US: Qwen/Qwen2-7B-Instruct
 model_type: llm
 features:
-  - multi-tool-call
   - agent-thought
-  - stream-tool-call
 model_properties:
   mode: chat
   context_size: 32768

+ 1 - 3
api/core/model_runtime/model_providers/siliconflow/llm/yi-1.5-34b-chat.yaml

@@ -1,11 +1,9 @@
 model: 01-ai/Yi-1.5-34B-Chat
 label:
-  en_US: 01-ai/Yi-1.5-34B-Chat
+  en_US: 01-ai/Yi-1.5-34B-Chat-16K
 model_type: llm
 features:
-  - multi-tool-call
   - agent-thought
-  - stream-tool-call
 model_properties:
   mode: chat
   context_size: 16384

+ 0 - 2
api/core/model_runtime/model_providers/siliconflow/llm/yi-1.5-6b-chat.yaml

@@ -3,9 +3,7 @@ label:
   en_US: 01-ai/Yi-1.5-6B-Chat
 model_type: llm
 features:
-  - multi-tool-call
   - agent-thought
-  - stream-tool-call
 model_properties:
   mode: chat
   context_size: 4096

+ 1 - 3
api/core/model_runtime/model_providers/siliconflow/llm/yi-1.5-9b-chat.yaml

@@ -1,11 +1,9 @@
 model: 01-ai/Yi-1.5-9B-Chat
 label:
-  en_US: 01-ai/Yi-1.5-9B-Chat
+  en_US: 01-ai/Yi-1.5-9B-Chat-16K
 model_type: llm
 features:
-  - multi-tool-call
   - agent-thought
-  - stream-tool-call
 model_properties:
   mode: chat
   context_size: 16384

+ 1 - 1
api/core/model_runtime/model_providers/siliconflow/siliconflow.py

@@ -19,7 +19,7 @@ class SiliconflowProvider(ModelProvider):
             model_instance = self.get_model_instance(ModelType.LLM)
 
             model_instance.validate_credentials(
-                model='deepseek-ai/deepseek-v2-chat',
+                model='deepseek-ai/DeepSeek-V2-Chat',
                 credentials=credentials
             )
         except CredentialsValidateFailedError as ex:

+ 0 - 0
api/tests/integration_tests/model_runtime/siliconflow/__init__.py


+ 106 - 0
api/tests/integration_tests/model_runtime/siliconflow/test_llm.py

@@ -0,0 +1,106 @@
+import os
+from collections.abc import Generator
+
+import pytest
+
+from core.model_runtime.entities.llm_entities import LLMResult, LLMResultChunk, LLMResultChunkDelta
+from core.model_runtime.entities.message_entities import AssistantPromptMessage, SystemPromptMessage, UserPromptMessage
+from core.model_runtime.errors.validate import CredentialsValidateFailedError
+from core.model_runtime.model_providers.siliconflow.llm.llm import SiliconflowLargeLanguageModel
+
+
+def test_validate_credentials():
+    model = SiliconflowLargeLanguageModel()
+
+    with pytest.raises(CredentialsValidateFailedError):
+        model.validate_credentials(
+            model='deepseek-ai/DeepSeek-V2-Chat',
+            credentials={
+                'api_key': 'invalid_key'
+            }
+        )
+
+    model.validate_credentials(
+        model='deepseek-ai/DeepSeek-V2-Chat',
+        credentials={
+            'api_key': os.environ.get('API_KEY')
+        }
+    )
+
+
+def test_invoke_model():
+    model = SiliconflowLargeLanguageModel()
+
+    response = model.invoke(
+        model='deepseek-ai/DeepSeek-V2-Chat',
+        credentials={
+            'api_key': os.environ.get('API_KEY')
+        },
+        prompt_messages=[
+            UserPromptMessage(
+                content='Who are you?'
+            )
+        ],
+        model_parameters={
+            'temperature': 0.5,
+            'max_tokens': 10
+        },
+        stop=['How'],
+        stream=False,
+        user="abc-123"
+    )
+
+    assert isinstance(response, LLMResult)
+    assert len(response.message.content) > 0
+
+
+def test_invoke_stream_model():
+    model = SiliconflowLargeLanguageModel()
+
+    response = model.invoke(
+        model='deepseek-ai/DeepSeek-V2-Chat',
+        credentials={
+            'api_key': os.environ.get('API_KEY')
+        },
+        prompt_messages=[
+            UserPromptMessage(
+                content='Hello World!'
+            )
+        ],
+        model_parameters={
+            'temperature': 0.5,
+            'max_tokens': 100,
+            'seed': 1234
+        },
+        stream=True,
+        user="abc-123"
+    )
+
+    assert isinstance(response, Generator)
+
+    for chunk in response:
+        assert isinstance(chunk, LLMResultChunk)
+        assert isinstance(chunk.delta, LLMResultChunkDelta)
+        assert isinstance(chunk.delta.message, AssistantPromptMessage)
+        assert len(chunk.delta.message.content) > 0 if chunk.delta.finish_reason is None else True
+
+
+def test_get_num_tokens():
+    model = SiliconflowLargeLanguageModel()
+
+    num_tokens = model.get_num_tokens(
+        model='deepseek-ai/DeepSeek-V2-Chat',
+        credentials={
+            'api_key': os.environ.get('API_KEY')
+        },
+        prompt_messages=[
+            SystemPromptMessage(
+                content='You are a helpful AI assistant.',
+            ),
+            UserPromptMessage(
+                content='Hello World!'
+            )
+        ]
+    )
+
+    assert num_tokens == 12

+ 21 - 0
api/tests/integration_tests/model_runtime/siliconflow/test_provider.py

@@ -0,0 +1,21 @@
+import os
+
+import pytest
+
+from core.model_runtime.errors.validate import CredentialsValidateFailedError
+from core.model_runtime.model_providers.siliconflow.siliconflow import SiliconflowProvider
+
+
+def test_validate_provider_credentials():
+    provider = SiliconflowProvider()
+
+    with pytest.raises(CredentialsValidateFailedError):
+        provider.validate_provider_credentials(
+            credentials={}
+        )
+
+    provider.validate_provider_credentials(
+        credentials={
+            'api_key': os.environ.get('API_KEY')
+        }
+    )