繁中 ▾
取得 API 金鑰

GetAiApiKey生產環境 AI API 檢查清單

如何在 Python 中安裝 LLM:本地或 API

你可以在自己的機器上運行模型,也可以安裝一個小型 Python 套件並透過 HTTP 呼叫託管模型。本頁涵蓋兩種方式,然後逐步引導你完成 API 路徑。

更新於

Python 腳本連接到發光雲端模型方塊的插圖,顯示 API 連線

重點摘要

  1. 本地安裝需要模型權重和足夠的記憶體;API 路徑只需要 openai 套件和金鑰。
  2. 將 base URL 設為 https://api.getaiapikey.com/v1,模型設為 uncensored。
  3. 串流輸出、工具呼叫和 JSON 模式均可透過標準 OpenAI 客戶端使用。
  4. 處理 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 客戶端運作。

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

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