Files
ai-agent-admin/backend-fastapi/ai_platform/providers/siliconflow_provider.py
T
2026-06-08 18:14:59 +08:00

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,
},
]