Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Responses API adalah API stateful baru dari Azure OpenAI. Ini menggabungkan kemampuan terbaik dari penyelesaian obrolan dan API asisten dalam satu pengalaman terpadu. API Response juga menambahkan dukungan untuk model computer-use-preview baru yang mendukung kemampuan penggunaan komputer.
Respons API
Dukungan API
Ketersediaan Wilayah
API respons saat ini tersedia di wilayah berikut:
- australiaeast
- Brasil Selatan
- kanadacentral
- kanada timur
- eastus
- eastus2
- francecentral
- Jerman Barat Tengah
- Italia Utara
- japaneast
- koreacentral
- northcentralus
- norwayeast
- polandcentral
- southafricanorth
- southcentralus
- southeastasia
- southindia
- spaincentral
- swedencentral
- switzerlandnorth
- uaenorth
- uksouth
- westus
- westus3
Dukungan model
-
gpt-5.1-codex-max(Versi:2025-12-04) -
gpt-5.1(Versi:2025-11-13) -
gpt-5.1-chat(Versi:2025-11-13) -
gpt-5.1-codex(Versi:2025-11-13) -
gpt-5.1-codex-mini(Versi:2025-11-13) -
gpt-5-pro(Versi:2025-10-06) -
gpt-5-codex(Versi:2025-09-11) -
gpt-5(Versi:2025-08-07) -
gpt-5-mini(Versi:2025-08-07) -
gpt-5-nano(Versi:2025-08-07) -
gpt-5-chat(Versi:2025-08-07) -
gpt-5-chat(Versi:2025-10-03) -
gpt-5-codex(Versi:2025-09-15) -
gpt-4o(Versi:2024-11-20,2024-08-06,2024-05-13) -
gpt-4o-mini(Versi:2024-07-18) computer-use-preview-
gpt-4.1(Versi:2025-04-14) -
gpt-4.1-nano(Versi:2025-04-14) -
gpt-4.1-mini(Versi:2025-04-14) -
gpt-image-1(Versi:2025-04-15) -
gpt-image-1-mini(Versi:2025-10-06) -
o1(Versi:2024-12-17) -
o3-mini(Versi:2025-01-31) -
o3(Versi:2025-04-16) -
o4-mini(Versi:2025-04-16)
Tidak setiap model tersedia di wilayah yang didukung oleh API respons. Periksa halaman model untuk ketersediaan wilayah model.
Note
Saat ini tidak didukung:
- Pemadatan dengan
/responses/compact - Pembuatan gambar menggunakan pengeditan multi-tahap dan streaming.
- Gambar tidak dapat diunggah sebagai file lalu direferensikan sebagai input.
Ada masalah yang diketahui dengan hal berikut:
- PDF sebagai file input sekarang didukung, tetapi pengaturan tujuan unggahan file
user_datasaat ini tidak didukung. - Masalah performa saat mode latar belakang digunakan dengan streaming. Masalah ini diperkirakan akan segera diselesaikan.
Dokumentasi rujukan
Mulai menggunakan API respons
Untuk mengakses perintah API respons, Anda perlu meningkatkan versi pustaka OpenAI Anda.
pip install --upgrade openai
Membuat respons teks
import os
from openai import OpenAI
client = OpenAI(
api_key=os.getenv("AZURE_OPENAI_API_KEY"),
base_url="https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/",
)
response = client.responses.create(
model="gpt-4.1-nano", # Replace with your model deployment name
input="This is a test.",
)
print(response.model_dump_json(indent=2))
Important
Gunakan kunci API dengan hati-hati. Jangan sertakan kunci API langsung dalam kode Anda, dan jangan pernah mempostingnya secara publik. Jika Anda menggunakan kunci API, simpan dengan aman di Azure Key Vault. Untuk informasi selengkapnya tentang menggunakan kunci API dengan aman di aplikasi Anda, lihat Kunci API dengan Azure Key Vault.
Untuk informasi selengkapnya tentang keamanan layanan AI, lihat Mengautentikasi permintaan ke layanan Azure AI.
Mendapatkan tanggapan
Untuk mengambil respons dari panggilan sebelumnya ke API respons.
import os
from openai import OpenAI
client = OpenAI(
api_key=os.getenv("AZURE_OPENAI_API_KEY"),
base_url="https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/",
)
response = client.responses.retrieve("resp_67cb61fa3a448190bcf2c42d96f0d1a8")
Important
Gunakan kunci API dengan hati-hati. Jangan sertakan kunci API langsung dalam kode Anda, dan jangan pernah mempostingnya secara publik. Jika Anda menggunakan kunci API, simpan dengan aman di Azure Key Vault. Untuk informasi selengkapnya tentang menggunakan kunci API dengan aman di aplikasi Anda, lihat Kunci API dengan Azure Key Vault.
Untuk informasi selengkapnya tentang keamanan layanan AI, lihat Mengautentikasi permintaan ke layanan Azure AI.
Hapus tanggapan
Secara default, data respons dipertahankan selama 30 hari. Untuk menghapus respons, Anda dapat menggunakan response.delete ("{response_id}")
import os
from openai import OpenAI
client = OpenAI(
base_url = "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/",
api_key=os.getenv("AZURE_OPENAI_API_KEY")
)
response = client.responses.delete("resp_67cb61fa3a448190bcf2c42d96f0d1a8")
print(response)
Menautkan respons bersama
Anda dapat menautkan respons bersama-sama dengan meneruskan response.id dari respons sebelumnya ke previous_response_id parameter .
import os
from openai import OpenAI
client = OpenAI(
base_url = "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/",
api_key=os.getenv("AZURE_OPENAI_API_KEY")
)
response = client.responses.create(
model="gpt-4o", # replace with your model deployment name
input="Define and explain the concept of catastrophic forgetting?"
)
second_response = client.responses.create(
model="gpt-4o", # replace with your model deployment name
previous_response_id=response.id,
input=[{"role": "user", "content": "Explain this at a level that could be understood by a college freshman"}]
)
print(second_response.model_dump_json(indent=2))
Catat dari outputnya bahwa meskipun kami tidak pernah membagikan pertanyaan input pertama dengan panggilan API second_response, dengan meneruskan previous_response_id, model memiliki konteks penuh dari pertanyaan dan respons sebelumnya untuk menjawab pertanyaan baru.
Output:
{
"id": "resp_67cbc9705fc08190bbe455c5ba3d6daf",
"created_at": 1741408624.0,
"error": null,
"incomplete_details": null,
"instructions": null,
"metadata": {},
"model": "gpt-4o-2024-08-06",
"object": "response",
"output": [
{
"id": "msg_67cbc970fd0881908353a4298996b3f6",
"content": [
{
"annotations": [],
"text": "Sure! Imagine you are studying for exams in different subjects like math, history, and biology. You spend a lot of time studying math first and get really good at it. But then, you switch to studying history. If you spend all your time and focus on history, you might forget some of the math concepts you learned earlier because your brain fills up with all the new history facts. \n\nIn the world of artificial intelligence (AI) and machine learning, a similar thing can happen with computers. We use special programs called neural networks to help computers learn things, sort of like how our brain works. But when a neural network learns a new task, it can forget what it learned before. This is what we call \"catastrophic forgetting.\"\n\nSo, if a neural network learned how to recognize cats in pictures, and then you teach it how to recognize dogs, it might get really good at recognizing dogs but suddenly become worse at recognizing cats. This happens because the process of learning new information can overwrite or mess with the old information in its \"memory.\"\n\nScientists and engineers are working on ways to help computers remember everything they learn, even as they keep learning new things, just like students have to remember math, history, and biology all at the same time for their exams. They use different techniques to make sure the neural network doesn’t forget the important stuff it learned before, even when it gets new information.",
"type": "output_text"
}
],
"role": "assistant",
"status": null,
"type": "message"
}
],
"parallel_tool_calls": null,
"temperature": 1.0,
"tool_choice": null,
"tools": [],
"top_p": 1.0,
"max_output_tokens": null,
"previous_response_id": "resp_67cbc96babbc8190b0f69aedc655f173",
"reasoning": null,
"status": "completed",
"text": null,
"truncation": null,
"usage": {
"input_tokens": 405,
"output_tokens": 285,
"output_tokens_details": {
"reasoning_tokens": 0
},
"total_tokens": 690
},
"user": null,
"reasoning_effort": null
}
Penghubungan tanggapan secara manual
Atau Anda dapat menautkan respons secara manual bersama-sama menggunakan metode di bawah ini:
import os
from openai import OpenAI
client = OpenAI(
base_url = "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/",
api_key=os.getenv("AZURE_OPENAI_API_KEY")
)
inputs = [{"type": "message", "role": "user", "content": "Define and explain the concept of catastrophic forgetting?"}]
response = client.responses.create(
model="gpt-4o", # replace with your model deployment name
input=inputs
)
inputs += response.output
inputs.append({"role": "user", "type": "message", "content": "Explain this at a level that could be understood by a college freshman"})
second_response = client.responses.create(
model="gpt-4o",
input=inputs
)
print(second_response.model_dump_json(indent=2))
Streaming
import os
from openai import OpenAI
client = OpenAI(
base_url = "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/",
api_key=os.getenv("AZURE_OPENAI_API_KEY")
)
response = client.responses.create(
input = "This is a test",
model = "o4-mini", # replace with model deployment name
stream = True
)
for event in response:
if event.type == 'response.output_text.delta':
print(event.delta, end='')
Panggilan fungsi
API respons mendukung panggilan fungsi.
import os
from openai import OpenAI
client = OpenAI(
base_url = "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/",
api_key=os.getenv("AZURE_OPENAI_API_KEY")
)
response = client.responses.create(
model="gpt-4o", # replace with your model deployment name
tools=[
{
"type": "function",
"name": "get_weather",
"description": "Get the weather for a location",
"parameters": {
"type": "object",
"properties": {
"location": {"type": "string"},
},
"required": ["location"],
},
}
],
input=[{"role": "user", "content": "What's the weather in San Francisco?"}],
)
print(response.model_dump_json(indent=2))
# To provide output to tools, add a response for each tool call to an array passed
# to the next response as `input`
input = []
for output in response.output:
if output.type == "function_call":
match output.name:
case "get_weather":
input.append(
{
"type": "function_call_output",
"call_id": output.call_id,
"output": '{"temperature": "70 degrees"}',
}
)
case _:
raise ValueError(f"Unknown function call: {output.name}")
second_response = client.responses.create(
model="gpt-4o",
previous_response_id=response.id,
input=input
)
print(second_response.model_dump_json(indent=2))
Penerjemah Kode
Alat Penerjemah Kode memungkinkan model menulis serta menjalankan kode Python di lingkungan yang aman dan sandbox. Ini mendukung berbagai tugas tingkat lanjut, termasuk:
- Memproses file dengan format dan struktur data yang bervariasi
- Membuat file yang menyertakan data dan visualisasi (misalnya, grafik)
- Menulis dan menjalankan kode secara berulang untuk menyelesaikan masalah—model dapat men-debug dan mencoba kembali kode hingga berhasil
- Meningkatkan penalaran visual dalam model yang didukung (misalnya, o3, o4-mini) dengan mengaktifkan transformasi gambar seperti pemotongan, perbesar tampilan, dan rotasi
- Alat ini sangat berguna untuk skenario yang melibatkan analisis data, komputasi matematika, dan pembuatan kode.
curl https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/responses?api-version=preview \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $AZURE_OPENAI_AUTH_TOKEN" \
-d '{
"model": "gpt-4.1",
"tools": [
{ "type": "code_interpreter", "container": {"type": "auto"} }
],
"instructions": "You are a personal math tutor. When asked a math question, write and run code using the python tool to answer the question.",
"input": "I need to solve the equation 3x + 11 = 14. Can you help me?"
}'
import os
from openai import OpenAI
client = OpenAI(
base_url = "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/",
api_key=os.getenv("AZURE_OPENAI_API_KEY")
)
instructions = "You are a personal math tutor. When asked a math question, write and run code using the python tool to answer the question."
response = client.responses.create(
model="gpt-4.1",
tools=[
{
"type": "code_interpreter",
"container": {"type": "auto"}
}
],
instructions=instructions,
input="I need to solve the equation 3x + 11 = 14. Can you help me?",
)
print(response.output)
Containers
Important
Penerjemah Kode memiliki biaya tambahan di luar biaya berbasis token untuk penggunaan Azure OpenAI. Jika API Respons Anda memanggil Penerjemah Kode secara bersamaan dalam dua utas yang berbeda, dua sesi penerjemah kode dibuat. Setiap sesi aktif secara default selama 1 jam dengan batas waktu diam 20 menit.
Alat Penerjemah Kode memerlukan kontainer—mesin virtual yang sepenuhnya terisolasi di mana model dapat menjalankan kode Python. Kontainer dapat menyertakan file yang diunggah atau file yang dihasilkan selama eksekusi.
Untuk membuat kontainer, tentukan "container": { "type": "auto", "file_ids": ["file-1", "file-2"] } dalam konfigurasi alat saat membuat objek Respons baru. Ini secara otomatis membuat kontainer baru atau menggunakan kembali kontainer aktif dari code_interpreter_call sebelumnya dalam konteks model.
code_interpreter_call dalam output API akan berisi container_id yang dihasilkan. Kontainer ini kedaluwarsa jika tidak digunakan selama 20 menit.
Input dan output berkas
Saat menjalankan Penerjemah Kode, model dapat membuat filenya sendiri. Misalnya, jika Anda memintanya untuk membuat plot, atau membuat CSV, itu membuat gambar-gambar ini langsung di kontainer Anda. Ini akan mengutip file-file ini dalam anotasi pesan berikutnya.
File apa pun dalam input model diunggah secara otomatis ke kontainer. Anda tidak perlu mengunggahnya secara eksplisit ke kontainer.
File yang Didukung
| Format berkas | MIME type |
|---|---|
.c |
text/x-c |
.cs |
text/x-csharp |
.cpp |
text/x-c++ |
.csv |
text/csv |
.doc |
application/msword |
.docx |
application/vnd.openxmlformats-officedocument.wordprocessingml.document |
.html |
text/html |
.java |
text/x-java |
.json |
application/json |
.md |
text/markdown |
.pdf |
application/pdf |
.php |
text/x-php |
.pptx |
application/vnd.openxmlformats-officedocument.presentationml.presentation |
.py |
text/x-python |
.py |
text/x-script.python |
.rb |
text/x-ruby |
.tex |
text/x-tex |
.txt |
text/plain |
.css |
text/css |
.js |
text/JavaScript |
.sh |
application/x-sh |
.ts |
application/TypeScript |
.csv |
application/csv |
.jpeg |
image/jpeg |
.jpg |
image/jpeg |
.gif |
image/gif |
.pkl |
application/octet-stream |
.png |
image/png |
.tar |
application/x-tar |
.xlsx |
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet |
.xml |
application/xml atau "text/xml" |
.zip |
application/zip |
Mencantumkan item input
import os
from openai import OpenAI
client = OpenAI(
base_url = "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/",
api_key=os.getenv("AZURE_OPENAI_API_KEY")
)
response = client.responses.input_items.list("resp_67d856fcfba0819081fd3cffee2aa1c0")
print(response.model_dump_json(indent=2))
Output:
{
"data": [
{
"id": "msg_67d856fcfc1c8190ad3102fc01994c5f",
"content": [
{
"text": "This is a test.",
"type": "input_text"
}
],
"role": "user",
"status": "completed",
"type": "message"
}
],
"has_more": false,
"object": "list",
"first_id": "msg_67d856fcfc1c8190ad3102fc01994c5f",
"last_id": "msg_67d856fcfc1c8190ad3102fc01994c5f"
}
Input gambar
Untuk model yang mendukung visi, gambar di PNG (.png), JPEG (.jpeg dan .jpg), WEBP (.webp) didukung.
URL gambar
import os
from openai import OpenAI
client = OpenAI(
base_url = "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/",
api_key=os.getenv("AZURE_OPENAI_API_KEY")
)
response = client.responses.create(
model="gpt-4o",
input=[
{
"role": "user",
"content": [
{ "type": "input_text", "text": "what is in this image?" },
{
"type": "input_image",
"image_url": "<image_URL>"
}
]
}
]
)
print(response)
Gambar yang dikodekan Base64
import base64
import os
from openai import OpenAI
client = OpenAI(
base_url = "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/",
api_key=os.getenv("AZURE_OPENAI_API_KEY")
)
def encode_image(image_path):
with open(image_path, "rb") as image_file:
return base64.b64encode(image_file.read()).decode("utf-8")
# Path to your image
image_path = "path_to_your_image.jpg"
# Getting the Base64 string
base64_image = encode_image(image_path)
response = client.responses.create(
model="gpt-4o",
input=[
{
"role": "user",
"content": [
{ "type": "input_text", "text": "what is in this image?" },
{
"type": "input_image",
"image_url": f"data:image/jpeg;base64,{base64_image}"
}
]
}
]
)
print(response)
Input file
Model dengan kemampuan penglihatan mendukung input PDF. File PDF dapat disediakan baik sebagai data yang dikodekan Base64 atau sebagai ID file. Untuk membantu model menafsirkan konten PDF, teks yang diekstrak dan gambar setiap halaman disertakan dalam konteks model. Ini berguna ketika informasi utama disampaikan melalui diagram atau konten non-tekstual.
Note
Semua teks dan gambar yang diekstrak dimasukkan ke dalam konteks model. Pastikan Anda memahami implikasi harga dan penggunaan token menggunakan PDF sebagai input.
Dalam satu permintaan API, ukuran konten yang diunggah di beberapa input (file) harus berada dalam panjang konteks model.
Hanya model yang mendukung input teks dan gambar yang dapat menerima file PDF sebagai input.
purposedariuser_datasaat ini tidak didukung. Sebagai solusi sementara, Anda harus mengatur tujuan keassistants.
Mengonversi PDF ke Base64 dan menganalisis
import base64
import os
from openai import OpenAI
client = OpenAI(
base_url = "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/",
api_key=os.getenv("AZURE_OPENAI_API_KEY")
)
with open("PDF-FILE-NAME.pdf", "rb") as f: # assumes PDF is in the same directory as the executing script
data = f.read()
base64_string = base64.b64encode(data).decode("utf-8")
response = client.responses.create(
model="gpt-4o-mini", # model deployment name
input=[
{
"role": "user",
"content": [
{
"type": "input_file",
"filename": "PDF-FILE-NAME.pdf",
"file_data": f"data:application/pdf;base64,{base64_string}",
},
{
"type": "input_text",
"text": "Summarize this PDF",
},
],
},
]
)
print(response.output_text)
Unggah PDF dan analisis
Unggah file PDF.
purpose dari user_data saat ini tidak didukung. Sebagai solusinya, Anda harus mengatur tujuan ke assistants.
import os
from openai import OpenAI
client = OpenAI(
base_url = "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/",
api_key=os.getenv("AZURE_OPENAI_API_KEY")
)
# Upload a file with a purpose of "assistants"
file = client.files.create(
file=open("nucleus_sampling.pdf", "rb"), # This assumes a .pdf file in the same directory as the executing script
purpose="assistants"
)
print(file.model_dump_json(indent=2))
file_id = file.id
Output:
{
"id": "assistant-KaVLJQTiWEvdz8yJQHHkqJ",
"bytes": 4691115,
"created_at": 1752174469,
"filename": "nucleus_sampling.pdf",
"object": "file",
"purpose": "assistants",
"status": "processed",
"expires_at": null,
"status_details": null
}
Anda kemudian akan mengambil nilai id dan meneruskan itu ke model untuk diproses di bawah file_id:
import os
from openai import OpenAI
client = OpenAI(
base_url = "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/",
api_key=os.getenv("AZURE_OPENAI_API_KEY")
)
response = client.responses.create(
model="gpt-4o-mini",
input=[
{
"role": "user",
"content": [
{
"type": "input_file",
"file_id":"assistant-KaVLJQTiWEvdz8yJQHHkqJ"
},
{
"type": "input_text",
"text": "Summarize this PDF",
},
],
},
]
)
print(response.output_text)
curl https://YOUR-RESOURCE-NAME.openai.azure.com/openai/files \
-H "Authorization: Bearer $AZURE_OPENAI_AUTH_TOKEN" \
-F purpose="assistants" \
-F file="@your_file.pdf" \
curl https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/responses \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $AZURE_OPENAI_AUTH_TOKEN" \
-d '{
"model": "gpt-4.1",
"input": [
{
"role": "user",
"content": [
{
"type": "input_file",
"file_id": "assistant-123456789"
},
{
"type": "input_text",
"text": "ASK SOME QUESTION RELATED TO UPLOADED PDF"
}
]
}
]
}'
Menggunakan server MCP jarak jauh
Anda dapat memperluas kemampuan model Anda dengan menghubungkannya ke alat yang dihosting di server Protokol Konteks Model Jarak Jauh (MCP). Server ini dikelola oleh pengembang dan organisasi dan mengekspos alat yang dapat diakses oleh klien yang kompatibel dengan MCP, seperti API Respons.
Model Context Protocol (MCP) adalah standar terbuka yang menentukan bagaimana aplikasi menyediakan alat dan data kontekstual ke model bahasa besar (LLM). Ini memungkinkan integrasi alat eksternal yang konsisten dan dapat diskalakan ke dalam alur kerja model.
Contoh berikut menunjukkan cara menggunakan server MCP fiktif untuk mengkueri informasi tentang Azure REST API. Ini memungkinkan model untuk mengambil dan menganalisis konten repositori secara real time.
curl https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/responses \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $AZURE_OPENAI_AUTH_TOKEN" \
-d '{
"model": "gpt-4.1",
"tools": [
{
"type": "mcp",
"server_label": "github",
"server_url": "https://contoso.com/Azure/azure-rest-api-specs",
"require_approval": "never"
}
],
"input": "What is this repo in 100 words?"
}'
import os
from openai import OpenAI
client = OpenAI(
base_url = "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/",
api_key=os.getenv("AZURE_OPENAI_API_KEY")
)
response = client.responses.create(
model="gpt-4.1", # replace with your model deployment name
tools=[
{
"type": "mcp",
"server_label": "github",
"server_url": "https://contoso.com/Azure/azure-rest-api-specs",
"require_approval": "never"
},
],
input="What transport protocols are supported in the 2025-03-26 version of the MCP spec?",
)
print(response.output_text)
Alat MCP hanya berfungsi di Responses API, dan tersedia di semua model yang lebih baru (gpt-4o, gpt-4.1, dan model penalaran kami). Saat menggunakan alat MCP, Anda hanya membayar token yang digunakan saat mengimpor definisi alat atau melakukan panggilan alat—tidak ada biaya tambahan yang terlibat.
Approvals
Secara default, API Respons memerlukan persetujuan eksplisit sebelum data dibagikan dengan server MCP jarak jauh. Langkah persetujuan ini membantu memastikan transparansi dan memberi Anda kontrol atas informasi apa yang dikirim secara eksternal.
Sebaiknya tinjau semua data yang dibagikan dengan server MCP jarak jauh dan secara opsional mencatatnya untuk tujuan audit.
Saat persetujuan diperlukan, model akan mengembalikan item mcp_approval_request dalam output respons. Objek ini berisi detail permintaan yang tertunda dan memungkinkan Anda memeriksa atau memodifikasi data sebelum melanjutkan.
{
"id": "mcpr_682bd9cd428c8198b170dc6b549d66fc016e86a03f4cc828",
"type": "mcp_approval_request",
"arguments": {},
"name": "fetch_azure_rest_api_docs",
"server_label": "github"
}
Untuk melanjutkan panggilan MCP jarak jauh, Anda harus menanggapi permintaan persetujuan dengan membuat objek respons baru yang menyertakan item mcp_approval_response. Objek ini mengonfirmasi niat Anda untuk mengizinkan model mengirim data yang ditentukan ke server MCP jarak jauh.
curl https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/responses \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $AZURE_OPENAI_AUTH_TOKEN" \
-d '{
"model": "gpt-4.1",
"tools": [
{
"type": "mcp",
"server_label": "github",
"server_url": "https://contoso.com/Azure/azure-rest-api-specs",
"require_approval": "never"
}
],
"previous_response_id": "resp_682f750c5f9c8198aee5b480980b5cf60351aee697a7cd77",
"input": [{
"type": "mcp_approval_response",
"approve": true,
"approval_request_id": "mcpr_682bd9cd428c8198b170dc6b549d66fc016e86a03f4cc828"
}]
}'
import os
from openai import OpenAI
client = OpenAI(
base_url = "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/",
api_key=os.getenv("AZURE_OPENAI_API_KEY")
)
response = client.responses.create(
model="gpt-4.1", # replace with your model deployment name
tools=[
{
"type": "mcp",
"server_label": "github",
"server_url": "https://contoso.com/Azure/azure-rest-api-specs",
"require_approval": "never"
},
],
previous_response_id="resp_682f750c5f9c8198aee5b480980b5cf60351aee697a7cd77",
input=[{
"type": "mcp_approval_response",
"approve": True,
"approval_request_id": "mcpr_682bd9cd428c8198b170dc6b549d66fc016e86a03f4cc828"
}],
)
Authentication
Important
- Klien MCP dalam API Respons memerlukan TLS 1.2 atau lebih tinggi.
- TLS bersama (mTLS) saat ini tidak didukung.
- Tag layanan Azure saat ini tidak didukung untuk lalu lintas klien MCP.
Tidak seperti server GitHub MCP, sebagian besar server MCP jarak jauh memerlukan autentikasi. Alat MCP di API Respons mendukung header kustom, memungkinkan Anda terhubung dengan aman ke server ini menggunakan skema autentikasi yang mereka butuhkan.
Anda dapat menentukan header seperti kunci API, token akses OAuth, atau info masuk lainnya langsung dalam permintaan Anda. Header yang paling umum digunakan adalah Authorization header .
curl https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/responses \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $AZURE_OPENAI_AUTH_TOKEN" \
-d '{
"model": "gpt-4.1",
"input": "What is this repo in 100 words?"
"tools": [
{
"type": "mcp",
"server_label": "github",
"server_url": "https://contoso.com/Azure/azure-rest-api-specs",
"headers": {
"Authorization": "Bearer $YOUR_API_KEY"
}
]
}'
import os
from openai import OpenAI
client = OpenAI(
base_url = "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/",
api_key=os.getenv("AZURE_OPENAI_API_KEY")
)
response = client.responses.create(
model="gpt-4.1",
input="What is this repo in 100 words?",
tools=[
{
"type": "mcp",
"server_label": "github",
"server_url": "https://gitmcp.io/Azure/azure-rest-api-specs",
"headers": {
"Authorization": "Bearer $YOUR_API_KEY"
}
]
)
print(response.output_text)
Tugas latar belakang
Mode latar belakang memungkinkan Anda menjalankan tugas jangka panjang secara asinkron menggunakan model seperti o3 dan o1-pro. Ini sangat berguna untuk tugas penalaran kompleks yang dapat memakan waktu beberapa menit untuk diselesaikan, seperti yang ditangani oleh agen seperti Codex atau Deep Research.
Dengan mengaktifkan mode latar belakang, Anda dapat menghindari batas waktu dan mempertahankan keandalan selama operasi yang diperpanjang. Ketika permintaan dikirim dengan "background": true, tugas diproses secara asinkron, dan Anda dapat melakukan polling untuk statusnya dari waktu ke waktu.
Untuk memulai tugas latar belakang, atur parameter latar belakang ke true dalam permintaan Anda:
curl https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/responses \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $AZURE_OPENAI_AUTH_TOKEN" \
-d '{
"model": "o3",
"input": "Write me a very long story",
"background": true
}'
import os
from openai import OpenAI
client = OpenAI(
base_url = "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/",
api_key=os.getenv("AZURE_OPENAI_API_KEY")
)
response = client.responses.create(
model = "o3",
input = "Write me a very long story",
background = True
)
print(response.status)
GET Gunakan titik akhir untuk memeriksa status respons latar belakang. Lanjutkan polling saat status diantrekan atau sedang berlangsung. Setelah respons mencapai status akhir (terminal), respons akan tersedia untuk diambil.
curl GET https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/responses/resp_1234567890 \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $AZURE_OPENAI_AUTH_TOKEN"
from time import sleep
import os
from openai import OpenAI
client = OpenAI(
base_url = "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/",
api_key=os.getenv("AZURE_OPENAI_API_KEY")
)
response = client.responses.create(
model = "o3",
input = "Write me a very long story",
background = True
)
while response.status in {"queued", "in_progress"}:
print(f"Current status: {response.status}")
sleep(2)
response = client.responses.retrieve(response.id)
print(f"Final status: {response.status}\nOutput:\n{response.output_text}")
Anda dapat membatalkan tugas latar belakang yang sedang berlangsung menggunakan cancel endpoint. Pembatalan bersifat idempotensi—panggilan berikutnya akan mengembalikan objek respons akhir.
curl -X POST https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/responses/resp_1234567890/cancel \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $AZURE_OPENAI_AUTH_TOKEN"
import os
from openai import OpenAI
client = OpenAI(
base_url = "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/",
api_key=os.getenv("AZURE_OPENAI_API_KEY")
)
response = client.responses.cancel("resp_1234567890")
print(response.status)
Menyiarkan respons di latar belakang
Untuk melakukan streaming respons latar belakang, atur background dan stream ke true. Ini berguna jika Anda ingin melanjutkan streaming nanti jika koneksi terputus. Gunakan sequence_number dari setiap peristiwa untuk melacak posisi Anda.
curl https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/responses \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $AZURE_OPENAI_AUTH_TOKEN" \
-d '{
"model": "o3",
"input": "Write me a very long story",
"background": true,
"stream": true
}'
import os
from openai import OpenAI
client = OpenAI(
base_url = "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/",
api_key=os.getenv("AZURE_OPENAI_API_KEY")
)
# Fire off an async response but also start streaming immediately
stream = client.responses.create(
model="o3",
input="Write me a very long story",
background=True,
stream=True,
)
cursor = None
for event in stream:
print(event)
cursor = event["sequence_number"]
Note
Respons yang dilakukan di latar belakang saat ini memiliki latensi waktu-ke-token pertama yang lebih tinggi daripada respons sinkron. Penyempurnaan sedang berlangsung untuk mengurangi kesenjangan ini.
Limitations
- Mode latar belakang memerlukan
store=true. Permintaan stateless tidak didukung. - Anda hanya dapat melanjutkan streaming jika permintaan asli disertakan
stream=true. - Untuk membatalkan respons sinkron, hentikan koneksi secara langsung.
Melanjutkan streaming dari titik tertentu
curl https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/responses/resp_1234567890?stream=true&starting_after=42 \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $AZURE_OPENAI_AUTH_TOKEN"
Item Terenkripsi untuk Penalaran
Saat menggunakan API Respons dalam mode stateless — baik dengan mengatur store ke false atau saat organisasi Anda terdaftar dalam kebijakan tanpa retensi data — Anda masih harus mempertahankan konteks penalaran di seluruh pergantian percakapan. Untuk melakukan ini, sertakan item penalaran terenkripsi dalam permintaan API Anda.
Untuk mempertahankan elemen logika di seluruh giliran, tambahkan reasoning.encrypted_content dalam parameter include di permintaan Anda. Ini memastikan bahwa respons menyertakan versi terenkripsi dari jejak penalaran, yang dapat diteruskan dalam permintaan di masa mendatang.
curl https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/responses \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $AZURE_OPENAI_AUTH_TOKEN" \
-d '{
"model": "o4-mini",
"reasoning": {"effort": "medium"},
"input": "What is the weather like today?",
"tools": [<YOUR_FUNCTION GOES HERE>],
"include": ["reasoning.encrypted_content"]
}'
Pembuatan gambar (pratinjau)
API Respons memungkinkan pembuatan gambar sebagai bagian dari percakapan dan alur kerja multi-langkah. Ini mendukung input dan output gambar dalam konteks dan mencakup alat bawaan untuk menghasilkan dan mengedit gambar.
Dibandingkan dengan API Gambar mandiri, API Respons menawarkan beberapa keuntungan:
- Streaming: Menampilkan output gambar parsial selama pembuatan untuk meningkatkan latensi yang dirasakan.
- Input fleksibel: Terima ID File gambar sebagai input, selain byte gambar mentah.
Note
Alat pembangkit gambar pada API Respons hanya didukung oleh model gpt-image-1-series. Namun, Anda dapat memanggil model ini dari daftar model yang didukung berikut: model seri gpt-4o, gpt-4o-mini, gpt-4.1, gpt-4.1-mini, gpt-4.1-nano, o3, gpt-5, dan gpt-5.1.
Alat pembuatan gambar API Respons saat ini tidak mendukung mode streaming. Untuk menggunakan mode streaming dan menghasilkan gambar parsial, panggil API pembuatan gambar langsung di luar API Respons.
Gunakan API Respons jika Anda ingin membangun pengalaman gambar percakapan dengan Gambar GPT.
from openai import OpenAI
from azure.identity import DefaultAzureCredential, get_bearer_token_provider
token_provider = get_bearer_token_provider(
DefaultAzureCredential(), "https://cognitiveservices.azure.com/.default"
)
client = OpenAI(
base_url = "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/",
api_key=token_provider,
default_headers={"x-ms-oai-image-generation-deployment":"gpt-image-1", "api_version":"preview"}
)
response = client.responses.create(
model="o3",
input="Generate an image of gray tabby cat hugging an otter with an orange scarf",
tools=[{"type": "image_generation"}],
)
# Save the image to a file
image_data = [
output.result
for output in response.output
if output.type == "image_generation_call"
]
if image_data:
image_base64 = image_data[0]
with open("otter.png", "wb") as f:
f.write(base64.b64decode(image_base64))
Model Penalaran
Untuk contoh cara menggunakan model penalaran dengan API respons, lihat panduan model penalaran.
Penggunaan komputer
Penggunaan komputer dengan Playwright telah berpindah ke panduan model penggunaan komputer khusus