Görüntü İşleme ile GPT-4 Turbo kullanma

Görüntü İşlemeli GPT-4 Turbo, OpenAI tarafından geliştirilen ve görüntüleri analiz eden ve bunlarla ilgili sorulara metinsel yanıtlar sağlayabilen büyük bir çok modüllü modeldir (LMM). Hem doğal dil işleme hem de görsel anlama özelliklerini içerir.

Görüntü İşlemeli GPT-4 Turbo modeli, görüntülerde neler olduğuyla ilgili genel soruları yanıtlar.

İpucu

GPT-4 Turbo'yı Görüntü İşleme ile kullanmak için dağıttığınız Görüntü İşlemeli GPT-4 Turbo modelinde Sohbet Tamamlama API'sini çağırırsınız. Sohbet Tamamlama API'sini bilmiyorsanız GPT-4 Turbo & GPT-4 nasıl yapılır kılavuzuna bakın.

GPT-4 Turbo model yükseltmesi

GPT-4 Turbo'nun en son GA sürümü:

  • gpt-4Sürüm: turbo-2024-04-09

Bu, aşağıdaki önizleme modellerinin yerini alır:

  • gpt-4Sürüm: 1106-Preview
  • gpt-4Sürüm: 0125-Preview
  • gpt-4Sürüm: vision-preview

OpenAI ile Azure OpenAI GPT-4 Turbo GA Modelleri Arasındaki Farklar

  • OpenAI'nin en son 0409 turbo modeli sürümü tüm çıkarım istekleri için JSON modunu ve işlev çağrısını destekler.
  • Azure OpenAI'nin en son turbo-2024-04-09 sürümü şu anda görüntü (görüntü) girişiyle çıkarım istekleri yaparken JSON modu ve işlev çağrısı kullanımını desteklememektedir. Metin tabanlı giriş istekleri (ve satır içi görüntüleri olmayan image_url istekler), JSON modunu ve işlev çağrılarını destekler.

gpt-4 vision-preview ile arasındaki farklar

  • Azure AI'ye özgü Görüntü İşleme geliştirmeleri ile GPT-4 Turbo ve Görüntü İşleme tümleştirmesi Şu Sürüm için gpt-4 desteklenmez: turbo-2024-04-09. Buna Optik Karakter Tanıma (OCR), nesne topraklama, video istemleri ve görüntülerle verilerinizin daha iyi işlenmesi dahildir.

Önemli

Optik Karakter Tanıma (OCR), nesne topraklama, video istemleri gibi görüntü geliştirmeleri önizleme özellikleri kullanımdan kaldırılacak ve Sürüm: vision-preview sürümü sürümüne turbo-2024-04-09yükseltildikten sonra gpt-4 artık kullanılamayacaktır. Şu anda bu önizleme özelliklerinden herhangi birine güveniyorsanız, bu otomatik model yükseltmesi hataya neden olacak bir değişiklik olacaktır.

GPT-4 Turbo tarafından sağlanan yönetilen kullanılabilirlik

  • gpt-4Sürüm: turbo-2024-04-09 hem standart hem de sağlanan dağıtımlar için kullanılabilir. Şu anda bu modelin sağlanan sürümü görüntü/görüntü çıkarım isteklerini desteklememektedir. Bu modelin sağlanan dağıtımları yalnızca metin girişini kabul eder. Standart model dağıtımları hem metin hem de görüntü/görüntü çıkarım isteklerini kabul eder.

Görüntü İşleme GA ile GPT-4 Turbo Dağıtma

Ga modelini Studio kullanıcı arabiriminden GPT-4 dağıtmak için açılan menüden turbo-2024-04-09 sürümü seçin ve ardından seçin. Model için gpt-4-turbo-2024-04-09 varsayılan kota, GPT-4-Turbo için geçerli kotayla aynı olacaktır. Bölgesel kota sınırlarına bakın.

Sohbet Tamamlama API'lerini çağırma

Aşağıdaki komut, GPT-4 Turbo ile Görüntü İşleme modelini kodla kullanmanın en temel yolunu gösterir. Bu modelleri programlı olarak ilk kez kullanıyorsanız, GPT-4 Turbo ile Vision hızlı başlangıcı ile başlamanızı öneririz.

Nereye POST isteği https://{RESOURCE_NAME}.openai.azure.com/openai/deployments/{DEPLOYMENT_NAME}/chat/completions?api-version=2024-02-15-preview gönder

  • RESOURCE_NAME, Azure OpenAI kaynağınızın adıdır
  • DEPLOYMENT_NAME, Görüntü İşleme modeli dağıtımı ile GPT-4 Turbo'nuzun adıdır

Gerekli üst bilgiler:

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

Gövde: Aşağıda örnek bir istek gövdesi verilmiştir. biçim, GPT-4 için sohbet tamamlama API'si ile aynıdır, ancak ileti içeriği metin ve görüntü içeren bir dizi (bir görüntünün geçerli bir HTTP veya HTTPS URL'si ya da temel 64 kodlu bir görüntü) olabilir.

Önemli

Bir "max_tokens" değer ayarlamayı unutmayın, aksi takdirde dönüş çıkışı kesilir.

Önemli

Görüntüleri karşıya yüklerken, sohbet isteği başına 10 resim sınırı vardır.

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

İpucu

Yerel görüntü kullanma

Yerel bir görüntü kullanmak istiyorsanız, api'ye geçirilebilmesi için aşağıdaki Python kodunu kullanarak base64'e dönüştürebilirsiniz. Alternatif dosya dönüştürme araçları çevrimiçi olarak kullanılabilir.

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)

base64 görüntü verileriniz hazır olduğunda, bunu istek gövdesindeki API'ye şu şekilde geçirebilirsiniz:

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

Çıktı

API yanıtı aşağıdaki gibi görünmelidir.

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

Her yanıt bir "finish_reason" alan içerir. Aşağıdaki olası değerlere sahiptir:

  • stop: API tam model çıktısı döndürdü.
  • length: Giriş parametresi veya modelin max_tokens belirteç sınırı nedeniyle tamamlanmamış model çıktısı.
  • content_filter: İçerik filtrelerimizden gelen bir bayrak nedeniyle içerik atlanır.

Görüntü işlemede ayrıntı parametresi ayarları: Düşük, Yüksek, Otomatik

Modeldeki ayrıntı parametresi, modelin görüntüleri yorumlama ve işleme biçimini ayarlamak için üç seçenek sunar: low, high, veya auto. Varsayılan ayar, modelin görüntü girişinin boyutuna göre düşük veya yüksek arasında karar aldığı otomatik ayardır.

  • low ayar: model "yüksek res" modunu etkinleştirmez, bunun yerine daha düşük çözünürlüklü 512x512 sürümünü işler ve daha hızlı yanıtlar ve ince ayrıntıların kritik olmadığı senaryolar için daha az belirteç tüketimi sağlar.
  • high ayarı: model "yüksek res" modunu etkinleştirir. Burada model başlangıçta düşük çözünürlüklü görüntüyü görüntüler ve ardından giriş görüntüsünden ayrıntılı 512x512 kesimleri oluşturur. Her segment, görüntünün daha ayrıntılı yorumlanmasını sağlayan belirteç bütçesinin iki katını kullanır.''

Görüntü parametrelerinin kullanılan belirteçleri ve fiyatlandırmayı nasıl etkilediğinin ayrıntıları için lütfen bkz. Azure OpenAI nedir? Görüntü Belirteçleri

Çıktı

Modelden aldığınız sohbet yanıtları artık görüntü hakkında nesne etiketleri, sınırlayıcı kutular ve OCR sonuçları gibi gelişmiş bilgiler içermelidir. API yanıtı aşağıdaki gibi görünmelidir.

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

Her yanıt bir "finish_reason" alan içerir. Aşağıdaki olası değerlere sahiptir:

  • stop: API tam model çıktısı döndürdü.
  • length: Giriş parametresi veya modelin max_tokens belirteç sınırı nedeniyle tamamlanmamış model çıktısı.
  • content_filter: İçerik filtrelerimizden gelen bir bayrak nedeniyle içerik atlanır.

Video alma dizini oluşturma

  1. Kullandığınız Azure OpenAI kaynağıyla aynı bölgede bir Azure AI Vision kaynağı alın.

  2. Video dosyalarını ve bunların meta verilerini depolamak ve düzenlemek için bir dizin oluşturun. Aşağıdaki örnek komut, Dizin Oluştur API'sini kullanarak adlı my-video-index bir dizinin nasıl oluşturulacağını gösterir. Dizin adını geçici bir konuma kaydedin; sonraki adımlarda ihtiyacınız olacak.

    İpucu

    Video dizini oluşturma hakkında daha ayrıntılı yönergeler için bkz . Vektörleştirme kullanarak video alma işlemi yapma.

    Önemli

    Video dizini adı, GUID olmadığı sürece en çok 24 karakter uzunluğunda olabilir ve bu 36 karakter olabilir.

    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. İlişkili meta verileriyle dizine video dosyaları ekleyin. Aşağıdaki örnekte, Alma Oluşturma API'siyle SAS URL'lerini kullanarak dizine iki video dosyasının nasıl ekleneceği gösterilmektedir . SAS URL'lerini ve documentId değerlerini geçici bir konuma kaydedin; sonraki adımlarda bunlara ihtiyacınız olacaktır.

    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. Dizine video dosyaları ekledikten sonra alma işlemi başlar. Dosya boyutuna ve sayısına bağlı olarak biraz zaman alabilir. Aramalar gerçekleştirmeden önce alımın tamamlandığından emin olmak için Alma Alma API'sini kullanarak durumu deleyebilirsiniz. Sonraki adıma geçmeden önce bu çağrının döndürülmesini "state" = "Completed" bekleyin.

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

Sonraki adımlar