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.
Gunakan Azure OpenAI Responses API untuk menghasilkan respons multi-giliran yang berbasis status. Ini menggabungkan kemampuan dari penyelesaian obrolan dan Assistants API dalam satu pengalaman terpadu. API Respons juga mendukung computer-use-preview model yang mendukung penggunaan Komputer.
Prasyarat
- Model OpenAI Azure yang disebarkan
- Metode autentikasi:
- Kunci API (misalnya,
AZURE_OPENAI_API_KEY), atau - Microsoft Entra ID (disarankan).
- Kunci API (misalnya,
Menginstal atau meningkatkan paket OpenAI
Instal atau tingkatkan paket Python OpenAI.
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))
Penting
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")
Penting
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 disimpan selama 30 hari. Untuk menghapus respons tersimpan, panggil client.responses.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.
Hasil:
{
"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))
Padatkan Tanggapan
Pemadatan memungkinkan Anda menyusutkan jendela konteks yang dikirim ke model sambil mempertahankan informasi penting untuk pemahaman model.
Padatkan dengan menggunakan item yang telah dikembalikan
Anda dapat memadamkan semua item yang dikembalikan dari permintaan sebelumnya seperti penalaran, pesan, panggilan fungsi, dll.
curl https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/responses/compact \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $AZURE_OPENAI_AUTH_TOKEN" \
-d '{
"model": "gpt-4.1",
"input": [
{
"role" : "user",
"content": "Create a simple landing page for a dog petting café."
},
{
"id": "msg_001",
"type": "message",
"status": "completed",
"content": [
{
"type": "output_text",
"annotations": [],
"logprobs": [],
"text": "Below is a single file, ready-to-use landing page for a dog petting café:..."
}
],
"role": "assistant"
}
]
}'
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")
)
compacted_response = client.responses.compact(
model="gpt-4.1",
input=[
{
"role": "user",
"content": "Create a simple landing page for a dog petting cafe.",
},
# All items returned from previous requests are included here, like reasoning, message, function call, etc.
{
"id": "msg_001",
"type": "message",
"status": "completed",
"content": [
{
"type": "output_text",
"annotations": [],
"logprobs": [],
"text": "Below is a single file, ready-to-use landing page for a dog petting café:...",
},
],
"role": "assistant",
},
]
)
# Pass the compacted_response.output as input to the next request
print(compacted_response)
Padatkan menggunakan ID respons sebelumnya
Anda juga dapat mengompres menggunakan ID respons sebelumnya.
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")
)
# Get back a full response
initial_response = client.responses.create(
model="gpt-4.1",
input="What is the size of France?"
)
print(f"Initial Response: {initial_response.output_text}")
# Now compact the response
compacted_response = client.responses.compact(
model="gpt-4.1",
previous_response_id=initial_response.id
)
# use the compacted response in a follow up
followup_response = client.responses.create(
model="gpt-4.1",
input=[
*compacted_response.output,
{"role": "user", "content": "And what is the capital/major city"}
]
)
print(f"Follow-up Response: {followup_response.output_text}")
Pemadatan di sisi server
Anda juga dapat menggunakan pemadatan sisi server secara langsung di Respons (POST /responses atau client.responses.create) dengan mengatur context_management dengan compact_threshold.
- Saat jumlah token output melewati ambang batas yang dikonfigurasi, API Respons secara otomatis menjalankan pemadatan.
- Dalam mode ini, Anda tidak perlu memanggil
/responses/compactsecara terpisah. - Respons mencakup item pemadatan terenkripsi.
- Pemadatan sisi server akan berfungsi ketika Anda mengatur store=false pada permintaan pembuatan Respon Anda.
Item pemadatan meneruskan status dan penalaran penting sebelumnya ke giliran berikutnya menggunakan lebih sedikit token. Ini buram dan tidak dimaksudkan untuk dibaca manusia.
Jika Anda menggunakan rantai input-array stateless, tambahkan item output seperti biasa. Jika Anda menggunakan previous_response_id, teruskan hanya pesan pengguna baru pada setiap putaran. Di kedua pola, item pemadatan membawa konteks yang diperlukan untuk jendela berikutnya.
Petunjuk / Saran
Setelah menambahkan item output ke item input sebelumnya, Anda dapat menjatuhkan item yang datang sebelum item pemadatan terbaru agar permintaan tetap kecil dan mengurangi latensi yang berkepanjangan. Item pemadatan terbaru membawa konteks yang diperlukan untuk melanjutkan percakapan. Jika Anda menggunakan previous_response_id penautan, jangan pangkas secara manual.
Flow
- Hubungi
responsesseperti biasa. Tambahkancontext_managementbersamacompact_thresholduntuk mengaktifkan pemadatan sisi server. - Jika output melewati ambang batas, layanan memicu pemadatan, memancarkan item pemadatan dalam aliran output, dan memangkas konteks sebelum melanjutkan inferensi.
- Lanjutkan percakapan menggunakan salah satu pola ini:
- Merantai array input tanpa status: tambahkan item output, termasuk item pemadatan, ke array input berikutnya.
-
previous_response_idchaining: teruskan hanya pesan pengguna baru pada setiap giliran dan teruskan ID respons terbaru.
Example
conversation = [
{
"type": "message",
"role": "user",
"content": "Let's begin a long coding task.",
}
]
while keep_going:
response = client.responses.create(
model="gpt-5.3-codex",
input=conversation,
store=False,
context_management=[{"type": "compaction", "compact_threshold": 200000}],
)
conversation.append(
{
"type": "message",
"role": "user",
"content": get_next_user_input(),
}
)
Siaran Langsung
Nota
Selama streaming, API Respons mungkin mengembalikan peristiwa kesalahan ( 500, , 429dan kesalahan serupa) jika layanan mengalami kesalahan, seperti batas token atau masalah penguraian. Aplikasi harus mendeteksi peristiwa ini dan menghentikan atau memulai ulang streaming dengan lancar. Anda tidak dikenakan biaya untuk token yang dihasilkan selama respons streaming yang gagal.
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 Interpreter Kode memungkinkan model untuk menulis dan 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
Penting
Penerjemah Kode memiliki biaya tambahan di luar biaya berbasis token untuk penggunaan OpenAI Azure. 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 Interpreter Kode memerlukan kontainer—mesin virtual yang terisolasi sepenuhnya tempat 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 |
teks/html |
.java |
text/x-java |
.json |
application/json |
.md |
teks/markdown |
.pdf |
aplikasi/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 |
teks/polosan |
.css |
text/css |
.js |
text/JavaScript |
.sh |
application/x-sh |
.ts |
application/TypeScript |
.csv |
aplikasi/csv |
.jpeg |
image/jpeg |
.jpg |
image/jpeg |
.gif |
gambar/gif |
.pkl |
application/octet-stream |
.png |
gambar/png |
.tar |
application/x-tar |
.xlsx |
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet |
.xml |
application/xml atau "text/xml" |
.zip |
aplikasi/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))
Hasil:
{
"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.
Nota
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
Hasil:
{
"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.
Persetujuan
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
Penting
- Klien MCP dalam API Respons memerlukan TLS 1.2 atau lebih tinggi.
- TLS bersama (mTLS) saat ini tidak didukung.
- Azure service tags saat ini tidak didukung untuk traffic klien MCP.
Tidak seperti server MCP GitHub, 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 OAuth access, atau kredensial 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 -X 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"]
Nota
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.
Keterbatasan
- 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 dengan mengatur store ke false, Anda masih harus mempertahankan konteks penalaran di seluruh giliran 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.
Nota
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://ai.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.5", "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
Respons API
Dukungan API
Ketersediaan Wilayah
API respons saat ini tersedia di wilayah berikut:
- Australia bagian timur
- Brasil Selatan
- kanadacentral
- kanada timur
- eastus
- eastus2
- FranceCentral
- Jerman Barat Tengah
- Italia Utara
- Jepang Timur
- koreacentral
- Northcentralus
- Norwegia Timur
- polandcentral
- southafricanorth
- southcentralus
- southeastasia
- India Selatan
- spaincentral
- swedencentral
- Swiss bagian Utara
- uaenorth
- uksouth
- westus
- westus3
Dukungan model
-
gpt-5.5(Versi:2026-04-24) -
gpt-5.4-nano(Versi:2026-03-17) -
gpt-5.4-mini(Versi:2026-03-17) -
gpt-5.4-pro(Versi:2026-03-05) -
gpt-5.4(Versi:2026-03-05) -
gpt-5.3-chat(Versi:2026-03-03) -
gpt-5.3-codex(Versi:2026-02-24) -
gpt-5.2-codex(Versi:2026-01-14) -
gpt-5.2(Versi:2025-12-11) -
gpt-5.2-chat(Versi:2025-12-11) -
gpt-5.2-chat(Versi:2026-02-10) -
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) -
gpt-image-1.5(Versi:2025-12-16) -
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 models untuk ketersediaan wilayah model.
Nota
Saat ini tidak didukung:
- 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
- Dokumentasi referensi API Responses
Troubleshooting
-
401/403: Jika Anda menggunakan Microsoft Entra ID, pastikan bahwa token Anda memiliki cakupan untuk
https://ai.azure.com/.default. Jika Anda menggunakan kunci API, konfirmasikan bahwa Anda menggunakan kunci yang benar untuk sumber daya. -
404: Pastikan
modelcocok dengan nama deployment Anda.