Delen via


GPT-4 Turbo met Vision gebruiken

GPT-4 Turbo with Vision is een groot multimodale model (LMM) ontwikkeld door OpenAI dat afbeeldingen kan analyseren en tekstuele antwoorden kan geven op vragen over deze modellen. Het bevat zowel natuurlijke taalverwerking als visueel begrip.

De GPT-4 Turbo met Vision-model beantwoordt algemene vragen over wat er in afbeeldingen aanwezig is.

Tip

Als u GPT-4 Turbo met Vision wilt gebruiken, roept u de CHAT-voltooiings-API aan op een GPT-4 Turbo met Vision-model dat u hebt geïmplementeerd. Als u niet bekend bent met de CHAT-voltooiings-API, raadpleegt u de handleiding GPT-4 Turbo & GPT-4.

GPT-4 Turbo model upgrade

De nieuwste GA-release van GPT-4 Turbo is:

  • gpt-4Versie: turbo-2024-04-09

Dit is de vervanging voor de volgende preview-modellen:

  • gpt-4Versie: 1106-Preview
  • gpt-4Versie: 0125-Preview
  • gpt-4Versie: vision-preview

Verschillen tussen OpenAI en Azure OpenAI GPT-4 Turbo GA-modellen

  • OpenAI's versie van het nieuwste 0409 turbomodel ondersteunt JSON-modus en functie-aanroepen voor alle deductieaanvragen.
  • De versie van Azure OpenAI van de meest recente turbo-2024-04-09 versie biedt momenteel geen ondersteuning voor het gebruik van de JSON-modus en functie-aanroepen bij het maken van deductieaanvragen met afbeeldingsinvoer (vision). Invoeraanvragen op basis van tekst (aanvragen zonder image_url en inline-afbeeldingen) ondersteunen de JSON-modus en functie-aanroepen.

Verschillen met gpt-4 vision-preview

  • Integratie van azure AI-specifieke Vision-verbeteringen met GPT-4 Turbo met Vision wordt niet ondersteund voor gpt-4 versie: turbo-2024-04-09. Dit omvat Optical Character Recognition (OCR), objectaarding, videoprompts en verbeterde verwerking van uw gegevens met afbeeldingen.

Belangrijk

Preview-functies voor visuele verbeteringen, waaronder OCR (Optical Character Recognition), objectgronding, videoprompts worden buiten gebruik gesteld en zijn niet meer beschikbaar zodra gpt-4 versie: vision-preview wordt bijgewerkt naar turbo-2024-04-09. Als u momenteel afhankelijk bent van een van deze preview-functies, is deze automatische modelupgrade een belangrijke wijziging.

Beheerde beschikbaarheid van GPT-4 Turbo ingericht

  • gpt-4Versie: turbo-2024-04-09 is beschikbaar voor zowel standaard- als ingerichte implementaties. Momenteel biedt de ingerichte versie van dit model geen ondersteuning voor aanvragen voor afbeeldings-/visiondeductie. Ingerichte implementaties van dit model accepteren alleen tekstinvoer. Standaardmodelimplementaties accepteren zowel tekst- als afbeeldings-/visiondeductieaanvragen.

GPT-4 Turbo implementeren met Vision GA

Als u het GA-model wilt implementeren vanuit de gebruikersinterface van Studio, selecteert en kiest u GPT-4 vervolgens de turbo-2024-04-09 versie in de vervolgkeuzelijst. Het standaardquotum voor het gpt-4-turbo-2024-04-09 model is hetzelfde als het huidige quotum voor GPT-4-Turbo. Zie de regionale quotumlimieten.

De CHAT-voltooiings-API's aanroepen

De volgende opdracht toont de meest eenvoudige manier om het GPT-4 Turbo met Vision-model 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 GPT-4 Turbo met Vision-quickstart.

Een POST-aanvraag verzenden naar waar https://{RESOURCE_NAME}.openai.azure.com/openai/deployments/{DEPLOYMENT_NAME}/chat/completions?api-version=2024-02-15-preview

  • RESOURCE_NAME is de naam van uw Azure OpenAI-resource
  • DEPLOYMENT_NAME is de naam van uw GPT-4 Turbo met Vision-modelimplementatie

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 voltooiing van de chat voor GPT-4, behalve dat de berichtinhoud een matrix kan zijn die tekst en afbeeldingen bevat (een geldige HTTP- of HTTPS-URL naar een afbeelding of een met base 64 gecodeerde afbeelding).

Belangrijk

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

Belangrijk

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

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

Tip

Een lokale installatiekopieën 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>"
}
...

Uitvoer

Het API-antwoord moet er als volgt uitzien.

{
    "id": "chatcmpl-8VAVx58veW9RCm5K1ttmxU6Cm4XDX",
    "object": "chat.completion",
    "created": 1702439277,
    "model": "gpt-4",
    "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.

Detailparameterinstellingen in afbeeldingsverwerking: Laag, Hoog, Automatisch

De detailparameter in het model biedt drie opties: low, highof auto, om de manier aan te passen waarop het model afbeeldingen interpreteert en verwerkt. De standaardinstelling is automatisch, waarbij het model bepaalt tussen laag of hoog op basis van de grootte van de invoer van de afbeelding.

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

Zie <a0>What is Azure OpenAI? (Wat is Azure OpenAI) voor meer informatie over hoe de afbeeldingsparameters van invloed zijn op tokens die worden gebruikt en prijzen? Afbeeldingstokens

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-4",
    "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.

Een index voor het ophalen van video's maken

  1. Haal een Azure AI Vision-resource op in dezelfde regio als de Azure OpenAI-resource die u gebruikt.

  2. Maak een index voor het opslaan en ordenen van de videobestanden en de bijbehorende metagegevens. In de onderstaande voorbeeldopdracht ziet u hoe u een index maakt met my-video-index behulp van de Create Index-API . Sla de indexnaam op een tijdelijke locatie op; U hebt deze in latere stappen nodig.

    Tip

    Zie Video ophalen met behulp van vectorisatie voor meer gedetailleerde instructies over het maken van een video-index.

    Belangrijk

    Een naam van een video-index kan maximaal 24 tekens lang zijn, tenzij het een GUID is, die 36 tekens kan zijn.

    curl.exe -v -X PUT "https://<YOUR_ENDPOINT_URL>/computervision/retrieval/indexes/my-video-index?api-version=2023-05-01-preview" -H "Ocp-Apim-Subscription-Key: <YOUR_SUBSCRIPTION_KEY>" -H "Content-Type: application/json" --data-ascii "
    {
      'metadataSchema': {
        'fields': [
          {
            'name': 'cameraId',
            'searchable': false,
            'filterable': true,
            'type': 'string'
          },
          {
            'name': 'timestamp',
            'searchable': false,
            'filterable': true,
            'type': 'datetime'
          }
        ]
      },
      'features': [
        {
          'name': 'vision',
          'domain': 'surveillance'
        },
        {
          'name': 'speech'
        }
      ]
    }"
    
  3. Voeg videobestanden toe aan de index met de bijbehorende metagegevens. In het onderstaande voorbeeld ziet u hoe u twee videobestanden toevoegt aan de index met behulp van SAS-URL's met de API voor opname maken . Sla de SAS-URL's en documentId -waarden op een tijdelijke locatie op. U hebt deze in latere stappen nodig.

    curl.exe -v -X PUT "https://<YOUR_ENDPOINT_URL>/computervision/retrieval/indexes/my-video-index/ingestions/my-ingestion?api-version=2023-05-01-preview" -H "Ocp-Apim-Subscription-Key: <YOUR_SUBSCRIPTION_KEY>" -H "Content-Type: application/json" --data-ascii "
    {
      'videos': [
        {
          'mode': 'add',
          'documentId': '02a504c9cd28296a8b74394ed7488045',
          'documentUrl': 'https://example.blob.core.windows.net/videos/02a504c9cd28296a8b74394ed7488045.mp4?sas_token_here',
          'metadata': {
            'cameraId': 'camera1',
            'timestamp': '2023-06-30 17:40:33'
          }
        },
        {
          'mode': 'add',
          'documentId': '043ad56daad86cdaa6e493aa11ebdab3',
          'documentUrl': '[https://example.blob.core.windows.net/videos/043ad56daad86cdaa6e493aa11ebdab3.mp4?sas_token_here',
          'metadata': {
            'cameraId': 'camera2'
          }
        }
      ]
    }"
    
  4. Nadat u videobestanden aan de index hebt toegevoegd, wordt het opnameproces gestart. Het kan enige tijd duren, afhankelijk van de grootte en het aantal bestanden. Om ervoor te zorgen dat de opname is voltooid voordat u zoekopdrachten uitvoert, kunt u de Get Ingestion-API gebruiken om de status te controleren. Wacht tot deze aanroep wordt geretourneerd "state" = "Completed" voordat u doorgaat met de volgende stap.

    curl.exe -v -X GET "https://<YOUR_ENDPOINT_URL>/computervision/retrieval/indexes/my-video-index/ingestions?api-version=2023-05-01-preview&$top=20" -H "ocp-apim-subscription-key: <YOUR_SUBSCRIPTION_KEY>"
    

Volgende stappen