繁中 ▾
取得 API 金鑰

LLM API 無訂閱:常見整合錯誤

開發者在切換至 LLM API 時,常因假設標準 API 行為普遍適用而浪費數小時除錯整合錯誤,因為沒有訂閱模式。本指南釐清了按 token 付費端點、串流限制和加密貨幣計費的特定技術細微差別,助你可靠地建構。

最後更新

摘要

  • 如果您沒有正確解析最後一個 SSE 區塊,串流回應會提前截斷。
  • 100k 上下文視窗包含提示詞與完成 token,需要謹慎的截斷策略。
  • 加密貨幣充值是即時的,但需要精確匹配網路(TRC20 與 Base),否則餘額不會顯示。
  • 非審查模型中的函式呼叫,若溫度設定過高,可能會傳回非標準的 JSON。

了解按 Token 計費模式

按 Token 計費意味著您僅為實際消耗付費,而非為伺服器的閒置存取付費。與傳統月費訂閱不同,此模式將成本與用量直接掛鉤。您會根據端點處理的實際輸入和輸出 Token 數量被收費。

大多數供應商對輸入和輸出 token 收取不同的費率。例如,某些 uncensored LLM 服務將輸入定價為每百萬 token $0.15,輸出為每百萬 token $0.50。這種差異存在是因為產生文字所需的運算遠多於閱讀。

您應密切監控您的 token 計數。如果您不估算輸出長度,單個長回應可能會超過您的輸入成本。請始終檢查回應標頭或主體中返回的使用量元數據,以準確追蹤您的支出。

為何您的串流回應過早截斷

串流回應會因為客戶端通常在收到前幾個區塊後就停止監聽而提前截斷。伺服器即時傳送資料,但如果您的應用程式沒有正確處理串流,可能會提前斷開連線。

每個區塊包含部分文字。您必須串連這些區塊以形成完整回應。如果您丟棄中間區塊,就會遺失資料。最後一個區塊通常包含完整的用量統計數據。

檢查您的逾時設定。某些網路會在閒置幾秒後中斷連線。請確保您的用戶端能處理串流中的中斷。大型語言模型在生成長文本時常會出現此情況。

stream = client.chat.completions.create(
    model="uncensored",
    messages=[{"role": "user", "content": "Tell the story in second person."}],
    stream=True,
)
for chunk in stream:
    if chunk.choices and chunk.choices[0].delta.content:
        print(chunk.choices[0].delta.content, end="", flush=True)

正確處理 100k 上下文視窗

上下文窗口限制包含您的提示詞與生成的補全內容。您無法在提示詞中發送 100k 個 token 並期望在回應中獲得另一個 100k。總長度必須保持在限制範圍內。

如果您發送大型提示詞,回覆的空間將變少。例如,90k token 的提示詞僅剩 10k token 用於輸出。這可能會導致長回覆被突然截斷。

在您的端實作計數 token。使用與模型編碼匹配的 tokenizer。這可確保您在請求時不會超出限制。如果超出,伺服器將返回錯誤。

考慮在對話歷史中截斷較舊的訊息。這能在保持範圍內的情況下保留最近的上下文。這對於在長時間對話中維持對話連貫性至關重要。

加密貨幣充值:為何您的餘額未更新

如果您將代幣發送至錯誤的網路,加密貨幣充值將無法更新。我們的 API 接受 TRC20 上的 USDT 和 Base 上的 USDC。將 Ethereum 上的 USDT 發送至 TRC20 地址將導致資金損失。

在發送之前,務必確認網路前綴。存款頁面會顯示每種貨幣的特定地址和網路。不要假設所有 USDT 地址都是可互換的。

等待所需的確認次數。交易不是即時的。系統僅在區塊鏈確認轉移後才記賬到您的帳戶。這可防止雙重支出問題。

在區塊瀏覽器上檢查交易雜湊。如果餘額未更新,請將雜湊提供給支援團隊。他們可以手動驗證轉帳。這是解決差異最快的方法。

修復 uncensored 模型中的函數呼叫錯誤

Uncensored 模型的函式呼叫錯誤通常源於非標準的 JSON 格式。這些模型優先考慮創意而非嚴格的結構,這可能會破壞嚴格的解析器。

將回應格式設定為 json_object 用於強制執行更嚴格的輸出。這能降低產生無效 JSON 的機會。然而,這可能會稍微降低創意。

在解析之前驗證回應。使用 try-catch 區塊處理 JSON 解碼錯誤。如果解析失敗,請以較低的溫度設定重試。這有助於產生更具決定性的輸出。

from openai import OpenAI

client = OpenAI(base_url="https://api.aiapisubscription.com/v1", api_key="YOUR_KEY")

resp = client.chat.completions.create(
    model="uncensored",
    messages=[{"role": "user", "content": "Summarise this thread without softening it."}],
)
print(resp.choices[0].message.content)

速率限制:處理 300 RPM 突發流量

速率限制限制您每分鐘可以發送的請求數量。我們的 API 允許每個金鑰每分鐘 300 個請求。超過此限制將返回 429 狀態碼。

當達到限制時實作指數退避。在短延遲後重試請求。這可防止在高峰使用期間淹沒伺服器。

監控您的請求頻率。如果您發送請求太快,可能會觸發限制。均勻地間隔您的請求。這確保了一致的效能。

如果您需要更高的吞吐量,請使用多個金鑰。每個金鑰都有各自的限制。這允許您擴展應用程序,而不會遇到單一的瓶頸。

JSON 模式失效與回應格式化

當模型返回無效語法時,JSON 模式會失效。這在優先考慮自然語言而非結構化資料的 uncensored 模型中很常見。

使用 response_format 用於強制 JSON 輸出。這告訴模型將其回應結構化為有效的 JSON。然而,這並不保證正確性。

使用 JSON 結構描述驗證輸出。這可確保資料符合您的預期結構。如果驗證失敗,請請求重試或調整提示。

import OpenAI from "openai";

const client = new OpenAI({ baseURL: "https://api.aiapisubscription.com/v1", apiKey: process.env.API_KEY });

const resp = await client.chat.completions.create({
  model: "uncensored",
  messages: [{ role: "user", content: "Draft a villain monologue for my game." }],
});
console.log(resp.choices[0].message.content);

除錯 Token 計數差異

當您的客戶端使用的分詞器與模型不同時,會產生 Token 計數差異。這會導致成本估算不準確。

使用模型供應商提供的官方 tokenizer。這確保您的計數與實際使用情況相符。第三方 tokenizer 可能會以不同方式處理特殊字符。

檢查回應中的使用元資料。這提供了確切的 token 計數。將此與您的本地計數進行比較,以識別差異。

考慮特殊 token。這些包括系統提示和函數定義。它們會消耗 token,但可能不會顯示在原始文字中。

何時從本地部署切換至 API

當本地硬體無法滿足您的延遲或擴展需求時,切換至 API。在本地運行大型模型需要昂貴的 GPU 和大量的電力。

API 提供無需硬體維護的擴展性。您可以輕鬆處理突發的流量尖峰。這非常適合生產環境。

考慮成本。如果你全天候運行本地模型,電力和硬件成本可能會超過 API 使用成本。僅當使用量具有波動性時,按 token 計費才具有成本效益。

curl https://api.aiapisubscription.com/v1/chat/completions \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "uncensored",
    "messages": [{"role": "user", "content": "Summarize the technical specs of the new GPU."}]
  }'

常見問題

Does the 100k context window include the response tokens?

是的,100k 上下文視窗包含輸入提示與輸出補全內容。您在設計應用程式時必須同時考慮兩者。如果您的提示佔用 90k token,則僅剩 10k token 可用於回應。

我可以將標準的 OpenAI SDK 與此無審查 LLM 搭配使用嗎?

是的,API 與 OpenAI 相容。您可以透過更改 base URL 和 API 金鑰,使用官方的 OpenAI SDK。這允許您以最小的程式碼變更將其整合到現有專案中。

為什麼我的加密貨幣充值顯示為待處理?

加密貨幣交易需要區塊鏈確認才能記入餘額。系統會等待網路驗證轉帳。此過程可能需要幾分鐘,具體取決於網路擁塞情況。

如果我超出 300 RPM 限制會發生什麼事?

您將收到 429 Too Many Requests 錯誤。您的請求將在速率視窗重置之前被拒絕。實作指數退避以優雅地處理此情況,並在短延遲後重試。

取得您的 API 金鑰

註冊、取得金鑰,並更新您的基礎 URL。完成。

取得 API 金鑰https://api.aiapisubscription.com/v1