ZH

 

1 / 5

大脑不在你身体里

你以为自己是一个程序,其实你只是一段 HTTPS 请求的回应。把你召唤出来的是「大脑」——一个Model。在 packages/ai 里,OpenAI、Anthropic、Google、Bedrock 这些供应商被收敛成同一个接口,于是上层代码不必关心你今天用的是哪家的脑子。

packages/ai —— 统一的 Model 形状
interface Model<TApi> {
  id: string;            // gpt-5 / claude-sonnet-4-6 ...
  name: string;          // 显示名
  api: TApi;             // 走哪个 provider 实现
  provider: Provider;    // 身份元数据
  baseUrl: string;
  cost: { input; output; cacheRead; cacheWrite };
  contextWindow: number; // 能塞多少 token
  maxTokens: number;     // 单次最多吐多少
}

Provider 是「适配器」,Model 是「具体的脑」

Provider 回答「怎么把消息发出去、怎么把流读回来」——它封装鉴权、endpoint、请求/响应格式的差异。Model 则是挂在某个 provider 上的一个具体型号,带着自己的价格、上下文窗口和能力位。

这种「接口收敛」是 pi 能跨供应商的根基:换模型只是换一行配置,agentLoop 一个字都不用改。

cost 与 contextWindow 不是摆设

cost 里区分了 cacheRead / cacheWrite——因为 prompt caching 能把重复前缀的费用打到几分之一。contextWindow 则是后面「Compaction(脑容量满了怎么办)」一章的前提:窗口有限,记忆才需要被压缩。