我注册了一个免费层的大语言模型API,还没发出一次调用就碰到了信用卡提示。直觉告诉我——这下要被扣钱了。这个判断错了。但接下来我写的SDK代码在收到真正回复前崩了两次,这个判断没错。

简单说,Sakura AI Engine的免费层(每月3000次聊天补全额度,托管OpenAI开源的gpt-oss-120b模型)接连打破了我的3个预设:免费计划要信用卡意味着会扣费、Anthropic的Python SDK对每个兼容端点都用同样方式认证、以及响应里的content[0]永远是你想要的文本。这3条里,只有后两条是真Bug。一旦知道问题在哪,一行代码就能修好。

Sakura Internet这家日本云服务商,给一个叫"AI Engine"的API开了免费层:每月3000次聊天补全和50次音频相关请求,背后跑的是gpt-oss-120b。注册时要按顺序填5样东西:成员ID、项目、短信验证手机号、信用卡、最后是一个账号令牌,格式是UUID加冒号再加密钥,而且只给你看一次。

到信用卡那步我停住了。一个"免费"计划要绑卡,怎么看都像扣费陷阱。但在这里,免费"基础模型"计划超过每月3000次请求只是限速,不会扣钱。真正按量计费的是另一个独立的随用随付计划。两个计划不会自动转换,信用卡在这里是身份验证,不是扣费触发。这部分最后没出问题。真正卡住我的是代码。

OpenAI兼容端点一次就跑通了。我用相同的账号令牌去调Anthropic兼容端点,SDK却返回401未授权。查了一圈发现,当端点期望Bearer认证而非x-api-key头时,要用auth_token参数而不是api_key参数。这个机制跟Claude Code的ANTHROPIC_AUTH_TOKEN是一样的。搞定了认证,第二个Bug又冒出来了——ThinkingBlock对象没有text属性。原因是gpt-oss-120b这个模型有时候会在响应里塞进思考块,直接索引resp.content[0]就会炸。正确做法是过滤一遍:只取b.type等于"text"的那个块的text。

gpt-oss-120b是OpenAI放出来的开源权重模型,训练数据里似乎包含了ChatGPT自己生成的文本。我让它用一句话自我介绍,它输出的是"ChatGPT"——大概就是这个原因。整件事下来最讽刺的是,唯一没出问题的是那张让我最紧张的信用卡。