148 lines
4.9 KiB
Python
148 lines
4.9 KiB
Python
"""
|
|
硅基流动 (SiliconFlow) 提供商适配器
|
|
|
|
兼容 OpenAI API,继承 OpenAI 适配器
|
|
"""
|
|
import logging
|
|
from typing import List, Dict, Any
|
|
|
|
from .openai_provider import OpenAIProvider
|
|
from .registry import ProviderRegistry
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
@ProviderRegistry.register
|
|
class SiliconFlowProvider(OpenAIProvider):
|
|
"""
|
|
硅基流动 (SiliconFlow) 提供商适配器
|
|
|
|
兼容 OpenAI API 格式,支持多种开源模型、Embedding 和 Rerank
|
|
"""
|
|
|
|
provider_type = 'siliconflow'
|
|
provider_name = 'SiliconFlow'
|
|
supported_model_types = ['chat', 'embedding', 'rerank']
|
|
|
|
DEFAULT_API_BASE = 'https://api.siliconflow.cn/v1'
|
|
|
|
@classmethod
|
|
def get_default_models(cls) -> List[Dict[str, Any]]:
|
|
"""获取默认模型列表"""
|
|
return [
|
|
# ---- Chat 模型 ----
|
|
{
|
|
'model_name': 'Qwen/Qwen3-235B-A22B',
|
|
'display_name': 'Qwen3 235B-A22B',
|
|
'model_type': 'chat',
|
|
'max_tokens': 8192,
|
|
'context_window': 131072,
|
|
'supports_vision': False,
|
|
'supports_function_call': True,
|
|
'input_price': 0.004,
|
|
'output_price': 0.012,
|
|
},
|
|
{
|
|
'model_name': 'Qwen/Qwen3-32B',
|
|
'display_name': 'Qwen3 32B',
|
|
'model_type': 'chat',
|
|
'max_tokens': 8192,
|
|
'context_window': 131072,
|
|
'supports_vision': False,
|
|
'supports_function_call': True,
|
|
'input_price': 0.002,
|
|
'output_price': 0.006,
|
|
},
|
|
{
|
|
'model_name': 'Qwen/Qwen3-8B',
|
|
'display_name': 'Qwen3 8B',
|
|
'model_type': 'chat',
|
|
'max_tokens': 8192,
|
|
'context_window': 131072,
|
|
'supports_vision': False,
|
|
'supports_function_call': True,
|
|
'input_price': 0,
|
|
'output_price': 0,
|
|
},
|
|
{
|
|
'model_name': 'deepseek-ai/DeepSeek-V3',
|
|
'display_name': 'DeepSeek V3',
|
|
'model_type': 'chat',
|
|
'max_tokens': 8192,
|
|
'context_window': 65536,
|
|
'supports_vision': False,
|
|
'supports_function_call': True,
|
|
'input_price': 0.002,
|
|
'output_price': 0.008,
|
|
},
|
|
{
|
|
'model_name': 'deepseek-ai/DeepSeek-R1',
|
|
'display_name': 'DeepSeek R1',
|
|
'model_type': 'chat',
|
|
'max_tokens': 8192,
|
|
'context_window': 65536,
|
|
'supports_vision': False,
|
|
'supports_function_call': False,
|
|
'input_price': 0.004,
|
|
'output_price': 0.016,
|
|
},
|
|
{
|
|
'model_name': 'Pro/deepseek-ai/DeepSeek-R1',
|
|
'display_name': 'DeepSeek R1 (Pro)',
|
|
'model_type': 'chat',
|
|
'max_tokens': 8192,
|
|
'context_window': 65536,
|
|
'supports_vision': False,
|
|
'supports_function_call': False,
|
|
'input_price': 0.008,
|
|
'output_price': 0.032,
|
|
},
|
|
# ---- Embedding 模型 ----
|
|
{
|
|
'model_name': 'BAAI/bge-m3',
|
|
'display_name': 'BGE-M3',
|
|
'model_type': 'embedding',
|
|
'max_tokens': 8192,
|
|
'context_window': 8192,
|
|
'input_price': 0,
|
|
'output_price': 0,
|
|
},
|
|
{
|
|
'model_name': 'BAAI/bge-large-zh-v1.5',
|
|
'display_name': 'BGE Large ZH v1.5',
|
|
'model_type': 'embedding',
|
|
'max_tokens': 512,
|
|
'context_window': 512,
|
|
'input_price': 0,
|
|
'output_price': 0,
|
|
},
|
|
{
|
|
'model_name': 'jinaai/jina-embeddings-v3',
|
|
'display_name': 'Jina Embeddings V3',
|
|
'model_type': 'embedding',
|
|
'max_tokens': 8192,
|
|
'context_window': 8192,
|
|
'input_price': 0,
|
|
'output_price': 0,
|
|
},
|
|
# ---- Rerank 模型 ----
|
|
{
|
|
'model_name': 'BAAI/bge-reranker-v2-m3',
|
|
'display_name': 'BGE Reranker V2 M3',
|
|
'model_type': 'rerank',
|
|
'max_tokens': 8192,
|
|
'context_window': 8192,
|
|
'input_price': 0,
|
|
'output_price': 0,
|
|
},
|
|
{
|
|
'model_name': 'jinaai/jina-reranker-v2-base-multilingual',
|
|
'display_name': 'Jina Reranker V2 Multilingual',
|
|
'model_type': 'rerank',
|
|
'max_tokens': 8192,
|
|
'context_window': 8192,
|
|
'input_price': 0,
|
|
'output_price': 0,
|
|
},
|
|
]
|