Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add deepseek-coder-v2 in siliconflow #6149

Merged
merged 8 commits into from
Jul 29, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -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
Original file line number Diff line number Diff line change
@@ -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
Expand Down
Original file line number Diff line number Diff line change
@@ -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
Expand Down
Original file line number Diff line number Diff line change
@@ -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
Expand Down
Original file line number Diff line number Diff line change
@@ -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
Expand Down
Original file line number Diff line number Diff line change
@@ -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
Expand Down
Original file line number Diff line number Diff line change
@@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
@@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ def validate_provider_credentials(self, credentials: dict) -> None:
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:
Expand Down
Empty file.
106 changes: 106 additions & 0 deletions api/tests/integration_tests/model_runtime/siliconflow/test_llm.py
Original file line number Diff line number Diff line change
@@ -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
Original file line number Diff line number Diff line change
@@ -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')
}
)