Delen via


Chatmodellen met vision-functionaliteit gebruiken

Chatmodellen met vision zijn grote multimodale modellen (LMM) die zijn ontwikkeld door OpenAI, waarmee afbeeldingen kunnen worden geanalyseerd en tekstuele antwoorden kunnen worden geboden op vragen over deze modellen. Ze bevatten zowel natuurlijke taalverwerking als visueel begrip. De huidige vision-enabled modellen zijn de o-serie redeneringsmodellen, GPT-5-serie, GPT-4.1-serie, GPT-4.5, GPT-4o-serie.

De vision-enabled modellen kunnen algemene vragen beantwoorden over wat er aanwezig is in de afbeeldingen die u uploadt.

Aanbeveling

Als u vision-enabled modellen wilt gebruiken, roept u de chat-voltooiings-API aan op een ondersteund model dat u hebt uitgerold. Als u niet bekend bent met de API voor chatvoltooiing, raadpleegt u de instructiegids voor chat met Vision-functionaliteit.

De CHAT-voltooiings-API's aanroepen

Met de volgende opdracht laat u de meest eenvoudige manier zien om een vision-ondersteund chatmodel met code te gebruiken. Als dit uw eerste keer is dat u deze modellen programmatisch gebruikt, raden we u aan om te beginnen met onze snelstartgids voor Chat met afbeeldingen.

Een POST-aanvraag verzenden naar waar https://{RESOURCE_NAME}.openai.azure.com/openai/v1/chat/completions

  • RESOURCE_NAME is de naam van uw Azure OpenAI-resource

Vereiste headers:

  • Content-Type: application/json
  • api-key: {API_KEY}

Hoofdtekst: Het volgende is een voorbeeld van een aanvraagbody. De indeling is hetzelfde als de API voor het chatten met voltooiingen voor GPT-4o, behalve dat de berichtinhoud een matrix kan zijn die tekst en afbeeldingen bevat (een geldige openbaar toegankelijke HTTP- of HTTPS-URL naar een afbeelding, of een base-64-gecodeerde afbeelding).

Belangrijk

Vergeet niet om een "max_tokens"- of max_completion_tokens-waarde in te stellen, anders wordt de retouruitvoer afgekapt.

Belangrijk

Bij het uploaden van afbeeldingen geldt een limiet van 10 afbeeldingen per chataanvraag.

{
    "model": "MODEL-DEPLOYMENT-NAME",
    "messages": [ 
        {
            "role": "system", 
            "content": "You are a helpful assistant." 
        },
        {
            "role": "user", 
            "content": [
	            {
	                "type": "text",
	                "text": "Describe this picture:"
	            },
	            {
	                "type": "image_url",
	                "image_url": {
                        "url": "<image URL>"
                    }
                } 
           ] 
        }
    ],
    "max_tokens": 100, 
    "stream": false 
} 

Aanbeveling

Een lokale afbeelding gebruiken

Als u een lokale installatiekopieën wilt gebruiken, kunt u de volgende Python-code gebruiken om deze te converteren naar base64, zodat deze kan worden doorgegeven aan de API. Alternatieve hulpprogramma's voor bestandsconversie zijn online beschikbaar.

import base64
from mimetypes import guess_type

# Function to encode a local image into data URL 
def local_image_to_data_url(image_path):
    # Guess the MIME type of the image based on the file extension
    mime_type, _ = guess_type(image_path)
    if mime_type is None:
        mime_type = 'application/octet-stream'  # Default MIME type if none is found

    # Read and encode the image file
    with open(image_path, "rb") as image_file:
        base64_encoded_data = base64.b64encode(image_file.read()).decode('utf-8')

    # Construct the data URL
    return f"data:{mime_type};base64,{base64_encoded_data}"

# Example usage
image_path = '<path_to_image>'
data_url = local_image_to_data_url(image_path)
print("Data URL:", data_url)

Wanneer uw base64-afbeeldingsgegevens gereed zijn, kunt u deze als volgt doorgeven aan de API in de aanvraagbody:

...
"type": "image_url",
"image_url": {
   "url": "data:image/jpeg;base64,<your_image_data>"
}
...

Detailparameterinstellingen

U kunt desgewenst een "detail" parameter in het "image_url" veld definiëren. Kies een van de drie waarden, low, highof auto, om de manier aan te passen waarop het model afbeeldingen interpreteert en verwerkt.

  • auto instelling: de standaardinstelling. Het model bepaalt tussen laag of hoog op basis van de grootte van de afbeeldingsinvoer.
  • low instelling: het model activeert niet de modus 'hoge res', in plaats daarvan verwerkt een lagere resolutie 512x512-versie, wat resulteert in snellere reacties en een verminderd tokenverbruik voor scenario's waarbij gedetailleerde details niet cruciaal zijn.
  • high instelling: het model activeert de modus 'hoge res'. Hier bekijkt het model in eerste instantie de afbeelding met lage resolutie en genereert vervolgens gedetailleerde 512x512-segmenten van de invoerafbeelding. Elk segment maakt gebruik van het dubbele tokenbudget, wat een gedetailleerdere interpretatie van de afbeelding mogelijk maakt.

U stelt de waarde in met behulp van de indeling die in dit voorbeeld wordt weergegeven:

{ 
    "type": "image_url",
    "image_url": {
        "url": "<image URL>",
        "detail": "high"
    }
}

Voor details over hoe de afbeeldingsparameters van invloed zijn op de gebruikte tokens en de prijzen, zie - Wat is Azure OpenAI? Afbeeldingstokens

Uitvoer

Het API-antwoord moet er als volgt uitzien.

{
    "id": "chatcmpl-8VAVx58veW9RCm5K1ttmxU6Cm4XDX",
    "object": "chat.completion",
    "created": 1702439277,
    "model": "gpt-4o",
    "prompt_filter_results": [
        {
            "prompt_index": 0,
            "content_filter_results": {
                "hate": {
                    "filtered": false,
                    "severity": "safe"
                },
                "self_harm": {
                    "filtered": false,
                    "severity": "safe"
                },
                "sexual": {
                    "filtered": false,
                    "severity": "safe"
                },
                "violence": {
                    "filtered": false,
                    "severity": "safe"
                }
            }
        }
    ],
    "choices": [
        {
            "finish_reason":"stop",
            "index": 0,
            "message": {
                "role": "assistant",
                "content": "The picture shows an individual dressed in formal attire, which includes a black tuxedo with a black bow tie. There is an American flag on the left lapel of the individual's jacket. The background is predominantly blue with white text that reads \"THE KENNEDY PROFILE IN COURAGE AWARD\" and there are also visible elements of the flag of the United States placed behind the individual."
            },
            "content_filter_results": {
                "hate": {
                    "filtered": false,
                    "severity": "safe"
                },
                "self_harm": {
                    "filtered": false,
                    "severity": "safe"
                },
                "sexual": {
                    "filtered": false,
                    "severity": "safe"
                },
                "violence": {
                    "filtered": false,
                    "severity": "safe"
                }
            }
        }
    ],
    "usage": {
        "prompt_tokens": 1156,
        "completion_tokens": 80,
        "total_tokens": 1236
    }
}

Elk antwoord bevat een "finish_reason" veld. Het heeft de volgende mogelijke waarden:

  • stop: API heeft volledige modeluitvoer geretourneerd.
  • length: Onvolledige modeluitvoer vanwege de tokenlimiet van de max_tokens invoerparameter of het model.
  • content_filter: Inhoud weggelaten vanwege een vlag van onze inhoudsfilters.

Uitvoer

De chatantwoorden die u van het model ontvangt, moeten nu uitgebreide informatie bevatten over de afbeelding, zoals objectlabels en begrenzingsvakken en OCR-resultaten. Het API-antwoord moet er als volgt uitzien.

{
    "id": "chatcmpl-8UyuhLfzwTj34zpevT3tWlVIgCpPg",
    "object": "chat.completion",
    "created": 1702394683,
    "model": "gpt-4o",
    "choices":
    [
        {
            "finish_reason": {
                "type": "stop",
                "stop": "<|fim_suffix|>"
            },
            "index": 0,
            "message":
            {
                "role": "assistant",
                "content": "The image shows a close-up of an individual with dark hair and what appears to be a short haircut. The person has visible ears and a bit of their neckline. The background is a neutral light color, providing a contrast to the dark hair."
            }
        }
    ],
    "usage":
    {
        "prompt_tokens": 816,
        "completion_tokens": 49,
        "total_tokens": 865
    }
}

Elk antwoord bevat een "finish_reason" veld. Het heeft de volgende mogelijke waarden:

  • stop: API heeft volledige modeluitvoer geretourneerd.
  • length: Onvolledige modeluitvoer vanwege de tokenlimiet van de max_tokens invoerparameter of het model.
  • content_filter: Inhoud weggelaten vanwege een vlag van onze inhoudsfilters.