APIMaster.ai

OpenAI API Python 教學 2026 | APIMaster.ai

完整的 OpenAI API Python 教學——安裝 SDK、執行聊天補全、串流回應、使用函式呼叫以及建立非同步應用程式。可搭配 APIMaster.ai 以優惠價格存取。

OpenAI API Python 教學

本教學涵蓋從安裝到進階使用案例的 OpenAI API Python 應用。所有範例皆可搭配 APIMaster.ai 使用——只需更換 api_keybase_url

安裝

pip install openai

需要 Python 3.8 以上版本。openai 套件是 OpenAI 官方 Python SDK(1.x 版)。

初始設定

from openai import OpenAI

client = OpenAI(
    api_key="YOUR_APIMASTER_KEY",
    base_url="https://apimaster.ai/v1",
)

或使用環境變數(建議):

export OPENAI_API_KEY="YOUR_APIMASTER_KEY"
export OPENAI_BASE_URL="https://apimaster.ai/v1"
from openai import OpenAI
client = OpenAI()  # 自動讀取環境變數

基本聊天補全

response = client.chat.completions.create(
    model="gpt-5.4",
    messages=[
        {"role": "system", "content": "你是 Python 專家。"},
        {"role": "user", "content": "Python 中的生成器是什麼?"},
    ],
)

print(response.choices[0].message.content)
print(f"使用的 Token 數:{response.usage.total_tokens}")

串流回應

stream = client.chat.completions.create(
    model="gpt-5.4",
    messages=[{"role": "user", "content": "用 Python 寫一個二元搜尋。"}],
    stream=True,
)

for chunk in stream:
    delta = chunk.choices[0].delta.content
    if delta:
        print(delta, end="", flush=True)
print()

多輪對話

messages = [
    {"role": "system", "content": "你是一位樂於助人的程式助手。"}
]

def send(user_text):
    messages.append({"role": "user", "content": user_text})
    resp = client.chat.completions.create(model="gpt-5.4", messages=messages)
    reply = resp.choices[0].message.content
    messages.append({"role": "assistant", "content": reply})
    return reply

print(send("解釋列表推導式。"))
print(send("給我一個更難的例子。"))

結構化輸出(JSON 模式)

強制模型回傳有效的 JSON:

import json

response = client.chat.completions.create(
    model="gpt-5.4",
    messages=[
        {
            "role": "user",
            "content": "從以下文字中擷取名稱、電子郵件和公司:'聯絡 Jane Smith (jane@acme.com) 任職於 Acme Corp.'",
        }
    ],
    response_format={"type": "json_object"},
)

data = json.loads(response.choices[0].message.content)
print(data)  # {"name": "Jane Smith", "email": "jane@acme.com", "company": "Acme Corp"}

函式呼叫(工具使用)

import json

tools = [
    {
        "type": "function",
        "function": {
            "name": "get_stock_price",
            "description": "取得指定股票代號的當前股價",
            "parameters": {
                "type": "object",
                "properties": {
                    "ticker": {"type": "string", "description": "股票代號,例如 AAPL"},
                },
                "required": ["ticker"],
            },
        },
    }
]

messages = [{"role": "user", "content": "蘋果股票目前的價格是多少?"}]

response = client.chat.completions.create(
    model="gpt-5.4",
    messages=messages,
    tools=tools,
    tool_choice="auto",
)

# 處理工具呼叫
if response.choices[0].finish_reason == "tool_calls":
    tool_call = response.choices[0].message.tool_calls[0]
    args = json.loads(tool_call.function.arguments)
    print(f"正在呼叫 {tool_call.function.name},參數為 {args}")
    
    # 模擬函式結果
    result = {"ticker": args["ticker"], "price": 189.50}
    
    # 將結果回傳
    messages.append(response.choices[0].message)
    messages.append({
        "role": "tool",
        "tool_call_id": tool_call.id,
        "content": json.dumps(result),
    })
    
    final = client.chat.completions.create(model="gpt-5.4", messages=messages)
    print(final.choices[0].message.content)

嵌入向量

response = client.embeddings.create(
    model="text-embedding-3-small",
    input=["OpenAI API Python 教學", "機器學習基礎"],
)

embeddings = [item.embedding for item in response.data]
print(f"嵌入向量維度:{len(embeddings[0])}")

非同步使用

import asyncio
from openai import AsyncOpenAI

client = AsyncOpenAI(
    api_key="YOUR_APIMASTER_KEY",
    base_url="https://apimaster.ai/v1",
)

async def generate(prompt: str) -> str:
    resp = await client.chat.completions.create(
        model="gpt-5.4",
        messages=[{"role": "user", "content": prompt}],
    )
    return resp.choices[0].message.content

async def main():
    # 同時執行 5 個請求
    prompts = [f"解釋概念 #{i}" for i in range(5)]
    results = await asyncio.gather(*[generate(p) for p in prompts])
    for r in results:
        print(r[:100])

asyncio.run(main())

錯誤處理

from openai import OpenAI, AuthenticationError, RateLimitError, APIError
import time

def safe_call(client, **kwargs):
    for attempt in range(3):
        try:
            return client.chat.completions.create(**kwargs)
        except AuthenticationError:
            raise  # 不重試驗證錯誤
        except RateLimitError:
            time.sleep(2 ** attempt)
        except APIError as e:
            if e.status_code >= 500:
                time.sleep(1)
            else:
                raise
    raise RuntimeError("已超過最大重試次數")

模型選擇指南

任務 模型 原因
摘要、分類 gpt-4o-mini 低成本
一般程式碼、寫作 gpt-5.4 最佳平衡
複雜推理 gpt-5.5 或 o3 高能力
批次處理 gpt-4o-mini 或 gpt-5.4 依品質和預算選擇

常見問題

如何安裝 OpenAI Python 函式庫? 執行 pip install openai。使用 APIMaster 存取時,無需額外套件——只需在初始化客戶端時設定 base_urlapi_key

OpenAI 函式庫需要什麼 Python 版本? Python 3.8 或更新版本。非同步客戶端建議使用 Python 3.10+ 以獲得最佳相容性。

如何在 Python 中處理 OpenAI API 速率限制? 使用指數退避——捕捉 RateLimitError 並以遞增延遲重試。tenacity 函式庫可簡化此過程。APIMaster 的路由機制提供額外的穩定性。

我可以將 OpenAI Python 函式庫與 Claude 模型一起使用嗎? 可以——透過 APIMaster。設定 base_url="https://apimaster.ai/v1" 並使用如 claude-sonnet-4-6 等模型 ID。回應格式與 GPT 回應完全相同。

如何在 Python 中使用非同步 OpenAI 呼叫? 使用 AsyncOpenAI 取代 OpenAI,並對 API 呼叫使用 await。請參閱上方指南中的非同步範例。

透過 APIMaster 取得 OpenAI API 存取權限 →