L'API Gemini può generare output di testo se vengono forniti testo, immagini, video e audio come input.
Questa guida mostra come generare testo utilizzando i metodi
generateContent
e
streamGenerateContent
. Per scoprire come utilizzare le funzionalità di visione e audio di Gemini, consulta le guide su Vision e Audio.
Generare testo da input di solo testo
Il modo più semplice per generare testo utilizzando l'API Gemini è fornire al modello un singolo input di solo testo, come mostrato in questo esempio:
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=$GOOGLE_API_KEY" \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"contents": [{
"parts":[{"text": "Write a story about a magic backpack."}]
}]
}' 2> /dev/null
In questo caso, il prompt ("Spiega come funziona l'IA") non include esempi di output, istruzioni di sistema o informazioni sulla formattazione. Si tratta di un approccio zero-shot. Per alcuni casi d'uso, un prompt one-shot o few-shot potrebbe produrre un output più in linea con le aspettative degli utenti. In alcuni casi, potresti anche fornire istruzioni di sistema per aiutare il modello a comprendere l'attività o a seguire linee guida specifiche.
Genera testo da input di testo e immagini
L'API Gemini supporta input multimodali che combinano testo con file multimediali. L'esempio seguente mostra come generare testo da un input di testo e immagini:
# Use a temporary file to hold the base64 encoded image data
TEMP_B64=$(mktemp)
trap 'rm -f "$TEMP_B64"' EXIT
base64 $B64FLAGS $IMG_PATH > "$TEMP_B64"
# Use a temporary file to hold the JSON payload
TEMP_JSON=$(mktemp)
trap 'rm -f "$TEMP_JSON"' EXIT
cat > "$TEMP_JSON" << EOF
{
"contents": [{
"parts":[
{"text": "Tell me about this instrument"},
{
"inline_data": {
"mime_type":"image/jpeg",
"data": "$(cat "$TEMP_B64")"
}
}
]
}]
}
EOF
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=$GOOGLE_API_KEY" \
-H 'Content-Type: application/json' \
-X POST \
-d "@$TEMP_JSON" 2> /dev/null
Come per i prompt di solo testo, i prompt multimodali possono prevedere vari approcci e perfezionamenti. A seconda dell'output di questo esempio, ti consigliamo di aggiungere passaggi al prompt o di essere più specifico nelle istruzioni. Per scoprire di più, consulta la sezione Strategie di richiesta di file.
Generare uno stream di testo
Per impostazione predefinita, il modello restituisce una risposta al termine dell'intero processo di generazione del testo. Puoi ottenere interazioni più rapide non aspettando l'intero risultato, ma utilizzando lo streaming per gestire i risultati parziali.
L'esempio seguente mostra come implementare lo streaming utilizzando il metodo
streamGenerateContent
per
generare testo da un prompt di input di solo testo.
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:streamGenerateContent?alt=sse&key=${GOOGLE_API_KEY}" \
-H 'Content-Type: application/json' \
--no-buffer \
-d '{ "contents":[{"parts":[{"text": "Write a story about a magic backpack."}]}]}'
Creare una chat interattiva
L'SDK Gemini ti consente di raccogliere più round di domande
e risposte, consentendo agli utenti di procedere gradualmente verso le risposte o di ricevere aiuto
per problemi articolati. Questa funzionalità dell'SDK fornisce un'interfaccia per tenere traccia della cronologia delle conversazioni, ma dietro le quinte utilizza lo stesso metodo generateContent
per creare la risposta.
Il seguente esempio di codice mostra un'implementazione di chat di base:
curl https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=$GOOGLE_API_KEY \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"contents": [
{"role":"user",
"parts":[{
"text": "Hello"}]},
{"role": "model",
"parts":[{
"text": "Great to meet you. What would you like to know?"}]},
{"role":"user",
"parts":[{
"text": "I have two dogs in my house. How many paws are in my house?"}]},
]
}' 2> /dev/null | grep "text"
Attivare lo streaming della chat
Puoi anche utilizzare lo streaming con la chat, come mostrato nell'esempio seguente:
curl https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:streamGenerateContent?alt=sse&key=$GOOGLE_API_KEY \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"contents": [
{"role":"user",
"parts":[{
"text": "Hello"}]},
{"role": "model",
"parts":[{
"text": "Great to meet you. What would you like to know?"}]},
{"role":"user",
"parts":[{
"text": "I have two dogs in my house. How many paws are in my house?"}]},
]
}' 2> /dev/null | grep "text"
Configurare la generazione di testo
Ogni prompt inviato al modello include parametri che controllano il modo in cui il modello genera le risposte. Puoi utilizzare
GenerationConfig
per
configurare questi parametri. Se non configuri i parametri, il modello
utilizza le opzioni predefinite, che possono variare in base al modello.
L'esempio seguente mostra come configurare diverse opzioni disponibili.
curl https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=$GOOGLE_API_KEY \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"contents": [{
"parts":[
{"text": "Write a story about a magic backpack."}
]
}],
"safetySettings": [
{
"category": "HARM_CATEGORY_DANGEROUS_CONTENT",
"threshold": "BLOCK_ONLY_HIGH"
}
],
"generationConfig": {
"stopSequences": [
"Title"
],
"temperature": 1.0,
"maxOutputTokens": 800,
"topP": 0.8,
"topK": 10
}
}' 2> /dev/null | grep "text"
stopSequences
specifica l'insieme di sequenze di caratteri (fino a 5) che interromperanno la generazione dell'output. Se specificato, l'API si arresta alla prima apparizione
di un stop_sequence
. La sequenza di fermate non verrà inclusa nella risposta.
temperature
controlla la casualità dell'output. Utilizza valori più elevati per risposte più creative e valori più bassi per risposte più deterministiche. I valori possono essere compresi tra [0,0, 2,0].
maxOutputTokens
imposta il numero massimo di token da includere in un candidato.
topP
cambia il modo in cui il modello seleziona i token per l'output. I token vengono selezionati dal più probabile al meno probabile finché la somma delle loro probabilità non corrisponde al valore topP
. Il valore predefinito di topP
è 0,95.
topK
cambia il modo in cui il modello seleziona i token per l'output. Un valore topK
pari a 1 indica che il
token selezionato è il più probabile tra tutti i token nel
vocabolario del modello, mentre un valore topK
pari a 3 indica che il
token successivo viene selezionato tra i 3 più probabili utilizzando la temperatura. I token vengono
ulteriormente filtrati in base a topP
e il token finale viene selezionato utilizzando il
campionamento con temperatura.
Aggiungere istruzioni di sistema
Le istruzioni di sistema ti consentono di indirizzare il comportamento di un modello in base alle tue esigenze e ai tuoi casi d'uso specifici.
Fornendo al modello le istruzioni di sistema, fornisci un contesto aggiuntivo per comprendere l'attività, generare risposte più personalizzate e rispettare linee guida specifiche durante l'intera interazione dell'utente con il modello. Puoi anche specificare il comportamento a livello di prodotto impostando istruzioni di sistema, separate dai prompt forniti dagli utenti finali.
Puoi impostare le istruzioni di sistema quando inizializzazione il modello:
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=$GOOGLE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{ "system_instruction": {
"parts":
{ "text": "You are a cat. Your name is Neko."}},
"contents": {
"parts": {
"text": "Hello there"}}}'
Per un esempio interattivo end-to-end dell'utilizzo delle istruzioni di sistema, consulta le istruzioni di sistema di Colab.
Passaggi successivi
Ora che hai esplorato le nozioni di base dell'API Gemini, potresti provare a:
- Comprensione della visione: scopri come utilizzare la comprensione della visione nativa di Gemini per elaborare immagini e video.
- Comprensione audio: scopri come utilizzare la comprensione audio nativa di Gemini per elaborare i file audio.