Gerar texto usando a API Gemini

A API Gemini pode gerar saída de texto quando fornece texto, imagens, vídeo e áudio como entrada.

Este guia mostra como gerar texto usando os métodos generateContent e streamGenerateContent. Para saber como trabalhar com os recursos de visão e áudio do Gemini, consulte os guias Visão e Áudio.

Antes de começar: configure o projeto e a chave de API

Antes de chamar a API Gemini, você precisa configurar seu projeto e a chave de API.

Gerar texto com base em entrada somente de texto

A maneira mais simples de gerar texto usando a API Gemini é fornecer ao modelo uma única entrada de texto, conforme mostrado neste exemplo:

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

Nesse caso, a instrução ("Escreva uma história sobre uma mochila mágica") não inclui exemplos de saída, instruções do sistema ou informações de formatação. É uma abordagem zero-shot. Para alguns casos de uso, uma solicitação one-shot ou few-shot pode produzir uma saída mais alinhada às expectativas do usuário. Em alguns casos, também é possível fornecer instruções do sistema para ajudar o modelo a entender a tarefa ou seguir diretrizes específicas.

Gerar texto com base em entradas de texto e imagem

A API Gemini oferece suporte a entradas multimodais que combinam texto com arquivos de mídia. O exemplo a seguir mostra como gerar texto com base em uma entrada de texto e imagem:

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)

Assim como os comandos somente de texto, os comandos multimodais podem envolver várias abordagens e refinamentos. Dependendo da saída desse exemplo, talvez seja necessário adicionar etapas ao comando ou ser mais específico nas instruções. Para saber mais, consulte Estratégias de solicitação de arquivo.

Gerar um stream de texto

Por padrão, o modelo retorna uma resposta após concluir todo o processo de geração de texto. É possível conseguir interações mais rápidas sem esperar pelo resultado completo e, em vez disso, usar o streaming para processar resultados parciais.

O exemplo a seguir mostra como implementar o streaming usando o método streamGenerateContent para gerar texto de um comando de entrada somente texto.

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)

Crie um chat interativo

Você pode usar a API Gemini para criar experiências de chat interativo para seus usuários. Usando o recurso de chat da API, você pode coletar várias rodadas de perguntas e respostas, permitindo que os usuários avancem gradualmente para as respostas ou recebam ajuda com problemas de várias partes. Esse recurso é ideal para aplicativos que exigem comunicação contínua, como bots de chat, instrutores interativos ou assistentes de suporte ao cliente.

O exemplo de código a seguir mostra uma implementação básica de chat:

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)

Ativar o streaming de chat

Também é possível usar o streaming com chat, conforme mostrado no exemplo a seguir:

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)

Configurar a geração de texto

Cada comando enviado ao modelo inclui parâmetros que controlam como o modelo gera respostas. Use GenerationConfig para configurar esses parâmetros. Se você não configurar os parâmetros, o modelo usará as opções padrão, que podem variar de acordo com o modelo.

O exemplo a seguir mostra como configurar várias das opções disponíveis.

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 especifica o número de respostas geradas a serem retornadas. Atualmente, esse valor só pode ser definido como 1. Se não for definido, o padrão será 1.

stopSequences especifica o conjunto de sequências de caracteres (até 5) que interrompe a geração de saída. Se especificado, a API vai parar na primeira aparição de um stop_sequence. A sequência de paradas não será incluída como parte da resposta.

maxOutputTokens define o número máximo de tokens a serem incluídos em um candidato.

temperature controla a aleatoriedade da saída. Use valores mais altos para respostas mais criativas e valores mais baixos para respostas mais deterministas. Os valores podem variar de [0,0, 2,0].

Também é possível configurar chamadas individuais para generateContent:

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

Todos os valores definidos na chamada individual substituem os valores no construtor do modelo.

A seguir

Agora que você já aprendeu os conceitos básicos da API Gemini, tente o seguinte:

  • Compreensão visual: aprenda a usar a compreensão visual nativa do Gemini para processar imagens e vídeos.
  • Instruções do sistema: as instruções do sistema permitem orientar o comportamento do modelo com base nas suas necessidades e casos de uso específicos.
  • Entendimento de áudio: aprenda a usar o entendimento de áudio nativo do Gemini para processar arquivos de áudio.