Delen via


Azure OpenAI-antwoorden-API (preview)

De Response-API is een nieuwe stateful API van Azure OpenAI. Het combineert de beste mogelijkheden van de chatvoltooiingen en assistenten-API in één uniforme ervaring. De Antwoorden-API voegt ook ondersteuning toe voor het nieuwe computer-use-preview model dat de mogelijkheid computergebruik aangeeft.

Antwoord-API

API-ondersteuning

Beschikbaarheid in regio's

De antwoorden-API is momenteel beschikbaar in de volgende regio's:

  • Australië Oost
  • Eastus
  • eastus2
  • francecentral
  • JapanOost
  • NoorwegenOost
  • Polencentral
  • Zuid-India
  • swedencentral
  • Zwitserland Noord
  • Uaenorth
  • UKSouth
  • westus
  • westus3

Modelondersteuning

  • gpt-4o (Versies: 2024-11-20, 2024-08-06, 2024-05-13)
  • gpt-4o-mini (Versie: 2024-07-18)
  • computer-use-preview
  • gpt-4.1 (Versie: 2025-04-14)
  • gpt-4.1-nano (Versie: 2025-04-14)
  • gpt-4.1-mini (Versie: 2025-04-14)
  • gpt-image-1 (Versie: 2025-04-15)
  • o1 (Versie: 2024-12-17)
  • o3-mini (Versie: 2025-01-31)
  • o3 (Versie: 2025-04-16)
  • o4-mini (Versie: 2025-04-16)

Niet elk model is beschikbaar in de regio's die worden ondersteund door de antwoord-API. Controleer de pagina modellen op beschikbaarheid van modelregio's.

Opmerking

Momenteel niet ondersteund:

  • Het webzoekprogramma
  • Het genereren van afbeeldingen met meerdere bewerkingsrondes en streaming - binnenkort te verwachten
  • Afbeeldingen kunnen niet worden geüpload als een bestand en vervolgens worden verwezen als invoer. Binnenkort beschikbaar.

Er is een bekend probleem met het volgende:

  • PDF als invoerbestand wordt nu ondersteund, maar het instellen van het uploaddoel user_data voor bestanden wordt momenteel niet ondersteund.
  • Prestaties wanneer de achtergrondmodus wordt gebruikt met streaming. Het probleem wordt naar verwachting binnenkort opgelost.

Referentiedocumentatie

Aan de slag met de antwoorden-API

Als u toegang wilt krijgen tot de API-opdrachten voor antwoorden, moet u uw versie van de OpenAI-bibliotheek upgraden.

pip install --upgrade openai

Een tekstantwoord genereren

from openai import AzureOpenAI
from azure.identity import DefaultAzureCredential, get_bearer_token_provider

token_provider = get_bearer_token_provider(
    DefaultAzureCredential(), "https://cognitiveservices.azure.com/.default"
)

client = AzureOpenAI(  
  base_url = "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/",  
  azure_ad_token_provider=token_provider,
  api_version="preview"
)

response = client.responses.create(
    model="gpt-4.1-nano",
    input= "This is a test" 
)

print(response.model_dump_json(indent=2)) 

Een antwoord ophalen

Een antwoord ophalen van een vorige aanroep naar de antwoord-API.

from openai import AzureOpenAI
from azure.identity import DefaultAzureCredential, get_bearer_token_provider

token_provider = get_bearer_token_provider(
    DefaultAzureCredential(), "https://cognitiveservices.azure.com/.default"
)

client = AzureOpenAI(  
  base_url = "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/",  
  azure_ad_token_provider=token_provider,
  api_version="preview"
)

response = client.responses.retrieve("resp_67cb61fa3a448190bcf2c42d96f0d1a8")

print(response.model_dump_json(indent=2))

Antwoord verwijderen

Standaard worden antwoordgegevens 30 dagen bewaard. Als u een antwoord wilt verwijderen, kunt u dit gebruiken response.delete"("{response_id})

from openai import AzureOpenAI
from azure.identity import DefaultAzureCredential, get_bearer_token_provider

token_provider = get_bearer_token_provider(
    DefaultAzureCredential(), "https://cognitiveservices.azure.com/.default"
)

client = AzureOpenAI(  
  base_url = "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/",  
  azure_ad_token_provider=token_provider,
  api_version="preview"
)

response = client.responses.delete("resp_67cb61fa3a448190bcf2c42d96f0d1a8")

print(response)

Antwoorden aan elkaar koppelen

U kunt antwoorden aan elkaar koppelen door het response.id vorige antwoord door te geven aan de previous_response_id parameter.

from openai import AzureOpenAI
from azure.identity import DefaultAzureCredential, get_bearer_token_provider

token_provider = get_bearer_token_provider(
    DefaultAzureCredential(), "https://cognitiveservices.azure.com/.default"
)

client = AzureOpenAI(  
  base_url = "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/",  
  azure_ad_token_provider=token_provider,
  api_version="preview"
)

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

In de uitvoer ziet u dat, ook al hebben we de eerste invoervraag nooit gedeeld met de second_response API-aanroep, het model met previous_response_id de volledige context van de vorige vraag en het antwoord kent om de nieuwe vraag te beantwoorden.

Uitvoer:

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

Reacties handmatig koppelen

U kunt antwoorden ook handmatig koppelen met behulp van de onderstaande methode:

from openai import AzureOpenAI
from azure.identity import DefaultAzureCredential, get_bearer_token_provider

token_provider = get_bearer_token_provider(
    DefaultAzureCredential(), "https://cognitiveservices.azure.com/.default"
)

client = AzureOpenAI(  
  base_url = "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/",  
  azure_ad_token_provider=token_provider,
  api_version="preview"
)


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

Streamen

from openai import AzureOpenAI
from azure.identity import DefaultAzureCredential, get_bearer_token_provider

token_provider = get_bearer_token_provider(
    DefaultAzureCredential(), "https://cognitiveservices.azure.com/.default"
)

client = AzureOpenAI(  
  base_url = "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/",  
  azure_ad_token_provider=token_provider,
  api_version="preview"
)

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

Functie oproepen

De antwoorden-API biedt ondersteuning voor functie-aanroepen.

from openai import AzureOpenAI
from azure.identity import DefaultAzureCredential, get_bearer_token_provider

token_provider = get_bearer_token_provider(
    DefaultAzureCredential(), "https://cognitiveservices.azure.com/.default"
)

client = AzureOpenAI(  
  base_url = "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/",  
  azure_ad_token_provider=token_provider,
  api_version="preview"
)

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

Invoeritems weergeven

from openai import AzureOpenAI
from azure.identity import DefaultAzureCredential, get_bearer_token_provider

token_provider = get_bearer_token_provider(
    DefaultAzureCredential(), "https://cognitiveservices.azure.com/.default"
)

client = AzureOpenAI(  
  base_url = "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/",  
  azure_ad_token_provider=token_provider,
  api_version="preview"
)

response = client.responses.input_items.list("resp_67d856fcfba0819081fd3cffee2aa1c0")

print(response.model_dump_json(indent=2))

Uitvoer:

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

Afbeeldingsinvoer

Afbeeldings-URL

from openai import AzureOpenAI
from azure.identity import DefaultAzureCredential, get_bearer_token_provider

token_provider = get_bearer_token_provider(
    DefaultAzureCredential(), "https://cognitiveservices.azure.com/.default"
)

client = AzureOpenAI(  
  base_url = "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/",  
  azure_ad_token_provider=token_provider,
  api_version="preview"
)

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-gecodeerde afbeelding

import base64
from openai import AzureOpenAI
from azure.identity import DefaultAzureCredential, get_bearer_token_provider

token_provider = get_bearer_token_provider(
    DefaultAzureCredential(), "https://cognitiveservices.azure.com/.default"
)

client = AzureOpenAI(  
  base_url = "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/",  
  azure_ad_token_provider=token_provider,
  api_version="preview"
)

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)

Bestandsinvoer

Modellen met vision-mogelijkheden ondersteunen PDF-invoer. PDF-bestanden kunnen worden geleverd als met Base64 gecodeerde gegevens of als bestands-id's. Om modellen te helpen PDF-inhoud te interpreteren, worden zowel de geëxtraheerde tekst als een afbeelding van elke pagina opgenomen in de context van het model. Dit is handig wanneer belangrijke informatie wordt overgebracht via diagrammen of niet-tekstuele inhoud.

Opmerking

  • Alle geëxtraheerde tekst en afbeeldingen worden in de context van het model geplaatst. Zorg ervoor dat u de gevolgen van het gebruik van prijzen en tokens begrijpt voor het gebruik van PDF-bestanden als invoer.

  • U kunt maximaal 100 pagina's en 32 MB aan totale inhoud uploaden in één aanvraag naar de API, voor meerdere bestandsinvoer.

  • Alleen modellen die zowel tekst- als afbeeldingsinvoer ondersteunen, zoals gpt-4o, gpt-4o-miniof o1, kunnen PDF-bestanden als invoer accepteren.

  • Een purpose van user_data wordt momenteel niet ondersteund. Als tijdelijke oplossing moet u het doel instellen op assistants.

PDF converteren naar Base64 en analyseren

import base64
from openai import AzureOpenAI
from azure.identity import DefaultAzureCredential, get_bearer_token_provider

token_provider = get_bearer_token_provider(
    DefaultAzureCredential(), "https://cognitiveservices.azure.com/.default"
)

client = AzureOpenAI(  
  base_url = "https://YOUR-RESOURCE=NAME.openai.azure.com/openai/v1/",
  azure_ad_token_provider=token_provider,
  api_version="preview"
)

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 uploaden en analyseren

Upload het PDF-bestand. Een purposeuser_data wordt op dit moment niet ondersteund. Als tijdelijke oplossing moet u het doel instellen op assistants.

from openai import AzureOpenAI
from azure.identity import DefaultAzureCredential, get_bearer_token_provider

token_provider = get_bearer_token_provider(
    DefaultAzureCredential(), "https://cognitiveservices.azure.com/.default"
)

client = AzureOpenAI(
  azure_endpoint = "https://YOUR-RESOURCE=NAME.openai.azure.com/", 
  azure_ad_token_provider=token_provider,
  api_version="2024-10-21"
)


# Upload a file with a purpose of "batch"
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

Uitvoer:

{
  "id": "assistant-KaVLJQTiWEvdz8yJQHHkqJ",
  "bytes": 4691115,
  "created_at": 1752174469,
  "filename": "nucleus_sampling.pdf",
  "object": "file",
  "purpose": "assistants",
  "status": "processed",
  "expires_at": null,
  "status_details": null
}

Vervolgens neemt u de waarde van de id en geeft u deze door aan een model voor verwerking onder file_id:

from openai import AzureOpenAI
from azure.identity import DefaultAzureCredential, get_bearer_token_provider

token_provider = get_bearer_token_provider(
    DefaultAzureCredential(), "https://cognitiveservices.azure.com/.default"
)

client = AzureOpenAI(  
  base_url = "https://YOUR-RESOURCE=NAME.openai.azure.com/openai/v1",
  azure_ad_token_provider=token_provider,
  api_version="preview"
)


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?api-version=2024-10-21 \
  -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?api-version=preview \
  -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"
                    }
                ]
            }
        ]
    }'

Externe MCP-servers gebruiken

U kunt de mogelijkheden van uw model uitbreiden door het te verbinden met hulpprogramma's die worden gehost op MCP-servers (Remote Model Context Protocol). Deze servers worden onderhouden door ontwikkelaars en organisaties en maken hulpprogramma's beschikbaar die toegankelijk zijn voor MCP-compatibele clients, zoals de Antwoorden-API.

Model Context Protocol (MCP) is een open standaard die definieert hoe toepassingen hulpprogramma's en contextuele gegevens bieden aan grote taalmodellen (LLM's). Het maakt consistente, schaalbare integratie van externe hulpprogramma's mogelijk in modelwerkstromen.

In het volgende voorbeeld ziet u hoe u de fictieve MCP-server gebruikt om informatie over de Azure REST API op te vragen. Hierdoor kan het model in realtime inhoud van de opslagplaats ophalen en redeneren.

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": "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?"
}'
from openai import AzureOpenAI
from azure.identity import DefaultAzureCredential, get_bearer_token_provider

token_provider = get_bearer_token_provider(
    DefaultAzureCredential(), "https://cognitiveservices.azure.com/.default"
)

client = AzureOpenAI(  
  base_url = "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/",  
  azure_ad_token_provider=token_provider,
  api_version="preview"
)

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)

Het MCP-hulpprogramma werkt alleen in de Antwoorden-API en is beschikbaar voor alle nieuwere modellen (gpt-4o, gpt-4.1 en onze redeneringsmodellen). Wanneer u het MCP-hulpprogramma gebruikt, betaalt u alleen voor tokens die worden gebruikt bij het importeren van hulpprogrammadefinities of het maken van hulpprogramma-aanroepen. Er zijn geen extra kosten verbonden.

Goedkeuringen

De Antwoorden-API vereist standaard expliciete goedkeuring voordat gegevens worden gedeeld met een externe MCP-server. Deze goedkeuringsstap zorgt voor transparantie en geeft u controle over welke informatie extern wordt verzonden.

We raden u aan alle gegevens te controleren die worden gedeeld met externe MCP-servers en deze eventueel te registreren voor controledoeleinden.

Wanneer een goedkeuring is vereist, retourneert het model een mcp_approval_request item in de antwoorduitvoer. Dit object bevat de details van de aanvraag die in behandeling is en stelt u in staat om de gegevens te inspecteren of te wijzigen voordat u doorgaat.

{
  "id": "mcpr_682bd9cd428c8198b170dc6b549d66fc016e86a03f4cc828",
  "type": "mcp_approval_request",
  "arguments": {},
  "name": "fetch_azure_rest_api_docs",
  "server_label": "github"
}

Als u wilt doorgaan met de externe MCP-aanroep, moet u reageren op de goedkeuringsaanvraag door een nieuw antwoordobject te maken dat een mcp_approval_response item bevat. Dit object bevestigt uw intentie zodat het model de opgegeven gegevens naar de externe MCP-server kan verzenden.

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": "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"
  }]
}'
from openai import AzureOpenAI
from azure.identity import DefaultAzureCredential, get_bearer_token_provider

token_provider = get_bearer_token_provider(
    DefaultAzureCredential(), "https://cognitiveservices.azure.com/.default"
)

client = AzureOpenAI(  
  base_url = "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/",  
  azure_ad_token_provider=token_provider,
  api_version="preview"
)

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

Authenticatie

In tegenstelling tot de GitHub MCP-server vereisen de meeste externe MCP-servers verificatie. Het MCP-hulpprogramma in de antwoorden-API ondersteunt aangepaste headers, zodat u veilig verbinding kunt maken met deze servers met behulp van het verificatieschema dat ze nodig hebben.

U kunt headers opgeven, zoals API-sleutels, OAuth-toegangstokens of andere referenties, rechtstreeks in uw aanvraag. De meest gebruikte header is de Authorization header.

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",
        "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"
            }
        ]
    }'
from openai import AzureOpenAI
from azure.identity import DefaultAzureCredential, get_bearer_token_provider

token_provider = get_bearer_token_provider(
    DefaultAzureCredential(), "https://cognitiveservices.azure.com/.default"
)

client = AzureOpenAI(  
  base_url = "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/",  
  azure_ad_token_provider=token_provider,
  api_version="preview"
)

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)

Achtergrondtaken

Met de achtergrondmodus kunt u langlopende taken asynchroon uitvoeren met behulp van modellen zoals o3 en o1-pro. Dit is vooral handig voor complexe redeneringstaken die enkele minuten kunnen duren, zoals taken die worden verwerkt door agents zoals Codex of Deep Research.

Door de achtergrondmodus in te schakelen, kunt u time-outs voorkomen en betrouwbaarheid behouden tijdens uitgebreide bewerkingen. Wanneer een aanvraag wordt verzonden met "background": true, wordt de taak asynchroon verwerkt en kunt u na verloop van tijd de status ervan opvragen.

Als u een achtergrondtaak wilt starten, stelt u de background parameter in op true in uw verzoek.

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": "o3",
    "input": "Write me a very long story",
    "background": true
  }'
from openai import AzureOpenAI
from azure.identity import DefaultAzureCredential, get_bearer_token_provider

token_provider = get_bearer_token_provider(
    DefaultAzureCredential(), "https://cognitiveservices.azure.com/.default"
)

client = AzureOpenAI(  
  base_url = "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/",  
  azure_ad_token_provider=token_provider,
  api_version="preview"
)

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

print(response.status)

Gebruik het GET eindpunt om de status van een achtergrondantwoord te controleren. Blijf polling uitvoeren terwijl de status in de wachtrij of in progress is. Zodra het antwoord de definitieve status (terminal) heeft bereikt, is het beschikbaar voor het ophalen.

curl GET https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/responses/resp_1234567890?api-version=preview \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $AZURE_OPENAI_AUTH_TOKEN"
from openai import AzureOpenAI
from azure.identity import DefaultAzureCredential, get_bearer_token_provider
from time import sleep

token_provider = get_bearer_token_provider(
    DefaultAzureCredential(), "https://cognitiveservices.azure.com/.default"
)

client = AzureOpenAI(  
  base_url = "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/",  
  azure_ad_token_provider=token_provider,
  api_version="preview"
)

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 kunt een actieve achtergrondtaak annuleren met behulp van het cancel eindpunt. Annuleren is idempotent. Volgende aanroepen retourneren het uiteindelijke antwoordobject.

curl -X POST https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/responses/resp_1234567890/cancel?api-version=preview \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $AZURE_OPENAI_AUTH_TOKEN"
from openai import AzureOpenAI
from azure.identity import DefaultAzureCredential, get_bearer_token_provider

token_provider = get_bearer_token_provider(
    DefaultAzureCredential(), "https://cognitiveservices.azure.com/.default"
)

client = AzureOpenAI(  
  base_url = "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/",  
  azure_ad_token_provider=token_provider,
  api_version="preview"
)

response = client.responses.cancel("resp_1234567890")

print(response.status)

Een achtergrondantwoord streamen

Als u een achtergrondantwoord wilt streamen, stelt u zowel background als stream in op waar. Dit is handig als u het streamen later wilt hervatten in het geval van een verbroken verbinding. Gebruik de sequence_number van elke gebeurtenis om uw positie bij te houden.

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": "o3",
    "input": "Write me a very long story",
    "background": true,
    "stream": true
  }'

from openai import AzureOpenAI
from azure.identity import DefaultAzureCredential, get_bearer_token_provider

token_provider = get_bearer_token_provider(
    DefaultAzureCredential(), "https://cognitiveservices.azure.com/.default"
)

client = AzureOpenAI(  
  base_url = "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/",  
  azure_ad_token_provider=token_provider,
  api_version="preview"
)

# 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"]

Opmerking

Achtergrondantwoorden hebben momenteel een hogere tijd tot eerste token-latentie dan synchrone antwoorden. Er worden verbeteringen doorgevoerd om deze kloof te verminderen.

Beperkingen

  • Voor de achtergrondmodus is vereist store=true. Staatloze aanvragen worden niet ondersteund.
  • U kunt streaming alleen hervatten als de oorspronkelijke aanvraag stream=true bevatte.
  • Als u een synchrone reactie wilt annuleren, beëindigt u de verbinding rechtstreeks.

Streaming hervatten vanaf een specifiek punt

curl https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/responses/resp_1234567890?stream=true&starting_after=42&api-version=2025-04-01-preview \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $AZURE_OPENAI_AUTH_TOKEN"

Versleutelde redeneervragen

Wanneer u de Responses-API gebruikt in de stateless mode (door store op false in te stellen of wanneer uw organisatie is ingeschreven voor geen gegevensbewaring), moet u de redeneringscontext in gespreksbeurten behouden. Neem hiervoor versleutelde redeneringsitems op in uw API-aanvragen.

Als u redeneringsitems wilt behouden, voegt u reasoning.encrypted_content toe aan de include-parameter in uw verzoek. Dit zorgt ervoor dat het antwoord een versleutelde versie van de redeneringstracering bevat, die kan worden doorgegeven in toekomstige aanvragen.

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": "o4-mini",
    "reasoning": {"effort": "medium"},
    "input": "What is the weather like today?",
    "tools": [<YOUR_FUNCTION GOES HERE>],
    "include": ["reasoning.encrypted_content"]
  }'

Afbeeldingsgeneratie

De Response-API maakt het genereren van afbeeldingen mogelijk als onderdeel van gesprekken en werkstromen met meerdere stappen. Het ondersteunt invoer en uitvoer van afbeeldingen binnen context en bevat ingebouwde hulpprogramma's voor het genereren en bewerken van afbeeldingen.

Vergeleken met de zelfstandige image-API biedt de Response-API verschillende voordelen:

  • Streaming: Gedeeltelijke uitvoer van afbeeldingen weergeven tijdens het genereren om de waargenomen latentie te verminderen.
  • Flexibele invoer: Accepteer afbeeldingsbestands-id's als invoer, naast onbewerkte afbeeldingsbytes.

Opmerking

Het hulpprogramma voor het genereren van afbeeldingen in de Antwoorden-API wordt alleen ondersteund door het gpt-image-1 model. U kunt dit model echter aanroepen vanuit deze lijst met ondersteunde modellen - , gpt-4o, gpt-4o-minigpt-4.1, gpt-4.1-mini, gpt-4.1-nano, . o3

Gebruik de antwoorden-API als u het volgende wilt doen:

  • Maak ervaringen met gespreksafbeeldingen met GPT Image.
  • Stream gedeeltelijke afbeeldingsresultaten tijdens het genereren voor een soepelere gebruikerservaring.

Een afbeelding genereren

from openai import AzureOpenAI
from azure.identity import DefaultAzureCredential, get_bearer_token_provider

token_provider = get_bearer_token_provider(
    DefaultAzureCredential(), "https://cognitiveservices.azure.com/.default"
)

client = AzureOpenAI(  
  base_url = "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/",  
  azure_ad_token_provider=token_provider,
  api_version="preview",
  default_headers={"x-ms-oai-image-generation-deployment":"YOUR-GPT-IMAGE1-DEPLOYMENT-NAME"}
)

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

Streamen

U kunt gedeeltelijke afbeeldingen streamen met behulp van de Response-API. De partial_images kan worden gebruikt voor het ontvangen van 1-3 gedeeltelijke afbeeldingen

from openai import AzureOpenAI
from azure.identity import DefaultAzureCredential, get_bearer_token_provider

token_provider = get_bearer_token_provider(
    DefaultAzureCredential(), "https://cognitiveservices.azure.com/.default"
)

client = AzureOpenAI(  
  base_url = "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/",  
  azure_ad_token_provider=token_provider,
  api_version="preview",
  default_headers={"x-ms-oai-image-generation-deployment":"YOUR-GPT-IMAGE1-DEPLOYMENT-NAME"}
)

stream = client.responses.create(
    model="gpt-4.1",
    input="Draw a gorgeous image of a river made of white owl feathers, snaking its way through a serene winter landscape",
    stream=True,
    tools=[{"type": "image_generation", "partial_images": 2}],
)

for event in stream:
    if event.type == "response.image_generation_call.partial_image":
        idx = event.partial_image_index
        image_base64 = event.partial_image_b64
        image_bytes = base64.b64decode(image_base64)
        with open(f"river{idx}.png", "wb") as f:
            f.write(image_bytes)

Afbeeldingen bewerken

from openai import AzureOpenAI
from azure.identity import DefaultAzureCredential, get_bearer_token_provider
import base64

client = AzureOpenAI(  
  base_url = "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/",  
  azure_ad_token_provider=token_provider,
  api_version="preview",
  default_headers={"x-ms-oai-image-generation-deployment":"YOUR-GPT-IMAGE1-DEPLOYMENT-NAME"}
)

def create_file(file_path):
  with open(file_path, "rb") as file_content:
    result = client.files.create(
        file=file_content,
        purpose="vision",
    )
    return result.id

def encode_image(file_path):
    with open(file_path, "rb") as f:
        base64_image = base64.b64encode(f.read()).decode("utf-8")
    return base64_image

prompt = """Generate a photorealistic image of a gift basket on a white background 
labeled 'Relax & Unwind' with a ribbon and handwriting-like font, 
containing all the items in the reference pictures."""

base64_image1 = encode_image("image1.png")
base64_image2 = encode_image("image2.png")
file_id1 = create_file("image3.png")
file_id2 = create_file("image4.png")

response = client.responses.create(
    model="gpt-4.1",
    input=[
        {
            "role": "user",
            "content": [
                {"type": "input_text", "text": prompt},
                {
                    "type": "input_image",
                    "image_url": f"data:image/jpeg;base64,{base64_image1}",
                },
                {
                    "type": "input_image",
                    "image_url": f"data:image/jpeg;base64,{base64_image2}",
                },
                {
                    "type": "input_image",
                    "file_id": file_id1,
                },
                {
                    "type": "input_image",
                    "file_id": file_id2,
                }
            ],
        }
    ],
    tools=[{"type": "image_generation"}],
)

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

image_data = [output.result for output in image_generation_calls]

if image_data:
    image_base64 = image_data[0]
    with open("gift-basket.png", "wb") as f:
        f.write(base64.b64decode(image_base64))
else:
    print(response.output.content)

Redeneringsmodellen

Zie de handleiding met redeneringsmodellen voor voorbeelden van het gebruik van redeneringsmodellen met de api voor antwoorden.

Computergebruik

Computergebruik met Playwright is verplaatst naar de speciale handleiding voor computergebruik