Provider 负责连接模型服务。更换 Provider 后,仍然通过 Model 和 Agent 使用相同的消息与工具接口。
内置 Provider
| 类 | name |
当前接入方式 | 可选配置 |
|---|---|---|---|
OpenAIProvider |
"openai" |
OpenAI Responses API | reasoning、maxOutputTokens |
ClaudeProvider |
"claude" |
Anthropic Messages API | thinking、maxOutputTokens |
DeepSeekProvider |
"deepseek" |
使用 OpenAI SDK 调用 DeepSeek Responses 接口 | 无第三个配置参数 |
以下示例只创建 Model。将选用的 model 传给 new Agent({ model }) 即可运行。
OpenAI
import { Model, OpenAIProvider } from "@yong_xie/lighter";
const model = new Model(new OpenAIProvider(
process.env.OPENAI_API_KEY!,
process.env.OPENAI_MODEL!,
// 可选:限制本次模型生成的输出长度。
{ maxOutputTokens: 2048 },
));
maxOutputTokens 映射为 max_output_tokens,省略时由服务决定。Provider 固定发送 store: false。
reasoning 使用底层 SDK 的配置类型。需要推理摘要时,可以在支持该能力的模型上设置 { reasoning: { summary: "auto" } }。当前适配器从摘要提取 reasoning 与 reasoning_delta,未配置摘要时不一定有推理内容可读。
Claude
先设置 ANTHROPIC_API_KEY 和 ANTHROPIC_MODEL 环境变量,再创建 Provider:
import { ClaudeProvider, Model } from "@yong_xie/lighter";
const model = new Model(new ClaudeProvider(
process.env.ANTHROPIC_API_KEY!,
process.env.ANTHROPIC_MODEL!,
{
maxOutputTokens: 8192,
// 仅用于支持此配置的模型;预算必须小于输出上限。
thinking: { type: "enabled", budget_tokens: 2048 },
},
));
maxOutputTokens 默认 8192,必须是正的安全整数。显式启用 thinking 时,budget_tokens 必须是至少 1024 且小于输出上限的安全整数;不满足时,构造函数立即抛出 ModelError。
不需要思考配置时,省略 thinking。具体选项是否可用取决于所选模型。
DeepSeek
先设置 DEEPSEEK_API_KEY 环境变量:
import { DeepSeekProvider, Model } from "@yong_xie/lighter";
const model = new Model(new DeepSeekProvider(
process.env.DEEPSEEK_API_KEY!,
// 当前构造参数的类型接受此 ID 和 deepseek-v4-pro。
"deepseek-flash",
));
当前实现将地址固定为 https://api.deepseek.com,通过 SDK 的 responses.create() 发起请求。构造参数的模型 ID 限定为 "deepseek-flash" | "deepseek-v4-pro"。
以上描述的是当前代码适配方式与类型限制,不代表所有账号或真实服务请求都已通过兼容性验证。内置 Provider 的测试使用模拟 HTTP,不访问真实模型服务。
历史与推理上下文
OpenAI 和 Claude 会在返回的消息中保留原生响应信息,供后续请求重放。只有原始消息及相关内容未被修改时,才能沿用这条路径。
克隆、替换、序列化后重建或修改助手消息,会改为根据公开字段重建请求,可能丢失原生推理上下文。尤其是 Claude 的签名思考块,不能从 reasoning 文本重建,后续工具结果请求可能因此失败。
切换 Provider 时,统一接口可以继续使用;原有历史中的 Provider 特有上下文不保证跨服务兼容。
完整签名见 Model 与 Provider API。接入其他服务见自定义 Provider。