feat(config): 新增 LLM_MULTIMODAL —— 让 env-only 部署能声明「主模型自身能收图」(默认 false,行为不变)
- 起因(Android 会话质询):其测到生效配置 multimodal:false 却与 DeepSeek 视觉文档矛盾。核实结论: **既非设计选择也非漏配,而是 env 路径的表达力限制** —— `data/models.json` 不存在 ⇒ 走 `GroupFromEnv`, 而它此前硬编 false(理由:不得声称端点可能不具备的能力);该标志的正式载体只有 models.json 组(面板写入)。 后果:env-only 部署里图像**恒走 KindVisionTool**(每回合多一次完整模型调用 + 模型只见文字描述=有损)。 - 修法:`LLMConfig.Multimodal`(`env:"LLM_MULTIMODAL" default:"false"`)+ `GroupFromEnv` 两个 provider 分叉都接入; **只对 env 合成组生效**(有有效 models.json 时组文件优先,与 LLM_REASONING_KIND 同口径);非 bool **启动报错**不静默 - 复核:config 包测试绿(5 条:默认不变 / 显式 true 生效且组仍 Validate / 进程 env 端到端 / 非法值 fail-fast / 组文件优先两方向);**变异 3 条**(分叉写死 false、default 改 true、env 覆盖组文件)均已还原 - 交付给主人的动作:**在 `.env` 写 `LLM_MULTIMODAL=true`** 即可让图直进主模型上下文(改完需重启后端生效)
This commit is contained in:
1 parent
6c164f920b
commit
4adfc9a2df
5 files changed
+214
-21
No files matched your search
@@ -75,10 +75,21 @@ LLM_REASONING_KIND=
|
||||
# ---- LLM 视觉模型(视觉/OCR 工具用的模型;与「主模型能否收图」无关) ----
|
||||
# 语义(v0.53 修正):主模型自己能不能收图,看 models.json 生效组的 multimodal 字段(面板可勾选),
|
||||
# 不是看这里;本节的模型【只供 vision / ocr 工具】调用。都不配置时工具回落用主模型(LLM_MODEL)。
|
||||
# .env 侧的等价键是下面的 LLM_MULTIMODAL——它同样只作用于 .env 合成的模型组。
|
||||
# LLM_VISION_MODEL=gpt-4o-mini
|
||||
# OCR 工具单独用另一个模型(可选):留空 = 复用 LLM_VISION_MODEL。
|
||||
# LLM_OCR_MODEL=qwen-vl-ocr
|
||||
|
||||
# 声明【主模型自身】能否直接接收图片(= models.json 组 multimodal 的 .env 等价物):
|
||||
# true = 图片直接进主模型上下文(省掉工具那一轮模型调用、不做有损文本摘要);
|
||||
# 留空 / false(默认)= 图片交给 vision / ocr 工具,由工具返回文本描述。
|
||||
# 默认 false 与引入本键之前【逐字节一致】——扁平 env 块只有这一个键能声明收图能力,
|
||||
# 而声称端点可能不具备的能力,比把图交给视觉/OCR 工具更糟(design/06 §0 首条);
|
||||
# 绝不凭 base URL / 模型名猜测端点是否收图。
|
||||
# ⚠️ 只作用于 .env 合成的模型组:存在有效 models.json 时以该组的 multimodal 为准(面板可勾选)。
|
||||
# ⚠️ 非法值(非 bool,如 maybe)= 启动即报错,不静默回退。
|
||||
# LLM_MULTIMODAL=false
|
||||
|
||||
# Provider = anthropic:Anthropic Messages /v1/messages(tool_use.input 为结构化对象,工具循环更稳)
|
||||
# ANTHROPIC_BASE_URL=https://api.anthropic.com
|
||||
# ANTHROPIC_API_KEY=sk-ant-xxxxx
|
||||
|
||||
Reference in new issue
Block a user