GetAiApiKey/生產環境 AI API 檢查清單
如何在 Python 中安裝 LLM:本地或 API
你可以在自己的機器上運行模型,也可以安裝一個小型 Python 套件並透過 HTTP 呼叫託管模型。本頁涵蓋兩種方式,然後逐步引導你完成 API 路徑。
更新於

重點摘要
- 本地安裝需要模型權重和足夠的記憶體;API 路徑只需要 openai 套件和金鑰。
- 將 base URL 設為 https://api.getaiapikey.com/v1,模型設為 uncensored。
- 串流輸出、工具呼叫和 JSON 模式均可透過標準 OpenAI 客戶端使用。
- 處理 HTTP 429 錯誤時請使用短延遲重試,並將並行請求保持在 8 個或以下。
安裝 LLM 的兩種含意
當人們詢問如何在 Python 中安裝 llm 時,通常指的是兩種情況之一。第一種是在本地運行模型:下載權重並使用函式庫在自己的 CPU 或 GPU 上載入模型。第二種是安裝客戶端函式庫,讓你的 Python 程式碼可以與在其他地方運行的模型進行通訊。這兩種方式都有效,選擇哪一種取決於你的硬體以及你想建構的內容。
API 路徑更簡短。你執行 pip install openai,將客戶端指向 base URL,然後呼叫模型。無需權重、GPU 驅動程式或記憶體規劃。本頁其餘部分提供該路徑的步驟和程式碼,並附有一段關於本地安裝的簡短說明以便你比較。
本地安裝或託管 API:如何選擇
| 問題 | 本地安裝 | 託管 API |
|---|---|---|
| 你需要安裝什麼 | 推理庫加模型權重 | openai 套件 |
| 硬體 | 記憶體和通常適合該模型的 GPU | 任何可以進行 HTTPS 呼叫的機器 |
| 成本 | 你的硬體與電力 | 按 token 計費,來自預付額度 |
| 離線可用 | 是 | 否 |
| 首次回應時間 | 下載、設定、調整 | 幾分鐘 |
如果你必須將所有內容保留在一台機器上、需要離線工作,或想直接實驗權重,本地安裝是合理的。llama.cpp 綁定或 Hugging Face transformers 等庫通常是起點;請檢查它們的文件以獲取硬體需求,因為這些取決於你選擇的模型大小。
如果你希望快速獲得可用結果、你的筆記型電腦無法容納大型模型,或你的應用程式需要服務許多用戶,API 是合理的。你按 token 付費而非購買硬體。對於此服務,輸入 token 每 1M 為 $0.15,輸出 token 每 1M 為 $0.50,無訂閱費。定價頁面有詳細資訊。
步驟 1:建立虛擬環境並安裝套件
使用虛擬環境以保持安裝乾淨。任何近期的 Python 3 版本均可與 openai 套件搭配使用。
python3 -m venv .venv
source .venv/bin/activate
pip install openai
接下來你需要金鑰。在 API 金鑰頁面 使用 Google 或電子郵件與密碼註冊。新用戶可以一鍵領取 $0.50 試用額度,有效期 7 天且無需信用卡。將金鑰儲存在環境變數中,而不是原始碼檔案中:
export API_KEY="paste-your-key-here"步驟 2:進行首次呼叫
該服務與 OpenAI 相容,因此與標準 OpenAI 腳本的唯一區別在於 base URL 和模型 ID。模型 ID 為 uncensored。
import os
from openai import OpenAI
client = OpenAI(
base_url="https://api.getaiapikey.com/v1",
api_key=os.environ["API_KEY"],
)
resp = client.chat.completions.create(
model="uncensored",
messages=[
{"role": "system", "content": "You are a concise assistant."},
{"role": "user", "content": "Explain what a context window is in two sentences."},
],
temperature=0.7,
max_tokens=200,
)
print(resp.choices[0].message.content)
print(resp.usage.prompt_tokens, resp.usage.completion_tokens)
如果這輸出答案和兩個 token 計數,則安裝完成。要檢查你的金鑰是否有效並查看模型 ID,你也可以呼叫 GET /v1/models:
for m in client.models.list():
print(m.id)
來自 shell 的相同請求,完全不需要 Python,只需單個 curl 呼叫 https://api.getaiapikey.com/v1/chat/completions,並帶有標頭 Authorization: Bearer 後跟你的金鑰。文件快速入門 展示了完整內容。
步驟 3:串流輸出到達的 token
等待長答案完成再輸出任何內容感覺很慢。設定 stream=True,伺服器會透過伺服器發送的事件發送 token。你可以使用 stream_options 在最後一個區塊 (chunk)中請求使用摘要。
stream = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": "Write a short scene set in a lighthouse."}],
stream=True,
stream_options={"include_usage": True},
)
for chunk in stream:
if chunk.choices and chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)
if chunk.usage:
print("\n", chunk.usage.total_tokens, "tokens")
一個對生產環境很重要的細節:串流請求會佔用其並行槽位直到串流結束。完整金鑰允許 8 個並行請求,因此如果你的應用程式開啟許多長串流,請在用戶斷開連接時關閉它們。
步驟 4:JSON 模式和工具呼叫
對於結構化輸出,將 response_format 設定為 JSON 物件。同時在提示詞中告訴模型以 JSON 格式回答,因為該設定保證有效的 JSON 語法,但不保證你想要的欄位名稱。
import json
resp = client.chat.completions.create(
model="uncensored",
messages=[
{"role": "system", "content": "Reply only with JSON: {\"title\": string, \"tags\": [string]}"},
{"role": "user", "content": "Give me a title and tags for a post about slow travel."},
],
response_format={"type": "json_object"},
)
data = json.loads(resp.choices[0].message.content)
print(data["title"], data["tags"])
工具呼叫遵循標準模式。你描述一個函式,模型可能會請求呼叫它,你自行運行它並使用 role: "tool" 將結果發送回去。
tools = [{
"type": "function",
"function": {
"name": "get_time",
"description": "Return the current time for a city",
"parameters": {
"type": "object",
"properties": {"city": {"type": "string"}},
"required": ["city"],
},
},
}]
messages = [{"role": "user", "content": "What time is it in Lisbon?"}]
first = client.chat.completions.create(
model="uncensored", messages=messages, tools=tools, tool_choice="auto"
)
msg = first.choices[0].message
if msg.tool_calls:
call = msg.tool_calls[0]
messages.append(msg)
messages.append({
"role": "tool",
"tool_call_id": call.id,
"content": json.dumps({"time": "14:05"}),
})
final = client.chat.completions.create(
model="uncensored", messages=messages, tools=tools
)
print(final.choices[0].message.content)
在依賴工具呼叫之前,請在幾個提示詞上進行測試。任何模型都可能選擇錯誤的函式或填寫參數不當,因此在運行任何具有副作用的內容之前,請在你的程式碼中驗證參數。
步驟 5:處理限制和錯誤
完整金鑰允許 8 個並行請求和每分鐘 300 個請求。試用金鑰允許 2 個和 60 個。超過這些限制後,你會收到 HTTP 429。錯誤代碼 rate_limited 表示每分鐘請求過多,concurrency 表示同時請求過多。在臨時超載時,API 也會返回帶有 Retry-After: 5 標頭的 429。
OpenAI Python 客戶端會自行重試某些失敗,但明確的包裝器可保持行為清晰:
import time
from openai import RateLimitError
def ask(messages, tries=4):
for attempt in range(tries):
try:
return client.chat.completions.create(model="uncensored", messages=messages)
except RateLimitError:
time.sleep(5 * (attempt + 1))
raise RuntimeError("still rate limited after retries")
每個響應都帶有 X-Request-Id、X-Balance-USD 和速率限制標頭,你可以記錄這些資訊。如果聯繫 支援,請包含請求 ID。失敗或被拒絕的請求不會收費,因此重試不會產生額外費用。
還要規劃大小限制。上下文視窗為 100,000 個 token(提示詞加補全),最大請求主體為 8 MB。長聊天歷史記錄在達到這些數字之前應進行修剪或摘要。
當呼叫不起作用時
大多數首次運行的問題源於少數錯誤。在懷疑其他問題之前,請按順序檢查這些問題。
- 缺少版本路徑的 base URL。 該值必須以
/v1結尾。客戶端會在其後添加/chat/completions,因此缺少/v1會將請求發送到錯誤的路由。 - 金鑰錯誤或缺失。 金鑰位於
Authorization: Bearer標頭中,該標頭由客戶端從api_key構建。如果環境變數為空,客戶端會在啟動時引發錯誤或發送空金鑰。輸出bool(os.environ.get("API_KEY"))進行檢查。 - 來自其他服務的模型名稱。 此處唯一的模型 ID 是
uncensored。其他教程中的名稱將不匹配。 - 沒有餘額。 查看
X-Balance-USD標頭。超過 7 天試用期或餘額已用完的情況,需要從 $20 開始儲值。 - 舊版套件。 如果示例使用
OpenAI(且 Python 說無法導入該名稱,則你擁有的是 1.0 之前的套件。運行pip install --upgrade openai。
要查看包含標頭的原始響應,請使用客戶端的原始響應包裝器:
raw = client.chat.completions.with_raw_response.create(
model="uncensored",
messages=[{"role": "user", "content": "ping"}],
max_tokens=5,
)
print(raw.headers.get("x-request-id"), raw.headers.get("x-balance-usd"))
completion = raw.parse()
print(completion.choices[0].message.content)
這會輸出請求 ID 和你的餘額,作為你可以從 cron 工作排程或啟動腳本執行的快速健康檢查。
從其他工具使用
由於端點遵循 OpenAI 格式,其他 Python 庫可以使用相同的兩個設置。接受自定義 OpenAI base URL 的框架只需要 base_url 和 api_key。對於 Node,官方的 openai 套件接受相同的欄位:
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://api.getaiapikey.com/v1",
apiKey: process.env.API_KEY,
});
const r = await client.chat.completions.create({
model: "uncensored",
messages: [{ role: "user", content: "Say hello in five words." }],
});
console.log(r.choices[0].message.content);
這是一個純文字服務:不提供圖像或音訊生成、嵌入或微調。如果你的專案需要這些功能,請將此 API 與用於該部分的另一個工具搭配使用。該模型是一個由獨立供應商運行的開放權重模型,經過調整以在法律允許的成人用途下不會拒絕內容。涉及未成年人的性內容則絕對禁止。
更多指南
問答
這樣在 Python 中使用 LLM 需要 GPU 嗎?
不需要。模型運行在供應商端。你的機器只需要 Python 和網路連線即可呼叫端點。
我要安裝哪個套件?
使用 pip 安裝官方的 openai 套件。然後將 base URL 設定為 https://api.getaiapikey.com/v1,並將模型設定為 uncensored。
有免費試用方式嗎?
新用戶註冊後可一鍵領取 $0.50 的免費試用額度。有效期為 7 天,無需綁定信用卡,每人限領一次。
一次請求的成本是多少?
一次包含 2,000 個輸入 token 和 500 個輸出 token 的請求,費用為 $0.00055(依據每 1M token $0.15 和 $0.50 計算)。你只需為成功的請求付費。
是否支援串流輸出和函式呼叫?
可以。透過 SSE 的串流輸出、函式呼叫和 JSON 模式均可透過標準的 OpenAI 客戶端運作。