Corso
Google Bard ha affrontato una crescente concorrenza da parte di ChatGPT, ma con il rilascio dei nuovi modelli Gemini AI spera di recuperare terreno sul mercato. Per migliorare l’esperienza d’uso, Google ha recentemente rinnovato l’assistenza di Bard con i modelli Gemini Pro, rendendola più accessibile a chi desidera inserire sia testo che immagini per ottenere risposte accurate e naturali.
In questo tutorial esploreremo le API di Google Gemini, che ti permettono di creare applicazioni avanzate basate sull’AI. Sfruttando le sue potenti funzionalità, puoi integrare con facilità input sia testuali sia visivi per generare output precisi e pertinenti al contesto. La Gemini Python API semplifica l’integrazione nei tuoi progetti esistenti, consentendo di implementare senza soluzione di continuità funzionalità di intelligenza artificiale all’avanguardia.
Che cos’è Gemini AI?
Gemini AI è un modello di intelligenza artificiale all’avanguardia creato grazie a uno sforzo congiunto di vari team di Google, come Google Research e Google DeepMind. Progettato per essere multimodale, Gemini AI può comprendere ed elaborare numerosi tipi di dati, tra cui testo, codice, audio, immagini e video.
La ricerca di Google DeepMind sull’intelligenza artificiale è da tempo guidata dall’auspicio di usare queste capacità a beneficio dell’umanità. In quest’ottica, Gemini AI ha compiuto significativi passi avanti nella creazione di una nuova generazione di modelli ispirati a come gli esseri umani percepiscono e interagiscono con il mondo.
In quanto modello di AI più sofisticato e di maggiori dimensioni prodotto finora da Google, Gemini AI è stato progettato per essere altamente flessibile e gestire diversi tipi di informazioni. La sua versatilità gli consente di funzionare in modo efficiente su una varietà di sistemi, che vanno dai potenti server dei data center ai dispositivi mobili.
Ecco tre versioni dei modelli Gemini addestrate per casi d’uso specifici:
- Gemini Ultra: La versione più avanzata, in grado di gestire compiti complessi.
- Gemini Pro: Un’ottima scelta bilanciata che offre buone prestazioni e scalabilità.
- Gemini Nano: Ottimizzata per i dispositivi mobili, con la massima efficienza.

Immagine fonte
Tra queste varianti, Gemini Ultra ha mostrato prestazioni eccezionali, superando GPT-4 su più criteri. È il primo modello a superare esperti umani nel benchmark Massive Multitask Language Understanding, che valuta conoscenze generali e capacità di problem solving in 57 aree disciplinari. Questo traguardo dimostra la superiore capacità di comprensione e risoluzione dei problemi di Gemini Ultra.
Se sei alle prime armi con l’intelligenza artificiale, scopri il percorso di competenze AI Fundamentals. Copre argomenti popolari come ChatGPT, large language models e generative AI.
Configurazione dell’ambiente
Prima di iniziare a usare l’API, dobbiamo ottenere la chiave API da Google AI for Developers.
1. Clicca sul pulsante “Get an API key”.

2. Poi crea il progetto e genera la chiave API.

3. Copia la chiave API e aggiungi nel tuo sistema una variabile d’ambiente chiamata "Gemini_API_KEY". Per creare una variabile d’ambiente sicura su Kaggle, vai su "Add-ons" e seleziona "Secrets". Quindi clicca su "Add a new secret" per aggiungere un’etichetta e il relativo valore, e salva.

4. Installa il pacchetto Gemini Python API con pip.
%pip install google-generativeai
5. Configura la Gemini API aggiungendo la chiave API. Per accedere al secret devi creare l’oggetto UserSecretsClient e poi fornirgli l’etichetta.
import google.generativeai as genai
from kaggle_secrets import UserSecretsClient
user_secrets = UserSecretsClient()
gemini_key = user_secrets.get_secret("GEMINI_API_KEY")
genai.configure(api_key = gemini_key)
Generare la risposta
In questa sezione impareremo a generare risposte usando il modello Gemini Pro. Se riscontri problemi nell’eseguire il codice in autonomia, puoi seguire il Notebook Kaggle della Gemini API.
Ora verificheremo l’accesso ai modelli disponibili con l’API gratuita. Per farlo, esegui il codice seguente. Mostrerà i modelli di generazione supportati usando la funzione list_models.
for m in genai.list_models():
if 'generateContent' in m.supported_generation_methods:
print(m.name)
Sembra che abbiamo accesso solo a due modelli, "gemini-pro" e "gemini-pro-vision".
models/gemini-pro
models/gemini-pro-vision
Accediamo al modello "Gemini Pro" e generiamo una risposta fornendo un semplice prompt.
model = genai.GenerativeModel('gemini-pro')
response = model.generate_content("Please provide a list of the most influential people in the world.")
print(response.text)
Siamo riusciti a generare una risposta molto accurata con poche righe di codice.

Gemini AI può produrre più risposte, chiamate candidati, per un prompt, permettendoti di scegliere quella più adatta. Tuttavia, la versione gratuita dell’API offre un solo candidato.
response.candidates

Il nostro output è in formato Markdown. Sistemiamolo usando lo strumento Markdown di IPython. Ora chiederemo a Gemini di generare codice Python.
from IPython.display import Markdown
response = model.generate_content("Build a simple Python web application.")
Markdown(response.text)
Il modello ha fatto un ottimo lavoro. Ha generato una guida passo passo con la spiegazione di come creare ed eseguire una semplice applicazione web usando Flask.

Streaming
È importante usare lo streaming per aumentare la percezione di velocità dell’applicazione. Attivando l’argomento 'stream', la risposta verrà generata e mostrata non appena disponibile. Il nostro output sarà generato a blocchi, quindi dobbiamo iterare su response.
from IPython.display import display
model = genai.GenerativeModel("gemini-pro")
response = model.generate_content(
"How can I make authentic Italian pasta?", stream=True
)
for chunk in response:
display(Markdown(chunk.text))
display(Markdown("_" * 80))
Ogni blocco è separato da una linea tratteggiata. Come si vede sotto, il nostro contenuto viene generato a blocchi. Lo streaming nelle API di Gemini è simile a quello delle API di OpenAI e Anthropic.

Ottimizzare la risposta
Possiamo adattare la risposta generata alle nostre esigenze.
Nel seguente esempio generiamo un candidato con un massimo di 1000 token e una temperatura di 0,7. Inoltre, impostiamo una sequenza di stop, così quando la parola "time" appare nel testo generato, il processo di generazione si interrompe automaticamente.
response = model.generate_content(
'How to be productive during a burnout stage.',
generation_config=genai.types.GenerationConfig(
candidate_count=1,
stop_sequences=['time'],
max_output_tokens=1000,
temperature=0.7)
)
Markdown(response.text)

Provare Gemini Pro Vision
In questa sezione useremo Gemini Pro Vision per accedere alla multimodalità di Gemini AI.
Scaricheremo la foto di Mayumi Maciel da pexel.com usando lo strumento curl.
!curl -o landscape.jpg "https://images.pexels.com/photos/18776367/pexels-photo-18776367/free-photo-of-colorful-houses-line-the-canal-in-burano-italy.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2"

Per caricare e visualizzare l’immagine nel Notebook Kaggle useremo il pacchetto Python Pillow.
import PIL.Image
img = PIL.Image.open('landscape.jpg')
display(img)

Per comprendere il contenuto di questa immagine, dobbiamo prima caricare il modello "gemini-pro-vision" e fornirgli un oggetto immagine.
model = genai.GenerativeModel('gemini-pro-vision')
response = model.generate_content(img)
Markdown(response.text)
Ha identificato correttamente il luogo nell’immagine e fornito una descrizione.
A beautiful day in Burano, Italy. The colorful houses and the calm water make this a perfect place to relax and enjoy the scenery.
Forniamo ora il testo del prompt e l’oggetto immagine alla nostra funzione di generazione per porre al modello una domanda sull’immagine.
response = model.generate_content(
["Can you provide the exact location with coordinates?", img]
)
Markdown(response.text)
45.4408° N, 12.3150° E
Ha fornito con precisione le coordinate del luogo, che abbiamo anche verificato inserendole su Google Maps.

Conversazioni in chat
È possibile conversare con il modello AI mantenendo il contesto della chat, usando la cronologia delle conversazioni precedenti. In questo modo, il modello può ricordare i contenuti del dialogo e fornire risposte adeguate in base alle interazioni precedenti.
Dobbiamo solo creare un oggetto chat usando model.start_chat e fornirgli il primo messaggio.
model = genai.GenerativeModel('gemini-pro')
chat = model.start_chat(history=[])
chat.send_message("Who created the Mona Lisa?")
for message in chat.history:
display(Markdown(f'**{message.role}**: {message.parts[0].text}'))

Facciamo un’altra domanda e mostriamo la risposta in formato chat.
chat.send_message("What else he created?")
for message in chat.history:
display(Markdown(f'**{message.role}**: {message.parts[0].text}'))
Il modello ha ricordato il contesto e fornito una risposta adeguata.

Embedding
L’API offre accesso ai modelli di embedding, uno strumento molto usato per applicazioni sensibili al contesto. Con una semplice funzione Python, gli utenti possono convertire il proprio prompt o contenuto in un embedding, rappresentando parole, frasi o interi documenti come vettori densi che codificano il significato semantico.
Forniremo alla funzione embed_content il nome del modello, il contenuto, il tipo di attività e il titolo.
result = genai.embed_content(
model="models/embedding-001",
content="Who created the Mona Lisa?",
task_type="retrieval_document",
title="Mona Lisa Research")
print(result['embedding'][:10])
[0.086675204, -0.027617611, -0.015689207, -0.00445945, 0.07286186, 0.00017529335, 0.07243656, -0.018299067, 0.018799499, 0.028495966]
Per convertire più contenuti in embedding, devi fornire una lista di stringhe all’argomento 'content'.
result = genai.embed_content(
model="models/embedding-001",
content=[
"Who created the Mona Lisa?",
"What else he created?",
"When did he died?"
],
task_type="retrieval_document",
title="Mona Lisa Research 2")
for emb in result['embedding']:
print(emb[:10],"\n")
[0.07942627, -0.032543894, -0.010346633, -0.0039942865, 0.071596086, -0.0016670177, 0.07821064, -0.011955016, 0.019478166, 0.03784406]
[0.027897138, -0.030693276, -0.0012639443, 0.0018902065, 0.07171923, -0.011544562, 0.04235154, -0.024570161, 0.013215181, 0.03026724]
[0.04341321, 0.013262799, -0.0152797215, -0.009688456, 0.07342798, 0.0033503908, 0.05274988, -0.010907041, 0.05933596, 0.019402765]
Iscriviti al corso Introduction to Embeddings with the OpenAI API per conoscere i modelli di embedding per applicazioni AI avanzate come la ricerca semantica e i motori di raccomandazione.
Casi d’uso avanzati
Per sfruttare appieno il potenziale della Gemini API, gli sviluppatori possono approfondire funzionalità avanzate come le impostazioni di sicurezza e le API di basso livello.
- Impostazioni di sicurezza consentono di configurare il blocco o il permesso di contenuti nei prompt e nelle risposte, assicurando la conformità alle linee guida della community.
- API di livello inferiore offrono una flessibilità crescente per la personalizzazione.
- Conversazioni multi-turno possono essere estese usando la classe
GenaiChatSession, migliorando l’esperienza conversazionale.
L’uso di funzionalità avanzate permette agli sviluppatori di creare applicazioni più efficienti e sblocca nuove possibilità d’interazione per gli utenti.
Conclusione
Le API di Gemini aprono possibilità entusiasmanti per gli sviluppatori che vogliono creare applicazioni AI avanzate usando input sia testuali sia visivi. I suoi modelli all’avanguardia, come Gemini Ultra, spingono oltre i confini di ciò che i sistemi di AI possono comprendere e generare.
Google ha reso l’integrazione dell’AI nelle applicazioni ancora più semplice grazie all’accesso pratico offerto tramite una API Python. La Gemini API offre un ventaglio di funzionalità come generazione di contenuti, embedding e conversazioni multi-turno, rendendo l’AI più accessibile. Gemini AI rappresenta un grande passo avanti nella comprensione multimodale.
Se vuoi approfondire, inizia a sviluppare applicazioni basate su AI con l’API di OpenAI iscrivendoti al corso breve Working with the OpenAI API. Scopri le funzionalità alla base delle app di AI più popolari, come ChatGPT e DataLab, il notebook dati con AI di DataCamp.
Se sei un professionista e non hai bisogno del corso pratico, puoi esplorare l’OpenAI API in Python con la nostra cheat sheet.
In quanto data scientist certificato, sono appassionato di sfruttare tecnologie all’avanguardia per creare applicazioni di machine learning innovative. Con una solida esperienza in riconoscimento vocale, analisi e reportistica dei dati, MLOps, AI conversazionale e NLP, ho affinato le mie competenze nello sviluppo di sistemi intelligenti in grado di avere un impatto concreto. Oltre alla mia expertise tecnica, sono anche un comunicatore efficace, con il talento di rendere chiari e sintetici concetti complessi. Di conseguenza, sono diventato un blogger molto seguito in ambito data science, condividendo idee ed esperienze con una community in crescita di professionisti dei dati. Attualmente mi concentro sulla creazione e sull’editing di contenuti, lavorando con large language model per sviluppare contenuti potenti e coinvolgenti che possano aiutare aziende e singoli a valorizzare al meglio i propri dati.


