Azure OpenAI Yanıtları API'sini kullanma

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. Bağımsız çalışmayı paralel alt ajanlara devretmek için çok aracılı düzenlemeyi kullanın veya araç tanımlarını yalnızca modelin ihtiyaç duyduğu durumlarda yüklemek için araç aramasını kullanın. Yanıtlar API'si, computer-use-preview destekleyen modeli de destekler.

İstek ve yanıt parametresi açıklamalarının tamamı için Yanıtlar API'sinin parametre başvurusuna bakın.

Ö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).
  • Diliniz için istemci kitaplığını yükleyin:
    • Python:pip install openai azure-identity
    • .NET: dotnet add package OpenAI ve dotnet add package Azure.Identity
    • JavaScript/TypeScript: npm install openai @azure/identity
    • Java: Projenize com.openai:openai-java ve com.azure:azure-identity ekleyin.
  • REST örnekleri için AZURE_OPENAI_API_KEY (API anahtar akışı) veya AZURE_OPENAI_AUTH_TOKEN (Microsoft Entra ID akışı) ayarlayın.

Desteklenen bölgeler

Bu makaledeki örnekleri çalıştırmadan önce kaynak bölgenizin Yanıtlar API'sini desteklediğini onaylayın. En son özelliklere erişmek için v1 API gereklidir. Ayrıntılar için bkz. API sürümü yaşam döngüsü. Foundry Agent Service bölgesel desteği için bölgesel kullanılabilirlik tablosuna bakın. Yanıtlar API'si şu anda aşağıdaki bölgelerde kullanılabilir:

  • australiaeast
  • brazilsouth
  • canadacentral
  • canadaeast
  • merkezus
  • eastus
  • eastus2
  • francecentral
  • Almanya Batı Merkez
  • italynorth
  • japaneast
  • japanwest
  • koreacentral
  • northcentralus
  • norwayeast
  • Polonya Merkezi
  • southafricanorth
  • southcentralus
  • southeastasia
  • Güney Hindistan
  • spaincentral
  • swedencentral
  • İsviçrenin Kuzeyi
  • switzerlandwest
  • uaenorth
  • uksouth
  • ukwest
  • westcentralus
  • Batı Avrupa
  • westus
  • westus2
  • westus3

Desteklenen modeller

Yanıtlar API'si aşağıdaki modelleri destekler:

  • gpt-5.6-sol (Sürüm: 2026-07-09)
  • gpt-5.6-terra (Sürüm: 2026-07-09)
  • gpt-5.6-luna (Sürüm: 2026-07-09)
  • gpt-chat-latest (Sürümler: 2026-08-06, 2026-06-24, 2026-05-28, 2026-05-05)
  • 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)

Desteklenen her bölgede 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.

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_data olarak ayarlamak şu anda desteklenmiyor.
  • Arka plan modu akışla kullanıldığında performans sorunları. Microsoft bu sorunu çözmek için çalışıyor.

Metin yanıtı oluşturma

Yanıtlar API'sini kullanarak basit bir metin yanıtı oluşturun. YOUR-RESOURCE-NAME ve MODEL_NAME öğelerini dağıtım değerlerinizle değiştirin.

import os
from openai import OpenAI
from azure.identity import DefaultAzureCredential, get_bearer_token_provider

# API key authentication
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="MODEL_NAME",
    input="This is a test."
)
print(response.model_dump_json(indent=2))

# Microsoft Entra ID authentication (recommended)
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(),
)
response = client.responses.create(
    model="MODEL_NAME",
    input="This is a test."
)
print(response.model_dump_json(indent=2))

Örnek yanıt

{
  "id": "resp_67cb32528d6881909eb2859a55e18a85",
  "created_at": 1741369938.0,
  "output_text": "Great! How can I help you today?",
  ...
}

Yanıtı Al

Kimliğine göre, önceki bir Responses API çağrısından bir yanıt alın.

import os
from openai import OpenAI
from azure.identity import DefaultAzureCredential, get_bearer_token_provider

# API key authentication
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("<response_id>")
print(response.model_dump_json(indent=2))

# Microsoft Entra ID authentication
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,
)
response = client.responses.retrieve("<response_id>")
print(response.model_dump_json(indent=2))

Örnek yanıt

{
  "id": "resp_67cb61fa3a448190bcf2c42d96f0d1a8",
  "output_text": "Hello! How can I assist you today?",
  ...
}

Yanıt silme

Varsayılan olarak, yanıt verileri 30 gün boyunca saklanır. Depolanan yanıtı kimliğine göre silin.

import os
from openai import OpenAI
from azure.identity import DefaultAzureCredential, get_bearer_token_provider

# API key authentication
client = OpenAI(
    api_key=os.getenv("AZURE_OPENAI_API_KEY"),
    base_url="https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/",
)
response = client.responses.delete("<response_id>")
print(response)

# Microsoft Entra ID authentication
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,
)
response = client.responses.delete("<response_id>")
print(response)

Yanıtları birleştirme

Zincir, önceki yanıt kimliğini öğesine previous_response_idgeçirerek döner.

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

first_response = client.responses.create(
    model="MODEL_NAME",
    input="Define catastrophic forgetting."
)

second_response = client.responses.create(
    model="MODEL_NAME",
    previous_response_id=first_response.id,
    input="Explain it for a college freshman."
)

print(second_response.output_text)

Yanıtları elle zincirleme

Alternatif olarak, çıktı öğelerini bir sonraki istekte manuel olarak aktarabilirsiniz.

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="MODEL_NAME",
    input=inputs
)

print(second_response.model_dump_json(indent=2))

Yanıtı Sıkıştır

Sıkıştırma, giriş bağlamını azaltırken sonraki dönüşler için temel durumu korur.

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 = client.responses.compact(
  model="MODEL_NAME",
  input=[
    {"role": "user", "content": "Create a simple landing page for a dog cafe."},
    {
      "id": "msg_001",
      "type": "message",
      "status": "completed",
      "role": "assistant",
      "content": [{"type": "output_text", "text": "..."}],
    },
  ]
)

follow_up = client.responses.create(
  model="MODEL_NAME",
  input=[*compacted.output, {"role": "user", "content": "Add a booking form."}]
)
print(follow_up.output_text)

Sıkıştır, döndürülen öğeleri kullanarak

Ö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 -X POST 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": "MODEL_NAME",
        "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"
          }
        ]
    }'
# Use the compacted output as input for the next turn.
next_response = client.responses.create(
  model="MODEL_NAME",
  input=[*compacted.output, {"role": "user", "content": "Add opening hours."}],
)
print(next_response.output_text)

Önceki yanıt kimliğini kullanarak sıkıştırma

Önceki yanıt kimliğini kullanarak da sıkıştırabilirsiniz.

initial_response = client.responses.create(
  model="MODEL_NAME",
  input="What is the size of France?"
)

compacted_response = client.responses.compact(
  model="MODEL_NAME",
  previous_response_id=initial_response.id
)

follow_up_response = client.responses.create(
  model="MODEL_NAME",
  input=[
    *compacted_response.output,
    {"role": "user", "content": "What is the capital?"}
  ]
)
print(follow_up_response.output_text)

Sunucu tarafı sıkıştırma

Sunucu tarafı sıkıştırmayı, POST /responses ile client.responses.create ayarlayarak Yanıtlar'da (context_management veya compact_threshold) 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 ayrı ayrı aramanız /responses/compact gerekmez.
  • 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, temel önceki durumu ve mantığı daha az belirteç kullanarak bir sonraki dönüşe 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ı iletisini iletin. Her iki desende de sıkıştırma öğesi bir sonraki pencere için gereken 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ış

  1. Her zamanki gibi ara responses . Sunucu tarafı sıkıştırmayı etkinleştirmek için context_management ile compact_threshold ekleyin.
  2. Çıkış eşiği geçerse, hizmet veri sıkıştırmasını tetikler, çıkış akışında bir sıkıştırma öğesi oluşturur ve iletir ve çıkarıma devam etmeden önce bağlamı sadeleştirir.
  3. Şu desenlerden birini kullanarak konuşmaya devam edin:
    1. Durumsuz giriş dizisi zincirleme: Sıkıştırma öğeleri de dahil olmak üzere çıkış öğelerini bir sonraki giriş dizisine ekleyin.
    2. previous_response_id zincirleme: Her döngüde yalnızca yeni kullanıcı mesajını iletin ve en yeni yanıt kimliğini ileriye taşıyın.

Örnek

conversation = [
  {
    "type": "message",
    "role": "user",
    "content": "Let's begin a long coding task.",
  }
]

while keep_going:
  response = client.responses.create(
    model="MODEL_NAME",
    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ışı

Yanıtı, oluşturuldukça akış olarak iletmek için stream=true ayarını kullanın. Hizmet, çıkış belirtecini belirteçlere göre işlemek için kullanabileceğiniz artımlı olayları yayar.

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

stream = client.responses.create(
    model="MODEL_NAME",
    input="Summarize Azure OpenAI Responses API in one sentence.",
    stream=True,
)

for event in stream:
    if event.type == "response.output_text.delta":
        print(event.delta, end="")

Akış sırasında, akışın ortasında bir hata oluşursa sistem, hatayı çözmek için iç yeniden denemeler yapmaya çalışır. İstek yine de başarısız olursa hizmet kurtarılamaz bir hatayla karşılaşır. Bu gibi durumlarda HTTP yanıt kodu 200 'dür (başarılı) ancak akıştaki hata olayı, orta akış hataları hakkındaki ayrıntıları içerir.

Sunucu aşağıdaki hata türlerini döndürür:

Hata türü Şu şekilde çevrilebilir:
server_error İade kodu 500
too_many_requests İade kodu 429
forbidden İade kodu 403
user_error İade kodu 400

Örnek hata olayı:

{
  "type": "error",
  "error": {
    "type": "too_many_requests",
    "code": "no_capacity",
    "headers": {
      "skip-error-remapping": "true"
    },
    "message": "The system is currently experiencing high demand and cannot process your request. Your request exceeds the maximum usage size allowed during peak load. For improved capacity reliability, consider switching to Provisioned Throughput.",
    "param": null
  }
}

Uygulamalar bu hataları 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.

Yapılandırılmış çıkışlar

Bir yanıtın JSON Şemasını izlemesini sağlamak için yapılandırılmış çıkışları kullanın. Bir Responses API isteğinde şemayı text.format içinde tanımlayın. Bunun yerine Chat Completions, response_format kullanır. SDK ve REST örnekleri, desteklenen şema kısıtlamaları ve sınırlamaları için bkz. Yapılandırılmış çıkışlar.

İşlev çağrısı

Yanıtlar API'si işlev çağrısını destekler.

import os
import json
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="MODEL_NAME",
    tools=[
        {
            "type": "function",
            "name": "get_weather",
            "description": "Get weather for a location",
            "parameters": {
                "type": "object",
                "properties": {"location": {"type": "string"}},
                "required": ["location"],
            },
        }
    ],
    input="What is the weather in San Francisco?",
)

tool_outputs = []
for item in response.output:
    if item.type == "function_call" and item.name == "get_weather":
        args = json.loads(item.arguments)
        weather = {"location": args["location"], "temperature": "70 F"}
        tool_outputs.append(
            {
                "type": "function_call_output",
                "call_id": item.call_id,
                "output": json.dumps(weather),
            }
        )

final_response = client.responses.create(
    model="MODEL_NAME",
    previous_response_id=response.id,
    input=tool_outputs,
)

print(final_response.output_text)

Güvenlik önlemlerini ve içerik filtrelemeyi yönetme

Korumalar (içerik filtreleri) dağıtım düzeyinde uygulanır ve her YanıtLAR API çağrısında otomatik olarak çalıştırılır, böylece hem gönderdiğiniz girişi hem de modelin oluşturduğu çıkışı korur. Güvenlik önlemlerini ayrı ayrı yapılandırırsınız. Daha fazla bilgi için bkz. Korumaları ve denetimleri yapılandırma. Bu bölüm, Responses API'yi çağırdığınızda guardrail sonuçlarını nasıl tespit edip işleyeceğinizi gösterir.

Responses API, guardrail sonuçlarını Chat Completions’dan farklı şekilde sunar. Sohbet tamamlamalarının döndüreceği prompt_filter_results ve content_filter_results alanları yerine yanıt nesnesi üst düzey content_filters bir dizi içerir. Her girdi bir filtre sonucunu açıklar.

Veri Alanı Açıklama
blocked İçeriğin engellenip engellenmediği.
source_type Sonucun prompt (giriş) veya completion (çıkış) için geçerli olup olmadığı.
content_filter_results hate, sexual, violence ve self_harm gibi, önem dereceleriyle birlikte kategori sonuçları; ayrıca jailbreak, indirect_attack, protected_material_text ve protected_material_code gibi isteğe bağlı kategoriler.
content_filter_offsets Sonucun uygulandığı karakter uzaklıkları.

Not

Dizicontent_filters, temel OpenAI yanıt şemasının parçası olmayan bir Microsoft Foundry uzantısıdır, bu nedenle SDK'lar bunun için türlenmiş bir özelliği kullanıma sunmaz. Aşağıdaki örneklerde gösterildiği gibi ham veya ek alan olarak okuyun.

Engellenen girişi algılama

Güvenlik önlemleri girdinizi engellediğinde API, content_filter koduna sahip bir HTTP 400 hatası döndürür. Engellenen istemleri sorunsuz bir şekilde işlemek için bu hatayı yakalayın.

import os
from openai import OpenAI, BadRequestError

client = OpenAI(
    api_key=os.getenv("AZURE_OPENAI_API_KEY"),
    base_url="https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/",
)

# A blocked prompt raises BadRequestError with the code "content_filter"
try:
    response = client.responses.create(
        model="MODEL_NAME",
        input="This is a test."
    )
    print(response.output_text)
except BadRequestError as error:
    if error.code == "content_filter":
        print("The prompt was blocked by a guardrail.")
    else:
        raise

Koruma ek açıklamalarını okuyun

Bir istek başarılı olduğunda, girdi ve çıktıya ilişkin güvenlik kuralı sonuçlarını incelemek için yanıttaki content_filters dizisini okuyun.

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="MODEL_NAME",
    input="This is a test."
)

# content_filters is an Azure extension, so read it from model_extra
content_filters = response.model_extra.get("content_filters", [])
for result in content_filters:
    print(f"Source: {result['source_type']}, Blocked: {result['blocked']}")

Koruma kategorileri ve ciddiyet düzeyleri hakkında daha fazla bilgi edinmek için Korumalara genel bakış ve Ek açıklamalarla çalışma konularına bkz.

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 -X POST https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/responses \
  -H "Content-Type: application/json" \
  -H "api-key: $AZURE_OPENAI_API_KEY" \
  -d '{
        "model": "MODEL_NAME",
        "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")
)

response = client.responses.create(
    model="MODEL_NAME",
    tools=[{"type": "code_interpreter", "container": {"type": "auto"}}],
    instructions="You are a math tutor. Write and run Python code to solve math problems.",
    input="Solve 3x + 11 = 14."
)

print(response.output_text)

Konteyner

Önemli

Kod Yorumlayıcı, Azure OpenAI kullanımı için belirteç tabanlı ücretlerin ötesinde ek ücretlere sahiptir. 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 oturumda en az beş dakika olmak üzere dakika başına ücret uygulanır. 20 dakikalık boşta kalma zaman aşımı süresi içinde kapsayıcısına erişdiğiniz sürece oturum etkin kalı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 işlem, otomatik olarak yeni bir kapsayıcı oluşturur veya modelin bağlamındaki önceki bir code_interpreter_call'dan etkin olan bir kapsayıcıyı yeniden kullanır. API’nin çıktısındaki code_interpreter_call, oluşturulan container_id’i içerecektir. 20 dakika boyunca kullanılmazsa bu kapsayıcı geçerliliğini yitirir.

Aşağıdaki dosya sınırları geçerlidir:

  • Bir istek en fazla 50 dosya kimliği içerebilir.
  • Bir kapsayıcı, giriş dosyaları ve Kod Yorumlayıcı tarafından oluşturulan dosyalar dahil olmak üzere toplamda en fazla 1.000 dosya barındırabilir.

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 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 metin/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
.py text/x-python
.py text/x-script.python
.rb text/x-ruby
.tex text/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
.xml application/xml veya "text/xml"
.zip application/zip

Giriş öğelerini listeleme

Bir yanıta gönderilmiş olan giriş öğelerini alın. Bu, model tarafından eklenen öğeler (örneğin işlev çağrıları veya sıkıştırma öğeleri) dahil olmak üzere konuşma bağlamını tam olarak incelemek için kullanışlıdır.

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

items = client.responses.input_items.list("<response_id>")
print(items.model_dump_json(indent=2))

Örnek yanıt

{
  "object": "list",
  "data": [
    {
      "id": "msg_...",
      "type": "message",
      "role": "user",
      "content": [{"type": "input_text", "text": "This is a test."}]
    }
  ]
}

Görüntü girişi

Görüntü işleme özellikli modeller metinle birlikte görüntüleri de yorumlayabilir. Bu makalenin devamında listelenen sınırlamalara bağlı olarak nesneleri, şekilleri, renkleri ve dokuları tanıyabilir ve bir resmin içindeki metni okuyabilirler.

Aşağıdaki yollardan herhangi biriyle bir isteğin girişi olarak bir görüntü sağlayabilirsiniz:

  • Görüntü dosyasının tam URL'si
  • Base64 ile kodlanmış veri URI'si
  • Dosyalar API'si ile oluşturulan bir dosya kimliği

Resim URL'si

Genel URL'de barındırılan bir görüntüye başvurun. Model görüntüyü getirir ve giriş içeriğinin bir parçası olarak ekler.

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="MODEL_NAME",
    input=[
        {
            "role": "user",
            "content": [
                {"type": "input_text", "text": "What is in this image?"},
                {"type": "input_image", "image_url": "<image_url>"}
            ]
        }
    ]
)

print(response.output_text)

Base64 ile kodlanmış görüntü

Baytlarını base64 veri URI'si olarak kodlayarak bir görüntüyü satır içi olarak gönderin. Görüntü genel URL'de barındırılmıyorsa veya ek ağ getirme işlemini önlemek istediğinizde bu düzeni kullanın.

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("path_to_your_image.jpg", "rb") as image_file:
    base64_image = base64.b64encode(image_file.read()).decode("utf-8")

response = client.responses.create(
    model="MODEL_NAME",
    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.output_text)

Dosya Kimliği

purpose="assistants" kullanarak Files API ile bir görüntü yükleyin, ardından isteğinizde döndürülen dosya kimliğine referans verin. Bu yaklaşım, baytlarını yeniden göndermeden aynı görüntüyü birden çok istekte yeniden kullanmak istediğinizde kullanışlıdır.

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 create_file(file_path):
    with open(file_path, "rb") as file_content:
        result = client.files.create(
            file=file_content,
            purpose="assistants",
        )
        return result.id

file_id = create_file("path_to_your_image.jpg")

response = client.responses.create(
    model="MODEL_NAME",
    input=[
        {
            "role": "user",
            "content": [
                {"type": "input_text", "text": "What is in this image?"},
                {"type": "input_image", "file_id": file_id},
            ],
        }
    ],
)

print(response.output_text)

Görüntü giriş gereksinimleri

Aşağıdaki tabloda, görüntü girişleri için desteklenen dosya türleri listelenmektedir.

Dosya türü MIME türü
PNG image/png
JPEG image/jpeg
WebP image/webp
Animasyonsuz GIF image/gif

Tek bir istekte en fazla 50 resim ekleyebilirsiniz. Her görüntü dosyası 50 MB'ın altında olmalı ve istekteki tüm görüntülerin birleşik boyutu da 50 MB'ın altında olmalıdır.

Görüntülerin şu ek gereksinimleri karşılaması gerekir:

  • Görüntü istemle ilgili olmalıdır; model, ilgisiz görsel içerik için tasarlanmamıştır.
  • Görüntüler, içerik ilkelerini ihlal eden zararlı veya hassas içerik içermemelidir.
  • Görüntü dosyaları bozulamaz veya okunamaz. Model bir görüntüyü işleyemiyorsa istek başarısız olur.

Resim ayrıntı düzeyi seçme

Modelin görüntüyü nasıl işlediğini kontrol etmek için bir detail içerik parçasındaki input_image özelliğini kullanın. Daha düşük ayrıntı daha az belirteç kullanır ve daha hızlıdır, daha yüksek ayrıntı ise daha fazla belirteç kullanır ancak modelin daha ince özellikleri yakalamasına olanak tanır.

{
  "type": "input_image",
  "image_url": "<image_url>",
  "detail": "high"
}

Aşağıdaki tabloda her ayrıntı düzeyi açıklanmaktadır.

Ayrıntı düzeyi Açıklama
low Model, görüntünün daha düşük çözünürlüklü bir sürümünü kullanır. Bu seçenek en az belirteci kullanır ve en hızlı yanıtı üretir, ancak model ince ayrıntıları kaçırabilir.
high Model, görüntünün daha yüksek çözünürlüklü bir sürümünü kullanır. Bu seçenek daha ayrıntılı ayrıntıları yakalar, ancak daha fazla belirteç kullanır ve yanıt vermesi daha uzun sürer.
auto Varsayılan. Model, görüntüye ve isteme göre uygun ayrıntı düzeyini seçer.

Görüntü girişi sınırlamaları

Görüntü işleme özellikli modellerin sınırlamaları şunlardır:

  • Tıbbi görüntüler: Model, BT taramaları gibi özel tıbbi görüntüleri yorumlamak için uygun değildir ve tıbbi tavsiyeler için kullanılmamalıdır.
  • İngilizce olmayan metin: Model, Japonca veya Korece gibi Latin alfabesi dışındaki alfabelerde metin içeren görüntüleri işlerken en iyi performansı göstermeyebilir.
  • Küçük metin: Okunabilirliği artırmak için resmin içindeki metni büyütün, ancak önemli ayrıntıları kırpmaktan kaçının.
  • Döndürme: Model, döndürülmüş veya baş aşağı metin ve görüntüleri yanlış yorumlayabilir.
  • Görsel öğeler: Model, renklerin veya stillerin (düz, kesikli veya noktalı çizgiler gibi) değiştiği graflar veya metinlerle boğuşabilir.
  • Uzamsal mantık: Model, satranç pozisyonlarını tanımlama gibi hassas uzamsal yerelleştirme gerektiren görevlerde zorluk çeker.
  • Doğruluk: Model bazı durumlarda yanlış açıklamalar veya açıklamalı alt yazılar oluşturabilir.
  • Görüntü biçimi: Model, panoramik ve balık gözü görüntüleri işlemekte zorlanır.
  • Meta veriler ve yeniden boyutlandırma: Model özgün dosya adlarını veya meta verileri işlemez ve görüntüler analizden önce yeniden boyutlandırılır ve bu da özgün boyutlarını etkiler.
  • Sayma: Model, görüntülerdeki nesneler için yaklaşık sayımlar verebilir.
  • CAPTCHA'lar: Güvenlik nedeniyle, CAPTCHA'ların gönderilmesini engelleyen bir sistem vardır.

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 fazla dosya ekleyebilirsiniz, ancak her dosya 50 MB'ın altında olmalıdır. İstekteki tüm dosyalar arasında birleştirilmiş sınır 50 MB'tır.
  • Yalnızca hem metin hem de görüntü girişlerini destekleyen modeller PDF dosyalarını giriş olarak kabul edebilir.
  • Bir purpose'nin user_data’ı şu anda desteklenmiyor. Geçici bir çözüm olarak amacı assistants olarak ayarlamanız gerekir.

PDF'yi Base64'e dönüştürme ve analiz etme

Bir PDF’yi baytlarını base64 veri URI’si olarak kodlayıp satır içinde gönderin. Model hem ayıklanan metni hem de her sayfanın işlenmiş görüntüsünü alır.

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:
    base64_string = base64.b64encode(f.read()).decode("utf-8")

response = client.responses.create(
    model="MODEL_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ı purpose="assistants" ile yükleyin. purpose için user_data şu anda desteklenmiyor.

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

file = client.files.create(
    file=open("nucleus_sampling.pdf", "rb"),
    purpose="assistants"
)

response = client.responses.create(
    model="MODEL_NAME",
    input=[
        {
            "role": "user",
            "content": [
                {"type": "input_file", "file_id": file.id},
                {"type": "input_text", "text": "Summarize this PDF."},
            ],
        },
    ]
)

print(response.output_text)

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, bir Azure REST API deposu hakkındaki bilgileri sorgulamak için uzak MCP sunucusunun nasıl kullanılacağı gösterilmektedir. Model, depo içeriğini gerçek zamanlı olarak alır ve üzerinde akıl yürütür.

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="MODEL_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.

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="MODEL_NAME",
    tools=[
        {
            "type": "mcp",
            "server_label": "github",
            "server_url": "https://contoso.com/Azure/azure-rest-api-specs",
            "require_approval": "never"
        }
    ],
    previous_response_id="<previous_response_id>",
    input=[
        {
            "type": "mcp_approval_response",
            "approve": True,
            "approval_request_id": "<approval_request_id>"
        }
    ]
)

print(response.output_text)

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 desteklenmiyor.
  • 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.

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="MODEL_NAME",
    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_MCP_TOKEN"}
        }
    ]
)

print(response.output_text)

Arka plan görevleri

Arka plan modu, o3 ve o1-pro gibi akıl yürütme modelleriyle uzun süren görevleri eşzamansız olarak çalıştırmanızı sağlar. Tamamlanması birkaç dakika sürebilecek karmaşık görevler (örneğin, Codex veya Derin Araştırma stili aracılar) için kullanışlıdır. "background": true ile bir istek gönderildiğinde, görev eşzamansız olarak işlenir ve durumunu sorgularsınız.

Arka plan görevi başlatma

Görevi kuyruğa almak için istekte background=true değerini ayarlayın. Hizmet bir yanıt kimliği ve queued durum ile hemen döndürür; görevi yoklamak, akışa almak veya iptal etmek için bu kimliği kullanın.

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="MODEL_NAME",
    input="Write me a very long story.",
    background=True
)

print(response.status)

Tamamlanma anketi

Durum queued veya in_progress olduğu sürece yoklamaya devam edin. Yanıt son duruma ulaştığında geri alınabilir.

from time import sleep

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

Arka plan görevini iptal etme

Devam eden bir arka plan görevini cancel uç noktasıyla iptal edin. İptal işlemi idempotenttir; sonraki çağrılar nihai yanıt nesnesini döndürür.

response = client.responses.cancel("<response_id>")
print(response.status)

Arka plan yanıtını akış olarak iletmek için hem background hem de stream değerini true olarak ayarlayın. Bu düzen, bağlantı düşerse akışı sürdürmenize olanak tanır. Her etkinlikteki konumunuzu sequence_number ile takip edin.

stream = client.responses.create(
    model="MODEL_NAME",
    input="Write me a very long story.",
    background=True,
    stream=True,
)

cursor = None
for event in stream:
    print(event)
    cursor = event["sequence_number"]

Arka plan yanıtları, şu anda eş zamanlı yanıtlardan daha uzun bir ilk token gecikme süresine sahiptir. Bu açığı azaltmaya yönelik iyileştirmeler devam ediyor.

Sınırlama

  • Arka plan modu store=true gerektirir. Durum bilgisi olmayan istekler desteklenmez.
  • Sadece özgün isteğe stream=true dahil edilmişse akışı 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

Bir akış bağlantısı kesilirse, yanıtta bir stream=true üzerinde starting_after=<sequence_number> ile birlikte GET geçirerek bilinen bir olaydan devam edebilirsiniz. Hizmet, bu sıra numarasından sonra yayımlanan olayları yeniden oynatır.

curl -N -X GET "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/responses/<response_id>?stream=true&starting_after=42" \
  -H "Content-Type: application/json" \
  -H "api-key: $AZURE_OPENAI_API_KEY"

Şifrelenmiş akıl yürütme öğeleri

Yanıtlar API'sini durum bilgisi olmayan modda ()store=false kullandığınızda, konuşma dönüşleri arasında mantık bağlamını korumaya devam etmeniz gerekir. Bunu yapmak için isteklerinize şifreli akıl yürütme öğeleri ekleyin.

Dönüşler arasında akıl yürütme öğelerini korumak için reasoning.encrypted_content öğesini include parametresine ekleyin. Daha sonra yanıt, gelecekteki isteklere geçirebileceğiniz akıl yürütme izlemesinin şifrelenmiş bir sürümünü içerir.

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="MODEL_NAME",
    reasoning={"effort": "medium"},
    input="What is the weather like today?",
    tools=[
        # Replace with your function or tool definitions.
    ],
    include=["reasoning.encrypted_content"],
    store=False,
)

print(response.output_text)

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 iki avantajı 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ü dosyası kimliklerini giriş olarak kabul edin.

Not

Yanıtlar API'sindeki görüntü oluşturma aracı - serisi modeller tarafından gpt-image-1desteklenir ve bunu uyumlu sohbet ve mantık modelleri kümesinden çağırabilirsiniz. Desteklenen düzenleme modellerinin geçerli listesi için bu makalenin devamında yer alan Desteklenen modeller bölümüne bakın.

Görüntü oluşturma aracı şu anda akış modunu desteklemiyor. Kısmi görüntülerin akışını yapmak için , doğrudan Yanıtlar API'sinin dışında görüntü oluşturma API'sini çağırın.

GPT Görüntü modelleriyle konuşma görüntüsü deneyimleri oluşturmak için Yanıtlar API'sini kullanın.

import base64
import os
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": os.getenv("IMAGE_MODEL_NAME"),
        "api_version": "preview",
    },
)

response = client.responses.create(
    model="MODEL_NAME",
    input="Generate an image of a gray tabby cat hugging an otter with an orange scarf.",
    tools=[{"type": "image_generation"}],
)

image_data = [
    output.result
    for output in response.output
    if output.type == "image_generation_call"
]

if image_data:
    with open("otter.png", "wb") as f:
        f.write(base64.b64decode(image_data[0]))

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ı.

Sorun giderme

  • 401/403: Microsoft Entra ID kullanıyorsanız belirtecinizin kapsamının https://ai.azure.com/.default olduğunu doğrulayın. API anahtarı kullanıyorsanız kaynak için doğru anahtarı kullandığınızı onaylayın.
  • 404: model değerinin dağıtım adınızla eşleştiğini onaylayın.