添加Ai 能力,重构项目结构

This commit is contained in:
zk
2026-07-24 17:55:27 +08:00
parent 39e162ae0f
commit d7f1ba4812
13 changed files with 127 additions and 0 deletions
+64
View File
@@ -0,0 +1,64 @@
"""LLM 模型枚举与实例获取。
Usage:
from app.ai.models import LLM
llm = LLM.DOUBAO_SEED_LITE.create(temperature=0)
llm = LLM.CLAUDE_OPUS.create(temperature=0)
"""
from enum import Enum
from typing import Callable
from langchain_anthropic import ChatAnthropic
from langchain_core.language_models import BaseChatModel
from langchain_openai import ChatOpenAI
from app.config import settings
ConfigGetter = Callable[[], str]
# 供应商连接配置 = (api_key函数, base_url函数)
_VOLCENGINE = (
lambda: settings.volcengine_api_key,
lambda: settings.volcengine_base_url,
)
_ANTHROPIC = (
lambda: settings.anthropic_api_key,
lambda: settings.anthropic_base_url,
)
class LLM(Enum):
"""所有可用模型,每个枚举值 = (模型名, 封装类, api_key函数, base_url函数)。"""
# 火山引擎(OpenAI 兼容)
DOUBAO_PRO_32K = ("doubao-1-5-pro-32k-250115", ChatOpenAI, *_VOLCENGINE)
DOUBAO_LITE_32K = ("doubao-1-5-lite-32k-250115", ChatOpenAI, *_VOLCENGINE)
DOUBAO_SEED_LITE = ("doubao-seed-2-0-lite-260215", ChatOpenAI, *_VOLCENGINE)
DOUBAO_SEED_PRO = ("doubao-seed-2-0-pro-260215", ChatOpenAI, *_VOLCENGINE)
DEEPSEEK_V4_FLASH = ("deepseek-v4-flash-260425", ChatOpenAI, *_VOLCENGINE)
# ClaudeAnthropic 风格)
CLAUDE_OPUS = ("claude-opus-4-6", ChatAnthropic, *_ANTHROPIC)
def __init__(
self,
model_name: str,
model_class: type[BaseChatModel],
api_key_getter: ConfigGetter,
base_url_getter: ConfigGetter,
) -> None:
self.model_name = model_name
self._model_class = model_class
self._api_key_getter = api_key_getter
self._base_url_getter = base_url_getter
def create(self, **kwargs) -> BaseChatModel:
"""创建模型实例,其他参数透传给 LangChain 模型类。"""
return self._model_class(
model=self.model_name,
api_key=self._api_key_getter(),
base_url=self._base_url_getter(),
**kwargs,
)