你去餐厅吃饭,不会自己冲进厨房炒菜,也不会直接跟厨师喊话。你看菜单,跟服务员说"来一份宫保鸡丁",服务员进厨房下单,菜做好了再端出来给你。
这顿饭里,"服务员"就是 API。菜单是它能接受的功能清单,你点的那道菜是一个请求,端上来的菜是响应。你不需要知道厨房里几个灶、火多大,只要按菜单的规矩点,就能拿到菜。
换个角度更好理解。国内插座都是两孔和三孔的标准形状,任何符合这个标准的电器插上去都能通电。电器厂不用给每个家庭配专属插头,插座厂也不用管你插的是台灯还是电饭锅。
API 就是软件世界的插座标准。微信、淘宝、ChatGPT 每一家都定了一套自己的沟通规矩,别人按规矩来,就能用上它的能力,不用知道它内部怎么实现的。
服务员真正做的事有三件:把你的需求翻译成厨房听得懂的话、把结果端回来、处理点菜失败(菜卖完了换一个)。API 完全是同一套逻辑:接收你的请求并按规矩转给内部系统,把内部结果整理成标准格式返回给你,出错时返回明确的错误码而不是假装成功。
账号是"你是谁",Key 是"你能不能用这个门"。注册账号要手机号、要验证码、要设置密码,是身份;Key 是一串几十个字符的随机字符串,是凭证。
区别很实际:一台服务器上的脚本没有手机号,也没法收验证码,但它可以带着一个 Key 去敲门。所以 Key 的存在,是为了让程序能代替人去做认证这件事。
任何人拿到你的 Key,都能以你的名义调用接口,花的是你的余额。所以有三条铁律:
网页版是给人看的,API 是给程序用的。这个差别决定了两者根本不是同一个工具。
token 是模型处理文本的最小单位,你可以把它理解成"字数",但它跟字数不是一比一。粗略的换算:一个英文字母组合(比如 hello)大概 1 个 token,一个常见汉字大概 0.6 到 1 个 token。所以 1000 个汉字大约是 700 到 1000 个 token。
上下文长度是模型一次能"记住"的 token 上限,包括你说的话、它回的话、以及你们之前的全部对话。超出这个上限,最早的内容就会被丢掉——表现就是"聊到后面它忘了开头说的话"。
这也是为什么长文档任务要挑上下文大的模型,3 万字的报告塞不进去,它就只能看开头。
官方主流玩法是数 token:你发进去的算钱,它吐出来的也算钱,按"每百万 token 多少钱"计价。好处是用得少就花得少;麻烦是算不清,尤其长文本和多轮对话。
小鱼API 走的是另一条路:一次对话一个固定价,不管你发 1 个字还是 20 万字,价格一样。gemini-2.5-pro 是 0.031 元一次,claude-opus-4-6-thinking 是 0.25 元一次,说完就完。
几个真实单价长这样:
| 模型 | 一次对话(元) |
|---|---|
| gemini-2.5-pro | 0.031 |
| deepseek-v4-flash-thinking | 0.05 |
| kimi-k2.6 | 0.09 |
| claude-opus-4-5-thinking | 0.12 |
| gpt-5.5 | 0.2 |
| NanoBanana-Pro(生图) | 0.27 |
注意这张表里没有"每百万 token"这种看不懂的单位,就是"点一次发送多少钱"。这是按次计费最实际的好处:你能在开始用之前就把钱算清楚。
拿"总结一份 3 万字报告,再追问三轮"当例子:
| 项目 | 按量计费(估算) | 按次计费 |
|---|---|---|
| 第一轮:3 万字进 + 摘要出 | 输入约 4 万 token,输出约 1000 token | 与长度无关 |
| 第二到四轮:历史重发 + 追问 | 每轮都要重算前面全部内容 | 与长度无关 |
| 单次任务总花费 | 0.6 到 1.5 元(随轮数上涨) | 0.031 元起,固定 |
| 做 1000 份的成本 | 600 到 1500 元 | 31 元起 |
| 事前能不能算准 | 算不准,取决于模型啰嗦程度 | 能算准,次数乘单价 |
差距的来源不在模型贵不贵,在计费方式。长输入、多轮对话这两件事,在按量计费里是持续放大的成本,在按次计费里被抹平了。
查天气的接口,你传"北京",永远返回北京的天气。结果确定、速度快(几十毫秒)、按调用次数计费、费用可预测。这是传统 API 的样子。
大模型接口有四个"不":
| 术语 | 大白话解释 |
|---|---|
| endpoint(端点) | 你敲门的那个地址,比如 /v1/chat/completions |
| base_url | 地址的前缀,比如 https://xyuapi.top/v1,换平台就换这一行 |
| 请求(request) | 你发过去的那份数据 |
| 响应(response) | 它返回给你的结果 |
| SDK | 官方写的代码库,帮你把请求封装好,不用自己拼 JSON |
| 模型 ID | 你要用哪个模型的名字,比如 gemini-2.5-pro |
| 上下文长度 | 一次对话最多能塞多少 token |
| API Key | 你的门禁卡,证明这请求是你发的 |
| 429 | 请求太频繁被限流了,等一会儿重试 |
| 术语 | 大白话解释 |
|---|---|
| 推理模型(thinking) | 会先"想"再答的模型,做数学和复杂推理更准,也慢一些 |
| 多模态 | 能看图、听音频的模型,不只是处理文字 |
| 降智 | 用便宜小模型冒充大模型,效果明显变差 |
| 满血模型 | 官方原版、没被替换的模型 |
训练怎么做、参数量多少、注意力机制是什么、上下文窗口底层怎么实现的——这些是研究模型的人要操心的,跟你用 API 干活没关系。
判断自己学够了没有,有个很简单的标准:能不能自己填完一个客户端的三个空(地址、Key、模型名),并且说清自己每次调用的价格。能,就够用了。剩下的坑,都是在用的过程中踩出来的,看教程看不出来。
https://xyuapi.top/v1,Key 粘进去。连编辑器都不用开,一行命令就能验证地址和 Key 通不通:
curl https://xyuapi.top/v1/chat/completions \
-H "Authorization: Bearer sk-你的key" \
-H "Content-Type: application/json" \
-d '{"model":"gemini-2.5-pro","messages":[{"role":"user","content":"用一句话说清 API 是什么"}]}'
返回一段 JSON 就说明通了。返回 401 是 Key 不对,返回 404 是地址写错了。Windows 自带的命令行里换行符要换成 ^,或者干脆把整条命令写成一行。
from openai import OpenAI
client = OpenAI(api_key="sk-你的key", base_url="https://xyuapi.top/v1")
resp = client.chat.completions.create(
model="gemini-2.5-pro",
messages=[
{"role": "system", "content": "你是一个简洁的助手,回答不超过三句话。"},
{"role": "user", "content": "用一句话说清 API 是什么。"},
],
)
print(resp.choices[0].message.content)
这段代码里只有两个地方需要你改:api_key 换成你自己的 Key,model 换成你想用的模型名。其余全是固定写法,抄下来就能跑。
一个 Key 能覆盖上面全部客户端,不用一个个平台去注册。先花 7 元把最简单的那个跑通,剩下的慢慢来——API 这东西的门槛,比看起来低得多。