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-4
Versi:turbo-2024-04-09
Ini adalah pengganti untuk model pratinjau berikut:
gpt-4
Versi:1106-Preview
gpt-4
Versi:0125-Preview
gpt-4
Versi: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 tanpaimage_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-4
Versi: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/jsonapi-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 karenamax_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
, , high
atau 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 karenamax_tokens
parameter input atau batas token model.content_filter
: Konten yang dihilangkan karena bendera dari filter konten kami.
Membuat indeks pengambilan video
Dapatkan sumber daya Azure AI Vision di wilayah yang sama dengan sumber daya Azure OpenAI yang Anda gunakan.
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' } ] }"
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' } } ] }"
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>"