"""LLM 模型枚举与实例获取 Usage: from app.ai.models import LLM llm = LLM.DOUBAO_PRO_256K.create(temperature=0) llm = LLM.DEEPSEEK_V3.create() """ from enum import Enum from langchain_openai import ChatOpenAI from app.config import settings # 供应商连接配置 _VOLCENGINE = (lambda: settings.volcengine_api_key, lambda: settings.volcengine_base_url) _ZM = (lambda: settings.zm_api_key, lambda: settings.zm_base_url) class LLM(Enum): """所有可用模型,每个枚举值 = (模型名, api_key函数, base_url函数)""" # 火山引擎 DOUBAO_PRO_32K = ("doubao-1-5-pro-32k-250115", *_VOLCENGINE) DOUBAO_LITE_32K = ("doubao-1-5-lite-32k-250115", *_VOLCENGINE) DEEPSEEK_V4_FLASH = ("deepseek-v4-flash-260425", *_VOLCENGINE) DEEPSEEK_V4_PRO = ("deepseek-v4-pro-260425", *_VOLCENGINE) DOUBAO_SEED_MINI = ("doubao-seed-2-0-mini-260215", *_VOLCENGINE) DOUBAO_SEED_LITE = ("doubao-seed-2-0-lite-260215", *_VOLCENGINE) DOUBAO_SEED_PRO = ("doubao-seed-2-0-pro-260215", *_VOLCENGINE) # ZM ZM_GPT_5_5 = ("gpt-5.5", *_ZM) ZM_GPT_5_4 = ("gpt-5.4", *_ZM) ZM_GPT_5_4_MINI = ("gpt-5.4-mini", *_ZM) ZM_GPT_5_2 = ("gpt-5.2", *_ZM) def __init__(self, model_name: str, api_key_fn, base_url_fn): self.model_name = model_name self._api_key_fn = api_key_fn self._base_url_fn = base_url_fn def create(self, **kwargs) -> ChatOpenAI: """创建 LLM 实例,kwargs 透传给 ChatOpenAI(temperature, max_tokens 等)""" return ChatOpenAI( model=self.model_name, api_key=self._api_key_fn(), base_url=self._base_url_fn(), **kwargs, )