Python 串接 OpenAI API

Python 串接 OpenAI API

這篇 OpenAI API 教學帶你用 Python 呼叫 GPT 模型:用官方 SDK 與目前主力的 Responses API,從取得金鑰到發出第一個請求。學會這套模式後,下一篇的 Gemini 幾乎只是換個套件名。

事前準備:

  1. 到 OpenAI Platform 註冊並建立 API Key(API 採用量計費,與 ChatGPT 訂閱是分開的)
  2. 安裝 SDK:uv add openai

金鑰管理:先把安全做對

API Key 絕對不要寫在程式碼裡。SDK 預設會讀取環境變數 OPENAI_API_KEY

# Windows(PowerShell)
$env:OPENAI_API_KEY = "sk-..."

# macOS / Linux
export OPENAI_API_KEY="sk-..."

設定好之後,程式裡完全不需要出現金鑰。

第一個請求:Responses API

from openai import OpenAI

client = OpenAI()    # 自動讀取 OPENAI_API_KEY

response = client.responses.create(
    model="gpt-5.5",
    input="用一句話解釋什麼是 Python 的 List",
)

print(response.output_text)

執行輸出(AI 回應每次不同):

List 是 Python 中有順序、可修改、能存放任何型別元素的容器。

就這麼短:建立 client、responses.create() 給模型與輸入、output_text 拿回文字。模型名稱會隨版本更新,寫文當下的主力是 gpt-5.5;正式專案建議把模型名稱抽成設定值。

instructions:設定 AI 的角色

instructions 相當於系統提示,規範模型的行為與口吻:

response = client.responses.create(
    model="gpt-5.5",
    instructions="你是繁體中文的 Python 家教,回答簡潔、一定附程式碼範例。",
    input="怎麼把 list 反轉?",
)

print(response.output_text)

執行輸出(AI 回應每次不同):

用切片最簡潔:

nums = [1, 2, 3]
print(nums[::-1])   # [3, 2, 1]

多輪對話

Responses API 用 previous_response_id 延續對話,不用自己維護歷史:

first = client.responses.create(
    model="gpt-5.5",
    input="我叫小明,請記住。",
)

second = client.responses.create(
    model="gpt-5.5",
    previous_response_id=first.id,    # 接續上一輪
    input="我叫什麼名字?",
)
print(second.output_text)

執行輸出(AI 回應每次不同):

你叫小明。

錯誤處理與費用觀念

from openai import OpenAI, APIError, RateLimitError, AuthenticationError

client = OpenAI()

try:
    response = client.responses.create(model="gpt-5.5", input="你好")
    print(response.output_text)
except AuthenticationError:
    print("金鑰錯誤或未設定 OPENAI_API_KEY")
except RateLimitError:
    print("請求太頻繁或額度用盡")
except APIError as e:
    print("API 錯誤:", e)

API 依 token(約等於字詞片段)計費,輸入與輸出都算。開發時先用小額度上限測試,避免迴圈寫錯狂打 API 噴錢。

常見錯誤

1. AuthenticationError: 401

金鑰沒設、打錯、或已撤銷。確認環境變數名稱是 OPENAI_API_KEY,且設定後重開終端機才會生效(第 2 篇講過的 PATH 同款問題)。

2. 金鑰不小心 commit 上 GitHub

金鑰寫進程式碼又推上公開 repo,幾分鐘內就會被掃走盜用。永遠用環境變數;真的洩漏立刻到後台撤銷重發。

3. model not found

模型名稱打錯或該模型已下架。到官方文件確認目前可用的模型清單。

總結

流程:金鑰放環境變數 → OpenAI() 建 client → responses.create(model, input)output_text 取文字;instructions 定角色、previous_response_id 接對話;錯誤處理與費用上限是上線前的必修。下一篇用同樣的思路串 Google Gemini。

延伸閱讀