火山方舟/豆包官方產品頁目前列出多個文字模型的免費額度:Doubao-Seed-2.1-pro、Doubao-Seed-2.1-turbo、Doubao-Seed-Evolving 等各有 500,000 tokens。這是一條可以給學生 agent 做低量 API 實驗的路線,但不是永久免費、不是所有模型共用的一個大池,也不是開啟後付費後仍能稱為免費。

本篇採取「免費額度用完就停」的安全預設。每位學生用自己的火山引擎帳戶確認模型和額度,自己建立或取得 API Key,自己查看用量與計費狀態;主 agent 不收集 key、不建立共用 proxy、不用重複帳戶或輪換憑證擴大額度。產品頁和控制台會變動,500,000 只是本次查核日的官方產品資訊。
當日敲門模型:Doubao-Seed-Evolving(Agent/Coding 候選)
本篇把 Doubao-Seed-Evolving 作為當日 Agent/Coding 敲門候選。火山引擎官方豆包產品頁目前把它定位為「聚焦 Coding 和 Agent 場景持續優化」,並在文字生成免費額度表列出 500,000 tokens。這是產品頁當日可查的候選,不是「所有方舟帳戶都能用」或「永遠最佳」的保證;模型、region、免費資源、期限與限流仍要由學生在控制台逐項讀回。
如果任務更重視低延遲或一般對話,可另行評估同一張表的 Doubao-Seed-2.1-Turbo;如果改用文字以外的影片、圖片、語音或 embedding,免費單位和服務邊界就會改變。本篇先固定 Evolving 的完整 model id、Responses API、短文字與低並發,不讓 SDK 自動切換到未知或付費模型。
本篇的核心來源是火山方舟官方產品頁、官方豆包產品頁、官方 Responses API 快速開始、官方用量統計文件和官方模型服務開通說明。產品頁負責額度宣告,API 文件負責請求形狀,用量文件負責 read-back;任何一頁都不能單獨證明整個帳戶永遠免費。
學生資格要由帳戶持有人確認
官方產品頁沒有替所有讀者固定寫出新戶、學生、地區或期限條件,因此本文不把 500,000 寫成每位學生必然取得。學生要在自己的控制台確認是否需要實名、是否要開通模型服務、免費額度屬於哪個專案、何時起算,以及是否存在任何付款方式或超額設定。只有這些欄位都能讀回,才可以把它加入自己的 manifest。
主 agent 不代替學生註冊、實名、開通服務、輸入付款資料或接受資料授權。若帳戶所在地、年齡、學校政策或資料敏感度不符合使用條件,應改用本地模型或另一個已批准 provider。免費燃料的可持續性來自合法資格和可停止流程,不來自找出註冊漏洞。
五十萬 tokens 是按模型列出的免費額度
官方產品頁把文字生成的模型版本和免費額度逐列展示。學生不能把三個模型列項直接相加成 1,500,000,也不能假設模型升級後仍沿用舊額度。每一個完整 model id、服務項目、region、接入點和帳戶都要在控制台重新確認。
tokens 是輸入和輸出的計量單位,不是呼叫次數。長 system prompt、對話歷史、工具結果、檔案內容和高輸出上限都會加速消耗。學生 agent 要以 response usage 和控制台用量為準,不用「一次問題大約幾百 token」猜測整個學期能用多久。
產品頁不等於帳戶資格
官方公開產品頁說明免費額度,但不替每個帳戶保證相同的資格、地區、開通狀態、期限或服務範圍。學生要在自己的控制台讀回可用 model、免費剩餘量、有效期、專案、計費模式和服務狀態;如果欄位沒有顯示,應記錄為未知,不自行推測永久有效。
官方文件也提醒,即使帳戶處於免費額度內,仍可能需要開通對應的算法或模型服務。開通是帳戶狀態變更,不應由主 agent 自動執行。學生先閱讀開通頁的付款、實名、服務條款和超額設定,再決定是否由自己手動完成。
免費額度和超額後付費必須分開
免費額度是平台提供的抵扣資源;超額後付費則是另一個會把後續 tokens 轉成帳單的授權狀態。兩者不能因為同一個模型、同一把 key 或同一個 endpoint 而混成「免費 API」。免費包用完後若請求仍成功,反而要立即查費用中心,確認它是否已經進入付費。
火山方舟官方平台近期的操作指南把「免費額度耗盡後停止」與「手動開啟超額後付費」分開說明。這不是讓 agent 自動切換的理由;學生 lab 預設關閉超額後付費,偵測到 billing mode 不明、帳戶有餘額扣款或免費包已耗盡時,直接停止。
不同產品的免費單位不能混算
同一個方舟產品頁還列出影片的 tokens、圖片的張數、語音的字元或小時、embedding tokens,以及聯網資源的次數。這些是不同產品計量,不是可以互相兌換的 token。本文只批准文字模型的 500,000 tokens,其他單位必須另寫文章和另做條款查核。
尤其不能用文字免費額度支付工具搜尋、知識庫、影片、音訊或批量任務。請求裡只要加入 tools、files、batch 或自訂接入點,就要重新確認這個功能是否仍由同一份免費資源抵扣。
先固定 region 和 API base URL
官方方舟 API 範例目前使用 https://ark.cn-beijing.volces.com/api/v3 作為 base URL,Responses 請求路徑是 /responses。API 相容格式容易移植,但 region、model id、帳戶、接入點和計費狀態仍是方舟自己的設定;不能因為 SDK 看起來像 OpenAI,就套用其他 provider 的免費規則。
Chat API 和 Responses API 的欄位、狀態、工具、store 行為及 usage 位置可能不同。學生第一個 lab 先選一種介面,固定版本和測試案例,再把另一種介面視為新的 adapter,不在同一支程式中自動混用。
API Key 只放在自己的後端
官方快速開始頁示範從 API Key 管理取得方舟模型推理憑證,再放入環境變數。學生不要把 key 放在瀏覽器、公開 repository、Notebook、課程群組、截圖、錯誤訊息或 agent 長期記憶中。程式碼只保留環境變數名稱和假的 model placeholder。
若要縮短憑證生命週期,官方 API Explorer 也提供取得臨時 API Key 的介面,文件列出有效期可設定在 0 到 30 天範圍;實際權限、資源和帳戶條件仍要由持有人確認。作業完成、設備轉移或疑似外洩後,刪除舊 key 並停止舊程序。
免費模型要建立一次性 allowlist
不要讓 agent 自動使用「最新模型」或任何名稱包含 Doubao 的模型。allowlist 至少保存完整 model id、免費資源名稱、region、endpoint、控制台讀回時間、剩餘 tokens、期限和 billing mode。模型名稱、版本或服務狀態改變時,manifest 立即失效。
產品頁列出免費額度不代表所有 model id 都能從同一 API 呼叫。預置模型、推理接入點、自訂模型和 Coding/Agent Plan 可能使用不同端點與額度。只讓 adapter 呼叫已通過人工查核的那一支路徑。
每次工作前先做免費閘門
以下 gate 讀取學生在控制台重新確認後保存的非秘密 manifest。它不向火山引擎查帳,而是要求外部 read-back 先完成,再阻止過期、付費或未知狀態的請求。環境變數中的 model、餘額和期限都只是當次查核結果,不是硬編的官方承諾。
const state = {
apiKey: process.env.ARK_API_KEY,
model: process.env.ARK_FREE_MODEL || 'doubao-seed-evolving',
approvedModels: (process.env.ARK_APPROVED_FREE_MODELS || '')
.split(',').map((value) => value.trim()).filter(Boolean),
remainingTokens: Number(process.env.ARK_FREE_TOKENS_REMAINING),
billingMode: process.env.ARK_BILLING_MODE,
postpaidEnabled: process.env.ARK_POSTPAID_ENABLED === 'true',
readbackAt: process.env.ARK_QUOTA_READBACK_AT,
expiresAt: process.env.ARK_FREE_EXPIRES_AT || null
};
if (!state.apiKey || !state.model || !state.approvedModels.includes(state.model)) {
throw new Error('fresh Ark free-model approval is required');
}
if (!Number.isFinite(state.remainingTokens) || state.remainingTokens <= 0) {
throw new Error('free token balance is not freshly confirmed');
}
if (state.billingMode !== 'FREE_QUOTA' || state.postpaidEnabled || !state.readbackAt) {
throw new Error('paid or unknown billing state; stop before calling');
}
if (state.expiresAt && Date.parse(state.expiresAt) <= Date.now()) {
throw new Error('free quota is expired');
}
console.log({ model: state.model, remainingTokens: state.remainingTokens });
正式流程要從費用中心、用量統計和模型服務頁取得新 manifest,而不是手動修改餘額數字。任何欄位讀不到、時間太舊或彼此矛盾,都先停止 agent 和 background worker。
短文字請求先限制輸出
第一個 lab 只處理公開文章、合成資料和短問題,固定小的輸出上限,不送整個 repository、未整理的檔案或完整長對話。輸出上限是學生自己的成本保護線,不是供應商免費額度的保證;回應後仍要讀取 usage。
const baseUrl = process.env.ARK_BASE_URL || 'https://ark.cn-beijing.volces.com/api/v3';
const apiKey = process.env.ARK_API_KEY;
const model = process.env.ARK_FREE_MODEL || 'doubao-seed-evolving';
if (!apiKey || !model) throw new Error('missing approved Ark configuration');
const response = await fetch(`${baseUrl}/responses`, {
method: 'POST',
headers: {
Authorization: `Bearer ${apiKey}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
model,
input: '用三句話說明如何保護 API Key。',
max_output_tokens: 160,
store: false
})
});
const data = await response.json().catch(() => ({}));
console.log({
status: response.status,
model: data.model || model,
usage: data.usage || null,
requestId: data.id || data.request_id || null
});
if (!response.ok) throw new Error(data.error?.message || `request failed: ${response.status}`);
這個例子只示範請求形狀,不提供真實 key,也不宣稱示例中的模型必然在每個帳戶免費。正式 adapter 要先通過 manifest,再把 response usage、request id 和 task id 寫入非敏感帳本。
用量統計要讀輸入輸出總量
方舟用量統計文件目前說明可查看專案總 tokens、輸入總 tokens、輸出總 tokens,並可按線上推理、批量推理、預置接入點和自訂接入點拆分。這正好可以用來做學生 usage ledger,但它不是讓 agent 無限取用的授權。
每次作業保存 model、開始時間、輸入與輸出數量、重試、狀態碼、request id、manifest hash 和讀回時間。完整 prompt、個資、Authorization header 和原始回應不進普通 log;需要重現時使用去識別化的測試資料。
免費餘額和速率限制不是同一件事
免費餘額回答還剩多少抵扣資源;RPM、TPM、並發和服務容量回答短時間能送多少請求。即使免費包還有很多 tokens,也可能收到 429;即使限流尚未觸發,免費包也可能已經耗盡。兩組訊號都要分開記錄。
遇到 429,只做有限次數的指數退避,並尊重當日模型文件的限流說明。達到重試上限後交給人工,不用多把 key、多個帳戶、並行 proxy 或更換身份來繞過限制。可靠性不能建立在破壞免費方案公平性的做法上。
超額後付費是新的授權事件
學生不能把「開啟超額後付費」藏在 retry、fallback、部署腳本或 agent 設定中。它會把之後的 tokens 變成付費使用,改變帳戶成本和停止條件。若真的需要付費,應建立另一份明確的 project、預算、模型 allowlist、資料協議和人工批准,不沿用本篇的免費批准。
本篇的 adapter 遇到 402、403、billing mode 改變、免費額度耗盡或費用中心出現扣款,就停止所有 worker。它不自動充值、不要求使用者加付款方式、不切換到 Coding Plan,也不把一次成功請求當作後續免費證明。
臨時 API Key 適合短期實驗
長期 API Key 會把課程環境、筆電、CI 和 agent 的風險綁在一起。若官方控制台和權限允許,學生可為一次 lab 使用短期 key,將有效期、資源範圍、建立者、撤銷時間和用途寫進本地 manifest。短期 key 仍然是秘密,不能放入文章或教學群組。
停止程序後刪除 key、清理 shell history、Notebook output、Docker environment、CI variables 和錯誤追蹤。若只是想分享流程,分享環境變數名稱、假的 model id、mock response 和費用檢查步驟,不分享任何可登入或可呼叫的內容。
工具呼叫先限制為唯讀
Responses API 支援 function calling 和部分內建工具,但學生燃料 lab 不應直接讓免費 key 發送郵件、修改資料庫、部署服務、刪除檔案、付款或操作第三方帳戶。工具先設為唯讀,輸入長度、超時、重試和副作用都要有明確限制。
工具返回的內容會成為後續上下文,也會消耗 tokens。每一個工具呼叫保存 tool name、參數摘要、人工批准、結果大小和 request id;沒有批准時,agent 只輸出 action plan,不執行外部動作。
資料條款要按模型服務查核
火山方舟不同模型或專區可能有不同的資料授權協議。部分官方服務條款會要求使用者授權處理輸入和生成資料,以改進模型或服務;另一個官方信任頁則說明資料所有權與安全控制。這些描述不能被簡化成所有方舟 API 都「不訓練」或所有輸入都「永久私密」。
學生 lab 因此只送公開、去識別化或 synthetic data,並在啟用 model、tool、knowledge base 或專區前閱讀對應資料條款、保存、刪除、跨境和撤回規則。醫療、金融、未公開原始碼、未成年資料和第三方受限內容不進入這條免費路線。
免費不等於商業授權
免費額度只描述價格,不能自動授予模型輸出、商標、資料或第三方內容的商業權利。學生要分開查看方舟服務協議、模型資料授權、內容安全要求、模型 license 和自己輸入資料的權利。
本篇只批准個人低量學習、測試、評測和作業。若要把 agent 對外提供服務、替同學代呼叫、建立 SaaS、批量處理或進入 production,必須重新做法律、資料、成本、SLA 和責任查核,不沿用免費 lab 的結論。
帳戶和額度不能集中共享
每位學生應使用自己的帳戶和自己的 key。可以分享註冊說明、mock adapter、官方連結、匿名 usage 表和停止流程,但不能把個人額度集中到主 agent gateway,再讓其他人透過 gateway 使用。這會混淆帳務、資料責任和 provider 的公平使用限制。
如果學校需要團隊資源,應由正式管理者建立組織帳戶、子使用者、最小權限、預算和資料協議。這是另一個有明確負責人的架構,不是把學生免費額度拼成資源池。
錯誤要分級而不是一律重試
function classifyArkFailure(status, body) {
if (status === 401) return 'credential-failure';
if (status === 402 || status === 403) return 'billing-or-permission-review';
if (status === 429) return 'rate-limit-or-quota-pressure';
if (status >= 500) return 'provider-transient-failure';
return body?.error?.code || 'request-review';
}
const body = await response.json().catch(() => ({}));
const category = classifyArkFailure(response.status, body);
console.log({ status: response.status, category, requestId: body.request_id || body.id || null });
if (category !== 'provider-transient-failure') {
throw new Error(`stop and review: ${category}`);
}
401、402、403、429 和 quota exhaustion 都要先停止並查閱當日官方錯誤文件;只有明確判斷為暫時性 5xx 才允許有限 retry。不要把費用或權限問題包裝成網路抖動,也不要把 provider 的錯誤訊息全文寫進公開 log。
本地帳本要能回答三個問題
每次作業結束,學生至少要能回答:哪個 agent 呼叫了哪個完整 model id?輸入、輸出和重試各用了多少?請求當下是否仍在免費 quota、postpaid 是否關閉?如果這三個問題答不出來,就不能把剩餘額度繼續交給下一個 background job。
比較不同 provider 時使用同一組公開測試題、同一輸出上限和同一停止規則。比較表只放查核日期、官方方案、model、usage、錯誤和決策,不放 key、帳戶 ID、完整 prompt 或個人資料。
學生 agent 的最小安全流程
建議流程是:學生在自己的控制台查核資格與免費 quota;手動確認 postpaid 關閉;建立短期或最小權限 key;產生一次性 manifest;先用短文字做單次評測;讀取 response usage 和費用中心;達到本地上限即停;作業完成後撤銷 key 和清理程序。
如果學生還不熟悉權限分層,可先閱讀站內的 AI Agent 常見問題,把「模型產生回答」和「代理執行外部動作」拆成兩個風險層。方舟免費 quota 先只用於回答、摘要、分類和 mock tool,不直接連接付款、部署或刪除能力。
完成後要停止和撤銷
作業完成後停止 agent、IDE plugin、cron、queue worker、container 和 proxy,刪除 API Key,清除環境變數、Notebook 輸出和臨時 log,再從控制台確認沒有新的用量或扣款。保留的應是去除秘密的程式、mock、評測結果、usage 統計、條款版本和查核時間。
不要以「還有免費額度」作為長期保留 key 的理由。額度會變動,帳戶也可能被其他程序誤用;可持續的燃料策略是每次重新查核、每次可停止、每次能追溯,而不是把秘密放在多台電腦裡等待下一輪。
本篇批准的是窄範圍免費路線
本篇批准:學生自己的方舟帳戶、控制台已確認的指定文字模型、免費 quota 尚有餘額、postpaid 明確關閉、短期 server-side key、公開或 synthetic data、低量線上文字推理、usage ledger 和人工停止。每次啟用都要重新建立 manifest。
本篇不批准:把三個模型額度相加、批量推理、未知自訂接入點、共享 key、重複註冊、繞過限流、免費包耗盡後自動充值、未經閱讀的資料授權、production SLA 或主 agent 公共燃料池。
下一篇仍要回到官方現況
火山方舟這條路線比單純的速率限制更接近真正的文字 token fuel,但它的免費額度、模型版本、開通和計費設定都可能改變。下一次啟用前重新查看官方產品頁、模型服務、API 文件、用量統計和費用中心,不能直接沿用本文的 500,000。
若免費 quota 消失、期限不明、控制台出現後付費、資料條款不適合學生內容,立即停用並改走另一個已查核 provider。完成學習後分享的是可重跑流程,不是 token、帳戶或秘密。
每一輪都保留新的查核時間,下一位學生再從自己的帳戶開始。
KEEP READING
接著讀什麼?
從同一主題繼續閱讀,或回到 YOLO LAB 的完整文章索引,找到下一個值得投入時間的問題。


發表迴響