Skip to content

暴露 provider 能力配置,移除 Anthropic max_tokens 硬编码 #25

Description

@ztygod

背景

Anthropic provider adapter 当前在请求中将 max_tokens 固定为 4096。不同模型、不同任务对输出长度的需求差异很大:较短的交互可能希望限制输出成本,长文档生成或代码修改说明则可能需要更高上限。固定值也让 provider 能力无法通过 Pixelle 的统一配置表达。

OpenAI-compatible 与 Anthropic provider 在字段命名和能力上存在差异,因此这个能力需要在 provider-neutral 层设计,而不是只在某个 adapter 内部临时改值。

目标

在 LLM 配置和请求层暴露输出 token 上限配置,移除 Anthropic adapter 中的硬编码,同时保持未配置时的现有默认行为兼容。

改动方向

新增 maxOutputTokens 之类的 provider-neutral 配置字段,并在 LLMGenerateInput / stream 请求中按需传递。Anthropic adapter 应把该值映射为 max_tokens;OpenAI-compatible adapter 需要评估当前 SDK 与目标模型应使用的字段,并在可支持时进行映射。

需要注意配置校验、默认值、文档和测试,避免把 provider 特定字段泄漏到公共 API 的过多位置。

可能涉及模块

  • src/config/schema.ts
  • src/config/types.ts
  • src/config/loader.ts
  • src/llm/types.ts
  • src/llm/provider/anthropic-compatible-client.ts
  • src/llm/provider/openai-compatible-client.ts
  • src/agent/agent.ts
  • docs/provider-adapter.md
  • tests/config 和 provider adapter 测试

任务清单

  • 在 LLM config/schema/types 中增加 maxOutputTokens
  • 在 agent 构造模型请求时传递输出 token 上限
  • 将 Anthropic max_tokens 改为读取请求或配置值
  • 评估并实现 OpenAI-compatible provider 的对应字段映射
  • 增加配置校验、默认值和 provider 请求构造测试
  • 更新 provider adapter 文档,说明 provider-neutral 字段映射

验收标准

  • 未配置 maxOutputTokens 时保持当前默认行为
  • 配置后 Anthropic 请求使用指定 max_tokens
  • OpenAI-compatible 请求在支持时正确传递输出 token 上限
  • 配置校验拒绝非正整数等无效 token 值
  • streaming 和 non-streaming 生成路径行为一致
  • 文档说明字段含义和 provider 映射边界

建议标签

feature、llm、config

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions