Delen via


Azure OpenAI-antwoorden-API

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:

  • australiaeast
  • Brazilië Zuid
  • Canada-Centraal
  • Oost-Canada
  • eastus
  • eastus2
  • francecentral
  • Centraalwest-Duitsland
  • Noord-Italië
  • japaneast
  • Korea-Centraal
  • northcentralus
  • norwayeast
  • polandcentral
  • Zuid-Afrika Noord
  • southcentralus
  • southeastasia
  • southindia
  • spaincentral
  • swedencentral
  • switzerlandnorth
  • uaenorth
  • uksouth
  • westus
  • westus3

Modelondersteuning

  • gpt-5-pro (Versie: 2025-10-06)
  • gpt-5-codex (Versie: 2025-09-11)
  • gpt-5 (Versie: 2025-08-07)
  • gpt-5-mini (Versie: 2025-08-07)
  • gpt-5-nano (Versie: 2025-08-07)
  • gpt-5-chat (Versie: 2025-08-07)
  • gpt-5-chat (Versie: 2025-10-03)
  • gpt-5-codex (Versie: 2025-09-15)
  • 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)
  • gpt-image-1-mini (Versie: 2025-10-06)
  • 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.

Note

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

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

Important

Gebruik API-sleutels met voorzichtigheid. Neem de API-sleutel niet rechtstreeks in uw code op en plaats deze nooit openbaar. Als u een API-sleutel gebruikt, slaat u deze veilig op in Azure Key Vault. Zie API-sleutels met Azure Key Vault voor meer informatie over het veilig gebruiken van API-sleutels in uw apps.

Zie Aanvragen verifiëren bij Azure AI-services voor meer informatie over beveiliging van AI-services.

Een antwoord ophalen

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

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

Important

Gebruik API-sleutels met voorzichtigheid. Neem de API-sleutel niet rechtstreeks in uw code op en plaats deze nooit openbaar. Als u een API-sleutel gebruikt, slaat u deze veilig op in Azure Key Vault. Zie API-sleutels met Azure Key Vault voor meer informatie over het veilig gebruiken van API-sleutels in uw apps.

Zie Aanvragen verifiëren bij Azure AI-services voor meer informatie over beveiliging van AI-services.

Antwoord verwijderen

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

import os
from openai import OpenAI

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

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

print(response)

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.

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

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.

Output:

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

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

Streaming

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

Functie oproepen

De antwoorden-API biedt ondersteuning voor functie-aanroepen.

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

Code-interpreter

Met het hulpprogramma Code Interpreter kunnen modellen Python-code schrijven en uitvoeren in een beveiligde, sandbox-omgeving. Het ondersteunt een reeks geavanceerde taken, waaronder:

  • Bestanden verwerken met verschillende gegevensindelingen en structuren
  • Bestanden genereren die gegevens en visualisaties bevatten (bijvoorbeeld grafieken)
  • Iteratief code schrijven en uitvoeren om problemen op te lossen: modellen kunnen fouten opsporen en code opnieuw proberen totdat het lukt
  • Visuele redenering in ondersteunde modellen verbeteren (bijvoorbeeld o3, o4-mini) door afbeeldingstransformaties in te schakelen, zoals bijsnijden, zoomen en draaien
  • Dit hulpprogramma is vooral handig voor scenario's met betrekking tot gegevensanalyse, wiskundige berekening en het genereren van code.
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

Important

Code interpreter heeft extra kosten naast de kosten op basis van tokens voor Azure OpenAI-gebruik. Als de Response-API code-interpreter tegelijkertijd aanroept in twee verschillende threads, worden er twee code-interpretersessies gemaakt. Elke sessie is standaard gedurende 1 uur actief met een time-out voor inactiviteit van 20 minuten.

Het hulpprogramma Code Interpreter vereist een container: een volledig in de sandbox geplaatste virtuele machine waarin het model Python-code kan uitvoeren. Containers kunnen geüploade bestanden of bestanden bevatten die tijdens de uitvoering zijn gegenereerd.

Als u een container wilt maken, geeft u "container": { "type": "auto", "file_ids": ["file-1", "file-2"] } op in de configuratie van het hulpprogramma bij het maken van een nieuw antwoordobject. Hiermee wordt automatisch een nieuwe container gemaakt of wordt een actieve container opnieuw gebruikt op basis van een eerdere code_interpreter_call in de context van het model. De code_interpreter_call in de uitvoer van de API zal de gegenereerde container_id bevatten. Deze container verloopt als deze gedurende 20 minuten niet wordt gebruikt.

Bestandsinvoer en -uitvoer

Bij het uitvoeren van code-interpreter kan het model zijn eigen bestanden maken. Als u bijvoorbeeld vraagt om een plot te maken of een CSV te maken, worden deze afbeeldingen rechtstreeks in uw container gemaakt. Deze bestanden worden in de aantekeningen van het volgende bericht weergegeven.

Bestanden in de modelinvoer worden automatisch geüpload naar de container. U hoeft deze niet expliciet te uploaden naar de container.

Ondersteunde bestanden

Bestandsformaat MIME type
.c text/x-c
.cs text/x-csharp
.cpp text/x-c++
.csv text/csv
.doc application/msword
.docx application/vnd.openxmlformats-officedocument.wordprocessingml.document
.html text/html
.java text/x-java
.json application/json
.md text/markdown
.pdf application/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 text/plain
.css text/css
.js text/JavaScript
.sh application/x-sh
.ts toepassing/TypeScript
.csv application/csv
.jpeg image/jpeg
.jpg image/jpeg
.gif image/gif
.pkl application/octet-stream
.png image/png
.tar application/x-tar
.xlsx application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
.xml application/xml of "text/xml"
.zip application/zip

Invoeritems weergeven

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

Output:

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

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

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)

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.

Note

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

  • In één API-aanvraag moet de grootte van inhoud die is geüpload over meerdere invoer (bestanden) binnen de contextlengte van het model vallen.

  • Alleen modellen die zowel tekst- als afbeeldingsinvoer ondersteunen, 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
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 uploaden en analyseren

Upload het PDF-bestand. Een purpose van user_data wordt momenteel niet ondersteund. Als tijdelijke oplossing moet u het doel instellen op assistants.

import os
from openai import OpenAI

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


# Upload a file with a purpose of "assistants"
file = client.files.create(
  file=open("nucleus_sampling.pdf", "rb"), # This assumes a .pdf file in the same directory as the executing script
  purpose="assistants"
)

print(file.model_dump_json(indent=2))
file_id = file.id

Output:

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

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"
                    }
                ]
            }
        ]
    }'

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

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.

Approvals

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

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

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

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

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

Note

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

Limitations

  • 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 \
  -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 \
  -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"]
  }'

Installatiekopieën genereren (preview)

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.

Note

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

Het Responses API-afbeeldingsgeneratietool biedt momenteel geen ondersteuning voor de streaming-modus. Als u de streamingmodus wilt gebruiken en gedeeltelijke afbeeldingen wilt genereren, roept u de API voor het genereren van afbeeldingen rechtstreeks buiten de Responses API aan.

Gebruik de Antwoorden-API als u ervaringen met gespreksafbeeldingen wilt bouwen met GPT Image.

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

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