繁中 ▾
取得 API 金鑰

什麼是 LLM API?運作方式與適用時機

LLM API 是一種為你執行大型語言模型的網路服務。你的程式透過 HTTP 發送文字,模型回傳文字,你則為所使用的內容付費。

更新於

等距插圖顯示筆記型電腦將資料包傳送至代表 LLM API 的發光立方體

重點摘要

  • LLM API 是一個 HTTP 端點:你 POST 訊息,收到補全內容。
  • 計費按 token 計算,輸入和輸出分別計數。
  • OpenAI 相容 API 共用一種請求格式,因此切換供應商主要只需變更 Base URL。
  • 串流輸出、函式呼叫和 JSON 模式將單純的聊天端點轉化為真實軟體的建構模組。

簡短版本

那麼,什麼是 LLM API?它是一種透過網址暴露語言模型的服務。你不需要下載模型、擁有 GPU 或管理推論軟體。你發送包含對話的請求,服務便會回傳該對話的下一則訊息。

把它想像成你使用付款 API 或地圖 API 的方式。其他人負責維護複雜基礎設施,你則使用識別你的金鑰從自己的程式呼叫它。模型才是產品,而 API 是通往它的門戶。

這扇門是帶有 JSON 請求本文的純 HTTP,這意味著它適用於 Python、Node、Go、Shell 腳本、試算表巨集或 VS Code 擴充功能。它與任何單一語言或框架都沒有綁定。

請求與回應的外觀

現今大多數 LLM API 都複製了 OpenAI 為聊天所引入的格式。你呼叫一個端點,POST /v1/chat/completions,並傳送訊息列表。每則訊息都有 role 和 content。

  • system 設定整個對話的規則和人格。
  • user 是人(或你的程式)所說的話。
  • assistant是模型之前說過的內容,你將其傳送回去,讓它記住對話串。
  • tool 承載模型要求執行的函式結果。

關鍵細節在於模型在呼叫之間沒有記憶。每個請求都必須包含你想讓它考慮的完整對話。如果你想要一個能記住過去十次交談的聊天機器人,你的程式必須儲存這十次交談,並在每次請求時傳送它們。

以下是使用 curl 的最小可用請求。它使用此站點的端點、模型 ID uncensored以及 Bearer token。

curl https://api.codingllmapi.com/v1/chat/completions \
  -H "Authorization: Bearer $LLM_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "uncensored",
    "messages": [
      {"role": "system", "content": "You are a concise assistant."},
      {"role": "user", "content": "Explain what a mutex is in two sentences."}
    ]
  }'

回應是 JSON。你想要的文字位於 choices[0].message.content。旁邊有一個 usage 物件,報告輸入了多少 token 以及輸出了多少 token,這是計費的依據。

Token:所有計量的單位

模型不讀取字元或單字。它讀取 token,即文字區塊,通常是一個短單字或較長單字的一部分。英文散文平均每字略少於一個 token,程式碼由於標點符號和縮排,每行使用的 token 傾向更多。將任何精確轉換視為估計值,並讀取 usage 欄位以取得實際計數。

Token 之所以重要有三個原因。

  1. 價格。 你按百萬 token 付費,輸入(你的提示詞)有一個費率,輸出(模型的回答)有較高的費率。
  2. 上下文視窗。 提示詞和回答共用一個限制。在此 API 上,視窗總共為 100,000 token。
  3. 速度。 輸出是一個 token 接著一個 token 產生的,因此長回答比短回答更耗時。

根據本站費率,輸入 token 每 100 萬個 $0.15,輸出 token 每 100 萬個 $0.50。一次請求包含 2,000 個輸入 token 與 500 個輸出 token,輸入費用為 2,000 x $0.15 / 1,000,000 = $0.0003,輸出費用為 500 x $0.50 / 1,000,000 = $0.00025。總計為 $0.00055,因此一千次此類請求費用為 $0.55。最新費率請見 費率頁面。

從程式碼呼叫 LLM API

你可以手寫 HTTP 請求,但使用 SDK 可以節省精力。由於此 API 與 OpenAI 相容,在更改 Base URL 和金鑰後,官方的 OpenAI 程式庫即可使用。

Python

import os
from openai import OpenAI

client = OpenAI(
    base_url="https://api.codingllmapi.com/v1",
    api_key=os.environ["LLM_API_KEY"],
)

resp = client.chat.completions.create(
    model="uncensored",
    messages=[
        {"role": "system", "content": "You are a careful code reviewer."},
        {"role": "user", "content": "What is wrong with: for i in range(len(x)): print(x[i])"},
    ],
    temperature=0.3,
)

print(resp.choices[0].message.content)
print(resp.usage.prompt_tokens, resp.usage.completion_tokens)

Node

import OpenAI from "openai";

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

const resp = await client.chat.completions.create({
  model: "uncensored",
  messages: [{ role: "user", content: "Give me three names for a CLI that renames files." }],
});

console.log(resp.choices[0].message.content);

將金鑰保存在環境變數或密鑰儲存庫中。貼在前端程式碼或公開儲存庫中的金鑰,任何找到它的人都可以使用,費用將由你承擔。

將聊天視窗轉化為建構模組的功能

單純的補全很有用,但大多數實際程式至少會使用以下其中一項功能。

串流輸出

設定 stream: true,伺服器會以伺服器發送事件(SSE)的形式,逐 token 傳送答案。使用者會立即看到文字出現,而不必等待完整回覆。使用量數據會在串流輸出結束時到達。

JSON 模式

傳遞 response_format: {"type": "json_object"},模型會被引導回傳有效的 JSON。這是從雜亂文字中提取欄位、分類工單或為管線中的下一步產生結構化資料的方法。仍需在程式碼中驗證結果,並在提示詞中告知模型你預期的鍵。

函式呼叫

你在 tools 陣列中描述函式。模型可能會回覆一個呼叫其中某個函式的請求,並填入參數。你的程式執行該函式,並將結果以 role: "tool" 訊息回傳。模型本身不會執行任何動作。它只會請求,由你決定實際執行什麼。這是能讀取檔案並執行測試的程式碼代理程式背後的機制。

抽樣控制

temperature、top_p、stop、seed以及重複懲罰參數都會直接傳遞。低 temperature 值可讓程式碼和資料提取的結果更穩定。較高的值則會產生更多樣化的文本。

託管 API 或自行執行模型

API 的替代方案是在自己的硬體上執行開放權重模型。這是一個合理的選擇,誠實地說明何時它會勝出是值得的。

問題託管 API自行託管
前期成本無,你按 token 付費GPU 購買或租賃
設定時間分鐘數小時至數天
擴展受你的金鑰速率限制受你的硬體限制
資料離開你的機器是,傳送至供應商否
閒置成本零即使沒有執行任何任務,你仍需付費

如果你每天發送數千個請求,或你的使用量呈突發性,按 token 計價通常是較好的選擇。如果你有穩定的高負載,且有嚴格規定禁止將文字發送給任何第三方,在本機託管可能更為合適。許多團隊會先使用 API 來驗證想法,稍後再重新評估此問題。

限制、錯誤與良好習慣

每個 API 都有使用限制,及早了解這些限制可節省除錯時間。在此服務中,完整金鑰允許 8 個並行請求和每分鐘 300 個請求。試用金鑰則允許 2 個並行請求和每分鐘 60 個請求。最大請求主體為 8 MB。串流請求會保留其並行槽位,直到串流結束為止,這常讓那些開啟多個串流卻忘記關閉的人遇到問題。

超過限制會回傳 HTTP 429。錯誤程式碼 rate_limited 表示每分鐘請求過多,concurrency 表示同時請求過多。帶有 Retry-After: 5 標頭的 429 狀態碼表示暫時過載。在以上三種情況下,正確的回應方式是等待並使用退避演算法重試,而不是狂送請求轟炸端點。

  • 從回應標頭讀取 X-RateLimit-Limit-Requests 和 X-RateLimit-Limit-Concurrency 以查看你的上限,並讀取 X-Balance-USD 以監控你的額度。
  • 每次呼叫時記錄 X-Request-Id。這能讓支援問題更快得到解答。
  • 設定合理的逾時時間和對話長度上限,以防止失控的迴圈耗盡你的額度。
  • 在聊天記錄填滿上下文視窗之前,先修剪舊的對話輪次。

失敗或遭拒的請求不會在此 API 收費,且額度永不過期,因此測試時的錯誤成本很低。

開始使用此 API

此服務是由獨立供應商託管的 OpenAI 相容文字 API,運行單一開放權重模型,並針對合法成人用途的無審查回答進行調校。僅支援文字:無影像、音訊、嵌入或微調功能。它並非任何模型供應商的官方 API。提示詞不會用於訓練。

新用戶在透過 Google 或電子郵件與密碼註冊後,可在 API 金鑰頁面一鍵領取 $0.50 的免費試用額度。無需綁定信用卡,有效期為 7 天。之後你可以儲值任意整數金額,範圍從 $20 到 $500,並享有額外贈額:$50 贈 5%、$100 贈 10%、$200 贈 15%。你可以使用信用卡(Visa、Mastercard、Apple Pay、Google Pay)或加密貨幣(TRC20 上的 USDT、Base 上的 USDC)進行付款。

步驟很簡單:建立你的 API 金鑰,按照文件中的快速入門指南操作,並執行上方的 Python 程式碼。如果你的主要用途是程式碼輔助,關於用於程式碼代理的無審查模型的頁面將更詳細地介紹此案例。

問答

LLM API 與聊天機器人相同嗎?

並非如此。聊天機器人是一個帶有介面的應用程式。LLM API 是此類應用程式背後的服務,你可以從自己的程式碼呼叫它,以建立你想要的介面或工作流程。

使用 LLM API 需要懂機器學習嗎?

不需要。如果你能發送 HTTP 請求或使用 SDK,就能使用 LLM API。你需要了解提示詞和 token,但不需要了解模型的訓練方式。

與 OpenAI 相容代表什麼意思?

這表示 API 接受與 OpenAI 聊天端點相同的請求格式。變更 Base URL 和金鑰後,現有的 OpenAI SDK 和工具即可使用。

LLM API 的費用是多少?

供應商通常按百萬 token 收費,輸入和輸出有各自的費率。此處為每 1M 輸入 token $0.15,每 1M 輸出 token $0.50,費用從預付額度扣除,無訂閱制。

我的資料會用於訓練模型嗎?

在此服務中,提示詞不會用於訓練。對於其他任何供應商,在發送敏感文字之前,請先閱讀其資料政策。

只差一張表單,即可取得金鑰

建立帳號、複製金鑰、更改Base URL。這就是整個設定過程。

取得 API 金鑰