Bagikan melalui


Menggunakan GPT-4 Turbo dengan Visi

GPT-4 Turbo with Vision adalah model multimodal besar (LMM) yang dikembangkan oleh OpenAI yang dapat menganalisis gambar dan memberikan respons tekstual terhadap pertanyaan tentang mereka. Ini menggabungkan pemrosesan bahasa alami dan pemahaman visual.

Model GPT-4 Turbo with Vision menjawab pertanyaan umum tentang apa yang ada dalam gambar.

Tip

Untuk menggunakan GPT-4 Turbo dengan Vision, Anda memanggil CHAT Completion API pada GPT-4 Turbo dengan model Vision yang telah Anda sebarkan. Jika Anda tidak terbiasa dengan API Penyelesaian Obrolan, lihat panduan cara GPT-4 Turbo & GPT-4.

Peningkatan model GPT-4 Turbo

Rilis GA terbaru dari GPT-4 Turbo adalah:

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

Ini adalah pengganti untuk model pratinjau berikut:

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

Perbedaan antara OpenAI dan Azure OpenAI GPT-4 Turbo GA Model

  • Versi OpenAI dari model turbo terbaru 0409 mendukung mode JSON dan panggilan fungsi untuk semua permintaan inferensi.
  • Versi turbo-2024-04-09 Terbaru Azure OpenAI saat ini tidak mendukung penggunaan mode JSON dan panggilan fungsi saat membuat permintaan inferensi dengan input gambar (visi). Permintaan input berbasis teks (permintaan tanpa image_url dan gambar sebaris) mendukung mode JSON dan panggilan fungsi.

Perbedaan dari gpt-4 vision-preview

  • Integrasi peningkatan Visi khusus Azure AI dengan GPT-4 Turbo dengan Visi tidak didukung untuk gpt-4 Versi: turbo-2024-04-09. Ini termasuk Pengenalan Karakter Optik (OCR), landasan objek, permintaan video, dan peningkatan penanganan data Anda dengan gambar.

Ketersediaan terkelola yang disediakan GPT-4 Turbo

  • gpt-4Versi: turbo-2024-04-09 tersedia untuk penyebaran standar dan yang disediakan. Saat ini versi yang disediakan dari model ini tidak mendukung permintaan inferensi gambar/penglihatan. Penyebaran yang disediakan dari model ini hanya menerima input teks. Penyebaran model standar menerima permintaan inferensi teks dan gambar/visi.

Menyebarkan GPT-4 Turbo dengan Vision GA

Untuk menyebarkan model GA dari Studio UI, pilih GPT-4 lalu pilih turbo-2024-04-09 versi dari menu dropdown. Kuota default untuk gpt-4-turbo-2024-04-09 model akan sama dengan kuota saat ini untuk GPT-4-Turbo. Lihat batas kuota regional.

Memanggil API Penyelesaian Obrolan

Perintah berikut menunjukkan cara paling dasar untuk menggunakan GPT-4 Turbo dengan model Visi dengan kode. Jika ini pertama kalinya Anda menggunakan model ini secara terprogram, sebaiknya mulai dengan mulai cepat GPT-4 Turbo kami dengan Visi.

Mengirim permintaan POST ke https://{RESOURCE_NAME}.openai.azure.com/openai/deployments/{DEPLOYMENT_NAME}/chat/completions?api-version=2024-02-15-preview tempat

  • RESOURCE_NAME adalah nama sumber daya Azure OpenAI Anda
  • DEPLOYMENT_NAME adalah nama GPT-4 Turbo Anda dengan penyebaran model Visi

Header yang diperlukan:

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

Isi: Berikut ini adalah isi permintaan sampel. Formatnya sama dengan API penyelesaian obrolan untuk GPT-4, kecuali bahwa konten pesan dapat berupa array yang berisi teks dan gambar (URL HTTP atau HTTPS yang valid ke gambar, atau gambar yang dikodekan base-64).

Penting

Ingatlah untuk mengatur "max_tokens" nilai, atau output pengembalian akan dipotong.

Penting

Saat mengunggah gambar, ada batas 10 gambar per permintaan obrolan.

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

Menggunakan gambar lokal

Jika Anda ingin menggunakan gambar lokal, Anda dapat menggunakan kode Python berikut untuk mengonversinya ke base64 sehingga dapat diteruskan ke API. Alat konversi file alternatif tersedia secara online.

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)

Saat data gambar base64 Anda siap, Anda dapat meneruskannya ke API di isi permintaan seperti ini:

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

Output

Respons API akan terlihat seperti berikut ini.

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

Setiap respons menyertakan "finish_reason" bidang. Ini memiliki kemungkinan nilai berikut:

  • stop: API mengembalikan output model lengkap.
  • length: Output model yang tidak lengkap karena max_tokens parameter input atau batas token model.
  • content_filter: Konten yang dihilangkan karena bendera dari filter konten kami.

Pengaturan parameter detail dalam pemrosesan gambar: Rendah, Tinggi, Otomatis

Parameter detail dalam model menawarkan tiga pilihan: low, , highatau auto, untuk menyesuaikan cara model menafsirkan dan memproses gambar. Pengaturan default adalah otomatis, di mana model memutuskan antara rendah atau tinggi berdasarkan ukuran input gambar.

  • low pengaturan: model tidak mengaktifkan mode "high res", sebaliknya memproses versi resolusi 512x512 yang lebih rendah, menghasilkan respons yang lebih cepat dan mengurangi konsumsi token untuk skenario di mana detail halus tidak penting.
  • high pengaturan: model mengaktifkan mode "high res". Di sini, model awalnya melihat gambar resolusi rendah dan kemudian menghasilkan segmen 512x512 terperinci dari gambar input. Setiap segmen menggunakan anggaran token ganda, memungkinkan interpretasi gambar yang lebih rinci.''

Untuk detail tentang bagaimana parameter gambar memengaruhi token yang digunakan dan harga, silakan lihat - Apa itu Azure OpenAI? Token Gambar

Output

Respons obrolan yang Anda terima dari model sekarang harus menyertakan informasi yang ditingkatkan tentang gambar, seperti label objek dan kotak pembatas, dan hasil OCR. Respons API akan terlihat seperti berikut ini.

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

Setiap respons menyertakan "finish_reason" bidang. Ini memiliki kemungkinan nilai berikut:

  • stop: API mengembalikan output model lengkap.
  • length: Output model yang tidak lengkap karena max_tokens parameter input atau batas token model.
  • content_filter: Konten yang dihilangkan karena bendera dari filter konten kami.

Membuat indeks pengambilan video

  1. Dapatkan sumber daya Azure AI Vision di wilayah yang sama dengan sumber daya Azure OpenAI yang Anda gunakan.

  2. Buat indeks untuk menyimpan dan mengatur file video dan metadatanya. Contoh perintah di bawah ini menunjukkan cara membuat indeks bernama my-video-index menggunakan Create Index API. Simpan nama indeks ke lokasi sementara; Anda akan membutuhkannya di langkah selanjutnya.

    Tip

    Untuk petunjuk selengkapnya tentang membuat indeks video, lihat Melakukan pengambilan video menggunakan vektorisasi.

    Penting

    Panjang nama indeks video dapat mencapai 24 karakter, kecuali jika merupakan GUID, yang bisa 36 karakter.

    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. Tambahkan file video ke indeks dengan metadata terkait. Contoh di bawah ini menunjukkan cara menambahkan dua file video ke indeks menggunakan URL SAS dengan CREATE Ingestion API. Simpan URL dan documentId nilai SAS ke lokasi sementara; Anda akan membutuhkannya di langkah selanjutnya.

    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. Setelah Anda menambahkan file video ke indeks, proses penyerapan dimulai. Mungkin perlu waktu tergantung pada ukuran dan jumlah file. Untuk memastikan penyerapan selesai sebelum melakukan pencarian, Anda dapat menggunakan Get Ingestion API untuk memeriksa status. Tunggu hingga panggilan ini kembali "state" = "Completed" sebelum melanjutkan ke langkah berikutnya.

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

Langkah berikutnya