Skip to content

[上游候选 Issue] 在 /v1/models 暴露模型上下文窗口 #22

Description

@faithleysath

上游来源

补充实现参考

该提交提供了一个可复用的最小实现方向:

  • 从模型元数据的 context_length 读取上下文窗口;
  • 随 pricing cache 一起构建 model -> context length 映射;
  • /v1/models 同时输出 context_length 和 vLLM/部分客户端兼容字段 max_model_len
  • 未配置或非启用模型通过 omitempty 不输出字段;
  • 增加 GetModelContextLength 的 metadata/cache 回归测试。

轻量审查

  • 有用价值:高。 让 coding agent 和其他客户端在调用前获知上下文上限,可辅助自动压缩、参数校验和模型选择;同时输出两个常见字段比只选一个私有扩展更实用。
  • 合理程度:中高(作为实现参考)。 改动集中、附加字段不破坏现有 OpenAI model object、缓存复用现有锁和刷新流程,并有确定性测试。
  • 当前建议:作为后续实现基线,不直接 cherry-pick。 该 commit 依赖 fork 先前加入的 Model.ContextLength、数据库字段、管理端输入和 /api/pricing 链路;当前 nexus 尚无这些前置代码。

引入前关注点

  • 先确定底层 schema:context_length 表示总上下文窗口,而 Nexus [上游候选 PR] /api/pricing 模型能力与上下文元数据 #23 / 上游 PR feat(pricing): add function_tags, max_prompt_tokens, max_completion_tokens to model metadata and /api/pricing (#5931) QuantumNous/new-api#5934max_prompt_tokens 表示最大输入,两者不能未经定义直接等同。
  • 元数据来源仍需明确:管理员配置、官方模型表、渠道同步,或多来源优先级。
  • 同一 model name 多渠道规格不一致时,需要定义取最小、最大还是按 token/group 返回。
  • 当前实现对 model alias 只重映射 endpoint types;alias 若没有独立 metadata,可能拿不到 target model 的 context length,应补 alias 回归。
  • 现有新增测试只验证 pricing cache getter,仍需补 /v1/models JSON 输出、未配置时省略、alias target 和权限/分组场景。
  • 需要实际验证 Codex、Claude Code 和目标第三方 SDK 是否读取 context_lengthmax_model_len 或其他字段。
  • 该字段应先保持目录/展示用途,不应在没有统一验证策略前直接参与 relay 请求裁剪。

与其他候选的关系

跟踪策略

Metadata

Metadata

Assignees

No one assigned

    Labels

    upstream candidateWatch upstream; take via upstream if merged, otherwise consider integrating independently.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions