Feature Request: Expose VRAM-Adjusted Runtime Context Window via API

开发者在基于 Ollama 构建工具(如 aider AI 辅助编程工具)时,需要获取模型实际的可用上下文窗口大小,以便实现上下文感知的聊天历史轮换,避免历史文件超过模型实际能加载的上限。当前 /api/show 返回的是模型配置的最大上下文窗口(如 131072),而运行时 Ollama 会根据

Feature Request: Expose VRAM-Adjusted Runtime Context Window via API

Feature Request: Expose VRAM-Adjusted Runtime Context Window via API

快速结论:该 Feature Request 请求在 Ollama API 中暴露运行时根据 VRAM 调整后的实际上下文窗口大小。问题已在 /api/ps 端点中找到解决方案,该端点已返回 context_length 字段,可直接获取运行时实际值。

问题场景

开发者在基于 Ollama 构建工具(如 aider AI 辅助编程工具)时,需要获取模型实际的可用上下文窗口大小,以便实现上下文感知的聊天历史轮换,避免历史文件超过模型实际能加载的上限。当前 /api/show 返回的是模型配置的最大上下文窗口(如 131072),而运行时 Ollama 会根据 VRAM 限制将其缩小(如 20992),这个值仅在日志中输出,未通过 API 暴露。

报错原文

llama_context: n_ctx_seq (20992) < n_ctx_train (131072) -- the full capacity of the model will not be utilized

以及 /api/show 返回的最大上下文窗口(可能误导):

curl -s http://localhost:11434/api/show -d '{"name": "llama3.3:70b"}' \
  | jq '.model_info | to_entries[] | select(.key | endswith("context_length")) | .value'
# Returns: 131072

原因分析

Ollama 在加载模型时会根据可用 VRAM 动态调整实际上下文窗口大小,但该值(n_ctx_seq)仅在服务端日志中记录,未通过 API 暴露。开发工具(如 aider)需要此值来设置准确的历史轮换阈值,而非使用不可达到的理论最大值。最终发现 /api/ps 端点实际上已经返回了运行时上下文长度,解决了此需求。

环境排查

  • Ollama 版本:2.2.40(报告时)
  • API 端点:/api/show(返回配置最大值)、/api/ps(返回运行时实际值)
  • 模型架构:llama、qwen、gemma 等
  • 运行实例:多个 Ollama 实例(端口 11434、11435、11436)

解决步骤

  1. 使用 ollama ps 命令行查看运行时上下文长度:
    $ ollama ps → 查看 CONTEXT 列的值(如 20992)
  2. 通过 API 使用 /api/ps 端点获取运行时上下文长度:
    curl -s localhost:11434/api/ps | jq '.models[]|select(.name=="llama3.3:70b").context_length'
    该命令返回实际可用的上下文窗口大小(如 20992),而非配置最大值。
  3. 如果开发工具需要更细粒度的输入/输出上下文分解,目前 API 未直接提供 runtime_input_context_lengthruntime_output_context_length 字段,可能需要间接计算或等待未来更新。

验证方法

运行 curl -s localhost:11434/api/ps 并检查返回的 context_length 字段值是否与 ollama ps 命令行显示的 CONTEXT 列一致。若一致,则表示已正确获取运行时 VRAM 调整后的上下文窗口。

参考来源

ollama/ollama #16978

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

celebrityanime
celebrityanime
文章: 10653

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注