惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

N
News and Events Feed by Topic
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
月光博客
月光博客
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
大猫的无限游戏
大猫的无限游戏
T
Tailwind CSS Blog
S
SegmentFault 最新的问题
V
V2EX
阮一峰的网络日志
阮一峰的网络日志
C
Cisco Blogs
博客园 - 叶小钗
P
Privacy International News Feed
Jina AI
Jina AI
Apple Machine Learning Research
Apple Machine Learning Research
T
Threatpost
IT之家
IT之家
博客园 - 聂微东
Know Your Adversary
Know Your Adversary
Help Net Security
Help Net Security
罗磊的独立博客
I
Intezer
S
Schneier on Security
博客园_首页
C
CERT Recently Published Vulnerability Notes
雷峰网
雷峰网
Cisco Talos Blog
Cisco Talos Blog
宝玉的分享
宝玉的分享
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Webroot Blog
Webroot Blog
TaoSecurity Blog
TaoSecurity Blog
MyScale Blog
MyScale Blog
P
Privacy & Cybersecurity Law Blog
T
The Exploit Database - CXSecurity.com
PCI Perspectives
PCI Perspectives
Security Latest
Security Latest
H
Heimdal Security Blog
S
Secure Thoughts
Hacker News: Ask HN
Hacker News: Ask HN
Y
Y Combinator Blog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Microsoft Security Blog
Microsoft Security Blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
SecWiki News
SecWiki News
The GitHub Blog
The GitHub Blog
A
Arctic Wolf
A
About on SuperTechFans
aimingoo的专栏
aimingoo的专栏
T
Threat Research - Cisco Blogs
Engineering at Meta
Engineering at Meta
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC

博客园 - .NET骚操作

.NET 10 的正则性能现在什么水平?我拿它和 Go、Python、C++、PCRE2 测了一轮 C++ vs .NET 数组原地反转实测:小数组 C++ 碾压,大数组 .NET 反杀? Sdcb Chats 1.10 私有化代码执行器部署教程 复刻 ChatGPT 高级数据分析!Sdcb Chats 1.10 重磅发布:能分析Excel、做PPT .NET 10了,HttpClient还是不能用using吗?我做了一个实验 Sdcb Chats 1.8:又一次底层重构,彻底将模型提供商解耦 没有前端后,我把 MCP 做进了 Chats 1.7.0 AI 网关 不服跑个分?.NET 10 大整数计算对阵 Java,结果令人意外 从 OpenAI 兼容到 Anthropic 崛起:大模型“交错思考”协议的演进与变局 当加密ID需要变成Guid:为什么我选择了AES-CBC而非GCM? AES 加密模式演进:从 ECB、CBC 到 GCM 的 C# 深度实践 美丽而脆弱的天体运动:当C#遇见宇宙混沌 我是不是很有钱? Chats 1.6.8 发布:全面支持最新的 gpt-5 模型等 Sdcb Chats 1.6.6 发布,彻底移除 Azure.AI.OpenAI 专用包 那些被推迟的 C# 14 特性及其背后的故事 我最喜欢的 C# 14 新特性 更复杂的代码,为何跑得快了10倍?一次Draw Call优化引发的思考 一个被BCL遗忘的高性能集合:C# CircularBuffer<T>深度解析 当物理定律与高精度计算相遇:我的新开源项目 N-Body
两天烧掉200美元!我AI大模型网关终于支持了Claude模型
.NET骚操作 · 2026-01-21 · via 博客园 - .NET骚操作

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

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 技术硬核玩法。