两天烧掉200美元!我AI大模型网关终于支持了Claude模型

这是一个关于“真金白银”的开发故事。

Chats 1.9.0 发布于 2025 年 11 月 27 日,距离上一个版本发布仅过去了不到一个月。但对 Chats 来说,这却是一个里程碑式的版本:我们不仅全面支持了 Anthropic(Claude)模型,还顺带把 .NET 10 给升了,甚至还搞出了一套能在 Chats 里“借壳”跑 Claude Code 的 API 兼容层。

而在这一切的背后,是一张让我“肉痛”的 Azure 账单。


一切源于“微软与 Anthropic 联手”

事情要从 2025 年 11 月 19 日说起。那天,微软与 Anthropic 达成合作,宣布将在 Azure 平台上提供 Anthropic 的 Claude 大模型服务。这意味着开发者和企业用户可以通过 Azure 云服务访问 Claude 模型。

作为一名微软 MVP,我本以为 Claude 模型对 MVP 额度来说是可以使用的,因为根据以往的经验,如果没有资格使用某项服务,通常会直接在控制台里提示“无权限”或“无法启用”,而不是直接允许使用然后产生高额费用,但我大意了。

因此我第一时间就想到了将 Claude 模型集成到我自己的项目中——Sdcb Chats

当时为了确保 Anthropic Messages API 工作正常且稳定,我做了大量的测试。为了验证兼容性,我甚至还“站起来蹬”,直接接入了 Anthropic 官方的命令行工具 Claude Code 来跑 Opus 模型。

结果……短短 2 天时间,我在 Azure 上跑 Claude 模型的 API 调用费用就高达 192.95 美元

当时看到账单整个人都是蒙的。不过好在“氪金”没有白费,最终我成功将 Claude 模型完美集成到了 Sdcb Chats 中。现在,大家可以在 Chats 中愉快地使用 Claude 模型了!


1.9.0 的核心:Anthropic 全面落地

在 1.9.0 之前,Chats 对 Claude 的支持只能说是“能用”,因为并没有原生支持 Anthropic Messages API,需要通过 OpenAI 兼容接口转译——而 OpenAI Chat Completions 兼容接口并不支持 Extended Thinking。但这一次,我是原生支持

原生 HttpClient 实现与 Thinking 支持

为了追求极致的性能和可控性,我重写了 Chats 的底层调用逻辑。

原本 Anthropic 提供了Anthropic C# API Library,我一开始使用了这个 SDK,但发现里面的验证逻辑有点太过分了,连模型名称都要验证(报错说:AnthropicInvalidDataException: Data did not match any variant of RawMessageStreamEvent)。在我开发的时候,Opus 模型还没发布 4.5 版本,我使用这个 SDK 连自家的 Claude 4.5 Opus 都报错,笑死!更不要提用这个 SDK 连接国产的 MiniMax/GLM/DeepSeek v3.2 了,这种操作非常“Anthropic”(这个问题直到 2026-01-14 发布的 12.2.0 版本中才解决!)。

image

因此我的 Git 提交记录里可以看到,我一开始是准备走 SDK 做 Anthropic 支持的,但最终又放弃了,转而在代码中用原生 HttpClient 手撸了一个近 1000 行的 AnthropicChatService

这意味着什么?

  1. 完整支持 Thinking(思维链):Claude 模型的 Thinking 可以像在官方网页版那样展示,支持流式输出,“思考”与“回答”分离。为此我在数据库中专门新增了 StepContentThink 表,用于独立存储思维内容。

  2. Signature(签名)验证:Chats 现在能正确处理和存储 Claude 的思维签名(Signature),确保证据链完整。

  3. Vision Link 优化:默认使用 URL 而非 Base64 传图,大幅节省带宽和 Token。

同时,我还引入了 MaxThinkingBudget(模型级)和 ThinkingBudget(会话级)配置,防止你的 Token 再像我一样“不知不觉”地烧完。


“借壳上位”:Anthropic Messages API 兼容

这一条可能比原生支持更硬核。

Chats 1.9.0 反向实现了 Anthropic 的官方 API 协议(/v1/messages)。我在 src/BE/web/Controllers/Api/AnthropicCompatible/AnthropicMessagesController.cs 中完整复刻了 Anthropic 的接口规范。这意味着 Chats 不仅是一个客户端,它本身也变成了一个标准的 Anthropic API 服务端

为什么要这么做?

因为现在有很多优秀的工具(比如 Cursor、Claude Code、各种 AI 插件)只支持 Anthropic 原生协议。为了支持官方的 claude-code 命令行工具(如动图,后台可以实时追踪 Claude Code 的使用信息):

我甚至专门修复了 System Prompt 的解析逻辑,同时,我还引入了 MaxThinkingBudget(模型级)和 ThinkingBudget(会话级)配置,以及 Prompt Cache Token 的计费支持(Commit 85a1c2a6),防止你的 Token 再像我一样“不知不觉”地烧完。

既然 Chats 已经变成了一个强大的 API 网关,那么配套的开发者体验必须跟上。

1.9.0 新增了 Build 模块,包含三个核心页面:

  • API Keys:更安全的密钥管理,支持过期时间、备注,还能看到密钥掩码。
  • Docs:一站式文档,列出了所有兼容 OpenAI 和 Anthropic 的 API 端点(支持一键复制)。
  • Usage:按 API Key 维度的用量统计,谁用了多少 Token,一目了然。


视觉生产力:OpenAI 图像 API 与 .NET 10

除了大语言模型,1.9.0 还补齐了视觉能力:

  • 实现了标准的 OpenAI 图像生成(/v1/images/generations)和编辑(/v1/images/edits)API。
  • 配合前端的 ChatInput 动画优化,现在的图片生成体验更加流畅。

最后,作为一个 .NET 信仰粉,Chats 1.9.0 已经全线升级到了 .NET 10。虽然用户感知不强,但这带来了更好的性能和更现代的底层设施,为未来的长远发展打下了基础。


结语:为了更自由的 AI 网关

从 1.7 的 MCP 落地,到 1.9 的 Anthropic 原生支持与 API 兼容,Chats 正在一步步从一个“聊天网页”进化成一个真正通用的 AI 基础设施

那个 200 美元的账单虽然让人心痛,但它换来了 Chats 对 Claude 的完美支持,以及那段“为了测试而疯狂调用”的激情时光,我觉得——值了!

另外相信我,我做了一切努力尝试联系微软和 Anthropic,争取把那 200 美元的费用给要回来,但他们互相推诿,也没说是用户自己的行为或者平台责任,只是互相说这是对方(微软/Anthropic)的责任,所以最后也就不了了之了。

感谢阅读!喜欢的朋友请给我的 GitHub 项目一个 star:https://github.com/sdcb/chats

这是完整的更新日志:https://github.com/sdcb/chats/blob/main/doc/zh-CN/release-notes/README.md

有什么想法也欢迎在评论区留言交流,也欢迎加入我的新创建的微信群:

如果你更习惯用 QQ 的话,也可以加入 Chats QQ 群:498452653,我们一起探索更多 AI 技术硬核玩法。

posted @ 2026-01-21 08:45  .NET骚操作  阅读(482)  评论(1)    收藏  举报