Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Durum bilgisi olan, çok aşamalı yanıtlar oluşturmak için Azure OpenAI Yanıtları API'sini kullanın. Sohbet tamamlamaları ve Yardımcılar API'sindeki özellikleri tek bir birleşik deneyimde bir araya getirir. Yanıtlar API'si, computer-use-preview destekleyen modeli de destekler.
Önkoşullar
- Dağıtılmış Azure OpenAI modeli
- Kimlik doğrulama yöntemi:
- API anahtarı (örneğin,
AZURE_OPENAI_API_KEY) veya - Microsoft Entra ID (önerilir).
- API anahtarı (örneğin,
OpenAI paketini yükleme veya yükseltme
OpenAI Python paketini yükleyin veya yükseltin.
pip install --upgrade openai
Metin yanıtı oluşturma
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))
Önemli
API anahtarlarını dikkatli kullanın. API anahtarını doğrudan kodunuzla eklemeyin ve hiçbir zaman herkese açık olarak göndermeyin. API anahtarı kullanıyorsanız, Azure Key Vault güvenli bir şekilde depolayın. Uygulamalarınızda API anahtarlarını güvenli bir şekilde kullanma hakkında daha fazla bilgi için bkz. Azure Key Vault ile
Yapay zeka hizmetleri güvenliği hakkında daha fazla bilgi için bkz. Azure Yapay Zeka Hizmetleri istekleri doğrulama.
Yanıtı geri getirme
Yanıtlar API'sine önceki bir çağrıdan yanıt almak için.
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")
Önemli
API anahtarlarını dikkatli kullanın. API anahtarını doğrudan kodunuzla eklemeyin ve hiçbir zaman herkese açık olarak göndermeyin. API anahtarı kullanıyorsanız, Azure Key Vault güvenli bir şekilde depolayın. Uygulamalarınızda API anahtarlarını güvenli bir şekilde kullanma hakkında daha fazla bilgi için bkz. Azure Key Vault ile
Yapay zeka hizmetleri güvenliği hakkında daha fazla bilgi için bkz. Azure Yapay Zeka Hizmetleri istekleri doğrulama.
Yanıtı silme
Varsayılan olarak, yanıt verileri 30 gün boyunca saklanır. Depolanan yanıtı silmek için çağrısında bulunur 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)
Yanıtları birbirine zincirleme
Önceki yanıttan response.id'yi previous_response_id parametresine geçirerek yanıtları birbirine zincirleyebilirsiniz.
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))
API çağrısıyla ilk giriş sorusunu second_response paylaşmamış olsak da, çıktıyı göz önünde bulundurarak, previous_response_id ile modeli ilettiğimizde, modelin önceki soru ve yanıtın bağlamının tamamına sahip olduğunu ve yeni soruyu bu şekilde yanıtlayabildiğini unutmayın.
Çıkış:
{
"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
}
Yanıtları el ile zincirleme
Alternatif olarak, aşağıdaki yöntemi kullanarak yanıtları el ile zincirleyebilirsiniz:
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))
Bir Yanıtı Sıkıştır
Sıkıştırma, modelin anlaşılması için gerekli bilgileri koruyarak modele gönderilen bağlam penceresini küçültmenizi sağlar.
Döndürülen öğeleri kullanarak sıkıştır
Önceki isteklerden döndürülen tüm öğeleri (örneğin, mantık, ileti, işlev çağrısı vb.) sıkıştırabilirsiniz.
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)
Önceki yanıt kimliğini kullanarak sıkıştırma
Önceki yanıt kimliğini kullanarak da sıkıştırabilirsiniz.
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}")
Sunucu tarafı sıkıştırma
Sunucu tarafı sıkıştırmayı, POST /responses ile bir client.responses.create ayarlayarak (context_management veya compact_threshold) Yanıtlar içinde doğrudan kullanabilirsiniz.
- Çıkış belirteci sayısı yapılandırılan eşiği aştığında, Yanıtlar API'si otomatik olarak sıkıştırma çalıştırır.
- Bu modda
/responses/compactaramanız ayrıca gerekmiyor. - Yanıt şifreli bir sıkıştırma öğesi içerir.
- Yanıt oluşturma isteklerinizde store=false değerini ayarladığınızda sunucu tarafı sıkıştırması çalışır.
Sıkıştırma öğesi, daha az belirteç kullanarak temel ve gerekli olan önceki durumu ve mantığı bir sonraki aşamaya taşır. Opaktır ve insan tarafından okunabilir olması amaçlanmamıştır.
Durum bilgisi olmayan giriş dizisi zincirleme kullanıyorsanız, çıkış öğelerini her zamanki gibi ekleyin. Eğer previous_response_id kullanıyorsanız, her turda yalnızca yeni kullanıcı mesajını iletin. Her iki desende de sıkıştırma öğesi bir sonraki pencere için ihtiyaç duyulan bağlamı taşır.
Ipucu
Çıkış öğelerini önceki giriş öğelerine ekledikten sonra, istekleri daha küçük tutmak ve uzun kuyruk gecikme süresini azaltmak için en son sıkıştırma öğesinden önce gelen öğeleri bırakabilirsiniz. En son sıkıştırma öğesi, konuşmaya devam etmek için gerekli bağlamı taşır. Zincirleme previous_response_id kullanıyorsanız, el ile budama yapmayın.
Akış
- Her zamanki gibi ara
responses. Sunucu tarafı sıkıştırmayı etkinleştirmek içincontext_managementilecompact_thresholdekleyin. - Çıkış eşiği geçerse, hizmet sıkıştırmayı tetikler, çıkış akışında bir sıkıştırma öğesi üretir ve çıkarıma devam etmeden önce kapsamı temizler.
- Şu desenlerden birini kullanarak konuşmaya devam edin:
- Durumsuz girdi dizisi zincirleme işlemi: Sıkıştırma öğeleri de dahil olmak üzere çıktı öğelerini bir sonraki girdi dizisine ekleyin.
-
previous_response_idzincirleme: Her turda yalnızca yeni kullanıcı iletisini iletin ve en son yanıt kimliğini aktarmaya devam edin.
Örnek
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(),
}
)
Yayın Akışı
Not
Akış sırasında, hizmet belirteç sınırları veya ayrıştırma sorunları gibi bir hatayla karşılaşırsa Yanıtlar API'si bir hata olayı ( 500429, ve benzer hatalar) döndürebilir. Uygulamalar bu olayı algılamalı ve akışı düzgün bir şekilde durdurmalı veya yeniden başlatmalıdır. Başarısız akış yanıtları sırasında oluşturulan belirteçler için sizden ücret alınmaz.
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='')
İşlev çağrısı
Yanıtlar API'si işlev çağrısını destekler.
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))
Kod Yorumlayıcı
Kod Yorumlayıcı aracı, modellerin güvenli, korumalı bir ortamda Python kod yazmasına ve yürütmesine olanak tanır. Aşağıdakiler dahil olmak üzere bir dizi gelişmiş görevi destekler:
- Çeşitli veri biçimlerine ve yapılara sahip dosyaları işleme
- Veri ve görselleştirmeler içeren dosyalar oluşturma (örneğin, grafikler)
- Sorunları çözmek için kodu yinelemeli olarak yazma ve çalıştırma— modeller başarılı olana kadar kodun hatalarını ayıklayabilir ve yeniden deneyebilir
- Kırpma, yakınlaştırma ve döndürme gibi görüntü dönüşümlerini etkinleştirerek desteklenen modellerde görsel mantığı geliştirme (örneğin, o3, o4-mini)
- Bu araç özellikle veri analizi, matematiksel hesaplama ve kod oluşturma gibi senaryolar için kullanışlıdır.
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)
Konteyner
Önemli
Kod Yorumlayıcı'nın Azure OpenAI kullanımı için belirteç tabanlı ücretlerin dışındaki ek ücretleri vardır. Yanıtlar API'niz kod yorumlayıcıyı aynı anda iki farklı iş parçacığında çağırırsa, iki kod yorumlayıcı oturumu oluşturulur. Her oturum varsayılan olarak 1 saat boyunca etkindir ve boşta kalma süresi 20 dakikadır.
Kod Yorumlayıcı aracı, modelin Python kodu yürütebildiği tam korumalı bir sanal makine olan bir kapsayıcı gerektirir. Kapsayıcılar, karşıya yüklenen dosyaları veya yürütme sırasında oluşturulan dosyaları içerebilir.
Kapsayıcı oluşturmak için, yeni bir Yanıt nesnesi oluştururken araç yapılandırmasında belirtin "container": { "type": "auto", "file_ids": ["file-1", "file-2"] } . Bu, otomatik olarak yeni bir kapsayıcı oluşturur veya modelin bağlamında önceki bir code_interpreter_call etkin bir kapsayıcıyı yeniden kullanır.
code_interpreter_call API çıkışında oluşturulan container_id içerecektir. 20 dakika boyunca kullanılmazsa bu kapsayıcının süresi dolar.
Dosya girişleri ve çıkışları
Kod Yorumlayıcı'yı çalıştırırken model kendi dosyalarını oluşturabilir. Örneğin, çizim oluşturmasını veya CSV oluşturmasını isterseniz, bu görüntüler doğrudan kapsayıcınızda oluşturulur. Bu dosyaları sonraki iletisinin ek açıklamalarında alıntı yapacaktır.
Model girişindeki tüm dosyalar kapsayıcıya otomatik olarak yüklenir. Kapsayıcıya açıkça yüklemeniz gerekmez.
Desteklenen Dosyalar
| Dosya biçimi | MIME türü |
|---|---|
.c |
metin/x-c |
.cs |
text/x-csharp |
.cpp |
text/x-c++ |
.csv |
metin/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 |
uygulama/pdf |
.php |
text/x-php |
.pptx |
application/vnd.openxmlformats-officedocument.presentationml.presentation (Open XML Format of Presentation Files) |
.py |
text/x-python |
.py |
text/x-script.python |
.rb |
text/x-ruby |
.tex |
metin/x-tex |
.txt |
düz metin |
.css |
text/css |
.js |
text/JavaScript |
.sh |
application/x-sh |
.ts |
application/TypeScript |
.csv |
application/csv |
.jpeg |
image/jpeg |
.jpg |
image/jpeg |
.gif |
resim/gif |
.pkl |
application/octet-stream |
.png |
resim/png |
.tar |
application/x-tar |
.xlsx |
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet (Excel elektronik tablo dosya biçimi) |
.xml |
application/xml veya "text/xml" |
.zip |
application/zip |
Giriş öğelerini listeleme
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))
Çıkış:
{
"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"
}
Görüntü girişi
Görüntü işleme özellikli modeller için PNG (.png), JPEG (.jpeg ve .jpg), WEBP (.webp) içindeki görüntüler desteklenir.
Resim url'si
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)
Base64 kodlanmış görüntüsü
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)
Dosya girişi
Görüntü işleme özelliklerine sahip modeller PDF girişini destekler. PDF dosyaları Base64 ile kodlanmış veriler veya dosya kimlikleri olarak sağlanabilir. Modellerin PDF içeriğini yorumlamasına yardımcı olmak için hem ayıklanan metin hem de her sayfanın görüntüsü modelin bağlamında yer alır. Bu, önemli bilgiler diyagramlar veya metinsel olmayan içerik aracılığıyla iletildiğinde kullanışlıdır.
Not
Ayıklanan tüm metinler ve görüntüler modelin bağlamına yerleştirilir. PDF'leri giriş olarak kullanmanın fiyatlandırma ve belirteç kullanımı üzerindeki etkilerini anladığınızdan emin olun.
Tek bir API isteğinde, birden çok girişe (dosyalar) yüklenen içeriğin boyutu modelin bağlam uzunluğu içinde olmalıdır.
Yalnızca hem metin hem de görüntü girişlerini destekleyen modeller PDF dosyalarını giriş olarak kabul edebilir.
bir'i
purposeuser_dataşu anda desteklenmiyor. Geçici bir çözüm olarak amacıassistantsayarlamanız gerekir.
PDF'yi Base64'e dönüştürme ve analiz etme
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)
PDF yükle ve analiz et
PDF dosyasını karşıya yükleyin. bir'i purposeuser_data şu anda desteklenmiyor. Geçici bir çözüm olarak amacı assistants olarak ayarlamanız gerekir.
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
Çıkış:
{
"id": "assistant-KaVLJQTiWEvdz8yJQHHkqJ",
"bytes": 4691115,
"created_at": 1752174469,
"filename": "nucleus_sampling.pdf",
"object": "file",
"purpose": "assistants",
"status": "processed",
"expires_at": null,
"status_details": null
}
Ardından id değerini alır ve file_id altında işlenmek üzere bir modele geçirirsiniz.
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"
}
]
}
]
}'
Uzak MCP sunucularını kullanma
Modelinizi uzak Model Bağlam Protokolü (MCP) sunucularında barındırılan araçlara bağlayarak özelliklerini genişletebilirsiniz. Bu sunucular geliştiriciler ve kuruluşlar tarafından korunur ve Yanıtlar API'si gibi MCP uyumlu istemciler tarafından erişilebilen araçları kullanıma sunar.
Model Bağlam Protokolü (MCP), uygulamaların büyük dil modellerine (LLM) nasıl araç ve bağlamsal veri sağladığını tanımlayan açık bir standarttır. Dış araçların model iş akışlarıyla tutarlı ve ölçeklenebilir bir şekilde tümleştirilmesini sağlar.
Aşağıdaki örnekte, Azure REST API hakkındaki bilgileri sorgulamak için kurgusal MCP sunucusunun nasıl kullanılacağı gösterilmektedir. Bu, modelin depo içeriğini gerçek zamanlı olarak almasına ve bu içerik üzerinde mantık yürütmesine olanak tanır.
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)
MCP aracı yalnızca Yanıtlar API'sinde çalışır ve tüm yeni modellerde (gpt-4o, gpt-4.1 ve akıl yürütme modellerimiz) kullanılabilir. MCP aracını kullanırken yalnızca araç tanımlarını içeri aktarırken veya araç çağrıları yaparken kullanılan belirteçler için ödeme yapılır; ek ücret uygulanmaz.
Onaylar
Varsayılan olarak, Yanıtlar API'sinin herhangi bir veri uzak bir MCP sunucusuyla paylaşılmadan önce açık onay gerektirir. Bu onay adımı saydamlığı sağlamaya yardımcı olur ve dışarıdan gönderilen bilgiler üzerinde size denetim sağlar.
Uzak MCP sunucularıyla paylaşılan tüm verileri gözden geçirmenizi ve isteğe bağlı olarak denetim amacıyla günlüğe kaydetmenizi öneririz.
Onay gerektiğinde, model yanıt çıkışında bir mcp_approval_request öğe döndürür. Bu nesne bekleyen isteğin ayrıntılarını içerir ve devam etmeden önce verileri incelemenize veya değiştirmenize olanak tanır.
{
"id": "mcpr_682bd9cd428c8198b170dc6b549d66fc016e86a03f4cc828",
"type": "mcp_approval_request",
"arguments": {},
"name": "fetch_azure_rest_api_docs",
"server_label": "github"
}
Uzak MCP çağrısına devam etmek için, mcp_approval_response öğe içeren yeni bir yanıt nesnesi oluşturarak onay isteğine yanıt vermelisiniz. Bu nesne, modelin belirtilen verileri uzak MCP sunucusuna göndermesine izin verme amacınızı onaylar.
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"
}],
)
Kimlik doğrulama
Önemli
- Yanıtlar API'sinin içindeki MCP istemcisi TLS 1.2 veya üzerini gerektirir.
- karşılıklı TLS (mTLS) şu anda desteklenmemektedir.
- Azure hizmet etiketleri şu anda MCP istemci trafiği için desteklenmiyor.
GitHub MCP sunucusunun aksine, uzak MCP sunucularının çoğu kimlik doğrulaması gerektirir. Yanıtlar API'sindeki MCP aracı, özel üst bilgileri destekler ve ihtiyaç duydukları kimlik doğrulama düzenini kullanarak bu sunuculara güvenli bir şekilde bağlanmanızı sağlar.
API anahtarları, OAuth erişim belirteçleri veya diğer kimlik bilgileri gibi üst bilgileri doğrudan isteğinizde belirtebilirsiniz. En yaygın kullanılan üst bilgi, Authorization üst bilgisidir.
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)
Arka plan görevleri
Arka plan modu, o3 ve o1-pro gibi modelleri kullanarak uzun süre çalışan görevleri zaman uyumsuz olarak çalıştırmanızı sağlar. Bu özellikle Codex veya Deep Research gibi aracılar tarafından işlenenler gibi tamamlanması birkaç dakika sürebilen karmaşık akıl yürütme görevleri için kullanışlıdır.
Arka plan modunu etkinleştirerek, zaman aşımlarından kaçınabilir ve genişletilmiş işlemler sırasında güvenilirliği koruyabilirsiniz. Bir istek "background": true ile gönderildiğinde, görev asenkron olarak işlenir ve durumu zaman içinde sorgulayabilirsiniz.
Bir arka plan görevi başlatmak için isteğinizde background parametresini true olarak ayarlayın:
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 Arka plan yanıtının durumunu denetlemek için uç noktayı kullanın. Durum kuyruğa alınmış veya devam ediyor durumundayken anket yapmaya devam edin. Yanıt son (terminal) durumuna ulaştığında alınabilir.
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}")
Devam etmekte olan bir arka plan görevini cancel uç noktasını kullanarak iptal edebilirsiniz. İptal işlemi idempotenttir; sonraki çağrılar son yanıt nesnesini döndürecektir.
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)
Arka planda yanıt akışı
Arka plan yanıtını yayınlamak için hem background hem de stream değerlerini true olarak ayarlayın. Bağlantının bırakılması durumunda akışı daha sonra sürdürmek istiyorsanız bu yararlı olur. Konumunuzu takip etmek için her olayın sıra numarasını kullanın.
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"]
Not
Arka plan yanıtları şu anda eşzamanlı yanıtlardan daha uzun bir ilk belirteç için gecikme süresine sahiptir. Bu açığı azaltmaya yönelik iyileştirmeler devam ediyor.
Sınırlama
- Arka plan modu gerektirir
store=true. Durumsuz istekler desteklenmez. - Akışı yalnızca orijinal istek
stream=trueiçeriyorsa sürdürebilirsiniz. - Zaman uyumlu yanıtı iptal etmek için bağlantıyı doğrudan sonlandırın.
Akışı belirli bir noktadan sürdürme
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"
Şifrelenmiş Akıl Yürütme Öğeleri
False olarak ayarlayarak store Yanıtlar API'sini durum bilgisi olmayan modda kullanırken, konuşma dönüşleri arasında mantık bağlamını korumaya devam etmeniz gerekir. Bunu yapmak için API isteklerinize şifreli mantık öğeleri ekleyin.
Dönüşler arasında akıl yürütme öğelerini tutmak için, isteğinizdeki reasoning.encrypted_content parametresine include ekleyin. Bu, yanıtın gelecekteki isteklerde iletilebilen, akıl yürütme izlemesinin bir şifrelenmiş sürümünü içermesini sağlar.
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"]
}'
Görüntü oluşturma (önizleme)
Yanıtlar API'si, konuşmaların ve çok adımlı iş akışlarının bir parçası olarak görüntü oluşturmayı etkinleştirir. Bağlam içindeki görüntü girişlerini ve çıkışlarını destekler ve görüntü oluşturmak ve düzenlemek için yerleşik araçlar içerir.
Tek başına Görüntü API'sine kıyasla Yanıtlar API'sinin çeşitli avantajları vardır:
- Akış: Algılanan gecikme süresini geliştirmek için oluşturma sırasında kısmi görüntü çıkışlarını görüntüleyin.
- Esnek girişler: Ham görüntü baytlarına ek olarak görüntü Dosya Kimliklerini giriş olarak kabul edin.
Not
Yanıtlar API'sindeki görüntü oluşturma aracı yalnızca gpt-image-1-serisi modeller tarafından desteklenir. Ancak bu modeli desteklenen modeller listesinden çağırabilirsiniz: , , , , , , gpt-4ogpt-4o-minive gpt-4.1 serisi modelleri. gpt-4.1-minigpt-4.1-nanoo3gpt-5gpt-5.1
Yanıtlar API'sinin görüntü oluşturma aracı şu anda akış modunu desteklemiyor. Akış modunu kullanmak ve kısmi görüntüler oluşturmak için, doğrudan Yanıtlar API'sinin dışında görüntü oluşturma API'sini çağırın.
GPT Görüntüsü ile konuşma görüntüsü deneyimleri oluşturmak istiyorsanız Yanıtlar API'sini kullanın.
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))
Akıl yürütme modelleri
Yanıtlar API'siyle akıl yürütme modellerinin nasıl kullanılacağına ilişkin örnekler için neden modelleri kılavuzuna bakın.
Bilgisayar kullanımı
Playwright ile bilgisayar kullanımı ayrılmış bilgisayar kullanım modeli kılavuzuna taşındı
Yanıtlar API'si
API desteği
Bölge Kullanılabilirliği
Yanıtlar API'si şu anda aşağıdaki bölgelerde kullanılabilir:
- australiaeast
- brazilsouth
- canadacentral
- canadaeast
- eastus
- eastus2
- francecentral
- AlmanyaBatıMerkez
- italynorth
- japaneast
- Kore Merkez
- northcentralus
- norwayeast
- polonyamerkezi
- southafricanorth
- southcentralus
- southeastasia
- Güney Hindistan
- spaincentral
- swedencentral
- İsviçre Kuzey
- uaenorth
- uksouth
- westus
- westus3
Model desteği
-
gpt-5.5(Sürüm:2026-04-24) -
gpt-5.4-nano(Sürüm:2026-03-17) -
gpt-5.4-mini(Sürüm:2026-03-17) -
gpt-5.4-pro(Sürüm:2026-03-05) -
gpt-5.4(Sürüm:2026-03-05) -
gpt-5.3-chat(Sürüm:2026-03-03) -
gpt-5.3-codex(Sürüm:2026-02-24) -
gpt-5.2-codex(Sürüm:2026-01-14) -
gpt-5.2(Sürüm:2025-12-11) -
gpt-5.2-chat(Sürüm:2025-12-11) -
gpt-5.2-chat(Sürüm:2026-02-10) -
gpt-5.1-codex-max(Sürüm:2025-12-04) -
gpt-5.1(Sürüm:2025-11-13) -
gpt-5.1-chat(Sürüm:2025-11-13) -
gpt-5.1-codex(Sürüm:2025-11-13) -
gpt-5.1-codex-mini(Sürüm:2025-11-13) -
gpt-5-pro(Sürüm:2025-10-06) -
gpt-5-codex(Sürüm:2025-09-11) -
gpt-5(Sürüm:2025-08-07) -
gpt-5-mini(Sürüm:2025-08-07) -
gpt-5-nano(Sürüm:2025-08-07) -
gpt-5-chat(Sürüm:2025-08-07) -
gpt-5-chat(Sürüm:2025-10-03) -
gpt-5-codex(Sürüm:2025-09-15) -
gpt-4o(Sürümler:2024-11-20,2024-08-06,2024-05-13) -
gpt-4o-mini(Sürüm:2024-07-18) computer-use-preview-
gpt-4.1(Sürüm:2025-04-14) -
gpt-4.1-nano(Sürüm:2025-04-14) -
gpt-4.1-mini(Sürüm:2025-04-14) -
gpt-image-1(Sürüm:2025-04-15) -
gpt-image-1-mini(Sürüm:2025-10-06) -
gpt-image-1.5(Sürüm:2025-12-16) -
o1(Sürüm:2024-12-17) -
o3-mini(Sürüm:2025-01-31) -
o3(Sürüm:2025-04-16) -
o4-mini(Sürüm:2025-04-16)
Yanıtlar API'sinin desteklediği bölgelerde her model kullanılamaz. Model bölgesi kullanılabilirliği için modeller sayfasına bakın.
Not
Şu anda desteklenmiyor:
- Çok aşamalı düzenleme ve akış kullanarak görüntü oluşturma.
- Görüntüler dosya olarak yüklenemez ve ardından girdi olarak kullanılamaz.
Aşağıdakilerle ilgili bilinen bir sorun vardır:
- Giriş dosyası olarak PDF artık destekleniyor ancak dosya karşıya yükleme amacını
user_dataolarak ayarlamak şu anda desteklenmiyor. - Arka plan modu akışla kullanıldığında performans sorunları. Sorunun yakında çözülmesi bekleniyor.
Başvuru belgeleri
Sorun giderme
-
401/403: Microsoft Entra ID kullanıyorsanız belirtecinizin kapsamının
https://ai.azure.com/.defaultolduğunu doğrulayın. API anahtarı kullanıyorsanız kaynak için doğru anahtarı kullandığınızı onaylayın. -
404:
modelifadesinin dağıtım adınızla eşleştiğini onaylayın.