""" LLM 提供商模型 """ from sqlalchemy import Column, String, Text, Boolean, Integer from app.base_model import BaseModel class LLMProvider(BaseModel): """ LLM 提供商配置 支持的提供商类型: - openai: OpenAI (GPT-3.5, GPT-4, etc.) - claude: Anthropic Claude - qwen: 阿里通义千问 - ollama: 本地 Ollama - azure_openai: Azure OpenAI - zhipu: 智谱 AI - moonshot: Moonshot (Kimi) - deepseek: DeepSeek """ __tablename__ = "ai_llm_provider" name = Column(String(100), nullable=False, comment="提供商名称") provider_type = Column(String(50), nullable=False, comment="提供商类型") api_key = Column(Text, default="", comment="API Key(加密存储)") api_base = Column(String(500), default="", comment="API 地址(可选,用于自定义端点)") api_version = Column(String(50), default="", comment="API 版本(Azure OpenAI 专用)") ollama_host = Column(String(200), default="http://localhost:11434", comment="Ollama 服务地址") is_active = Column(Boolean, default=True, comment="是否启用") description = Column(Text, default="", comment="描述") quota_limit = Column(Integer, default=0, comment="配额限制(0 表示无限制)") quota_used = Column(Integer, default=0, comment="已使用配额") def get_api_key_masked(self) -> str: """获取脱敏的 API Key""" if not self.api_key: return '' if len(self.api_key) <= 8: return '*' * len(self.api_key) return self.api_key[:4] + '*' * (len(self.api_key) - 8) + self.api_key[-4:]