1. Introduzione al Modello GPT-4 Vision
Il modello GPT-4 Vision (GPT-4V) è un modello di intelligenza artificiale multimodale introdotto da OpenAI, che integra capacità di comprensione visiva basate su GPT-4. A differenza dei tradizionali modelli di elaborazione del testo, GPT-4V può ricevere ed analizzare contenuti delle immagini, fornendo descrizioni, risposte a domande e interazioni relative alle immagini.
Esempi di Applicazioni:
- Riconoscimento e Classificazione di Prodotti: Le piattaforme di e-commerce possono utilizzare GPT-4V per identificare e fornire descrizioni di immagini di prodotti, contribuendo a migliorare i sistemi di ricerca e raccomandazione.
- Supporto alle Decisioni Mediche: Sebbene GPT-4V non sia adatto per una diagnosi diretta professionale di immagini mediche, può aiutare il personale medico nella comprensione iniziale delle immagini e nell'organizzazione dei dati.
- Educazione e Ricerca: Nell'insegnamento e nella ricerca scientifica, GPT-4V può essere utilizzato per analizzare grafici, risultati sperimentali e interpretare automaticamente dati scientifici delle immagini.
- Monitoraggio e Analisi del Traffico: Mediante l'analisi delle immagini di sorveglianza del traffico, GPT-4V può assistere i sistemi di gestione del traffico nella segnalazione in tempo reale delle condizioni e nell'identificazione degli incidenti.
2. Esempio Semplice
Di seguito è riportato un semplice esempio che utilizza una richiesta CURL per dimostrare come utilizzare il modello di visione GPT-4 per analizzare immagini:
Parametri della Richiesta API:
-
model
: Specifica la versione del modello da utilizzare, in questo caso "gpt-4-vision-preview". -
messages
: Contiene la definizione del ruolo e il contenuto, dove il contenuto può includere testo e collegamenti alle immagini. -
max_tokens
: Specifica il limite massimo di lunghezza per la generazione del testo.
Esempio di Richiesta CURL:
curl https://api.openai.com/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "gpt-4-vision-preview",
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "Cosa c'è in questa immagine?"
},
{
"type": "image_url",
"image_url": {
"url": "Il Tuo Link All'Immagine"
}
}
]
}
],
"max_tokens": 300
}'
Con la richiesta sopra, abbiamo inviato un'immagine al modello di visione GPT-4 e posto una semplice domanda: "Cosa c'è in questa immagine?" Il modello analizzerà il contenuto dell'immagine e fornirà una risposta basata sul contenuto dell'immagine.
3. Caricamento Immagini Utilizzando l'Encoding Base64
In alcuni casi, potresti dover caricare un file immagine locale al modello di visione GPT-4. In tali casi, possiamo incorporare i dati dell'immagine nella richiesta API utilizzando l'encoding base64.
Esempio di Codice Python:
import base64
import requests
api_key = "LA_TUA_OPENAI_API_KEY"
def encode_image(image_path):
with open(image_path, "rb") as image_file:
return base64.b64encode(image_file.read()).decode('utf-8')
image_path = "percorso_al_tuo_file_immagine.jpg"
base64_image = encode_image(image_path)
headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer {api_key}"
}
payload = {
"model": "gpt-4-vision-preview",
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "Cosa c'è in questa immagine?"
},
{
"type": "image_url",
"image_url": {
"url": f"data:image/jpeg;base64,{base64_image}"
}
}
]
}
],
"max_tokens": 300
}
response = requests.post("https://api.openai.com/v1/chat/completions", headers=headers, json=payload)
print(response.json())
Nel codice sopra, convertiamo prima un file immagine locale in una stringa codificata in base64 e quindi inviamo questa stringa come parte della richiesta all'API. La risposta del modello contiene una descrizione del contenuto dell'immagine.
4. Gestione di Input Multipli di Immagini
A volte è necessario analizzare più immagini contemporaneamente. Il modello di visione GPT-4 supporta la ricezione di input multipli di immagini simultaneamente e consente agli utenti di porre domande su queste immagini o confrontarne le differenze.
Esempio di Input Multiplo di Immagini:
curl https://api.openai.com/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "gpt-4-vision-preview",
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "Cosa c'è di diverso in queste immagini?"
},
{
"type": "image_url",
"image_url": {
"url": "URL della prima immagine",
}
},
{
"type": "image_url",
"image_url": {
"url": "URL della seconda immagine",
}
}
]
}
],
"max_tokens": 300
}'
In questa richiesta, inviamo due immagini all'API. Il modello analizzerà ogni immagine separatamente e fornirà descrizioni e confronti in base alle domande poste. Questo approccio è ideale per l'analisi complessiva di una collezione di immagini.
5. Impostazione del Livello di Dettaglio dell'Analisi delle Immagini
Quando si utilizza il modello visivo GPT-4 per l'analisi delle immagini, è possibile impostare il livello di dettaglio in base alle proprie esigenze. Regolando il parametro detail
, è possibile scegliere tra basso
, alto
o auto
. Ecco una spiegazione dettagliata di ciascuna opzione e come impostarla:
-
basso
: Scegliendo il livello di dettaglio basso, si disabiliterà il modello "ad alta risoluzione". Questo modello riceverà una versione a bassa risoluzione dell'immagine a 512 pixel x 512 pixel e utilizzerà un budget di 65 token per rappresentare l'immagine. Questo è adatto per scenari che non richiedono dettagli elevati, contribuendo a ottenere un tempo di risposta più veloce e a consumare meno token di input. -
alto
: Il livello di dettaglio alto permette al modello di prima visualizzare un'immagine a bassa risoluzione e quindi creare una versione dettagliata ritagliata in una griglia di 512 pixel in base alle dimensioni dell'immagine di input. Ogni ritaglio dettagliato è rappresentato da un budget raddoppiato di 129 token (cioè 65 token per ritaglio predefinito). -
auto
: Il livello di dettaglio automatico determinerà se utilizzare il livello di dettagliobasso
oalto
in base alle dimensioni dell'immagine di input.
Nell'esempio di codice seguente è mostrato come impostare il livello di dettaglio:
import base64
import requests
api_key = "tuo_OPENAI_API_KEY"
image_path = "percorso_della_tua_immagine.jpg"
base64_image = base64.b64encode(open(image_path, "rb").read()).decode('utf-8')
headers = {
"Content-Type": "application/json",
"Autorizzazione": f"Bearer {api_key}"
}
payload = {
"model": "gpt-4-vision-preview",
"messages": [
{
"ruolo": "utente",
"contenuto": [
{
"tipo": "testo",
"testo": "Cosa c'è in questa immagine?"
},
{
"type": "image_url",
"image_url": {
"url": f"data:image/jpeg;base64,{base64_image}",
"detail": "alto" # Impostato al livello di dettaglio alto
}
}
]
}
],
"max_tokens": 300
}
risposta = richieste.post("https://api.openai.com/v1/chat/completions", headers=headers, json=payload)
stampa(risposta.json())
6. Comprensione delle Limitazioni del Modello e Gestione delle Immagini
6.1. Limitazioni del Modello
Nonostante la potente funzionalità del modello visivo GPT-4, non è privo di limitazioni, e comprendere queste limitazioni è cruciale per utilizzarlo per la comprensione delle immagini. Ecco una panoramica di alcune limitazioni conosciute:
-
Immagini Mediche: Il modello non è adatto per interpretare immagini mediche professionali, come ad esempio scansioni TC, e non dovrebbe essere utilizzato per consigli medici.
-
Testo Non in Inglese: Il modello potrebbe non performare bene nel processare immagini contenenti testo non latino, come giapponese o coreano.
-
Localizzazione Spaziale: Le prestazioni del modello sono subottimali nei compiti che richiedono precise associazioni di posizione spaziale, come l'identificazione delle posizioni delle pedine su una scacchiera.
-
Dettagli dell'Immagine: Il modello potrebbe avere difficoltà a comprendere grafici o testo con variazioni di colore e stile (ad es. linee continue, linee tratteggiate) in un'immagine.
-
Rotazione dell'Immagine: Il modello potrebbe interpretare erroneamente testo e immagini inclinate o capovolte.
6.2 Gestione delle immagini in sessioni
Poiché l'API di completamento della chat è senza stato, è necessario gestire autonomamente i messaggi (compresi le immagini) passati al modello. Se si desidera utilizzare la stessa immagine più volte, è necessario inviare i dati dell'immagine con ciascuna richiesta API.
payload_aggiuntivo = {
"modello": "gpt-4-vision-preview",
"messaggi": [
{
"ruolo": "utente",
"contenuto": [
{
"tipo": "testo",
"testo": "In base a questa immagine, quali suggerimenti hai?"
},
{
"tipo": "image_url",
"image_url": {
"url": f"data:image/jpeg;base64,{base64_image}"
}
}
]
}
],
"max_tokens": 300
}
nuova_risposta = requests.post("https://api.openai.com/v1/chat/completions", headers=headers, json=payload_aggiuntivo)
print(nuova_risposta.json())
7. Calcolo dei costi
Ogni immagine che utilizza l'opzione dettaglio: basso
consuma fisso 85 token. Per le immagini con l'opzione dettaglio: alto
, l'immagine viene prima ridimensionata proporzionalmente per adattarsi alle dimensioni di 2048px x 2048px, e quindi il lato più breve dell'immagine viene assicurato di essere 768px. L'immagine viene quindi divisa in più quadrati da 512px, con ciascun quadrato che consuma 170 token, e vengono aggiunti ulteriori 85 token al conteggio totale finale.
Ad esempio, se un'immagine ha dimensioni di 1024px x 1024px e viene scelta l'opzione dettaglio: alto
, il costo in token sarebbe:
- Prima, poiché 1024 è inferiore a 2048, non vi è alcun adattamento iniziale delle dimensioni.
- Quindi, con il lato più breve di 1024, l'immagine viene ridimensionata a 768 x 768.
- Sono necessari 4 quadrati da 512px per rappresentare l'immagine, quindi il costo totale finale dei token sarà 170 * 4 + 85 = 765.
Per una comprensione dettagliata del metodo di calcolo dei costi, consultare la documentazione del modello GPT-4 Vision.
8. Domande frequenti
Di seguito sono riportate alcune domande comuni e relative risposte che gli utenti potrebbero incontrare durante l'utilizzo del modello GPT-4 Vision:
D: Posso ottimizzare le capacità dell'immagine di gpt-4
?
R: Attualmente non supportiamo l'ottimizzazione delle capacità dell'immagine di gpt-4
.
D: Posso utilizzare gpt-4
per generare immagini?
R: No, puoi utilizzare dall-e-3
per generare immagini e utilizzare gpt-4-vision-preview
per comprendere le immagini.
D: Quali tipi di caricamenti file sono supportati?
R: Attualmente supportiamo file PNG (.png), JPEG (.jpeg e .jpg), WEBP (.webp) e file GIF non animati (.gif).