Aracılığıyla paylaş


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. Yanıtlar API'si, destekleyen modeli de destekler.

Önkoşullar

  • Dağıtılmış Azure OpenAI modeli
  • Kimlik doğrulama yöntemi:
    • API anahtarı (örneğin, ) veya
    • Microsoft Entra ID (önerilir).

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

Yapay zeka hizmetleri güvenliği hakkında daha fazla bilgi için bkz. Azure Yapay Zeka Hizmetleri istekleri doğrulama.

Bir yanıt al

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

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 .

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 'yı 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)) 

Çıktıdan, API çağrısıyla ilk giriş sorusunu hiç paylaşmamış olsak da, 'i ileterek modelin yeni soruyu yanıtlamak için önceki sorunun ve yanıtın bağlamının tamamına sahip olduğunu görebiliriz.

Çıktı:

{
  "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ı elle bağlama

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

Yanıtı Sıkıştırma

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 daralt

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

Yayı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(
    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='')

Fonksiyon çağırma

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)

Containers

Önemli

Kod Yorumlayıcı, Azure OpenAI kullanımı için belirteç tabanlı ücretlerin ötesinde ek ücretler içermektedir. 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 . 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. API'nin çıkışında oluşturulan öğeyi içerir. 20 dakika boyunca kullanılmazsa bu kapsayıcının süresi sona erer.

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 type
.c text/x-c
.cs text/x-csharp
.cpp text/x-c++
.csv text/csv
.doc application/msword
.docx Uygulama türü: application/vnd.openxmlformats-officedocument.wordprocessingml.document
.html text/html
.java text/x-java
.json uygulama/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 metin/x-tex
.txt düz metin
.css text/css
.js text/JavaScript
.sh application/x-sh
.ts application/TypeScript
.csv uygulama/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 Uygulama/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))

Çıktı:

{
  "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.

Uyarı

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

  • için şu anda desteklenmiyor. Geçici bir çözüm olarak amacı olarak ayarlamanı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ı yükleyin. için şu anda desteklenmiyor. Geçici bir çözüm olarak amacı 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

Çıktı:

{
  "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, değeri alırsınız ve altında işlenmesi için 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'si herhangi bir veri uzak bir MCP sunucusuyla paylaşılmadan önce açık bir şekilde 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 öğ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"
    }],
)

Authentication

Ö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 access belirteçleri veya diğer kimlik bilgileri gibi üst bilgileri doğrudan isteğinizde belirtebilirsiniz. En yaygın kullanılan üst bilgi ü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. ile bir istek gönderildiğinde, görev eşzamansız olarak işlenir ve durumunu periyodik olarak kontrol edebilirsiniz.

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)

Arka plan yanıtının durumunu denetlemek için uç noktayı kullanın. Sıra veya işlem devam ederken 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}")

Uç noktayı kullanarak devam eden bir arka plan görevini iptal edebilirsiniz. İptal işlemi idempotenttir; sonraki çağrılar son yanıt nesnesini döndürür.

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 plandaki yanıtları yayınlama

Arka plan yanıt akışını başlatmak için hem hem de 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 olayların sequence_number'ı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"]

Uyarı

Arka plan tepkileri, şu anda eşzamanlı yanıtlar ile karşılaştırıldığında daha uzun bir ilk belirteç için yanıt süresine sahiptir. Bu açığı azaltmaya yönelik iyileştirmeler devam ediyor.

Sınırlamalar

  • Arka plan modu gerektirir . Durum bilgisi olmayan istekler desteklenmez.
  • Akışı yalnızca, özgün istek iç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

"'yi 'false' olarak ayarlayarak Yanıtlar API'sini durum bilgisi olmayan modda kullanırken, konuşma turları arasında akıl yürütme bağlamını korumaya devam etmeniz gerekir." API isteklerinize şifrelenmiş gerekçelendirme öğeleri ekleyin.

Öğeler arasındaki mantığı korumak için isteğinizin parametresine ekleyin. Bu, yanıtın, gelecekteki taleplerle aktarılabilecek, akıl yürütme izlemesinin şifreli bir 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.

Uyarı

Yanıtlar API'sinin -series modelleri tarafından desteklenen görüntü oluşturma aracı yalnızca bu modeller tarafından kullanılır. Ancak bu modeli desteklenen modeller listesinden çağırabilirsiniz: , , , , , , ve serisi modelleri.

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://cognitiveservices.azure.com/.default"
)

client = OpenAI(  
  base_url = "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/",  
  api_key=token_provider,
  default_headers={"x-ms-oai-image-generation-deployment":"gpt-image-1.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

  • En son özelliklere erişim için v1 API gereklidir

Bölge Kullanılabilirliği

Yanıtlar API'si şu anda aşağıdaki bölgelerde kullanılabilir:

  • Avustralya doğusu
  • Brezilya'nın güneyi
  • Kanada Merkezi
  • Kanada'nın Doğusu
  • eastus (bölge adı)
  • eastus2
  • francecentral
  • AlmanyaBatıMerkezi
  • italynorth
  • japaneast
  • Kore Merkezi
  • northcentralus
  • Doğu Norveç
  • Polonya Merkezi
  • southafricanorth
  • southcentralus
  • Güneydoğu Asya
  • Güney Hindistan
  • spaincentral
  • Sweden Central
  • Kuzey İsviçre
  • uaenorth
  • uksouth
  • westus
  • westus3

Model desteği

  • (Sürüm:)
  • (Sürüm:)
  • (Sürüm: )
  • (Sürüm: )
  • (Sürüm: )
  • (Sürüm: )
  • (Sürüm: )
  • (Sürüm: )
  • (Sürüm: )
  • (Sürüm: )
  • (Sürüm: )
  • (Sürüm: )
  • (Sürüm: )
  • (Sürüm: )
  • (Sürüm: )
  • (Sürüm: )
  • (Sürüm: )
  • (Sürüm: )
  • (Sürüm: )
  • (Sürüm: )
  • (Sürüm: )
  • (Sürümler: , , )
  • (Sürüm: )
  • computer-use-preview
  • (Sürüm: )
  • (Sürüm: )
  • (Sürüm: )
  • (Sürüm: )
  • (Sürüm: )
  • (Sürüm: )
  • (Sürüm: )
  • (Sürüm: )
  • (Sürüm: )
  • (Sürüm: )

Yanıtlar API'sinin desteklediği bölgelerde her model kullanılamaz. Model bölgesi kullanılabilirliği için modeller sayfasını denetleyin.

Uyarı

Şu anda desteklenmiyor:

  • Sıkıştırma ile
  • Çok aşamalı düzenleme ve akış kullanarak görüntü oluşturma.
  • Görüntüler dosya olarak karşıya yüklenemez ve ardından giriş olarak referans gösterilemez.

Aşağıdakilerle ilgili bilinen bir sorun vardır:

  • Giriş dosyası olarak PDF artık destekleniyor ancak dosya karşıya yükleme amacını olarak ayarlamak şu anda desteklenmiyor.
  • Arka plan modu akışla kullanıldığında performans sorunları. Sorunun yakında çözülmesi bekleniyor.

Başvuru belgeleri

  • Responses API başvuru belgeleri

Sorun giderme

  • 401/403: Microsoft Entra ID kullanıyorsanız belirtecinizin kapsamının https://cognitiveservices.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: dağıtım adınız ile eşleşiyor mu kontrol edin.