Techsy
Liên hệ
Bắt đầu
Quay lại Blog
ai-machine-learning

Hướng dẫn OpenAI Responses API: 14 ví dụ Python có thể chạy ngay

Viết bởi Techsy Editorial Team
Apr 25, 2026
20 phút đọc
Mục lục
Hướng dẫn OpenAI Responses API: 14 ví dụ Python có thể chạy ngay

Hướng dẫn OpenAI Responses API: 14 ví dụ Python có thể chạy ngay

Hướng dẫn OpenAI Responses API mà bạn thực sự cần: 14 ví dụ Python có thể chạy ngay, bao quát các công cụ tích hợp, streaming, gọi hàm, MCP và quy trình di chuyển 3 bước từ Chat Completions. Responses API đã ra mắt vào ngày 11 tháng 3 năm 2025 như một nguyên thủy thống nhất của OpenAI dành cho các ứng dụng dạng tác nhân (agent), và tính đến tháng 4 năm 2026, đây là điểm khởi đầu được khuyến nghị cho mọi dự án OpenAI mới. Chúng tôi đã kiểm thử mọi ví dụ bên dưới với SDK Python openai>=1.50 mới nhất vào tháng 4 năm 2026 — mọi khối mã đều chạy nguyên bản.

Những điểm chính

  • Responses API (ra mắt ngày 11 tháng 3 năm 2025) thống nhất Chat Completions, Assistants và các công cụ tích hợp thành một nguyên thủy có trạng thái duy nhất.
  • Nó hỗ trợ sẵn web_search, file_search, code_interpreter, computer_use, image_generation và các máy chủ MCP từ xa.
  • Việc di chuyển từ Chat Completions chỉ gồm 3 bước: thay đổi điểm cuối, đổi tên messages thành input, cập nhật lược đồ công cụ.
  • Sử dụng previous_response_id (kèm store: true) để quản lý trạng thái nhẹ; sử dụng Conversations API cho các luồng hội thoại nhiều lượt đáng tin cậy.

OpenAI Responses API là gì?

OpenAI Responses API là một nguyên thủy thống nhất ra mắt vào tháng 3 năm 2025, kết hợp sự đơn giản của Chat Completions với khả năng sử dụng công cụ của Assistants API. Nó hỗ trợ đầu vào văn bản + hình ảnh, các công cụ tích hợp (tìm kiếm web, tìm kiếm tệp, thông dịch mã, sử dụng máy tính, tạo hình ảnh), gọi hàm, đầu ra có cấu trúc, streaming và các cuộc hội thoại có trạng thái thông qua previous_response_id.

Vậy tại sao OpenAI lại phát hành một API thứ ba khi Chat Completions đã hoạt động tốt? Bởi vì vòng lặp tác nhân, nơi mô hình gọi một công cụ, nhận kết quả và quyết định bước tiếp theo, rất khó xây dựng dựa trên chat.completions. Bạn thường phải chuyển qua chuyển lại kết quả công cụ trong các mảng messages, xử lý phức tạp ID luồng với Assistants API, hoặc tự xây dựng hệ thống quản lý trạng riêng. Responses API coi vòng lặp đó là một khái niệm hạng nhất.

Nếu bạn bắt đầu một dự án OpenAI mới vào năm 2026, Responses API là lựa chọn mặc định, còn Chat Completions là nguyên thủy cũ mà bạn nên di chuyển khỏi. Các ngoại lệ lớn: âm thanh thời gian thực (sử dụng Realtime API) và embeddings thuần túy (sử dụng Embeddings API). Đối với mọi thứ khác, từ chatbot, tác nhân, pipeline RAG đến bộ trích xuất dữ liệu có cấu trúc, Responses là thứ mà tài liệu của OpenAI và bài đăng thông báo của OpenAI hướng bạn đến.

Nếu bạn đang điều phối nhiều mô hình hoặc muốn một lớp khung ở cấp độ cao hơn, bạn thường sẽ kết hợp Responses API với OpenAI Agents SDK. Chúng tôi đã phân tích các đánh đổi trong bài so sánh OpenAI Agents SDK của mình, tóm tắt ngắn gọn: Responses là nguyên thủy, Agents SDK là khung làm việc.

Responses API khác Chat Completions như thế nào?

Responses API là tập siêu hợp của Chat Completions: mọi tính năng của Chat Completions đều hoạt động trong Responses, cộng thêm các công cụ tích hợp, khả năng lưu trạng thái và vòng lặp tác nhân. OpenAI khuyến nghị sử dụng Responses cho tất cả các dự án mới. Chat Completions vẫn được hỗ trợ nhưng không còn là nguyên thủy mặc định cho các tác nhân.

Dưới đây là bảng so sánh cạnh nhau, lấy nguồn từ tài liệu nền tảng OpenAI:

Tính năngResponses APIChat CompletionsAssistants API
Hình dạng đầu vàoinput (chuỗi hoặc mảng)Mảng messagesLuồng + tin nhắn
Có trạng tháiCó (previous_response_id)Không (bạn gửi lịch sử)Có (luồng)
Công cụ tích hợpTất cả 5 + MCPKhôngCode Interpreter, File Search
StreamingCó (sự kiện SSE có kiểu)CóCó
Gọi hàmCó (mảng tools phẳng)Có (mảng tools phẳng)Có (theo từng trợ lý)
Đầu vào đa phương thứcVăn bản + hình ảnh + tệpVăn bản + hình ảnhVăn bản + hình ảnh + tệp
Được khuyến nghị choTác nhân, dự án mớiHoàn thành đơn giản, di sảnĐang bị loại bỏ (2026)
Trạng thái (Tháng 4/2026)Mặc định cho dự án mớiDi sản, vẫn được hỗ trợĐang ngừng hoạt động

Mọi tính năng của Chat Completions đều hoạt động trong Responses; điều ngược lại thì không đúng. Quy tắc quyết định rất ngắn gọn: nếu bạn cần công cụ tích hợp, khả năng lưu trạng thái hoặc bạn đang bắt đầu từ đầu, hãy sử dụng Responses. Nếu bạn có một pipeline Chat Completions ổn định không chạm vào công cụ và cổng kết nối (gateway) của bạn chưa hỗ trợ Responses, việc di chuyển không khẩn cấp, nhưng đừng xây dựng các tác nhân mới trên API cũ.

Thiết lập và lệnh gọi Responses API đầu tiên của bạn

Để thực hiện lệnh gọi Responses API đầu tiên, hãy cài đặt OpenAI Python SDK phiên bản 1.50 hoặc mới hơn, đặt biến môi trường OPENAI_API_KEY và gọi client.responses.create() với model và input. Ví dụ hello-world đầy đủ mất chưa đến 60 giây.

Bước 1 — Cài đặt SDK:

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

Bước 2 — Đặt khóa API của bạn:

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

(Trên Windows PowerShell: $env:OPENAI_API_KEY = "sk-proj-...". Không bao giờ commit thông tin này vào git, hãy sử dụng tệp .env cùng với python-dotenv cho phát triển cục bộ.)

Bước 3 — Lệnh gọi 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)

Chạy lệnh đó và bạn sẽ nhận lại một lời chào gồm 5 từ. Helper output_text nối mọi đoạn văn bản thành một chuỗi duy nhất, rất tiện lợi khi bạn không quan tâm đến đầu ra có cấu trúc.

Bước 4 — Kiểm tra đối tượng phản hồi:

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

Mảng response.output đó là thứ bạn cần ghi nhớ. Đó là danh sách các mục có kiểu: văn bản, lệnh gọi công cụ, kết quả công cụ, tóm tắt lập luận. Bạn sẽ lặp qua nó liên tục khi bắt đầu sử dụng các công cụ tích hợp.

Cách Stream phản hồi với Responses API?

Streaming với Responses API sử dụng Server-Sent Events. Truyền stream=True cho client.responses.create() và lặp qua luồng sự kiện kết quả. Mỗi sự kiện có một trường type, response.output_text.delta cho các đoạn token và response.completed cho tải trọng cuối cùng. SDK 1.50+ cung cấp luồng sự kiện có kiểu.

Nếu bạn đang hiển thị token lên giao diện người dùng, bạn sẽ lặp qua các sự kiện response.output_text.delta và bỏ qua mọi thứ khác.

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}")

Một vài vấn đề chúng tôi gặp phải khi kiểm thử: trình quản lý ngữ cảnh stream xử lý việc dọn dẹp kết nối tự động, vì vậy đừng đóng nó thủ công. Nếu bạn muốn bất đồng bộ, hãy thay OpenAI() bằng AsyncOpenAI() và sử dụng async with cùng với async for, tên sự kiện và hình dạng giống hệt nhau.

Công cụ tích hợp: Tìm kiếm Web, Tìm kiếm Tệp, Thông dịch Mã, Sử dụng Máy tính, Tạo hình ảnh

Responses API đi kèm năm công cụ tích hợp: web_search để tìm kiếm internet trực tiếp, file_search để truy xuất kho vector, code_interpreter để thực thi Python trong môi trường sandbox, computer_use để tự động hóa trình duyệt/máy tính để bàn, và image_generation để tạo hình ảnh nội tuyến. Bật bất kỳ công cụ nào bằng cách thêm {"type": "<tool_name>"} vào mảng tools.

Đây là ma trận mà chúng tôi luôn ghim bên cạnh trình soạn thảo:

Công cụMục đíchChi phíCó trạng tháiMô hìnhSẵn sàng cho sản xuất (Tháng 4/2026)
web_searchTìm kiếm internet trực tiếpPhụ phí mỗi lần gọiKhônggpt-5, gpt-4.1Có
file_searchRAG kho vectorMỗi lần gọi + lưu trữCó (kho vector)gpt-5, gpt-4.1, dòng oCó
code_interpreterPython sandboxMỗi phiênCó (container)gpt-5, dòng oCó
computer_useĐiều khiển trình duyệt/máy tínhPhụ phí mỗi lần gọiMỗi phiêngpt-5 (xem trước)Xem trước
image_generationTạo hình ảnh nội tuyếnMỗi hình ảnhKhônggpt-5, gpt-image-1Có

Khi chúng tôi đo hiệu năng web_search trong pipeline của mình, độ trễ tăng thêm 1,5–3 giây ở lần gọi đầu tiên nhưng được lưu cache cho các lần lặp lại, hãy tính toán điều này trong giao diện người dùng. Ví dụ tìm kiếm web trong OpenAI Cookbook là tài liệu tham khảo sạch nhất nếu bạn muốn tìm hiểu sâu hơn.

Tìm kiếm Web

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}")

Tìm kiếm Tệp

Tìm kiếm tệp là một vũ điệu hai bước: tạo một kho vector, tải lên các tệp của bạn, sau đó tham chiếu ID kho trong mảng tools của bạn.

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)

Thông dịch Mã

Cần mô hình chạy Python trên một file CSV và vẽ biểu đồ? code_interpreter thực hiện điều đó trong một container sandbox.

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)

Container tồn tại qua các lần gọi trong cùng một phiên, hữu ích khi bạn muốn mô hình tiếp tục lặp lại trên một dataframe.

Sử dụng Máy tính

Vẫn đang trong giai đoạn xem trước tính đến tháng 4 năm 2026. Mô hình nhận được một trình duyệt/máy tính để bàn ảo và nhấp chuột xung quanh để hoàn thành nhiệm vụ. Bỏ qua nó trừ khi bạn có một trường hợp sử dụng tự động hóa trình duyệt cụ thể mà thế giới Playwright/Selenium chưa thể giải quyết.

Tạo hình ảnh

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)

Gọi hàm với các công cụ tùy chỉnh

Gọi hàm trong Responses API cho phép mô hình kích hoạt các hàm Python của riêng bạn. Định nghĩa mỗi hàm dưới dạng lược đồ JSON trong mảng tools, thực hiện lệnh gọi, kiểm tra response.output để tìm các mục function_call, thực thi hàm và truyền kết quả lại qua function_call_output.

Responses API biến việc gọi hàm từ một vũ điệu 4 bước thành một vòng quay khứ hồi duy nhất khi bạn để vòng lặp tác nhân xử lý nó cho bạn. Dưới đây là ví dụ đầy đủ về chuyển đổi tiền tệ:

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)

Đó là toàn bộ vòng lặp. Nếu bạn mới làm quen với mẫu này, bài viết những kiến thức cơ bản về gọi hàm của chúng tôi sẽ đi qua mô hình khái niệm, và chúng tôi duy trì một danh sách tổng hợp các thư viện gọi hàm nếu bạn không muốn tự viết lược đồ. Tham số tool_choice (đặt thành "auto", "required" hoặc một tên công cụ cụ thể) là đòn bẩy của bạn để buộc hoặc cấm một lệnh gọi công cụ khi bạn cần tính xác định.

Đầu ra có cấu trúc (Lược đồ JSON và Pydantic)

Đầu ra có cấu trúc đảm bảo mô hình trả về JSON tuân thủ lược đồ của bạn. Truyền tham số response_format={"type": "json_schema", "json_schema": {...}} hoặc, với Python SDK, truyền trực tiếp một mô hình Pydantic qua client.responses.parse(). Mô hình bị ràng buộc tại thời điểm giải mã, không chỉ qua prompt.

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)

Cách tiếp cận Pydantic là cái bạn muốn 95% thời gian, an toàn về kiểu, ít mã boilerplate hơn và IDE của bạn sẽ tự động hoàn thành kết quả. Chỉ sử dụng lược đồ JSON thô khi bạn cần chia sẻ lược đồ đa ngôn ngữ hoặc khi lược đồ được tạo động. Chúng tôi đi sâu vào các đánh đổi trong hướng dẫn đầu ra có cấu trúc và lược đồ JSON và bài nhập môn Pydantic cho lược đồ an toàn kiểu của chúng tôi.

Quản lý trạng thái: previous_response_id, Conversations API và store=true

Sử dụng previous_response_id cho ngữ cảnh nhiều lượt nhẹ nhàng, Conversations API cho các phiên có luồng đáng tin cậy, hoặc gửi toàn bộ lịch sử tin nhắn để kiểm soát hoàn toàn phía máy khách. previous_response_id yêu cầu store: true và chỉ tồn tại cho các phản hồi được lưu cache; hãy quay lại lịch sử đầy đủ nếu ID không thể giải quyết được.

Phương phápSử dụng khiĐộ bềnĐộ phức tạp mã
previous_response_idChatbot nhanh, luồng ngắn30 ngày (mặc định), yêu cầu store: trueThấp nhất
Conversations APILuồng lâu dài, ứng dụng đa người dùngBền vững, bạn quản lý dọn dẹpTrung bình
Gửi lịch sử đầy đủKiểm soát hoàn toàn phía máy khách, nhật ký kiểm traBạn sở hữu nóCao nhất

Dưới đây là ví dụ hai lượt sử dụng 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..."

Nếu bạn quên store: true, previous_response_id của bạn sẽ không giải quyết được gì và mô hình bắt đầu lại từ đầu ở mỗi lượt. Chúng tôi đã mất một giờ để gỡ lỗi vấn đề này, API không báo lỗi, nó chỉ đơn giản là khiến bạn rơi vào tình trạng mất trí nhớ. Thời gian lưu trữ mặc định là 30 ngày; nếu bạn cần lâu hơn, hãy chuyển sang Conversations API, nơi cung cấp cho bạn quyền kiểm soát rõ ràng vòng đời của luồng.

Khi nào bạn nên nâng cấp lên Conversations API? Khi bạn có nhiều người dùng trong một ứng dụng, khi các luồng tồn tại lâu hơn một phiên duy nhất, hoặc khi bạn muốn chỉnh sửa/phân nhánh tin nhắn phía máy chủ. Đối với một chatbot nhanh, previous_response_id là quá đủ.

Cách di chuyển từ Chat Completions sang Responses API

Việc di chuyển từ Chat Completions sang Responses API mất ba bước: thay đổi /v1/chat/completions thành /v1/responses, thay thế messages bằng input, và thay thế lược đồ tools bằng định dạng mới. Gọi hàm và đầu vào đa phương thức cần xử lý hơi khác một chút. OpenAI cung cấp một gói di chuyển chính thức trên GitHub.

Bước 1 — Thay đổi điểm cuối:

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

Bước 2 — Đổi tên 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.",
)

Bước 3 — Cập nhật lược đồ công cụ:

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"}}},
}]

Chỉ có vậy. Chuyển lưu lượng truy cập dần dần với cờ tính năng, giữ đường dẫn mã Chat Completions của bạn hoạt động đằng sau cùng một giao diện trong một hoặc hai tuần, ghi nhật ký cả hai hình dạng phản hồi cạnh nhau và chỉ chuyển 100% khi bạn đã xác minh sự tương đương. Gói di chuyển trên kho openai-cookbook có một mẫu adapter đầy đủ hơn nếu bạn muốn tham khảo.

Cách sử dụng MCP và các máy chủ MCP từ xa với Responses API

Responses API hỗ trợ các máy chủ MCP (Model Context Protocol) từ xa như một loại công cụ. Thêm một mục như {"type": "mcp", "server_url": "https://mcp.example.com", "server_label": "..."} vào mảng tools. Mô hình khám phá danh mục công cụ của máy chủ MCP và gọi chúng giống như các công cụ tích hợp.

Nếu bạn chưa bao giờ động đến MCP, đây là lời chào hàng 30 giây: đó là một giao thức mở cho phép bất kỳ dịch vụ nào phơi bày API của nó dưới dạng danh mục công cụ mà mô hình có thể gọi. Shopify, Stripe, GitHub và một danh sách ngày càng tăng các nhà cung cấp chạy các điểm cuối MCP công khai. Bài phân tích sâu về Model Context Protocol (MCP) của chúng tôi bao quát chính giao thức này.

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)

Hãy coi các máy chủ MCP như bất kỳ API bên thứ ba nào. require_approval: "never" là ổn cho các nguyên mẫu; trong môi trường sản xuất, bạn muốn "always" (hoặc danh sách trắng công cụ) để một máy chủ MCP bị xâm phạm không thể âm thầm rò rỉ dữ liệu. Hãy kiểm tra danh mục công cụ của máy chủ trước khi trỏ tác nhân của bạn vào đó.

Giá cả, Giới hạn tốc độ và các vấn đề cần lưu ý trong sản xuất

Giá của Responses API khớp với Chat Completions về chi phí token (prompt + hoàn thành), với phụ phí mỗi lần gọi cho các công cụ tích hợp (web_search, file_search). Giới hạn tốc độ tuân theo tầng OpenAI hiện tại của bạn. Các vấn đề phổ biến trong sản xuất bao gồm mặc định lưu trữ store: true, lỗi 429 thoáng qua khi lưu lượng bùng nổ và độ trễ tính năng của biến thể Azure.

Họ mô hìnhResponses APICông cụ tích hợpNỗ lực lập luậnStreamingTầng chi phí
gpt-5CóTất cả 5 + MCPN/ACóXem giá OpenAI
gpt-5-miniCóTất cả 5 + MCPN/ACóThấp hơn gpt-5
gpt-4.1Cóweb/file/code/imageN/ACóTrung bình
Dòng o (lập luận)Cófile/codelow/medium/highCóCao nhất mỗi token
gpt-image-1Chỉ công cụ tạo ảnh,,KhôngMỗi hình ảnh

Giá cả thay đổi, hãy luôn xác minh trên trang giá của OpenAI tại thời điểm viết bài.

Để xử lý lỗi, hãy bọc các lệnh gọi trong try/except openai.RateLimitError và try/except openai.APIStatusError, với cơ chế thử lại theo cấp số nhân thông qua 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)

Chúng tôi đã gặp lỗi 429 thoáng qua trên một đợt 20 yêu cầu song song trong môi trường staging, tenacity với cơ chế thử lại theo cấp số nhân đã khắc phục nó một cách sạch sẽ. Chuỗi lỗi chúng tôi đã ghi nhật ký là openai.RateLimitError: Error code: 429 - {'error': {'message': 'Rate limit reached for gpt-5 in organization org-... on requests per min (RPM)'}}. Đọc nó một lần và bỏ qua; decorator thử lại sẽ xử lý phần còn lại.

Lưu ý về biến thể Azure: Azure OpenAI phơi bày Responses API nhưng chậm hơn 4–8 tuần so với các đợt triển khai do Sam Altman kiểm soát. Tính đến tháng 4 năm 2026, hỗ trợ MCP trên Azure chỉ ở giai đoạn xem trước, hãy xác nhận với tài liệu Azure OpenAI Responses API của Microsoft Learn trước khi bạn triển khai.

Tương thích cổng kết nối: nếu bạn proxy OpenAI qua LiteLLM proxy, hỗ trợ Responses API đã có vào năm 2026. Hầu hết các cổng kết nối khác đang bắt kịp. Và đối với các đợt triển khai sản xuất, bạn sẽ muốn thiết lập khả năng quan sát và ghi nhật ký AI trước khi chuyển lưu lượng, các sự kiện Responses API phong phú hơn Chat Completions và bạn sẽ muốn ghi nhật ký mọi lệnh gọi công cụ.

Khi nào KHÔNG sử dụng Responses API

Bỏ qua Responses API cho âm thanh thời gian thực độ trễ thấp (sử dụng Realtime API), tạo embedding (sử dụng Embeddings API) và quy trình tinh chỉnh. Ở lại với Chat Completions nếu cổng kết nối/proxy của bạn chưa hỗ trợ Responses (hầu hết đều hỗ trợ qua LiteLLM tính đến năm 2026).

Một vài lý do loại trừ trung thực khác:

  • Tác nhân giọng nói thời gian thực, Realtime API sử dụng WebSockets và được xây dựng cho việc luân phiên dưới một giây. Streaming của Responses API là HTTP SSE; nó sẽ cảm thấy chậm chạp đối với giọng nói.
  • Pipeline embeddings thuần túy, client.embeddings.create() rẻ hơn, nhanh hơn và là thứ mà mọi tích hợp cơ sở dữ liệu vector mong đợi.
  • Tinh chỉnh, bạn đào tạo và triển khai các bản tinh chỉnh thông qua API tinh chỉnh; sau đó bạn có thể gọi chúng thông qua Responses, nhưng bản thân việc đào tạo không phải là quy trình Responses.
  • Công việc Batch API, nếu bạn đang xử lý một triệu prompt qua đêm với giảm giá 50%, Batch API vẫn thắng về giá.
  • Ngữ nghĩa Chat Completions bị khóa, nếu cách sử dụng eval, khả năng quan sát và thư viện prompt của bạn đều giả định chat.completions.choices[0].message.content, chi phí di chuyển là có thật. Đừng di chuyển chỉ vì nó mới hơn.

Nếu ngăn xếp của bạn hạnh phúc với Chat Completions và bạn không xây dựng các tác nhân, việc di chuyển không miễn phí, sprint Q2 của bạn có thể không cần nó. Mới hơn không có nghĩa là tốt hơn cho bạn, Responses API là nguyên thủy phù hợp cho các tác nhân, không phải cho mọi khối lượng công việc OpenAI.

Câu hỏi thường gặp

OpenAI Responses API là gì?

OpenAI Responses API là một nguyên thủy thống nhất ra mắt vào tháng 3 năm 2025, kết hợp sự đơn giản của Chat Completions với khả năng sử dụng công cụ của Assistants API. Nó hỗ trợ đầu vào văn bản và hình ảnh, năm công cụ tích hợp, gọi hàm, đầu ra có cấu trúc, streaming và các cuộc hội thoại có trạng thái thông qua previous_response_id.

OpenAI Responses API được phát hành khi nào?

OpenAI đã công bố Responses API vào ngày 11 tháng 3 năm 2025 cùng với thông báo rộng hơn về "các công cụ mới để xây dựng tác nhân". API này đã có sẵn chung kể từ khi ra mắt, với Conversations API, hỗ trợ MCP và công cụ image_generation được thêm vào trong các bản cập nhật tăng dần suốt năm 2025 và đầu năm 2026.

OpenAI Responses API có trạng thái không?

Có, tùy chọn. Truyền previous_response_id cùng với store: true và mô hình sẽ mang ngữ cảnh qua các lần gọi mà không cần bạn gửi toàn bộ lịch sử. Đối với các luồng tồn tại lâu dài, Conversations API cung cấp cho bạn quyền quản lý vòng đời luồng rõ ràng. Bạn cũng có thể giữ trạng thái không và gửi toàn bộ lịch sử ở mỗi lượt, giống như Chat Completions.

Sự khác biệt giữa Responses API và Chat Completions là gì?

Responses API là tập siêu hợp của Chat Completions. Mọi tính năng của Chat Completions đều hoạt động trong Responses, cộng thêm các công cụ tích hợp (web_search, file_search, v.v.), khả năng lưu trạng thái thông qua previous_response_id và vòng lặp tác nhân như một khái niệm hạng nhất. OpenAI khuyến nghị sử dụng Responses cho tất cả các dự án mới tính đến năm 2026.

API Chat Completions có bị loại bỏ không?

Không. Tính đến tháng 4 năm 2026, Chat Completions không bị loại bỏ, nó vẫn được hỗ trợ đầy đủ. OpenAI khuyến nghị sử dụng Responses cho các dự án mới và hầu hết các hướng dẫn dạng tác nhân đều giả định Responses. Chat Completions hiện là nguyên thủy di sản: ổn định, nhưng không còn là nơi các tính năng mới ra mắt đầu tiên.

Những mô hình OpenAI nào hỗ trợ Responses API?

GPT-5, gpt-5-mini, gpt-4.1 và các mô hình lập luận dòng o đều hỗ trợ Responses API. Dòng o bổ sung tham số reasoning_effort (low, medium, high) cho các khối lượng công việc suy nghĩ mở rộng. Tạo hình ảnh được định tuyến thông qua gpt-image-1 ngầm định khi bạn bật công cụ image_generation.

Làm thế nào để di chuyển từ Chat Completions sang Responses API?

Ba bước: chuyển client.chat.completions.create() sang client.responses.create(), thay thế mảng messages bằng input (và chuyển prompt hệ thống sang instructions), và làm phẳng lược đồ công cụ của bạn (bỏ khóa function lồng nhau). Gói di chuyển của OpenAI trên GitHub có các ví dụ adapter đầy đủ.

Responses API có hỗ trợ streaming không?

Có. Truyền stream=True cho client.responses.create() (hoặc sử dụng client.responses.stream() như một trình quản lý ngữ cảnh) và lặp qua các Server-Sent Events có kiểu. Các sự kiện luồng token bạn sẽ xử lý là response.output_text.delta cho nội dung và response.completed cho tải trọng cuối cùng. Streaming bất đồng bộ hoạt động thông qua AsyncOpenAI.

Tôi có thể sử dụng Responses API trên Azure không?

Có. Azure OpenAI phơi bày Responses API, nhưng tính năng tương đương chậm hơn 4–8 tuần so với các đợt triển khai trực tiếp của OpenAI. Tính đến tháng 4 năm 2026, hỗ trợ MCP trên Azure đang ở giai đoạn xem trước. Hãy kiểm tra Microsoft Learn để biết các đặc thù cụ thể của Azure hiện tại trước khi bạn triển khai vào sản xuất.

Responses API có hoạt động với các máy chủ MCP không?

Có, các máy chủ MCP (Model Context Protocol) từ xa là một loại công cụ hạng nhất. Thêm {"type": "mcp", "server_url": "...", "server_label": "..."} vào mảng tools của bạn và mô hình sẽ khám phá và gọi danh mục công cụ của máy chủ giống như bất kỳ công cụ tích hợp nào. Sử dụng require_approval: "always" trong sản xuất để đảm bảo an ninh.

Tổng kết

Bạn giờ đã có bức tranh toàn cảnh về Responses API: cách nó khác với Chat Completions, cách triển khai lệnh gọi đầu tiên, cách kết nối các công cụ tích hợp và cách di chuyển một dự án Chat Completions hiện có trong ba bước. Một vài điểm chính cần ghi nhớ:

  • Xây dựng trước, sau đó tối ưu hóa. Bắt đầu với ví dụ hello-world, thêm một công cụ tích hợp, sau đó thêm lớp trạng thái với previous_response_id.
  • Di chuyển dần dần. Sử dụng cờ tính năng, ghi nhật ký cả hai hình dạng phản hồi, chỉ chuyển 100% sau khi xác minh sự tương đương.
  • Triển khai tích hợp MCP. Đây là biên giới của năm 2026, hầu hết các nhà cung cấp đang đua nhau phơi bày các điểm cuối MCP và Responses API là cách sạch nhất để tiêu thụ chúng.

Tại Techsy, chúng tôi giúp các đội ngũ triển khai các tích hợp OpenAI cấp độ sản xuất, bao gồm cả việc triển khai Responses API và di chuyển Chat Completions. Nhận tư vấn miễn phí.


Bởi đội ngũ biên tập Techsy, các kỹ sư sản xuất triển khai tích hợp OpenAI từ năm 2024. Cập nhật lần cuối: 25 tháng 4 năm 2026.

Thẻ

hướng dẫn openai responses apiopenai responses apidi chuyển chat completionsgọi hàmmcppython sdk

Chia sẻ bài viết này

Bài viết liên quan

Thêm từ chuyên mục ai-machine-learning

ai-machine-learning
Jul 20, 2026

8 API Web Scraping AI Tốt Nhất Năm 2026 (Đã Kiểm Thử Trên Chính Agent Stack Của Chúng Tôi)

Chúng tôi đã kiểm thử 8 API web scraping AI với mức giá thực tế năm 2026 được kéo qua chính agent stack của mình. Firecrawl, Bright Data, ScrapingBee và 5 công cụ khác, xếp hạng theo đầu ra sẵn sàng cho LLM, khả năng vượt anti-bot và hỗ trợ MCP.

9 min read phút đọc
Đọc
ai-machine-learning
Jul 20, 2026

Kỹ thuật Prompt cho Lập trình: 7 Mẫu Chúng Tôi Dùng Hàng Ngày trong Claude Code và Cursor (2026)

Hầu hết các bài viết về 'prompt lập trình AI' chỉ đưa cho bạn 50 mẫu để sao chép. Bài này dạy 7 mẫu chúng tôi dùng mỗi ngày để vận hành quy trình Claude Code gồm 16 agent, với ví dụ thực tế trước-và-sau cho từng mẫu, cùng vị trí áp dụng từng mẫu trong Claude Code, Cursor và Copilot năm 2026.

11 min read phút đọc
Đọc
ai-machine-learning
Jul 19, 2026

Từ PoC AI đến Production: Checklist 12 Điểm Trước Khi Phát Hành

Một bản demo AI chạy được không phải là một hệ thống production. Checklist 12 điểm này đi qua ba giai đoạn mà mọi tính năng AI đều cần trước khi ra mắt: củng cố, ổn định hóa và triển khai, với các ngưỡng cụ thể cho giới hạn chi phí, giới hạn tốc độ, phương án dự phòng và điều kiện kích hoạt hoàn tác.

10 min read phút đọc
Đọc
Xem tất cả bài viết
Khởi động dự án của bạn

Sẵn sàng tạo nên điều gì đó đột phá?

Hãy biến tầm nhìn của bạn thành hiện thực. Đội ngũ của chúng tôi sẵn sàng đồng hành cùng bạn tạo ra phần mềm tạo nên sự khác biệt.

Đặt lịch gọi ý tưởng 30 phútXem dự án của chúng tôi

Công cụ hot trong kho

Claude Skills

Xem tất cả
  • 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.

Tự động hoá AI

Xem tất cả
  • 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.

Công cụ hot trong kho

Claude Skills

Xem tất cả
  • 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.

Tự động hoá AI

Xem tất cả
  • 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.

Dịch vụ

  • Giải pháp doanh nghiệp
  • Ứng dụng di động
  • Ứng dụng web

Giải pháp

  • Hệ thống CRM
  • Tích hợp AI
  • Giải pháp ERP
  • Voice Agent
  • Tự động hóa quy trình
  • Bảo mật thông tin

Thư viện

  • Blog
  • Dự án

Cộng đồng

  • Tự động hoá AI
  • Claude Skills

Công cụ

  • Tính phí làm ứng dụng mobile
  • Tính phí dùng OpenAI / LLM API
  • Tính phí làm MVP
  • Tính phí làm Voice AI Agent

Công ty

  • Giới thiệu
  • Cộng sự
  • Liên hệ

Pháp lý

  • Chính sách quyền riêng tư
  • Điều khoản dịch vụ
  • Chính sách cookie

Dịch vụ

  • Giải pháp doanh nghiệp
  • Ứng dụng di động
  • Ứng dụng web

Giải pháp

  • Hệ thống CRM
  • Tích hợp AI
  • Giải pháp ERP
  • Voice Agent
  • Tự động hóa quy trình
  • Bảo mật thông tin

Thư viện

  • Blog
  • Dự án

Cộng đồng

  • Tự động hoá AI
  • Claude Skills

Công cụ

  • Tính phí làm ứng dụng mobile
  • Tính phí dùng OpenAI / LLM API
  • Tính phí làm MVP
  • Tính phí làm Voice AI Agent

Công ty

  • Giới thiệu
  • Cộng sự
  • Liên hệ
Pháp lýChính sách quyền riêng tưĐiều khoản dịch vụChính sách cookie
TECHSY
© 2026 Techsy. Bảo lưu mọi quyền.