Skip to content

Commit 88d8ffb

Browse files
authored
Relax LiteLLM version constraint (#1201)
* chore: relax litellm version constraint * chore: cap litellm constraint to 1.x
1 parent 69ef561 commit 88d8ffb

8 files changed

Lines changed: 21 additions & 20 deletions

.env.example

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ GEMINI_API_KEY=
9898
# - Moonshot API / 模型文档:https://platform.kimi.ai/docs/guide/kimi-k2-6-quickstart
9999
# - Moonshot 官方模型卡(评测默认 temperature = 1.0):https://huggingface.co/moonshotai/Kimi-K2.6
100100
# - LiteLLM OpenAI-Compatible 规范:https://docs.litellm.ai/docs/providers/openai_compatible
101-
# 当前仓库运行时依赖窗口:litellm>=1.80.10,<1.82.7见 requirements.txt),本次兼容修复按该范围验证
101+
# 当前仓库运行时依赖约束:litellm>=1.80.10,!=1.82.7,!=1.82.8,<2.0.0(显式排除 PyPI 事故版本,见 requirements.txt)。
102102
# 因此 kimi-k2.6 会自动改用 1.0,避免 API 拒绝请求;其他模型和 fallback 仍使用你配置的 LLM_TEMPERATURE。
103103
# Web 设置页 / 桌面端导入不会静默清空或改写 LLM_TEMPERATURE;只在真正发请求前按 Kimi 要求临时归一化。
104104
# 如果主模型切回非 Kimi,原本配置的温度会自动恢复;最小回滚方式是回退本次 Kimi 固定温度改动。

docs/CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/).
1111

1212
<!-- 新条目格式:- [类型] 描述(类型取值:新功能/改进/修复/文档/测试/chore)-->
1313
<!-- 每条独立一行追加到本段末尾,无需分类标题,合并时冲突最小 -->
14+
- [改进] 放宽 LiteLLM 依赖约束,保留 `>=1.80.10` 最低版本并显式排除 PyPI 事故版本 `1.82.7` / `1.82.8`,允许安装后续 1.x 修复版本。
1415

1516
## [3.15.0] - 2026-05-05
1617

docs/LLM_CONFIG_GUIDE.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ OLLAMA_API_BASE=http://localhost:11434
7575
LITELLM_MODEL=ollama/qwen3:8b
7676
```
7777

78-
> **重要**:Ollama 必须使用 `OLLAMA_API_BASE` 配置,**不要**使用 `OPENAI_BASE_URL`,否则系统会错误拼接 URL(如 404、`api/generate/api/show`)。远程 Ollama 时,将 `OLLAMA_API_BASE` 设为实际地址(如 `http://192.168.1.100:11434`)。当前依赖要求 LiteLLM ≥1.80.10(与 requirements.txt 一致)。
78+
> **重要**:Ollama 必须使用 `OLLAMA_API_BASE` 配置,**不要**使用 `OPENAI_BASE_URL`,否则系统会错误拼接 URL(如 404、`api/generate/api/show`)。远程 Ollama 时,将 `OLLAMA_API_BASE` 设为实际地址(如 `http://192.168.1.100:11434`)。当前依赖约束为 `litellm>=1.80.10,!=1.82.7,!=1.82.8,<2.0.0`(与 requirements.txt 一致)。
7979
8080
> **恭喜!小白读到这里就可以去运行程序了!**
8181
> 想测测看通没通?在主目录打开命令行输入:`python test_env.py --llm`
@@ -98,18 +98,18 @@ LITELLM_MODEL=ollama/qwen3:8b
9898

9999
- 预设里的 provider / Base URL / 示例模型只用于**初始化表单**;真正落盘时仍是你当前输入的 `LLM_{CHANNEL}_PROTOCOL``LLM_{CHANNEL}_BASE_URL``LLM_{CHANNEL}_MODELS``LLM_{CHANNEL}_API_KEY(S)`,不会在后台偷偷改成别的 provider 名或 URL。
100100
- 设置页的“获取模型”只对 `OpenAI Compatible` / `DeepSeek` 渠道调用 `{base_url}/models`;“测试连接”默认只发一次最小聊天请求。可选的“运行时能力检测”必须由用户显式选择后触发,会额外发起 JSON / tools / stream / vision smoke 请求,结果仅代表当前账号、模型和 endpoint 的一次 best-effort 检测。上述检测返回的 `stage / error_code / details / latency_ms / capability_results` 仅用于结构化诊断提示,**不会写回** `.env`,也不会阻止保存。
101-
- 运行时能力检测会产生真实 LLM 请求,可能带来 token / 图像输入费用、RPM/TPM 限流、余额不足或超时。检测失败可能来自账号权限、模型未开通、endpoint 区域、余额、服务商兼容层或 LiteLLM 转换路径,不等于该 provider 全局不支持对应能力。P3 未对所有真实 provider 做在线 smoke;兼容依据来自当前依赖窗口 `litellm>=1.80.10,<1.82.7` 下的 LiteLLM `completion()` / OpenAI I/O format / streaming / exception mapping,以及 OpenAI Chat Completions 的 JSON mode、tool calling、streaming 和 vision input 形状。
101+
- 运行时能力检测会产生真实 LLM 请求,可能带来 token / 图像输入费用、RPM/TPM 限流、余额不足或超时。检测失败可能来自账号权限、模型未开通、endpoint 区域、余额、服务商兼容层或 LiteLLM 转换路径,不等于该 provider 全局不支持对应能力。P3 未对所有真实 provider 做在线 smoke;兼容依据来自当前依赖约束 `litellm>=1.80.10,!=1.82.7,!=1.82.8,<2.0.0` 下的 LiteLLM `completion()` / OpenAI I/O format / streaming / exception mapping,以及 OpenAI Chat Completions 的 JSON mode、tool calling、streaming 和 vision input 形状。
102102
- 相关外部来源:LiteLLM Python SDK / OpenAI I/O format / streaming / exception mapping:<https://docs.litellm.ai/>;LiteLLM OpenAI-compatible 路由:<https://docs.litellm.ai/docs/providers/openai_compatible>;OpenAI Chat Completions:<https://platform.openai.com/docs/api-reference/chat/create>;JSON mode:<https://platform.openai.com/docs/guides/structured-outputs?api-mode=chat>;tool calling:<https://platform.openai.com/docs/guides/function-calling?api-mode=chat>;streaming:<https://platform.openai.com/docs/guides/streaming-responses?api-mode=chat>;vision input:<https://platform.openai.com/docs/guides/images-vision?api-mode=chat>
103103
- 保存渠道时,只会更新这次提交的 key;不会因为切换渠道模式而静默迁移整个旧配置。唯一会被**同步清理**的是运行时模型引用:如果 `LITELLM_MODEL``AGENT_LITELLM_MODEL``VISION_MODEL``LITELLM_FALLBACK_MODELS` 指向了当前已启用渠道里已经不存在的模型,设置页会在保存前把这些失效引用清空/移除,避免运行时继续指向无效模型;即使当前启用渠道没有任何可选模型,也会清理缺少 legacy Key 支撑的托管 provider 旧值。`cohere/*``google/*``xai/*` 这类直连模型仅用于说明历史 `direct-env` 兼容保留语义,不等于可用性承诺,是否可用请按各厂商官方模型/API 文档再做实际验证。
104104
- 后端一致性依据:配置校验链路在 `SystemConfigService._validate_llm_runtime_selection``src/services/system_config_service.py`)中通过 `_uses_direct_env_provider``src/config.py`)判断运行时来源;当前仅 `gemini``vertex_ai``anthropic``openai``deepseek` 属于托管 key provider,`cohere``google``xai` 不在该白名单中,因此会保留为直连模型。
105105
- 回退方式也保持最小:把对应渠道模型列表改回去后重新选择主模型 / fallback,或直接用桌面端导出备份 / 手动 `.env` 还原之前的 `LLM_*``LITELLM_MODEL``AGENT_LITELLM_MODEL``VISION_MODEL``LLM_TEMPERATURE` 即可,不需要额外跑迁移脚本。
106-
- 当前仓库对此链路的依赖窗口是 `litellm>=1.80.10,<1.82.7`(见 `requirements.txt`);回归覆盖包括 `tests/test_system_config_service.py``tests/test_system_config_api.py``apps/dsa-web/src/components/settings/__tests__/LLMChannelEditor.test.tsx`
106+
- 当前仓库对此链路的依赖约束是 `litellm>=1.80.10,!=1.82.7,!=1.82.8,<2.0.0`(见 `requirements.txt`);回归覆盖包括 `tests/test_system_config_service.py``tests/test_system_config_api.py``apps/dsa-web/src/components/settings/__tests__/LLMChannelEditor.test.tsx`
107107

108-
> **外部 provider 示例模型说明**`cohere/*``google/*``xai/*` 等 provider 前缀值仅用于说明当前保存清理语义,**不代表该窗口内的逐型号可用性保证**。文档或测试中的具体模型名都是配置保留行为样例,不是生产推荐;实际可用性请以对应官方模型文档为准,并结合仓库依赖窗口 `litellm>=1.80.10,<1.82.7` 复核。
108+
> **外部 provider 示例模型说明**`cohere/*``google/*``xai/*` 等 provider 前缀值仅用于说明当前保存清理语义,**不代表该依赖约束内的逐型号可用性保证**。文档或测试中的具体模型名都是配置保留行为样例,不是生产推荐;实际可用性请以对应官方模型文档为准,并结合仓库依赖约束 `litellm>=1.80.10,!=1.82.7,!=1.82.8,<2.0.0` 复核。
109109
110110
### 回退与兼容性证据
111111

112-
- 兼容窗口与静默清理范围:在 `litellm>=1.80.10,<1.82.7`,保存仅清理失效的 runtime 模型引用(`LITELLM_MODEL``AGENT_LITELLM_MODEL``VISION_MODEL``LITELLM_FALLBACK_MODELS`),`cohere/*``google/*``xai/*` 等非渠道直连模型会被保留。
112+
- 依赖约束与静默清理范围:在 `litellm>=1.80.10,!=1.82.7,!=1.82.8,<2.0.0`,保存仅清理失效的 runtime 模型引用(`LITELLM_MODEL``AGENT_LITELLM_MODEL``VISION_MODEL``LITELLM_FALLBACK_MODELS`),`cohere/*``google/*``xai/*` 等非渠道直连模型会被保留。
113113
- 回退方式:可直接用桌面端导出备份后通过 `POST /api/v1/system/config/import` 恢复;也可手动把 `.env` 中历史 `LITELLM_* / AGENT_LITELLM_MODEL / VISION_MODEL / LLM_TEMPERATURE` 回填后重启生效。
114114
- 回退回归证据:`tests/test_system_config_service.py::test_import_desktop_env_restores_runtime_models_after_cleanup` 覆盖“清理后用桌面导出备份恢复 runtime 引用”。
115115
- 直连 provider 回归证据:`tests/test_system_config_service.py::SystemConfigServiceTestCase::test_validate_accepts_minimax_model_as_direct_env_provider``test_validate_accepts_cohere_model_as_direct_env_provider``test_validate_accepts_google_model_as_direct_env_provider``test_validate_accepts_xai_model_as_direct_env_provider` 覆盖直连 provider 保留语义。
@@ -196,7 +196,7 @@ LITELLM_MODEL=ollama/qwen3:8b
196196
- Moonshot 官方说明 Kimi API 兼容 OpenAI 接口,Base URL 使用 `https://api.moonshot.ai/v1`<https://platform.kimi.ai/docs/guide/kimi-k2-6-quickstart>
197197
- LiteLLM 官方要求 OpenAI Compatible 渠道模型名使用 `openai/` 前缀:<https://docs.litellm.ai/docs/providers/openai_compatible>
198198
- Moonshot 官方兼容性文档区分两种固定值:**thinking 模式固定 `1.0`,non-thinking 模式固定 `0.6`**;传其它值会被接口拒绝:<https://platform.moonshot.ai/docs/guide/compatibility#parameters-differences-in-request-body>
199-
- 当前仓库的运行时依赖窗口是 `litellm>=1.80.10,<1.82.7`(见 `requirements.txt`);本次兼容逻辑按该范围回归验证了主分析、大盘复盘、Agent 直连 LiteLLM,以及系统设置页的渠道连通性测试。
199+
- 当前仓库的运行时依赖约束是 `litellm>=1.80.10,!=1.82.7,!=1.82.8,<2.0.0`(见 `requirements.txt`);本次兼容逻辑按该约束回归验证了主分析、大盘复盘、Agent 直连 LiteLLM,以及系统设置页的渠道连通性测试。
200200
- 因此本项目会在请求发出前按**实际请求模式**归一化 `kimi-k2.6` 及其 `kimi-k2.6-*` 变体:默认 / thinking 路径使用 `temperature=1.0`;如果你的 LiteLLM YAML 路由别名里显式写了 `litellm_params.extra_body.thinking.type: disabled`(或等价 non-thinking 配置),则自动切到 `temperature=0.6`。你在 `.env` 或 Web 设置里保存的 `LLM_TEMPERATURE` 不会被改写。
201201
- `SystemConfigService` 在 Web 设置保存 / 桌面端 `.env` 导入时只更新你提交的 key,不会因为切到 Kimi 静默清空、迁移或重写已有 `LLM_TEMPERATURE`;渠道测试请求里临时使用的 `1.0/0.6` 也不会回写到配置文件。
202202
- 非 Kimi 主模型、非 Kimi fallback 以及切回普通模型后的请求,仍继续使用你配置的温度;也就是说旧配置无需迁移,切换模型即可自动恢复原行为。
@@ -205,7 +205,7 @@ LITELLM_MODEL=ollama/qwen3:8b
205205

206206
### 兼容性与回退复核清单(按 PR 审核口径)
207207

208-
- 运行时依赖窗口`litellm>=1.80.10,<1.82.7`(与 `requirements.txt` 一致)。
208+
- 运行时依赖约束`litellm>=1.80.10,!=1.82.7,!=1.82.8,<2.0.0`(与 `requirements.txt` 一致)。
209209
- 回归验证入口:
210210
- 渠道模型发现与连接:`tests/test_llm_channel_config.py`
211211
- 运行时源清理与恢复(含桌面导出备份链路):`tests/test_system_config_service.py`

0 commit comments

Comments
 (0)