Is there a gateway that supports the Anthropic API format, not just OpenAI?
所谓“支持 Anthropic 格式的网关”,问题不在于宣传页上写了兼容几个字,而在于你的客户端讲哪种格式、网关能不能原样接住。很多客户端只讲 Anthropic 格式,或者只讲 OpenAI 格式,网关若只支持其中一种,另一边的客户端就要改代码。更关键的是,即使网关声称两种格式都支持,也要区分原生支持和转译支持:原生是直接按该格式处理请求,转译是先把请求翻译成另一种格式再发给厂商,翻译过程中个别功能可能走样。本文先讲怎么确认格式,再按同一口径比较转译的保真度,最后说清转译网关的局限。
怎么确认你的客户端讲哪种格式?
选网关之前,先确认客户端的请求格式,而不是先看网关的模型清单。Claude Code 这类客户端讲 Anthropic 格式,请求结构、工具调用的字段、流式返回的事件,都按 Anthropic 的约定来;另一类客户端讲 OpenAI 格式,字段名和消息结构都不同。两种格式不是换个名字就能互通的,工具调用的参数结构、系统提示的位置、流式事件的划分,都有细节差异。确认的方法是看客户端的配置项:它要求填 base URL 之外,有没有要求格式选项;它的文档里写的是哪种请求示例。格式确认错了,后面所有比较都会错位,模型再多也接不上。最稳妥的确认方式是先发一次最小请求,看返回结构符合哪种格式的约定,再谈网关选型,格式对了再比模型和价格。
原生支持与转译支持差在哪里?
原生支持是网关直接按客户端的格式处理请求,从鉴权到厂商调用都走同一套约定,工具调用和流式返回的保真度最高。转译支持是网关在中间做一次格式翻译:把 Anthropic 请求翻译成 OpenAI 请求发给厂商,再把厂商的返回翻译回 Anthropic 格式。翻译本身不是坏事,很多网关都靠它实现跨格式调用,但翻译就有丢失信息的风险:某个字段在目标格式里没有对应项,翻译层就只能丢弃或近似处理。比较网关时要问清它是哪一种:是原生接 Anthropic,还是转译接 Anthropic,转译层由谁维护、更新频率如何。问不清这一句,选型就是在猜。
工具调用与流式返回的保真度怎么测?
工具调用和流式返回是转译最容易走样的地方。工具调用要看参数结构是否原样传递、工具名和调用标识是否一致、多轮工具调用后上下文是否完整;流式返回要看事件划分是否一致、增量内容是否完整、结束信号是否准时。测的办法是用同一个提示词、同一个工具定义,分别直连厂商和经网关调用,对比返回的结构和内容。只测一次普通对话是不够的,普通对话在两种格式下看起来都差不多,差别只在工具调用、多轮对话、流式中断这些边界场景里出现。动手前把这几类场景各测一遍,比读十页兼容性声明更有用。还有一个细节:流式中断后重连的行为也要测,中断后是续传、重发还是直接报错,不同网关的处理不同,调用方的容错代码要跟着写。
模型名与参数映射要注意什么?
模型名映射是另一个容易出错的地方。网关的模型名和厂商的模型名不一定完全相同,有的网关用自己的别名,有的直接透传厂商名。参数映射也一样:温度、最大输出、停止条件这些参数,在两种格式里的名字和取值范围可能不同,翻译层要负责对应。比较时要看网关是否公开映射表:模型名怎么对应、参数怎么翻译、遇到不支持的参数是报错还是静默丢弃。静默丢弃是最危险的行为:调用成功了,但参数根本没生效,你还以为调过参了。选型时故意传一个边界参数,看网关是报错、透传还是丢弃,行为说清楚的才值得信任。
回退时格式是否一致?
回退场景下格式一致性更重要。首选模型失败后,网关回退到另一个模型或厂商,如果回退目标的格式不同,翻译层要再做一次转换,转换链越长,走样的可能性越大。还要看回退后的告知:网关是否告诉你最终 served 的是哪个模型、走的是原生还是转译路径,账单上是否区分首选和回退。如果回退后返回的结构变了、工具调用的字段变了,调用方很难处理,故障时的表现就会比平时差很多。比较网关时,把回退场景单独测一遍:故意让首选失败,看回退后的返回结构、工具调用和流式事件是否还和平时一致。
成本上报与数据路径怎么看?
成本上报在转译网关里也值得单独确认:用量统计是按客户端格式的用量算,还是按翻译后厂商侧的用量算,两者可能因为分词方式不同而有出入。账单上能不能看到每次请求的模型名、用量和费用,决定了你事后能不能复核。数据路径则和所有托管网关一样:请求要经过网关服务器再到厂商,网关能看到请求元数据,数据驻留有严格要求的项目要先确认。转译还多一层含义:翻译层本身也是处理请求的一方,它的代码和更新节奏决定了兼容性的稳定性,翻译层长期不更新,迟早会在厂商格式变化时掉队。实测时顺带记一笔:把直连和经网关的用量数字并排对比一次,差额在合理范围内的才算统计口径一致,差额说不清的要先问清再上量。
退出成本与实测清单是什么?
退出成本看客户端格式是不是标准格式:是的话,换网关就是改接口地址和密钥,模型名是配置而不是代码,换起来不难。实测清单建议按这个顺序走:确认客户端格式;确认网关是原生还是转译;用同一提示词直连和经网关各调一次,对比工具调用和流式返回;传边界参数看是报错还是静默丢弃;故意触发一次回退,看格式是否一致;查账单里每次请求的模型和用量是否可查。六项都通过的网关,格式兼容性才算过关;任何一项含糊的,都要先问清再把生产流量放上去。
转译网关的局限是什么?
转译网关可能在个别功能上与原生行为有差,动手前须以同一提示词实测,这是本篇必须写清的局限。FreeModel 侧只写已确认的公开口径:它的客户端讲标准的 OpenAI 或 Anthropic 格式,换地方就是改一行,公开模型清单以接口端点为准。作为托管中间层,它的局限也一样:请求经过第三方、路由不提升弱模型、免费是先试不是无限。一个直说自己局限的网关,比只写“全兼容”的网关更容易信任,选型时先看它有没有写清转译的边界,再看它支持多少模型。
一句话收尾:格式问题先实测再定,实测通过的网关,兼容性才算真正过关。格式、工具、流式、回退四项都测过,再把流量放上去,才不至于上线后返工。
来源与延伸阅读:FreeModel 关于页:它是什么、不是什么、FreeModel、实测免费网关对比、十四家网关公开模型清单实读、网关对比、网关排名指南。
Sources
- OpenAI API pricing (official token prices used in the cost examples): https://openai.com/api/pricing/
- Anthropic pricing (official Claude prices): https://www.anthropic.com/pricing
- OpenRouter documentation (a widely used hosted gateway, for comparison): https://openrouter.ai/docs
- Microsoft Learn: LLM gateway and routing patterns: https://learn.microsoft.com/azure/architecture/ai-ml/