Genera testo utilizzando l'API Gemini

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 Visione e Audio.

Prima di iniziare: configura il progetto e la chiave API

Prima di chiamare l'API Gemini, devi configurare il progetto e la chiave API.

Genera testo da input di solo testo

Il modo più semplice per generare testo con l'API Gemini è fornire al modello un singolo input di solo testo, come mostrato in questo esempio:

model = genai.GenerativeModel("gemini-1.5-flash")
response = model.generate_content("Write a story about a magic backpack.")
print(response.text)

In questo caso, il prompt ("Scrivi una storia su uno zaino magico") non include esempi di output, istruzioni di sistema o informazioni di 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 voler fornire istruzioni di sistema per aiutare il modello a comprendere l'attività o 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 input di testo e immagini:

import PIL.Image

model = genai.GenerativeModel("gemini-1.5-flash")
organ = PIL.Image.open(media / "organ.jpg")
response = model.generate_content(["Tell me about this instrument", organ])
print(response.text)

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.

Genera 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.

model = genai.GenerativeModel("gemini-1.5-flash")
response = model.generate_content("Write a story about a magic backpack.", stream=True)
for chunk in response:
    print(chunk.text)
    print("_" * 80)

Creare una chat interattiva

Puoi utilizzare l'API Gemini per creare esperienze di chat interattive per i tuoi utenti. L'utilizzo della funzionalità di chat dell'API consente di raccogliere più round di domande e risposte, consentendo agli utenti di procedere gradualmente verso le risposte o di ricevere assistenza per problemi articolati. Questa funzionalità è ideale per le applicazioni che richiedono una comunicazione continua, come chatbot, tutor interattivi o assistenti per l'assistenza clienti.

Il seguente esempio di codice mostra un'implementazione di chat di base:

model = genai.GenerativeModel("gemini-1.5-flash")
chat = model.start_chat(
    history=[
        {"role": "user", "parts": "Hello"},
        {"role": "model", "parts": "Great to meet you. What would you like to know?"},
    ]
)
response = chat.send_message("I have 2 dogs in my house.")
print(response.text)
response = chat.send_message("How many paws are in my house?")
print(response.text)

Attivare lo streaming della chat

Puoi anche utilizzare lo streaming con la chat, come mostrato nell'esempio seguente:

model = genai.GenerativeModel("gemini-1.5-flash")
chat = model.start_chat(
    history=[
        {"role": "user", "parts": "Hello"},
        {"role": "model", "parts": "Great to meet you. What would you like to know?"},
    ]
)
response = chat.send_message("I have 2 dogs in my house.", stream=True)
for chunk in response:
    print(chunk.text)
    print("_" * 80)
response = chat.send_message("How many paws are in my house?", stream=True)
for chunk in response:
    print(chunk.text)
    print("_" * 80)

print(chat.history)

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.

model = genai.GenerativeModel("gemini-1.5-flash")
response = model.generate_content(
    "Tell me a story about a magic backpack.",
    generation_config=genai.types.GenerationConfig(
        # Only one candidate for now.
        candidate_count=1,
        stop_sequences=["x"],
        max_output_tokens=20,
        temperature=1.0,
    ),
)

print(response.text)

candidateCount specifica il numero di risposte generate da restituire. Al momento, questo valore può essere impostato solo su 1. Se non viene impostato, il valore predefinito è 1.

stopSequences specifica l'insieme di sequenze di caratteri (fino a 5) che interromperanno la generazione di output. Se specificato, l'API si arresta alla prima apparizione di un stop_sequence. La sequenza di fermate non verrà inclusa nella risposta.

maxOutputTokens imposta il numero massimo di token da includere in un candidato.

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].

Puoi anche configurare singole chiamate a generateContent:

response = model.generate_content(
    'Write a story about a magic backpack.',
    generation_config = genai.GenerationConfig(
        max_output_tokens=1000,
        temperature=0.1,
    )
)

Eventuali valori impostati sulla singola chiamata sostituiscono i valori nel costruttore del modello.

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.
  • Istruzioni di sistema: le istruzioni di sistema ti consentono di indirizzare il comportamento del modello in base alle tue esigenze e ai tuoi casi d'uso specifici.
  • Comprensione audio: scopri come utilizzare la comprensione audio nativa di Gemini per elaborare i file audio.