加了一堆模型和一堆功能
This commit is contained in:
@@ -7,14 +7,108 @@ import os
|
||||
from typing import Any
|
||||
|
||||
|
||||
def get_llm_model() -> str:
|
||||
return os.getenv("LLM_MODEL", "gpt-4o-mini")
|
||||
|
||||
|
||||
def get_llm_max_iterations() -> int:
|
||||
return int(os.getenv("LLM_MAX_ITERATIONS", "5"))
|
||||
|
||||
|
||||
# ─── LLM 模型注册表 ─────────────────────────────────────
|
||||
#
|
||||
# 每个模型的配置说明:
|
||||
# id — 前端/API 使用的短 ID
|
||||
# name — 显示名称
|
||||
# provider — API 提供者(对应 _get_client 的分发键)
|
||||
# model_id — 传给 OpenAI SDK 的 model 参数
|
||||
# description — 前端下拉列表说明文字
|
||||
# vision — 是否支持多模态图片输入
|
||||
|
||||
LLM_MODELS: dict[str, dict[str, Any]] = {
|
||||
"gpt-5.4": {
|
||||
"id": "gpt-5.4",
|
||||
"name": "GPT-5.4",
|
||||
"provider": "vectorengine",
|
||||
"model_id": "gpt-5.4",
|
||||
"description": "知识工作与计算机操控最强,1M 上下文",
|
||||
"vision": True,
|
||||
},
|
||||
"claude-sonnet-4-6": {
|
||||
"id": "claude-sonnet-4-6",
|
||||
"name": "Claude Sonnet 4.6",
|
||||
"provider": "vectorengine",
|
||||
"model_id": "claude-sonnet-4-6",
|
||||
"description": "高性价比编码与日常任务",
|
||||
"vision": True,
|
||||
},
|
||||
"claude-opus-4-6": {
|
||||
"id": "claude-opus-4-6",
|
||||
"name": "Claude Opus 4.6",
|
||||
"provider": "vectorengine",
|
||||
"model_id": "claude-opus-4-6",
|
||||
"description": "编码与专家级推理最强,128K 输出",
|
||||
"vision": True,
|
||||
},
|
||||
"gemini-3.1-pro-preview": {
|
||||
"id": "gemini-3.1-pro-preview",
|
||||
"name": "Gemini 3.1 Pro",
|
||||
"provider": "vectorengine",
|
||||
"model_id": "gemini-3.1-pro-preview",
|
||||
"description": "推理最强、价格最低,2M 上下文",
|
||||
"vision": True,
|
||||
},
|
||||
"glm-4.7": {
|
||||
"id": "glm-4.7",
|
||||
"name": "GLM-4.7",
|
||||
"provider": "vectorengine",
|
||||
"model_id": "glm-4.7",
|
||||
"description": "智谱 AI,中文能力突出,免费额度",
|
||||
"vision": False,
|
||||
},
|
||||
"gpt-4o-mini": {
|
||||
"id": "gpt-4o-mini",
|
||||
"name": "GPT-4o Mini",
|
||||
"provider": "vectorengine",
|
||||
"model_id": "gpt-4o-mini",
|
||||
"description": "轻量快速、高性价比",
|
||||
"vision": True,
|
||||
},
|
||||
"deepseek-chat": {
|
||||
"id": "deepseek-chat",
|
||||
"name": "DeepSeek Chat",
|
||||
"provider": "deepseek",
|
||||
"model_id": "deepseek-chat",
|
||||
"description": "中文对话优化(直连)",
|
||||
"vision": False,
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
def get_default_llm_model_id() -> str:
|
||||
"""返回 .env 中配置的默认 LLM 短 ID,不在注册表中则回退到 gpt-5.4。"""
|
||||
env_model = os.getenv("LLM_MODEL", "gpt-5.4")
|
||||
if env_model in LLM_MODELS:
|
||||
return env_model
|
||||
return "gpt-5.4"
|
||||
|
||||
|
||||
def get_llm_model_config(model_id: str | None = None) -> dict[str, Any]:
|
||||
"""根据短 ID 获取 LLM 模型配置,未指定或不存在则使用默认模型。"""
|
||||
if model_id and model_id in LLM_MODELS:
|
||||
return LLM_MODELS[model_id]
|
||||
return LLM_MODELS[get_default_llm_model_id()]
|
||||
|
||||
|
||||
def get_llm_models_list() -> list[dict]:
|
||||
"""返回前端下拉列表所需的 LLM 模型摘要信息。"""
|
||||
return [
|
||||
{
|
||||
"id": cfg["id"],
|
||||
"name": cfg["name"],
|
||||
"description": cfg["description"],
|
||||
"vision": cfg.get("vision", False),
|
||||
}
|
||||
for cfg in LLM_MODELS.values()
|
||||
]
|
||||
|
||||
|
||||
# ─── 图像模型注册表 ─────────────────────────────────────
|
||||
#
|
||||
# 每个模型的配置说明:
|
||||
@@ -29,6 +123,29 @@ def get_llm_max_iterations() -> int:
|
||||
# default_params — 默认推理参数
|
||||
|
||||
IMAGE_MODELS: dict[str, dict[str, Any]] = {
|
||||
"gpt-image-1.5": {
|
||||
"id": "gpt-image-1.5",
|
||||
"name": "GPT Image 1.5",
|
||||
"provider": "openai",
|
||||
"model_id": "gpt-image-1.5",
|
||||
"description": "OpenAI 最强生图,文字渲染与 prompt 理解最佳,支持多图参考",
|
||||
"supports_ref_image": True,
|
||||
"max_ref_images": 16,
|
||||
"default_params": {
|
||||
"size": "1024x1024",
|
||||
"quality": "high",
|
||||
},
|
||||
},
|
||||
"gemini-3.1-flash-image": {
|
||||
"id": "gemini-3.1-flash-image",
|
||||
"name": "Gemini 3.1 Flash Image",
|
||||
"provider": "gemini_native",
|
||||
"model_id": "gemini-3.1-flash-image-preview",
|
||||
"description": "Google 原生生图,速度快、价格低,支持多图参考(最多 14 张)",
|
||||
"supports_ref_image": True,
|
||||
"max_ref_images": 14,
|
||||
"default_params": {},
|
||||
},
|
||||
"flux-schnell": {
|
||||
"id": "flux-schnell",
|
||||
"name": "Flux Schnell",
|
||||
|
||||
Reference in New Issue
Block a user