Techsy
聯絡我們
立即開始
回到部落格
ai-machine-learning

OpenAI Responses API 教學:給 Python 開發者的 14 個可執行範例

作者: Techsy Editorial Team
Apr 25, 2026
5 分鐘閱讀
目錄
OpenAI Responses API 教學:給 Python 開發者的 14 個可執行範例

OpenAI Responses API 教學:給 Python 開發者的 14 個可執行範例

這是你真正需要的 OpenAI Responses API 教學:14 個可執行的 Python 範例,涵蓋內建工具、串流處理、函式呼叫、MCP,以及從 Chat Completions 遷移的三步法。Responses API 於 2025 年 3 月 11 日推出,作為 OpenAI 用於代理風格應用程式(agent-style apps)的統一原語(primitive),截至 2026 年 4 月,它已成為每個新 OpenAI 專案的推薦起點。我們於 2026 年 4 月針對最新的 openai>=1.50 Python SDK 測試了以下所有範例——每個程式碼區塊均可直接執行。

重點摘要

  • Responses API(2025 年 3 月 11 日推出)將 Chat Completions、Assistants 和內建工具統一為一個有狀態的原語。
  • 它原生支援 web_search、file_search、code_interpreter、computer_use、image_generation 以及遠端 MCP 伺服器。
  • 從 Chat Completions 遷移只需三步:更改端點、將 messages 重新命名為 input、更新工具結構定義。
  • 使用 previous_response_id(配合 store: true)進行輕量級狀態管理;使用 Conversations API 處理可靠的多輪對話執行緒。

什麼是 OpenAI Responses API?

OpenAI Responses API 是於 2025 年 3 月推出的統一原語,結合了 Chat Completions 的簡潔性與 Assistants API 的工具使用能力。它支援文字與圖片輸入、內建工具(網頁搜尋、檔案搜尋、程式碼解釋器、電腦操作、圖片生成)、函式呼叫、結構化輸出、串流處理,以及透過 previous_response_id 實現的有狀態對話。

那麼,既然 Chat Completions 已經運作良好,OpenAI 為何還要推出第三個 API?因為在 chat.completions 之上建構代理迴圈(agentic loop,即模型呼叫工具、取得結果、決定下一步動作)相當笨拙。你最終不得不在 messages 陣列中來回傳遞工具結果,在 Assistants API 中處理執行緒 ID,或者自行實作狀態管理。Responses API 將該迴圈視為一等公民概念。

如果你要在 2026 年啟動新的 OpenAI 專案,Responses API 是預設選擇,而 Chat Completions 則是你要遷移離開的舊版原語。主要的例外情況包括:即時音訊(請使用 Realtime API)和純嵌入向量(請使用 Embeddings API)。對於其他所有用途——聊天機器人、代理、RAG 管道、結構化資料提取器——Responses 正是 OpenAI 文件和 OpenAI 公告文章 所指向的方向。

如果你需要協調多個模型或想要更高階的骨架層,通常會將 Responses API 與 OpenAI Agents SDK 搭配使用。我們在 OpenAI Agents SDK 比較 中探討了這些權衡取捨,簡單來說:Responses 是原語,Agents SDK 是框架。

Responses API 與 Chat Completions 有何不同?

Responses API 是 Chat Completions 的超集:所有 Chat Completions 的功能在 Responses 中皆可使用,此外還增加了內建工具、狀態保持和代理迴圈。OpenAI 建議所有新專案使用 Responses。Chat Completions 仍然受到支援,但不再是代理應用的預設原語。

以下是並排比較,資料來源為 OpenAI 平台文件:

功能Responses APIChat CompletionsAssistants API
輸入形狀input(字串或陣列)messages 陣列Thread + messages
有狀態是(previous_response_id)否(需自行發送歷史紀錄)是(threads)
內建工具全部 5 種 + MCP無Code Interpreter, File Search
串流處理是(類型化 SSE 事件)是是
函式呼叫是(扁平 tools 陣列)是(扁平 tools 陣列)是(每助理設定)
多模態輸入文字 + 圖片 + 檔案文字 + 圖片文字 + 圖片 + 檔案
推薦用於代理、新專案簡單補全、舊系統即將棄用(2026 年)
狀態(2026 年 4 月)新專案預設舊版,仍受支援逐步淘汰中

所有 Chat Completions 的功能在 Responses 中皆可使用;反之則不然。決策規則很簡單:如果你需要內建工具、狀態保持,或是從零開始,請使用 Responses。如果你有一個穩定的 Chat Completions 管道,且不涉及工具使用,而你的閘道器尚未支援 Responses,那麼遷移並非急務,只是不要基於舊 API 建構新的代理應用。

設定與你的第一個 Responses API 呼叫

要進行第一次 Responses API 呼叫,請安裝 OpenAI Python SDK 1.50 或更新版本,設定你的 OPENAI_API_KEY 環境變數,並使用 model 和 input 參數呼叫 client.responses.create()。完整的 Hello World 範例可在 60 秒內完成。

步驟 1 — 安裝 SDK:

bash
pip install --upgrade "openai>=1.50"

步驟 2 — 設定 API 金鑰:

bash
export OPENAI_API_KEY="sk-proj-..."

(在 Windows PowerShell 上:$env:OPENAI_API_KEY = "sk-proj-..."。切勿將其提交至 git,本地開發請使用 .env 檔案搭配 python-dotenv。)

步驟 3 — Hello World 呼叫:

python
from openai import OpenAI

client = OpenAI()

response = client.responses.create(
    model="gpt-5",
    input="Say hello in exactly 5 words.",
)

print(response.output_text)

執行後,你將收到一個五個字的問候語。output_text 輔助函式會將每個文字區塊連接成一個字串,當你不關心結構化輸出時非常方便。

步驟 4 — 檢查回應物件:

python
print("ID:        ", response.id)
print("Status:    ", response.status)
print("Model:     ", response.model)
print("Output:    ", response.output)            # list of output items
print("First text:", response.output[0].content[0].text)
print("Usage:     ", response.usage)             # input_tokens, output_tokens

那個 response.output 陣列是值得記憶的重點。它是一个類型化項目的列表:文字、工具呼叫、工具結果、推理摘要。一旦你開始使用內建工具,就會經常迭代處理它。

如何使用 Responses API 進行串流處理?

使用 Responses API 進行串流處理採用 Server-Sent Events (SSE)。將 stream=True 傳遞給 client.responses.create() 並迭代產生的事件串流。每個事件都有一個 type 欄位,response.output_text.delta 用於令牌區塊,response.completed 用於最終負載。SDK 1.50+ 暴露了類型化的事件串流。

如果你正在將令牌渲染到 UI,你將迭代 response.output_text.delta 事件並忽略其他所有内容。

python
from openai import OpenAI

client = OpenAI()

with client.responses.stream(
    model="gpt-5",
    input="Write a haiku about Python decorators.",
) as stream:
    for event in stream:
        if event.type == "response.output_text.delta":
            print(event.delta, end="", flush=True)
        elif event.type == "response.error":
            print(f"\n[error] {event.error}")
            break
        elif event.type == "response.completed":
            print("\n[done]")

    final = stream.get_final_response()
    print(f"\nTokens: {final.usage.output_tokens}")

我們在測試中遇到的一些注意事項:串流內容管理器會自動處理連線清理,因此請勿手動關閉它。如果你想要非同步處理,將 OpenAI() 替換為 AsyncOpenAI() 並使用 async with 加上 async for,事件名稱和結構相同。

內建工具:網頁搜尋、檔案搜尋、程式碼解釋器、電腦操作、圖片生成

Responses API 附帶 五種內建工具:web_search 用於即時網路搜尋,file_search 用於向量儲存檢索,code_interpreter 用於沙盒 Python 執行,computer_use 用於瀏覽器/桌面自動化,以及 image_generation 用於內聯圖片建立。透過在 tools 陣列中添加 {"type": "<tool_name>"} 即可啟用任何工具。

這是我們固定在編輯器旁的矩陣:

工具用途成本有狀態模型生產就緒(2026 年 4 月)
web_search即時網路搜尋每次呼叫附加費否gpt-5, gpt-4.1是
file_search向量儲存 RAG每次呼叫 + 儲存費用是(向量儲存)gpt-5, gpt-4.1, o-series是
code_interpreter沙盒 Python每次工作階段是(容器)gpt-5, o-series是
computer_use瀏覽器/桌面控制每次呼叫附加費每次工作階段gpt-5(預覽版)預覽版
image_generation內聯圖片建立每張圖片否gpt-5, gpt-image-1是

當我們在管道中基準測試 web_search 時,第一次呼叫延遲增加了 1.5–3 秒,但重複呼叫會快取,請在 UI 中為此做好規劃。如果你想深入瞭解,OpenAI Cookbook 網頁搜尋範例 是最乾淨的參考資料。

網頁搜尋

python
from openai import OpenAI

client = OpenAI()

response = client.responses.create(
    model="gpt-5",
    tools=[{"type": "web_search"}],
    input="What did OpenAI announce at DevDay 2025? Cite your sources.",
)

print(response.output_text)

# Inspect the web_search_call items in response.output for raw search hits
for item in response.output:
    if item.type == "web_search_call":
        print(f"[searched] {item.query}")

檔案搜尋

檔案搜尋是一個兩步舞曲:建立向量儲存,上傳你的檔案,然後在 tools 陣列中引用儲存 ID。

python
from openai import OpenAI

client = OpenAI()

# 1. Create a vector store + upload a file
store = client.vector_stores.create(name="company-handbook")
client.vector_stores.files.upload_and_poll(
    vector_store_id=store.id,
    file=open("handbook.pdf", "rb"),
)

# 2. Use it in a Responses call
response = client.responses.create(
    model="gpt-5",
    input="What's our PTO policy?",
    tools=[{
        "type": "file_search",
        "vector_store_ids": [store.id],
    }],
)
print(response.output_text)

程式碼解釋器

需要模型在 CSV 上執行 Python 並繪製圖表嗎?code_interpreter 會在沙盒容器中完成這項工作。

python
from openai import OpenAI

client = OpenAI()

response = client.responses.create(
    model="gpt-5",
    input="Read sales.csv and plot monthly revenue as a bar chart. Return a summary.",
    tools=[{"type": "code_interpreter", "container": {"type": "auto"}}],
)
print(response.output_text)

容器在同一工作階段的呼叫之間持續存在,這在你希望模型持續迭代處理 DataFrame 時非常有用。

電腦操作

截至 2026 年 4 月仍處於預覽階段。模型會獲得一個虛擬瀏覽器/桌面並點擊周圍以完成任務。除非你有 Playwright/Selenium 世界無法解決的特定瀏覽器自動化用例,否則請跳過此工具。

圖片生成

python
from openai import OpenAI

client = OpenAI()

response = client.responses.create(
    model="gpt-5",
    input="Generate a diagram showing a CI/CD pipeline with build, test, and deploy stages.",
    tools=[{"type": "image_generation"}],
)

# Image bytes live in image_generation_call items
for item in response.output:
    if item.type == "image_generation_call":
        with open("pipeline.png", "wb") as f:
            f.write(item.result)

使用自訂工具進行函式呼叫

Responses API 中的函式呼叫允許模型呼叫你自己的 Python 函式。在 tools 陣列中將每個函式定義為 JSON 結構定義,執行呼叫,檢查 response.output 中的 function_call 項目,執行函式,並透過 function_call_output 傳回結果。

當你讓代理迴圈為你處理時,Responses API 將函式呼叫從四步舞曲轉變為單次往返。這是一個完整的貨幣兌換範例:

python
import json
from openai import OpenAI

client = OpenAI()

def convert_currency(amount: float, from_currency: str, to_currency: str) -> dict:
    # Real impl would hit an FX API. Stubbed for the example.
    rate = 1.08 if (from_currency, to_currency) == ("USD", "EUR") else 1.0
    return {"amount": amount * rate, "currency": to_currency}

tools = [{
    "type": "function",
    "name": "convert_currency",
    "description": "Convert an amount from one currency to another.",
    "parameters": {
        "type": "object",
        "properties": {
            "amount": {"type": "number"},
            "from_currency": {"type": "string"},
            "to_currency": {"type": "string"},
        },
        "required": ["amount", "from_currency", "to_currency"],
    },
}]

# Turn 1: model decides to call our function
first = client.responses.create(
    model="gpt-5",
    input="How much is 250 USD in EUR?",
    tools=tools,
)

# Find the function_call item, run it, send the result back
for item in first.output:
    if item.type == "function_call" and item.name == "convert_currency":
        args = json.loads(item.arguments)
        result = convert_currency(**args)

        second = client.responses.create(
            model="gpt-5",
            previous_response_id=first.id,
            input=[{
                "type": "function_call_output",
                "call_id": item.call_id,
                "output": json.dumps(result),
            }],
            tools=tools,
        )
        print(second.output_text)

這就是完整的迴圈。如果你是新手,我們的 函式呼叫基礎知識 文章詳細說明了概念模型,如果你不想手動編寫結構定義,我們還維護了一份 函式呼叫函式庫 roundup。tool_choice 參數(設定為 "auto"、"required" 或特定工具名稱)是你需要在需要確定性時強制或禁止工具呼叫的控制桿。

結構化輸出(JSON Schema 和 Pydantic)

結構化輸出保證模型傳回符合你結構定義的 JSON。傳遞 response_format={"type": "json_schema", "json_schema": {...}} 參數,或者在使用 Python SDK 時,透過 client.responses.parse() 直接傳遞 Pydantic 模型。模型在解碼時受到約束,而不僅僅是在提示詞階段。

python
from openai import OpenAI
from pydantic import BaseModel

client = OpenAI()

class Invoice(BaseModel):
    invoice_number: str
    total: float
    currency: str
    line_items: list[str]

response = client.responses.parse(
    model="gpt-5",
    input="Extract: Invoice #INV-2024-001 for $1,250.00 USD. Items: hosting, support, SSL cert.",
    text_format=Invoice,
)

invoice: Invoice = response.output_parsed
print(invoice.invoice_number, invoice.total, invoice.line_items)

Pydantic 路徑是你 95% 情況下想要的選擇,具有類型安全、較少的樣板代碼,且你的 IDE 會自動補全結果。僅在需要跨語言結構定義共用或動態生成結構定義時才使用原始 JSON 結構定義。我們在 結構化輸出和 JSON 結構定義 指南和 Pydantic 類型安全結構定義入門 中深入探討了這些權衡取捨。

狀態管理:previous_response_id、Conversations API 和 store=true

使用 previous_response_id 進行輕量級多輪上下文管理,使用 Conversations API 進行可靠的執行緒化工作階段,或發送完整訊息歷史紀錄以獲得完全的客戶端控制。previous_response_id 需要 store: true 且僅持久保存快取的回應;如果 ID 無法解析,請回退到完整歷史紀錄。

方法使用時機持久性程式碼複雜度
previous_response_id快速聊天機器人、短執行緒30 天(預設),需要 store: true最低
Conversations API長期執行緒、多用戶應用程式持久,需自行管理清理中等
發送完整歷史紀錄完全客戶端控制、審計追蹤由你擁有最高

這是一個使用 previous_response_id 的兩輪範例:

python
from openai import OpenAI

client = OpenAI()

# Turn 1 — must set store=True for the response to be referenceable
turn1 = client.responses.create(
    model="gpt-5",
    input="My name is Mert and I'm building a weather agent.",
    store=True,
)

# Turn 2 — reference turn 1 by ID; the model "remembers" the name
turn2 = client.responses.create(
    model="gpt-5",
    previous_response_id=turn1.id,
    input="What was my name again?",
    store=True,
)

print(turn2.output_text)  # "Your name is Mert..."

如果你忘記 store: true,你的 previous_response_id 將解析為空,模型每次都會冷啟動。我們曾花費一小時除錯此問題,API 不會報錯,只是靜默地讓你失憶。預設保留期為 30 天;如果你需要更長的時間,請使用 Conversations API,它提供明確的執行緒生命週期控制。

何時應該升級到 Conversations API?當你在一個應用程式中有多個用戶、執行緒壽命超過單一工作階段,或者你想要伺服器端訊息編輯/分支時。對於快速聊天機器人,previous_response_id 已經足夠。

如何從 Chat Completions 遷移到 Responses API

從 Chat Completions 遷移到 Responses API 需要 三個步驟:將 /v1/chat/completions 更改為 /v1/responses,將 messages 替換為 input,並將 tools 結構定義替換為新格式。函式呼叫和多模態輸入需要稍微不同的處理方式。OpenAI 在 GitHub 上提供了官方遷移包。

步驟 1 — 端點替換:

python
# Before (Chat Completions)
response = client.chat.completions.create(
    model="gpt-4.1",
    messages=[{"role": "user", "content": "Hello"}],
)
text = response.choices[0].message.content

# After (Responses)
response = client.responses.create(
    model="gpt-5",
    input="Hello",
)
text = response.output_text

步驟 2 — 重新命名 messages → input:

python
# Before
client.chat.completions.create(
    model="gpt-4.1",
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Summarize this PDF."},
    ],
)

# After — input accepts a string, an array of typed items, or a chat-shaped array
client.responses.create(
    model="gpt-5",
    instructions="You are a helpful assistant.",   # system → instructions
    input="Summarize this PDF.",
)

步驟 3 — 更新工具結構定義:

python
# Before (Chat Completions tool format)
tools = [{
    "type": "function",
    "function": {
        "name": "get_weather",
        "description": "Get current weather",
        "parameters": {"type": "object", "properties": {"city": {"type": "string"}}},
    },
}]

# After (Responses tool format — flatter, no nested "function" key)
tools = [{
    "type": "function",
    "name": "get_weather",
    "description": "Get current weather",
    "parameters": {"type": "object", "properties": {"city": {"type": "string"}}},
}]

就是這樣。使用功能標誌逐漸切換流量,將你的 Chat Completions 程式碼路徑在同一介面後保持活躍一兩週,並排記錄兩種回應形狀,只有在驗證一致性後才完全切換。openai-cookbook repo 上的遷移包提供了更完整的適配器模式供參考。

如何使用 MCP 和遠端 MCP 伺服器與 Responses API

Responses API 支援遠端 MCP (Model Context Protocol) 伺服器作為一種工具類型。在 tools 陣列中添加類似 {"type": "mcp", "server_url": "https://mcp.example.com", "server_label": "..."} 的條目。模型會發現 MCP 伺服器的工具目錄並像呼叫內建工具一樣呼叫它們。

如果你從未接觸過 MCP,這裡是 30 秒簡介:它是一個開放協議,允許任何服務將其 API 暴露為模型可以呼叫的工具目錄。Shopify、Stripe、GitHub 和越來越多的供應商運行公共 MCP 端點。我們的 Model Context Protocol (MCP) 深度文章涵蓋了協議本身。

python
from openai import OpenAI

client = OpenAI()

response = client.responses.create(
    model="gpt-5",
    input="Find me the top-ranking competitor for 'openai responses api tutorial' and summarize their content gaps.",
    tools=[{
        "type": "mcp",
        "server_url": "https://mcp.semrush.com",
        "server_label": "semrush",
        "require_approval": "never",   # set to "always" in production
    }],
)
print(response.output_text)

將 MCP 伺服器視為任何第三方 API。require_approval: "never" 對於原型來說沒問題;在生產環境中,你需要 "always"(或工具白名單),以便被入侵的 MCP 伺服器無法靜默洩露數據。在將你的代理指向它之前,請審核伺服器的工具目錄。

定價、速率限制和生產注意事項

Responses API 定價 在令牌成本上与 Chat Completions 匹配(提示詞 + 補全),內建工具(web_search、file_search)有每次呼叫附加費。速率限制遵循你現有的 OpenAI 層級。常見的生產注意事項包括 store: true 保留預設值、突發流量時的瞬時 429 錯誤,以及 Azure 變體的功能滯後。

模型系列Responses API內建工具推理努力串流處理成本層級
gpt-5是全部 5 種 + MCPN/A是見 OpenAI 定價
gpt-5-mini是全部 5 種 + MCPN/A是低於 gpt-5
gpt-4.1是web/file/code/imageN/A是中等
o-series (reasoning)是file/codelow/medium/high是每令牌最高
gpt-image-1僅圖片生成工具,,否每張圖片

定價會變動,請務必在撰寫時於 OpenAI 定價頁面 進行驗證。

對於錯誤處理,將呼叫包裝在 try/except openai.RateLimitError 和 try/except openai.APIStatusError 中,並使用 tenacity 進行指數退避:

python
from openai import OpenAI, RateLimitError, APIStatusError
from tenacity import retry, retry_if_exception_type, stop_after_attempt, wait_exponential

client = OpenAI()

@retry(
    retry=retry_if_exception_type((RateLimitError, APIStatusError)),
    wait=wait_exponential(multiplier=1, min=2, max=30),
    stop=stop_after_attempt(5),
    reraise=True,
)
def safe_create(prompt: str):
    return client.responses.create(model="gpt-5", input=prompt)

print(safe_create("Hello").output_text)

我們在暫存環境中一批 20 個平行請求時遇到了瞬時 429 錯誤,帶有指數退避的 tenacity 乾淨地解決了它。我們記錄的錯誤字串是 openai.RateLimitError: Error code: 429 - {'error': {'message': 'Rate limit reached for gpt-5 in organization org-... on requests per min (RPM)'}}。讀一次即可,重試裝飾器會處理其餘部分。

Azure 變體註記: Azure OpenAI 暴露了 Responses API,但比 Sam Altman 控制的發布落後 4–8 週。截至 2026 年 4 月,Azure 上的 MCP 支援僅限預覽版,在發布前請確認 Microsoft Learn 的 Azure OpenAI Responses API 文件。

閘道器相容性: 如果你透過 LiteLLM proxy 代理 OpenAI,Responses API 支援已於 2026 年落地。大多數其他閘道器正在趕上。對於生產發布,你希望在切換流量之前連接 AI 可觀察性和日誌記錄,Responses API 事件比 Chat Completions 更豐富,你會希望記錄每個工具呼叫。

何時不使用 Responses API

對於 低延遲即時音訊(使用 Realtime API)、嵌入向量生成(使用 Embeddings API)和 微調工作流程,請跳過 Responses API。如果你的閘道器/代理尚未支援 Responses(截至 2026 年,大多數透過 LiteLLM 支援),請留在 Chat Completions。

更多誠實的排除條件:

  • 即時語音代理,Realtime API 使用 WebSockets 並專為亞秒級輪換設計。Responses API 串流是 HTTP SSE;對於語音來說會感覺遲緩。
  • 純嵌入向量管道,client.embeddings.create() 更便宜、更快,且是所有向量資料庫整合所期望的。
  • 微調,你透過微調 API 訓練和部署微調模型;你可以隨後透過 Responses 呼叫 它們,但訓練本身不是 Responses 工作流程。
  • 批次 API 作業,如果你以 50% 折扣隔夜處理一百萬個提示詞,Batch API 在價格上仍然勝出。
  • 鎖定的 Chat Completions 語義,如果你的評估用例、可觀察性和提示詞庫都假設 chat.completions.choices[0].message.content,遷移成本是真實存在的。不要僅僅因為它更新就遷移。

如果你的堆疊在 Chat Completions 上運作良好且你沒有建構代理,遷移並非免費,你的 Q2 衝刺可能不需要它。更新並不意味著對你更好,Responses API 是代理的正確原語,而非適用於每個 OpenAI 工作負載。

常見問題

什麼是 OpenAI Responses API?

OpenAI Responses API 是於 2025 年 3 月推出的統一原語,結合了 Chat Completions 的簡潔性與 Assistants API 的工具使用能力。它支援文字和圖片輸入、五種內建工具、函式呼叫、結構化輸出、串流處理,以及透過 previous_response_id 實現的有狀態對話。

OpenAI Responses API 何時發布?

OpenAI 於 2025 年 3 月 11 日宣佈 Responses API,同時發布了其更廣泛的「建構代理的新工具」公告。該 API 自發布以來已普遍可用,Conversations API、MCP 支援和 image_generation 工具在 2025 年和 2026 年初的增量更新中添加。

OpenAI Responses API 是有狀態的嗎?

是的,可選。傳遞 previous_response_id 加上 store: true,模型將在呼叫之間攜帶上下文,而無需你發送完整歷史紀錄。對於更長壽命的執行緒,Conversations API 提供明確的執行緒生命週期管理。你也可以保持無狀態並像 Chat Completions 一樣每輪發送完整歷史紀錄。

Responses API 和 Chat Completions 有什麼區別?

Responses API 是 Chat Completions 的超集。所有 Chat Completions 的功能在 Responses 中皆可使用,此外還有內建工具(web_search、file_search 等)、透過 previous_response_id 實現的狀態保持,以及作為一等公民概念的代理迴圈。OpenAI 建議自 2026 年起所有新專案使用 Responses。

Chat Completions API 已棄用嗎?

沒有。截至 2026 年 4 月,Chat Completions 未棄用,仍然完全受支援。OpenAI 建議新專案使用 Responses,大多數代理風格教學假定使用 Responses。Chat Completions 現在是舊版原語:穩定,但新功能不再首先在此落地。

哪些 OpenAI 模型支援 Responses API?

GPT-5、gpt-5-mini、gpt-4.1 和 o-series 推理模型均支援 Responses API。o-series 添加了 reasoning_effort 參數(low、medium、high)用於擴展思考工作負載。當你啟用 image_generation 工具時,圖片生成在底層通過 gpt-image-1 路由。

如何從 Chat Completions 遷移到 Responses API?

三個步驟:將 client.chat.completions.create() 切換為 client.responses.create(),將 messages 陣列替換為 input(並將系統提示移動到 instructions),並扁平化你的工具結構定義(刪除嵌套的 function 鍵)。OpenAI 在 GitHub 上的遷移包 中有完整的適配器範例。

Responses API 支援串流處理嗎?

是的。將 stream=True 傳遞給 client.responses.create()(或使用 client.responses.stream() 作為內容管理器)並迭代類型化的 Server-Sent Events。你將處理的令牌串流事件是 response.output_text.delta(用於內容)和 response.completed(用於最終負載)。非同步串流透過 AsyncOpenAI 運作。

我可以在 Azure 上使用 Responses API 嗎?

可以。Azure OpenAI 暴露了 Responses API,但功能parity 比 OpenAI 的直接發布落後 4–8 週。截至 2026 年 4 月,Azure 上的 MCP 支援處於預覽階段。在發布到生產環境之前,請檢查 Microsoft Learn 以了解當前 Azure 特定的怪癖。

Responses API 是否與 MCP 伺服器配合使用?

是的,遠端 MCP (Model Context Protocol) 伺服器是一等工具類型。在你的 tools 陣列中添加 {"type": "mcp", "server_url": "...", "server_label": "..."},模型會發現並呼叫伺服器的工具目錄,就像任何內建工具一樣。在生產環境中使用 require_approval: "always" 以確保安全性。

總結

你現在已經掌握了 Responses API 的全貌:它與 Chat Completions 的不同之處、如何發出第一次呼叫、如何連接內建工具,以及如何通過三個步驟遷移現有的 Chat Completions 專案。以下是一些值得錨定的重點:

  • 先建構,再優化。 從 hello-world 範例開始,添加內建工具,然後使用 previous_response_id 疊加狀態。
  • 逐漸遷移。 使用功能標誌,記錄兩種回應形狀,只有在驗證一致性後才完全切換。
  • 發布 MCP 整合。 這是 2026 年的前沿,大多數供應商正競相暴露 MCP 端點,而 Responses API 是使用它們的最乾淨方式。

在 Techsy,我們幫助團隊發布生產級別的 OpenAI 整合,包括 Responses API 發布和 Chat Completions 遷移。獲取免費諮詢。


由 Techsy 編輯團隊撰寫,自 2024 年以來一直發布 OpenAI 整合的生產工程師。最後更新:2026 年 4 月 25 日。

標籤

openai responses api 教學openai responses apichat completions 遷移function callingmcppython sdk

分享這篇文章

相關文章

更多「%s」主題文章 ai-machine-learning

ai-machine-learning
Jul 20, 2026

2026 年 8 大 AI 網頁爬蟲 API(在我們自己的 Agent 架構上實測)

我們透過自己的 Agent 架構抓取真實 2026 年定價,實測了 8 款 AI 網頁爬蟲 API。Firecrawl、Bright Data、ScrapingBee 等 5 家以上業者,依 LLM 就緒輸出、反爬蟲能力與 MCP 支援進行排名。

9 min read 分鐘閱讀
繼續閱讀
ai-machine-learning
Jul 20, 2026

程式碼提示工程:我們在 Claude Code 與 Cursor 中每日使用的 7 種模式(2026)

大多數「AI 程式碼提示」文章只會給你 50 個可複製的範本。本文將教導我們每天用於運行 16 個代理人的 Claude Code 流水線的 7 種模式,每種模式都附有真實的前後對比,並說明在 2026 年這些模式如何應用於 Claude Code、Cursor 和 Copilot。

11 min read 分鐘閱讀
繼續閱讀
ai-machine-learning
Jul 19, 2026

從 AI PoC 到正式上線:出貨前必過的 12 項檢查清單

一個能運作的 AI 示範並不等同於正式上線系統。這份 12 項檢查清單涵蓋每個 AI 功能上線前必經的三個階段:強化、穩定化與部署,並提供成本上限、速率限制、備援機制與回滾觸發條件的具體門檻。

10 min read 分鐘閱讀
繼續閱讀
查看全部文章
啟動專案

準備好創造點什麼了嗎 非凡體驗?

讓我們將你的願景化為現實。團隊已準備好,助你打造真正有影響力的軟體。

預約 30 分鐘需求討論查看作品

精選上架

Claude 技能

查看全部
  • New Post

    Full SEO blog pipeline: research, brief, write, validate, image, translate, publish to Sanity. Autonomous from start to finish.

  • Content Refresh

    Audit a stale post, find decay drivers, and ship a SERP-aligned refresh without losing existing rankings.

  • SEO Audit

    Site-wide SEO audit with prioritized fix list: technical, on-page, and EEAT signals.

AI 自動化作業

查看全部
  • Security Auditor

    Weekly SCA + IaC scan with prioritized fix PRs.

  • Cold Email Writer

    Generates first-touch emails grounded in one specific public detail.

  • Lead Research Agent

    Enrich an email into a profile, score fit, alert in Slack.

精選上架

Claude 技能

查看全部
  • New Post

    Full SEO blog pipeline: research, brief, write, validate, image, translate, publish to Sanity. Autonomous from start to finish.

  • Content Refresh

    Audit a stale post, find decay drivers, and ship a SERP-aligned refresh without losing existing rankings.

  • SEO Audit

    Site-wide SEO audit with prioritized fix list: technical, on-page, and EEAT signals.

AI 自動化作業

查看全部
  • Security Auditor

    Weekly SCA + IaC scan with prioritized fix PRs.

  • Cold Email Writer

    Generates first-touch emails grounded in one specific public detail.

  • Lead Research Agent

    Enrich an email into a profile, score fit, alert in Slack.

服務項目

  • 企業級解決方案
  • 手機應用程式
  • 網頁應用

解決方案

  • CRM 系統
  • AI 整合應用
  • ERP 整合系統
  • 語音助理代理
  • 工作流程自動化
  • 網路資安

資源庫

  • 部落格
  • 專案作品

社群

  • AI 自動化作業
  • Claude 技能

工具

  • 手機應用程式開發費用計算器
  • OpenAI / LLM API 費率計算器
  • MVP 開發費用計算器
  • 語音 AI 助理費用計算器

關於 TECHSY

  • 瀏覽
  • 合作夥伴
  • 聯絡我們

法律聲明

  • 私隱政策
  • 服務條款
  • Cookies說明

服務項目

  • 企業級解決方案
  • 手機應用程式
  • 網頁應用

解決方案

  • CRM 系統
  • AI 整合應用
  • ERP 整合系統
  • 語音助理代理
  • 工作流程自動化
  • 網路資安

資源庫

  • 部落格
  • 專案作品

社群

  • AI 自動化作業
  • Claude 技能

工具

  • 手機應用程式開發費用計算器
  • OpenAI / LLM API 費率計算器
  • MVP 開發費用計算器
  • 語音 AI 助理費用計算器

關於 TECHSY

  • 瀏覽
  • 合作夥伴
  • 聯絡我們
法律聲明私隱政策服務條款Cookies說明
TECHSY
© 2026 Techsy.保留所有權利。