尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

免费大模型 API 怎么调,坑在哪

免费大模型 API 怎么调,坑在哪 我自己的项目里一直挂着免费大模型 API 做兜底。前几天为了另一件事去调智谱的免费模型随手多试了几个结果发现好几处跟公开说法对不上——有的模型名字带 flash 但根本不免费有的调通了却返回空有的十次里有六次直接被限流。干脆花了一下午把它家的免费模型挨个真调了一遍把额度、限流、返回格式、报错全记下来。这篇是调用手册不是评测。下面所有数字都是 2026 年 8 月 10 日实测出来的脚本我贴在文末你可以自己跑一遍复现。先说清楚范围**我手上只有智谱一家的可用 key所以只有它是真调的。**另外两家的状态也顺手记了在文末。别家我没测不替它们打包票。先看哪些是真的免费一上来就有个坑智谱的/models接口列不出免费模型。curlhttps://open.bigmodel.cn/api/paas/v4/models\-HAuthorization: Bearer$KEY返回的是 glm-4.5、glm-4.6、glm-4.7、glm-5、glm-5-turbo、glm-5.1、glm-5.2 这一串全是付费主力一个 flash 都没有。你要是照着这个接口找免费模型会一无所获。免费模型的 ID 只能从文档里翻。我把公开资料里提到过的免费模型 ID 全试了一遍实测结果模型 ID能不能调耗时说明glm-4-flash✓0.7–1.7s最稳日常主力glm-4-flash-250414✓0.7s同上带日期的版本号glm-4-flashx✗—报余额不足不免费glm-4.5-flash✓18–42s旧 ID 仍能调通glm-4.7-flash⚠7–10s能用但十次六次被限glm-z1-flash✓5.5–6s推理模型glm-4v-flash✓1.1s图像理解glm-4.1v-thinking-flash✓1.9s图像推理**glm-4-flashx这个要单独拎出来说。**名字长得跟 flash 一模一样很多汇总文章把它列进免费清单实际调它返回的是{error:{code:1113,message:余额不足或无可用资源包,请充值。}}多一个 x就要钱。我账户里没余额所以它一次都没跑通。最坑的一个调通了但返回是空的这个坑我们自己的项目里踩过而且踩了之后得出了一个错误结论一直挂到今天。现象是这样调glm-4.5-flash或glm-4.7-flashHTTP 200不报错但choices[0].message.content是空字符串。当时的结论是这个思考模型有问题别用换 glm-4-flash。这次挨个试才发现模型没问题是我们自己给的参数不对。看这组对照同一个模型、同一个问题只改max_tokensmax_tokenscontent 长度reasoning 长度finish_reason补全 tokens2000403length20080031369stop215300044355stop210看懂了吗——max_tokens是思考 回答的总预算不是只给回答的。这类思考模型会先在肚子里推理一遍推理本身就吃掉两三百个 token。你给 200它光思考就用光了轮到写答案时预算已经归零于是content返回空finish_reason是length意思是被长度截断了而不是stop。判据很清楚content 为空 finish_reason 是 length就是 max_tokens 给少了不是模型坏了。glm-4.7-flash的思考更长我实测它的reasoning_content能到 1300–1600 个字符所以给它至少留 1500才稳定能拿到答案。顺带说这三个思考模型的返回格式还不一样写代码的得分开处理glm-4.5-flash、glm-4.7-flash思考过程放在message.reasoning_content字段content里是干净的答案。glm-z1-flash思考过程直接混在content里用think标签包着。我实测拿到的 content 长这样think嗯用户让我用一句话说明什么是API。首先我需要确认.../thinkAPI 是不同软件之间约定好的接口...你要是直接把content丢给用户看就会把它的内心戏一起显示出去。得自己按/think切一刀取后半段。第二个坑限流是按模型算的报错信息会骗你前几天我调生图接口并发发了 6 个请求4 个立刻返回 429错误信息写着您的账户已达到速率限制请您控制请求频率“您的账户”——看到这句我当时的理解是整个账号被限速了那这会儿别的模型也别想调。这次专门做了个对照实验同一个账号、同一个时间段两种模型各并发 6 个请求并发 6 个成功耗时glm-4-flash文本6 / 62.4scogview-3-flash生图1 / 68.3s文本全过生图只过一个。同一个账号同一时刻。所以那句您的账户已达到速率限制是误导——限的是那个模型不是你的账号。生图模型的并发额度紧得多文本模型宽松得多。这个区别很实际如果你的程序里图文混着调生图被限的时候文本任务完全可以继续跑不用整个流程停下来等。还有个相关的发现响应头里没有任何限流字段。我把返回的 header 全翻了一遍没有X-RateLimit-Remaining这类东西。也就是说你无法提前知道自己还剩多少配额只能撞上 429 才知道。程序里必须自己写重试。glm-4.7-flash 单独说能用但你得接受它十次里有六次不理你这个模型公开资料给的评价很高——30B、200K 上下文、免费。实际调用体验是另一回事。我按 2 秒间隔连续调了 10 次max_tokens给足 1500#1 ✗ 1305 该模型当前访问量过大#2 ✗ 1305#3 ✓ 9158ms content33 reasoning1329#4 ✓ 9734ms content44 reasoning1224#5 ✗ 1305#6 ✗ 1305#7 ✗ 1305#8 ✓ 7301ms content44 reasoning988#9 ✗ 1305#10 ✓ 9695ms content69 reasoning1346成功 4 次被限 6 次成功时平均 8.9 秒。错误码1305跟前面那个1302不是一回事1302 是你调太快了1305 是这个模型现在大家都在抢。后者跟你的调用频率无关是模型侧的公共资源不够——所以你降低频率也没用只能重试。我的判断是**它不适合放在任何需要即时响应的地方。**九秒的响应时间加上四成的成功率用户在前面等着的场景直接排除。它适合的是离线批处理——夜里跑个任务失败就重试反正不赶时间正好白嫖它的 200K 上下文。要是你想稳定拿到结果重试逻辑得这么写1305 要退避重试不是直接失败asyncfunctioncallWithRetry(model,messages,maxTokens1500){for(leti0;i6;i){constrawaitfetch(https://open.bigmodel.cn/api/paas/v4/chat/completions,{method:POST,headers:{Authorization:Bearer${process.env.ZHIPU_API_KEY},Content-Type:application/json,},body:JSON.stringify({model,messages,max_tokens:maxTokens}),})constjawaitr.json()// 1305 模型侧繁忙 / 1302 自己调太快都退避重试if(j.error(j.error.code1305||j.error.code1302)){awaitnewPromise((s)setTimeout(s,2000*(i1)))continue}if(j.error)thrownewError(${j.error.code}${j.error.message})constmsgj.choices[0].message// 空 content 一般是 max_tokens 不够翻倍再来一次if(!msg.content?.trim()j.choices[0].finish_reasonlength){maxTokens*2continue}returnmsg.content}thrownewError(重试用尽)}最小可跑的调用免费模型和付费的是同一个接口换个 model 就行。base URL 是https://open.bigmodel.cn/api/paas/v4。curl 版本复制就能跑curlhttps://open.bigmodel.cn/api/paas/v4/chat/completions\-HAuthorization: Bearer$ZHIPU_API_KEY\-HContent-Type: application/json\-d{ model: glm-4-flash, messages: [{role: user, content: 你好}], max_tokens: 800 }它兼容 OpenAI 的接口格式所以现成的 OpenAI SDK 改个 base_url 就能直接用不用换库fromopenaiimportOpenAI clientOpenAI(api_key你的key,base_urlhttps://open.bigmodel.cn/api/paas/v4,)rclient.chat.completions.create(modelglm-4-flash,messages[{role:user,content:你好}],max_tokens800,)print(r.choices[0].message.content)这一点挺省事——你原来接 OpenAI 写的代码基本不用动逻辑。我自己会怎么选按实测结果我的分工是这样**日常高频、要快的活用glm-4-flash。**零点七秒返回并发 6 个全过是这一批里唯一能扛住批量的。我自己项目里的兜底就挂它。**要它动脑子的活用glm-4.5-flash别用 4.7。**4.5 虽然慢十几到四十秒但不像 4.7 那样十次限六次。记得 max_tokens 给足 800 以上。**离线批处理、需要长上下文才轮到glm-4.7-flash。**配好重试接受它的脾气。**看图用glm-4v-flash。**一点一秒免费的图像理解这个是真香。**别碰glm-4-flashx。**要钱。另外两家我顺手试的结果硅基流动我这个账号余额耗尽之后调 Kolors 生图返回{code:30001,message:Sorry, your account balance is insufficient}。这里有个容易误解的点——很多人以为平台上标着免费的模型不吃余额实测是账户余额一空整个 key 就调不动了。Geminigemini-2.5-flash-image返回 429错误信息里明确写着limit: 0——免费层在这个模型上的配额就是零不是我用超了是压根没给。它的模型列表里倒是有一长串图像模型imagen-4.0、gemini-3-pro-image 等等但免费能不能调是另一回事。Kimi、DeepSeek、ModelScope 这些我没有可用 key没测不写。你可以自己复现上面所有结论都来自下面这段脚本跑一遍大概两分钟。换成你自己的 key 就行constKEYprocess.env.ZHIPU_API_KEYconstMODELS[glm-4-flash,glm-4-flash-250414,glm-4-flashx,glm-4.5-flash,glm-4.7-flash,glm-z1-flash,glm-4v-flash]for(constmodelofMODELS){constt0Date.now()constrawaitfetch(https://open.bigmodel.cn/api/paas/v4/chat/completions,{method:POST,headers:{Authorization:Bearer${KEY},Content-Type:application/json},body:JSON.stringify({model,messages:[{role:user,content:用一句话说明什么是 API。}],max_tokens:1500,}),})constjawaitr.json()constmj.choices?.[0]?.message??{}console.log(model.padEnd(24),j.error?✗ j.error.code j.error.message:✓${Date.now()-t0}ms content${(m.content||).length}reasoning${(m.reasoning_content||).length})}平台的免费额度和限流策略改得很勤我这份数据的保质期大概就是几周。真要上线之前自己跑一遍最保险——毕竟别人写的清单包括这一篇都可能已经过期了。
返回列表