← 返回文件中心

BytePlus ModelArk API 接入指南

核對區域啟用和Bearer認證,完成Chat串流呼叫與處理邊界驗收。

先確認區域、模型啟用與認證路徑

本指南使用BytePlus國際ModelArk的Chat API,透過OpenAI Python SDK呼叫一般文字模型。前提是已有獲授權的帳號、目標區域的API Key,以及在該區域啟用的實際模型ID。先記錄區域、帳號/專案、模型版本、呼叫方式與計費安排;模型清單可見,不等於當前帳號已啟用或有可用額度。

本例採用API Key的Bearer認證。AK/SK是另一種認證路徑,相關呼叫還需按其文件核對推論接入點ID和簽章要求;不能把AccessKey當成API Key放入本例。使用自訂推論接入點時,也要核對其對應ID與區域。Coding Plan設定不能自動代替業務後端的正式呼叫憑證與計費方式。

區域端點不等於固定駐留保證

目前AP端點為 https://ark.ap-southeast.bytepluses.com/api/v3,官方區域標為Johor、ap-southeast-1;EU端點為 https://ark.eu-west.bytepluses.com/api/v3,區域標為Dublin、eu-west-1。不要因為AP網域包含southeast就寫成新加坡模型託管。

API Key、模型啟用和推論接入點有區域隔離,應在控制台切到目標區域再核對。區域文件同時說明請求通常優先本區域,但可能因調度溢出至其他區域,AP和EU之間存在此類路徑。因此選擇EU或AP網域本身,不能當作嚴格區域駐留保證;對處理邊界有要求時,應先取得適用方案與條款確認,不透過預設備援繞開限制。

安裝並設定占位值

python3 -m venv .venv
. .venv/bin/activate
python -m pip install --upgrade openai

由授權服務端環境安全注入 ARK_API_KEY。以下只展示AP介面形狀,按你的實際區域替換,不能混用其他區域Key。確認所選模型支援Chat、一般文字與 max_tokens,再填寫已啟用的模型ID。

export ARK_BASE_URL='https://ark.ap-southeast.bytepluses.com/api/v3'
export ARK_MODEL='YOUR-ACTIVATED-TEXT-MODEL-ID'

最小非串流請求

儲存為 modelark_chat.py,確認測試權限和費用後執行 python modelark_chat.py。SDK在Base URL後使用 /chat/completions,不是 /openai/v1;也不要改成控制面管理介面。128輸出上限、30秒逾時與0次自動重試為本地範例設定,不是服務容量或回應承諾。

import os
from openai import OpenAI

client = OpenAI(
    base_url=os.environ["ARK_BASE_URL"],
    api_key=os.environ["ARK_API_KEY"],
    timeout=30.0,
    max_retries=0,
)
request = {
    "model": os.environ["ARK_MODEL"],
    "messages": [{"role": "user", "content": "Reply with one short greeting."}],
    "max_tokens": 128,
}
answer = client.chat.completions.create(**request)
if not answer.choices:
    raise RuntimeError("No completion choice returned")
print(answer.choices[0].message.content or "")
print("finish_reason:", answer.choices[0].finish_reason)
print(answer.usage.model_dump() if answer.usage else "usage unavailable")

先核對回傳模型、finish reason與usage,再判斷答案是否滿足測試任務。長度截斷或內容篩選不是一般成功;只有HTTP200不能證明品質、計費歸屬或區域約定已通過驗收。

串流解析:分別處理文字與狀態

確認模型支援後,用下面程式替換非串流呼叫。Chat串流基於SSE,文字來自 delta.content;推理內容可能在 reasoning_content,工具參數也有獨立增量結構,不能一概拼入使用者答案。Responses是另一協定,不能直接套用本解析器。

usage = None
finish_reason = None
with client.chat.completions.create(**request, stream=True) as events:
    for part in events:
        if part.usage is not None:
            usage = part.usage
        if not part.choices:
            continue
        choice = part.choices[0]
        if choice.delta.content:
            print(choice.delta.content, end="", flush=True)
        if choice.finish_reason is not None:
            finish_reason = choice.finish_reason
print()
print("finish_reason:", finish_reason)
print(usage.model_dump() if usage else "usage unavailable")

先檢查choices再索引,usage如有回傳則獨立儲存。某些回應不含串流usage,範例不假設統一的usage選項;需按當前模型介面確認。usage未取得不代表零費用,也不要在finish reason出現時忽略後續事件。中途斷線要標記為不完整,並核對服務端狀態後決定是否重試。

故障排查與上線檢查

  • 認證/權限失敗:檢查Key來源、區域、專案權限和模型啟用,不傳送完整憑證或認證標頭。
  • 404或資源不存在:核對Base URL、模型ID或自訂接入點ID,避免跨區域引用。
  • 參數錯誤:從短文字最小請求開始,逐項核對模型支援的輸出、推理和工具參數。
  • 限流/容量不足:檢查配額、並行和帳號狀態,按服務錯誤與等待提示有限重試,不盲目切區。
  • 逾時/5xx:保留去識別化請求編號、時間、已接收輸出與結束狀態,避免重複執行外部動作。

正式使用前確認實際資料保留、日誌、跨區處理和刪除安排,不能把SDK相容等同於不留存或滿足特定法域要求。費用按實際型號、輸入輸出、快取與部署方式核對,並計入失敗重試和附加服務。設定應用端輸出、並行與總任務時限,測試截斷、中斷、權限拒絕與用量缺失。

本文範例只完成離線語法與合成串流檢查,未讀取Key、啟用模型或呼叫真實服務;可用性、品質與帳單由獲授權環境驗證。

官方依據

核驗日期:2026-10-17。區域和串流正文已核對公開官方頁面;使用前複核當前設定。