初始话项目框架

This commit is contained in:
zk
2026-03-13 13:51:51 +08:00
commit f26585a130
25 changed files with 845 additions and 0 deletions
+48
View File
@@ -0,0 +1,48 @@
"""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)
_CARDIAC = (lambda: settings.cardiacBrder_api_key, lambda: settings.cardiacBrder_base_url)
class LLM(Enum):
"""所有可用模型,每个枚举值 = (模型名, api_key函数, base_url函数)"""
# 火山引擎
DOUBAO_PRO_256K = ("doubao-pro-256k", *_VOLCENGINE)
DOUBAO_PRO_32K = ("doubao-pro-32k", *_VOLCENGINE)
DOUBAO_LITE_128K = ("doubao-lite-128k", *_VOLCENGINE)
DEEPSEEK_V3 = ("deepseek-v3-250324", *_VOLCENGINE)
DEEPSEEK_R1 = ("deepseek-r1-250528", *_VOLCENGINE)
# 心缘
GPT_4O = ("gpt-4o", *_CARDIAC)
GPT_4O_MINI = ("gpt-4o-mini", *_CARDIAC)
CLAUDE_SONNET_4 = ("claude-sonnet-4-20250514", *_CARDIAC)
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 透传给 ChatOpenAItemperature, max_tokens 等)"""
return ChatOpenAI(
model=self.model_name,
api_key=self._api_key_fn(),
base_url=self._base_url_fn(),
**kwargs,
)