<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>选型 on Ambertu</title><link>https://ambertu.com/tags/%E9%80%89%E5%9E%8B/</link><description>Recent content in 选型 on Ambertu</description><generator>Hugo</generator><language>zh-CN</language><copyright>2026 Ambertu · 粤ICP备18071259号</copyright><lastBuildDate>Fri, 04 Sep 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://ambertu.com/tags/%E9%80%89%E5%9E%8B/index.xml" rel="self" type="application/rss+xml"/><item><title>大模型 API 中转站怎么选：直连、自建、用现成的，三条路的真实成本</title><link>https://ambertu.com/posts/ai-api-relay-how-to-choose/</link><pubDate>Fri, 04 Sep 2026 00:00:00 +0000</pubDate><guid>https://ambertu.com/posts/ai-api-relay-how-to-choose/</guid><description>调用大模型 API 有三条路：直连官方、自己搭网关、用现成的中转站。本文把三条路的真实成本拆开算——不只是钱，还有你要为此承担的运维责任。文末介绍我自己运营的 aizhuan.fun，一个偏向 AI 图像与视频生产的中转站。</description><content:encoded><![CDATA[<blockquote>
<p><strong>利益披露</strong>：本文最后介绍的中转站是我自己在运营的。前面三分之二的取舍分析对任何人都成立，
你完全可以看完分析之后选择另外两条路——那也是这篇文章想说清楚的事。</p>
</blockquote>
<p>调用大模型 API 有三条路，大多数人只比较了价格，然后在别的地方付出了没预料到的成本。</p>
<h2 id="三条路的取舍">三条路的取舍</h2>
<h3 id="路一直连官方">路一：直连官方</h3>
<p>最干净的一条，也是最应该优先考虑的。你和供应商之间没有中间人，出问题时责任边界清晰，
额度、限速、模型上线时间都以官方为准。</p>
<p><strong>它的实际成本不在价格上，而在这几处</strong>：</p>
<ul>
<li><strong>支付方式。</strong> 需要能付美元的卡，且部分供应商对特定地区的支付有限制。</li>
<li><strong>网络可达性。</strong> 从国内直连的延迟和稳定性，取决于你的出口线路，而不是供应商。</li>
<li><strong>多供应商的碎片化。</strong> 一旦你同时用 OpenAI、Google、Anthropic，就要维护三套 SDK、
三套密钥、三套计费口径。这个成本随供应商数量线性增长，而且很容易被低估。</li>
</ul>
<h3 id="路二自己搭网关">路二：自己搭网关</h3>
<p>用 new-api、one-api 这类开源网关，把多家供应商收敛成一个 OpenAI 兼容接口。
我自己就是这么做的，前面几篇文章都在写这件事。</p>
<p><strong>它解决了碎片化，但把运维责任整个搬到了你身上</strong>：</p>
<table>
	<thead>
			<tr>
					<th>你要负责的事</th>
					<th>做错的后果</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td>反向代理的流式配置</td>
					<td>流式输出变成一次性返回，用户体验直接崩</td>
			</tr>
			<tr>
					<td>超时分层与重试策略</td>
					<td>一次 504 触发客户端重试，账单翻倍</td>
			</tr>
			<tr>
					<td>限流的真实 IP 判定</td>
					<td>按可伪造的头限流，等于没限</td>
			</tr>
			<tr>
					<td>TLS 证书生命周期</td>
					<td>过期后所有 SDK 客户端一起硬失败</td>
			</tr>
			<tr>
					<td>数据库与日志保留</td>
					<td>用量表无限增长，半年后磁盘满、服务停摆</td>
			</tr>
			<tr>
					<td>上游账号与额度管理</td>
					<td>某个 key 额度耗尽，整条链路静默失败</td>
			</tr>
	</tbody>
</table>
<p>这张表里的每一行，我都单独写过一篇文章，因为每一行我都实际踩过。
如果你打算走这条路，那几篇可以直接拿去用：
<a href="/posts/new-api-binary-vs-docker/">部署形态</a>、
<a href="/posts/llm-api-sse-proxy-buffering/">流式缓冲</a>、
<a href="/posts/llm-api-timeout-retry-double-billing/">超时与重复计费</a>、
<a href="/posts/api-gateway-real-ip-ratelimit/">限流与真实 IP</a>、
<a href="/posts/caddy-vs-nginx-api-gateway-tls/">证书自动化</a>、
<a href="/posts/api-gateway-database-choice-small-vps/">数据库选型</a>。</p>
<p><strong>什么时候值得自建</strong>：你有稳定的上游渠道、有运维精力、且用量大到中转的差价能覆盖你的时间成本。
<strong>什么时候不值得</strong>：你只是想赶紧把功能做出来，网关不是你的核心业务。</p>
<h3 id="路三用现成的中转站">路三：用现成的中转站</h3>
<p>省掉了运维，代价是<strong>你把可用性、计费准确性和数据流向都托付给了运营方</strong>。</p>
<p>这条路最大的问题不是价格，是<strong>你没有办法验证对方说的话</strong>。
几乎每个中转站都说自己&quot;稳定、快速、官方直连&quot;，但这些词没有一个是可证伪的。
所以选中转站真正该看的是：</p>
<ol>
<li><strong>它敢不敢说自己不做什么。</strong> 只讲优点的介绍页，等于没有信息量。</li>
<li><strong>出问题时有没有人。</strong> 售后渠道是否真实存在、响应大概多久。</li>
<li><strong>计费是否可对账。</strong> 你能不能自己拉到用量明细，而不是只看一个余额数字。</li>
<li><strong>技术细节经不经得起问。</strong> 流式是不是真流式、超时怎么配的、限流按什么算——
这些问题问出去，答不上来的多半没认真做过。</li>
</ol>
<!-- 图 1：三条路的成本结构对比图。建议内容：横轴是"用量规模"，纵轴是"总成本（金钱+时间）"，
     三条曲线交叉，标出各自的拐点。或者简单点：三列对照表的可视化。 -->
<h2 id="我自己那个站">我自己那个站</h2>
<p>前面说的第四条——&ldquo;技术细节经不经得起问&rdquo;——我把答案提前写好了。</p>
<p><a href="https://aizhuan.fun"><strong>aizhuan.fun</strong></a> 是我自己搭的 new-api 实例。它跑在首尔的一台机器上，
用的是裸二进制 + Caddy + 本机 MariaDB 的组合，不是 Docker。
这个选择的理由、以及上面那张表里六行的具体做法，都在前面那六篇文章里写着——
<strong>你可以拿那些文章当作对这个站的技术审查材料</strong>，这也是我写它们的原因之一。</p>
<h3 id="名字的意思aizhuan--ai--赚">名字的意思：aizhuan = AI + 赚</h3>
<p>这个站从一开始就不是给「研究大模型」的人准备的，而是给<strong>用大模型干活、并且要靠产出换钱</strong>的人准备的。</p>
<p>这解释了它的模型清单为什么长成那样——五个分组里三个是生图和视频，而不是清一色的文本对话模型：</p>
<table>
	<thead>
			<tr>
					<th>你实际在做的事</th>
					<th>会用到的</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td>电商主图、详情页配图、商品换背景</td>
					<td>gpt-image-2 系列、gemini-3.x 生图、<code>2k生图</code> / <code>4k生图</code> 分组</td>
			</tr>
			<tr>
					<td>小说插画、角色设定、同人图</td>
					<td>NAI diffusion 系列、Stable Diffusion 系列</td>
			</tr>
			<tr>
					<td>短视频素材、分镜、动态封面</td>
					<td>doubao-seedance、grok-imagine-video、<code>SD视频</code> 分组</td>
			</tr>
			<tr>
					<td>图文内容批量生产</td>
					<td>GPT-5.x 系列配合生图模型串起来调</td>
			</tr>
			<tr>
					<td>自己做工具再卖给别人</td>
					<td>OpenAI 兼容接口，客户端改个 <code>base_url</code> 就能接</td>
			</tr>
	</tbody>
</table>
<p>分辨率分组（2k / 4k）单独拆出来也是同一个逻辑：<strong>做商用素材的人在乎能不能直接交付</strong>，
而不是能不能出个缩略图看看效果。</p>
<p>需要说清楚的一句：<strong>这个站提供的是工具和算力，不是收入。</strong>
能不能赚到钱取决于你做什么、做得怎么样、有没有出货渠道——这三件事都和 API 没关系。
任何把「接入某个 API 就能赚钱」当卖点的说法都不要信，包括从我这里听到的。
这个品类里充斥着承诺收入的宣传，我不打算加入它们。</p>
<p>如果你的需求是纯文本对话或者代码补全，市面上专做文本的中转可能更划算；
这里的模型覆盖是往内容生产那一侧偏的。</p>
<h3 id="功能一一个接口替掉一堆-sdk">功能一：一个接口，替掉一堆 SDK</h3>
<p>这是中转站最实在的价值，也是最容易被&quot;模型多&quot;这种话术盖过去的一点。</p>
<figure>
<svg viewBox="0 0 900 300" role="img" aria-label="对比图：不用中转时应用需要分别对接 OpenAI、Google、xAI、字节、Stable Diffusion 五家供应商，各有各的 SDK、密钥和计费口径；用中转时应用只需改一行 base_url，通过一个 OpenAI 兼容接口访问文本、图像、视频三类产出" style="width:100%;height:auto;color:currentColor">
  <defs>
    <marker id="u1" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto">
      <path d="M 0 1 L 10 5 L 0 9 z" fill="currentColor"/>
    </marker>
  </defs>
  <text x="0" y="14" font-size="10.5" font-family="monospace" fill="currentColor" opacity="0.6">不用中转</text>
  <line x1="430" y1="24" x2="430" y2="286" stroke="currentColor" stroke-width="1" opacity="0.25" stroke-dasharray="3 5"/>
  <g font-family="monospace" font-size="10.5" fill="currentColor">
    <rect x="10" y="118" width="100" height="44" fill="none" stroke="currentColor" stroke-width="1.3"/>
    <text x="60" y="145" text-anchor="middle">你的应用</text>
    <rect x="240" y="8"   width="176" height="32" fill="none" stroke="currentColor" stroke-width="1.2"/>
    <text x="252" y="28">OpenAI</text>
    <rect x="240" y="52"  width="176" height="32" fill="none" stroke="currentColor" stroke-width="1.2"/>
    <text x="252" y="72">Google Gemini</text>
    <rect x="240" y="96"  width="176" height="32" fill="none" stroke="currentColor" stroke-width="1.2"/>
    <text x="252" y="116">xAI Grok</text>
    <rect x="240" y="140" width="176" height="32" fill="none" stroke="currentColor" stroke-width="1.2"/>
    <text x="252" y="160">字节 Seedance</text>
    <rect x="240" y="184" width="176" height="32" fill="none" stroke="currentColor" stroke-width="1.2"/>
    <text x="252" y="204">Stable Diffusion / NAI</text>
    <line x1="110" y1="136" x2="236" y2="26"  stroke="currentColor" stroke-width="1.1" opacity="0.55" marker-end="url(#u1)"/>
    <line x1="110" y1="138" x2="236" y2="70"  stroke="currentColor" stroke-width="1.1" opacity="0.55" marker-end="url(#u1)"/>
    <line x1="110" y1="140" x2="236" y2="114" stroke="currentColor" stroke-width="1.1" opacity="0.55" marker-end="url(#u1)"/>
    <line x1="110" y1="144" x2="236" y2="158" stroke="currentColor" stroke-width="1.1" opacity="0.55" marker-end="url(#u1)"/>
    <line x1="110" y1="146" x2="236" y2="202" stroke="currentColor" stroke-width="1.1" opacity="0.55" marker-end="url(#u1)"/>
  </g>
  <text x="10" y="252" font-size="10" font-family="monospace" fill="currentColor" font-weight="bold">5 套 SDK · 5 个密钥 · 5 种计费口径 · 5 种错误格式</text>
  <text x="10" y="272" font-size="10" font-family="monospace" fill="currentColor" opacity="0.7">任何一家改接口或涨价，你都要跟着改代码</text>
  <text x="452" y="14" font-size="10.5" font-family="monospace" fill="currentColor" opacity="0.6">用中转</text>
  <g font-family="monospace" font-size="10.5" fill="currentColor">
    <rect x="452" y="118" width="100" height="44" fill="none" stroke="currentColor" stroke-width="1.3"/>
    <text x="502" y="145" text-anchor="middle">你的应用</text>
    <line x1="552" y1="140" x2="594" y2="140" stroke="currentColor" stroke-width="1.4" marker-end="url(#u1)"/>
    <text x="573" y="122" font-size="9" text-anchor="middle" opacity="0.75">改一行</text>
    <text x="573" y="133" font-size="9" text-anchor="middle" opacity="0.75">base_url</text>
    <rect x="596" y="110" width="160" height="60" fill="currentColor" fill-opacity="0.1" stroke="currentColor" stroke-width="1.6"/>
    <text x="676" y="134" text-anchor="middle" font-weight="bold">aizhuan.fun</text>
    <text x="676" y="152" text-anchor="middle" font-size="9" opacity="0.75">OpenAI 兼容</text>
    <rect x="800" y="76"  width="88" height="32" fill="none" stroke="currentColor" stroke-width="1.2"/>
    <text x="844" y="96"  text-anchor="middle" font-size="10">文本</text>
    <rect x="800" y="124" width="88" height="32" fill="none" stroke="currentColor" stroke-width="1.2"/>
    <text x="844" y="144" text-anchor="middle" font-size="10">图像</text>
    <rect x="800" y="172" width="88" height="32" fill="none" stroke="currentColor" stroke-width="1.2"/>
    <text x="844" y="192" text-anchor="middle" font-size="10">视频</text>
    <line x1="756" y1="134" x2="796" y2="94"  stroke="currentColor" stroke-width="1.1" opacity="0.55" marker-end="url(#u1)"/>
    <line x1="756" y1="140" x2="796" y2="140" stroke="currentColor" stroke-width="1.1" opacity="0.55" marker-end="url(#u1)"/>
    <line x1="756" y1="146" x2="796" y2="186" stroke="currentColor" stroke-width="1.1" opacity="0.55" marker-end="url(#u1)"/>
  </g>
  <text x="452" y="252" font-size="10" font-family="monospace" fill="currentColor" font-weight="bold">1 个接口 · 1 个密钥 · 1 份账单 · 53 个模型</text>
  <text x="452" y="272" font-size="10" font-family="monospace" fill="currentColor" opacity="0.7">换模型只改一个字符串，不动代码结构</text>
</svg>
<figcaption>
左边那五条线不是画着好看——<strong>它们代表你要长期维护的五套东西</strong>：五份文档、五个密钥的轮换、
五种限流策略、五套错误码的兼容代码。中转站把这五条线收敛成一条，代价是你多了一个依赖方。
这个交换划不划算，取决于你打算同时用几家。
</figcaption>
</figure>
<h3 id="功能二53-个模型覆盖三类产出">功能二：53 个模型，覆盖三类产出</h3>
<figure>
<svg viewBox="0 0 880 370" role="img" aria-label="模型能力全景：文本对话包含 GPT-5.2 到 5.6 系列与 codex；图像生成包含 gpt-image 系列、gemini 系列、grok-imagine 与 Stable Diffusion、NAI；视频生成包含 doubao-seedance、grok-imagine-video 与 SD 视频。合计 53 个模型，分属 openai、openai-video、image-generation 三类端点" style="width:100%;height:auto;color:currentColor">
  <text x="0" y="14" font-size="10.5" font-family="monospace" fill="currentColor" opacity="0.6">按「你要交付什么」组织，而不是按模型热度</text>
  <g font-family="monospace" font-size="10" fill="currentColor">
    <rect x="0" y="28" width="278" height="252" fill="none" stroke="currentColor" stroke-width="1.3"/>
    <rect x="0" y="28" width="278" height="30" fill="currentColor" fill-opacity="0.09"/>
    <text x="14" y="48" font-size="11.5" font-weight="bold">文本对话 · 代码</text>
    <text x="14" y="80">GPT-5.6（luna / sol / terra）</text>
    <text x="14" y="102">GPT-5.5</text>
    <text x="14" y="124">GPT-5.4 · 5.4-mini</text>
    <text x="14" y="146">GPT-5.2</text>
    <text x="14" y="168">gpt-5.3-codex-spark</text>
    <text x="14" y="190">codex-auto-review</text>
    <text x="14" y="212" opacity="0.7">各系列另有 openai-compact 变体</text>
    <text x="14" y="252" opacity="0.6">分组</text>
    <text x="14" y="268" font-weight="bold">自建号池plus · 官方号池plus</text>
    <rect x="298" y="28" width="278" height="252" fill="none" stroke="currentColor" stroke-width="1.3"/>
    <rect x="298" y="28" width="278" height="30" fill="currentColor" fill-opacity="0.09"/>
    <text x="312" y="48" font-size="11.5" font-weight="bold">图像生成</text>
    <text x="312" y="80">gpt-image-1 · 1.5 · 2 · 2-plus</text>
    <text x="312" y="102">gemini-3-pro-image</text>
    <text x="312" y="124">gemini-3.1-flash-image</text>
    <text x="312" y="146">gemini-2.5-flash-image</text>
    <text x="312" y="168">grok-imagine-image（含 edit）</text>
    <text x="312" y="190">Stable Diffusion 2 / 2.5 系列</text>
    <text x="312" y="212">nai-diffusion-4.5-full</text>
    <text x="312" y="252" opacity="0.6">分组</text>
    <text x="312" y="268" font-weight="bold">2k生图 · 4k生图</text>
    <rect x="596" y="28" width="284" height="252" fill="none" stroke="currentColor" stroke-width="1.3"/>
    <rect x="596" y="28" width="284" height="30" fill="currentColor" fill-opacity="0.09"/>
    <text x="610" y="48" font-size="11.5" font-weight="bold">视频生成</text>
    <text x="610" y="80">doubao-seedance-2.0 · 2.5</text>
    <text x="610" y="102">doubao-seedance-2.0-mini</text>
    <text x="610" y="124">grok-imagine-video · 1.5</text>
    <text x="610" y="146">first_frame（首帧控制）</text>
    <text x="610" y="168">first_last_frame（首尾帧）</text>
    <text x="610" y="190" opacity="0.7">异步任务，出片后回调</text>
    <text x="610" y="252" opacity="0.6">分组</text>
    <text x="610" y="268" font-weight="bold">SD视频</text>
  </g>
  <line x1="0" y1="300" x2="860" y2="300" stroke="currentColor" stroke-width="1" opacity="0.25"/>
  <g font-family="monospace" font-size="10.5" fill="currentColor">
    <text x="0" y="322">端点类型</text>
    <text x="110" y="322" font-weight="bold">openai 42</text>
    <text x="250" y="322" font-weight="bold">openai-video 11</text>
    <text x="430" y="322" font-weight="bold">image-generation 6</text>
    <text x="650" y="322" opacity="0.7">合计 53 个模型</text>
  </g>
  <text x="0" y="348" font-size="10" font-family="monospace" fill="currentColor" opacity="0.65">同一能力有多个变体（preview / -c 后缀 / 分辨率分组），是为了在质量、速度、成本之间留选择</text>
  <text x="0" y="366" font-size="10" font-family="monospace" fill="currentColor" opacity="0.65">数据取自站点公开的 /api/pricing 接口，可自行核对</text>
</svg>
<figcaption>
分辨率单独拆成 <code>2k生图</code> 和 <code>4k生图</code> 两个分组，是这份清单里最能说明定位的细节——
<strong>做商用素材的人要的是能直接交付的成品尺寸</strong>，而不是先出个缩略图看效果。
视频走异步任务队列，提交后回调取结果，这是视频生成必须的形态。
</figcaption>
</figure>
<!-- 图（待你提供）：站点模型列表页截图，展示分组切换和模型数量。
     注意打码：API key、用户邮箱、余额数字全部要遮掉。 -->
<h3 id="功能三不只是裸-api">功能三：不只是裸 API</h3>
<p>如果只有 API，那和自己搭一个没区别。实际能省事的是这些配套：</p>
<table>
	<thead>
			<tr>
					<th>功能</th>
					<th>具体规格</th>
					<th>解决什么</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td><strong>Image Studio</strong></td>
					<td>独立图形界面 <a href="https://studio.aizhuan.fun">studio.aizhuan.fun</a></td>
					<td>不写代码也能出图，团队里非技术成员可直接用</td>
			</tr>
			<tr>
					<td><strong>表单转提示词</strong></td>
					<td>填表单 → 自动改写成生图/视频提示词</td>
					<td>不用背 prompt 写法，降低上手门槛</td>
			</tr>
			<tr>
					<td><strong>参考图</strong></td>
					<td>单次最多 <strong>9 张</strong></td>
					<td>图生图、垫图、风格迁移、角色一致性</td>
			</tr>
			<tr>
					<td><strong>文档解析</strong></td>
					<td>最大 <strong>20 MB / 5 万字符</strong></td>
					<td>长文档喂给模型，不用自己切分</td>
			</tr>
			<tr>
					<td><strong>生成图保留</strong></td>
					<td><strong>7 天</strong></td>
					<td>出图后不用立刻下载，但也别当网盘用</td>
			</tr>
			<tr>
					<td><strong>用量数据导出</strong></td>
					<td>可导出，最小粒度<strong>按小时</strong></td>
					<td>自己对账，不用只看一个余额数字</td>
			</tr>
			<tr>
					<td><strong>可用性监控</strong></td>
					<td>接了 Uptime Kuma</td>
					<td>站点状态对外可查，不是嘴上说稳定</td>
			</tr>
			<tr>
					<td><strong>用量排行榜</strong></td>
					<td>日榜 / 周榜</td>
					<td>看别人在用什么模型，选型时有参考</td>
			</tr>
	</tbody>
</table>
<p>第六行值得单独说：前面我列过选中转站要看的四条，其中一条是**「计费是否可对账」——
你能不能自己拉到用量明细，而不是只看一个余额数字**。按小时粒度的数据导出就是对这条的回答。
这不是我事后找补的说法，那四条标准和这个功能都在，你可以自己对。</p>
<!-- 图（待你提供）：Image Studio 的实际出图界面，或一组由站上模型生成的图像样例。
     这是唯一能直观说明"图像能力"的东西，比任何文字描述都有效。 -->
<h3 id="功能四客户端一键接入">功能四：客户端一键接入</h3>
<p>不想写代码的话，主流 AI 客户端可以直接一键导入配置，不用手动填 base_url 和 key：</p>
<figure>
<svg viewBox="0 0 900 210" role="img" aria-label="四步接入流程：注册获得 1 美元额度、创建 API key、客户端一键导入或手动改 base_url、开始调用。支持一键导入的客户端包括 Cherry Studio、CC Switch、DeepChat、Lobe Chat、AionUI、OpenCat、AMA 问天、AI as Workspace、流畅阅读" style="width:100%;height:auto;color:currentColor">
  <defs>
    <marker id="s1" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto">
      <path d="M 0 1 L 10 5 L 0 9 z" fill="currentColor"/>
    </marker>
  </defs>
  <g font-family="monospace" font-size="10.5" fill="currentColor">
    <rect x="0" y="30" width="170" height="56" fill="currentColor" fill-opacity="0.1" stroke="currentColor" stroke-width="1.4"/>
    <text x="85" y="54" text-anchor="middle" font-weight="bold">① 注册</text>
    <text x="85" y="72" text-anchor="middle" font-size="9.5">送 $1 额度</text>
    <line x1="170" y1="58" x2="228" y2="58" stroke="currentColor" stroke-width="1.3" marker-end="url(#s1)"/>
    <rect x="230" y="30" width="170" height="56" fill="none" stroke="currentColor" stroke-width="1.3"/>
    <text x="315" y="54" text-anchor="middle" font-weight="bold">② 创建 key</text>
    <text x="315" y="72" text-anchor="middle" font-size="9.5">选分组、设额度</text>
    <line x1="400" y1="58" x2="458" y2="58" stroke="currentColor" stroke-width="1.3" marker-end="url(#s1)"/>
    <rect x="460" y="30" width="200" height="56" fill="none" stroke="currentColor" stroke-width="1.3"/>
    <text x="560" y="54" text-anchor="middle" font-weight="bold">③ 接入</text>
    <text x="560" y="72" text-anchor="middle" font-size="9.5">一键导入 或 改 base_url</text>
    <line x1="660" y1="58" x2="718" y2="58" stroke="currentColor" stroke-width="1.3" marker-end="url(#s1)"/>
    <rect x="720" y="30" width="170" height="56" fill="none" stroke="currentColor" stroke-width="1.3"/>
    <text x="805" y="54" text-anchor="middle" font-weight="bold">④ 调用</text>
    <text x="805" y="72" text-anchor="middle" font-size="9.5">先用 $1 验证</text>
  </g>
  <line x1="0" y1="106" x2="880" y2="106" stroke="currentColor" stroke-width="1" opacity="0.25"/>
  <text x="0" y="128" font-size="10.5" font-family="monospace" fill="currentColor" opacity="0.6">③ 支持一键导入的客户端</text>
  <g font-family="monospace" font-size="10" fill="currentColor">
    <rect x="0"   y="140" width="132" height="26" fill="none" stroke="currentColor" stroke-width="1.1"/>
    <text x="66"  y="157" text-anchor="middle">Cherry Studio</text>
    <rect x="144" y="140" width="132" height="26" fill="none" stroke="currentColor" stroke-width="1.1"/>
    <text x="210" y="157" text-anchor="middle">CC Switch</text>
    <rect x="288" y="140" width="132" height="26" fill="none" stroke="currentColor" stroke-width="1.1"/>
    <text x="354" y="157" text-anchor="middle">DeepChat</text>
    <rect x="432" y="140" width="132" height="26" fill="none" stroke="currentColor" stroke-width="1.1"/>
    <text x="498" y="157" text-anchor="middle">Lobe Chat</text>
    <rect x="576" y="140" width="132" height="26" fill="none" stroke="currentColor" stroke-width="1.1"/>
    <text x="642" y="157" text-anchor="middle">AionUI</text>
    <rect x="720" y="140" width="132" height="26" fill="none" stroke="currentColor" stroke-width="1.1"/>
    <text x="786" y="157" text-anchor="middle">OpenCat</text>
    <rect x="0"   y="172" width="132" height="26" fill="none" stroke="currentColor" stroke-width="1.1"/>
    <text x="66"  y="189" text-anchor="middle">AMA 问天</text>
    <rect x="144" y="172" width="180" height="26" fill="none" stroke="currentColor" stroke-width="1.1"/>
    <text x="234" y="189" text-anchor="middle">AI as Workspace</text>
    <rect x="336" y="172" width="132" height="26" fill="none" stroke="currentColor" stroke-width="1.1"/>
    <text x="402" y="189" text-anchor="middle">流畅阅读</text>
    <text x="486" y="189" opacity="0.7">另有 Windows / Mac 客户端与配置教程</text>
  </g>
</svg>
<figcaption>
一键导入走的是各客户端自己的协议链接（<code>cherrystudio://</code>、<code>aionui://</code> 之类），
点一下把 base_url 和 key 直接写进客户端，<strong>不用手抄密钥</strong>——手抄是这一步最常见的出错点。
不在列表里的客户端，改 <code>base_url</code> 手动填也一样能用，它是标准 OpenAI 兼容接口。
</figcaption>
</figure>
<h3 id="怎么开始">怎么开始</h3>
<ul>
<li><strong>直接在 <a href="https://aizhuan.fun">aizhuan.fun</a> 注册</strong>，不需要邀请码。</li>
<li><strong>注册即送 $1 额度</strong>，够把下面的接入示例跑通、把想用的模型挨个试一遍。</li>
<li><strong>充值支持微信和支付宝，没有起充门槛。</strong></li>
</ul>
<p>后两条正好对上前面提出的两个问题。</p>
<p>第三条对应「直连官方」那节说的支付摩擦——不需要能付美元的卡，这是选中转站相对直连的主要实际收益之一。</p>
<p>第二条对应更重要的那个：<strong>你没有办法验证一个中转站说的话。</strong>
所以别信我上面写的任何一句，用那 $1 自己验：流式是不是真流式、首字节多久、
你要的模型在不在、并发起来会不会掉。验完再决定要不要充钱。</p>
<p>一个中转站敢不敢让你先验证再付费，本身就是个信号。</p>
<!-- 图 4：注册到拿到 key 的流程截图（2-3 张拼一张即可）。
     或者一张最简单的调用示例截图（终端里 curl 成功返回）。 -->
<h3 id="接入示例">接入示例</h3>
<p>它是 OpenAI 兼容接口，绝大多数客户端和 SDK 改两行就能用：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="kn">from</span> <span class="nn">openai</span> <span class="kn">import</span> <span class="n">OpenAI</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">client</span> <span class="o">=</span> <span class="n">OpenAI</span><span class="p">(</span>
</span></span><span class="line"><span class="cl">    <span class="n">base_url</span><span class="o">=</span><span class="s2">&#34;https://aizhuan.fun/v1&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="n">api_key</span><span class="o">=</span><span class="s2">&#34;你的 key&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="n">max_retries</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span>   <span class="c1"># 按 token 计费的接口，务必显式关掉自动重试</span>
</span></span><span class="line"><span class="cl">    <span class="n">timeout</span><span class="o">=</span><span class="mf">600.0</span><span class="p">,</span>   <span class="c1"># 生成慢是正常的，别让客户端先放弃</span>
</span></span><span class="line"><span class="cl"><span class="p">)</span>
</span></span></code></pre></div><p>那两行注释不是客套。<code>max_retries</code> 默认是 2，一次超时会让上游生成两次、计费两次——
<a href="/posts/llm-api-timeout-retry-double-billing/">这条链路我单独写过一篇</a>，
无论你用哪家中转都建议先看一眼。</p>
<h2 id="我不承诺什么">我不承诺什么</h2>
<p>这一节比上面所有内容都重要，因为它是可证伪的。</p>
<ul>
<li><strong>不承诺 100% 可用。</strong> 上游会抖、机房会抽风、模型会临时下线。
我能承诺的是出问题时有人在，以及事后会说清楚发生了什么。</li>
<li><strong>不承诺永远最便宜。</strong> 中转站的价格随上游成本浮动，任何&quot;永久最低价&quot;的说法都不可信。</li>
<li><strong>不承诺模型和官方完全同步。</strong> 新模型上线需要时间接入和测试。</li>
<li><strong>不承诺替代直连。</strong> 如果你有稳定的官方渠道和付款方式，直连仍然是更干净的选择——
这话写在推广文里看着奇怪，但它是真的。</li>
</ul>
<!-- 图 5（可选）：站点的实际可用性或用量统计截图。
     只有在数据真实且你愿意公开时才放；数据不好看就不要放，
     放一张修饰过的图比不放伤害大得多。 -->
<h2 id="最后">最后</h2>
<p>选哪条路取决于你在乎什么：</p>
<ul>
<li>在乎<strong>责任边界清晰</strong> → 直连官方</li>
<li>在乎<strong>掌控力，且愿意承担运维</strong> → 自建，那六篇文章拿去用</li>
<li>在乎<strong>尽快开始做正事</strong> → 用现成的，包括但不限于我这个</li>
</ul>
<p>三条路我都走过，所以这篇文章里没有一句&quot;中转站是唯一选择&quot;。
如果看完你决定自建，我反而挺高兴——那六篇文章就没白写。</p>
<h2 id="相关阅读">相关阅读</h2>
<ul>
<li><a href="/posts/new-api-binary-vs-docker/">new-api 部署选型：2G 小内存机器上裸二进制比 Docker 省多少</a></li>
<li><a href="/posts/llm-api-sse-proxy-buffering/">反代把大模型 API 的 SSE 流式响应缓冲了：五个缓冲点与三层排查法</a></li>
<li><a href="/posts/llm-api-timeout-retry-double-billing/">大模型 API 中转的超时与重试：一次 504 可能让你双倍计费</a></li>
</ul>
]]></content:encoded></item></channel></rss>