
书名:《Agent Runtime 工程化:从工具调用循环到可恢复执行系统》
作者:陈堂会
章节:第六章 MCP 与 Provider 抽象 / 6.4 Provider Adapter
电子版系列:查看完整目录
第六章 MCP 与 Provider 抽象:6.4 Provider Adapter
模型供应商的工具调用接口并不完全一致。Runtime 应有自己的 provider adapter:
interface ModelProvider {
generate(input: {
messages: RuntimeMessage[];
tools: RuntimeToolSchema[];
signal: AbortSignal;
}): AsyncIterable<ModelEvent>;
}
这样做的好处是:
- 可切换 OpenAI、Anthropic、本地模型或 Vercel AI SDK;
- 可统一 stream event;
- 可把 provider 原生 tool call 转成本地 ToolCall;
- 可统一 token usage、latency、finish reason;
- 可在 eval 中使用 mock provider。
Provider Adapter 的目标不是抹平所有差异。差异必须保留在 metadata 中,例如某模型是否支持 strict tool calling、是否支持 parallel tool calls、是否提供 reasoning summary、是否支持 response id continuation。Runtime 不应假装所有模型能力完全一样。

