Configure as capacidades do Gemini

Este documento mostra como configurar várias capacidades dos modelos Gemini quando usa a API Live. Pode configurar o processamento, a utilização de ferramentas, como a chamada de funções e a fundamentação, e as capacidades de áudio nativas, como o diálogo afetivo e o áudio proativo.

Configure o pensamento

Os modelos Gemini suportam capacidades de raciocínio, com o raciocínio dinâmico ativado por predefinição. O parâmetro thinking_budget orienta o modelo sobre o número de tokens de raciocínio a usar. Para desativar o modo Thinking, defina thinking_budget como 0.

config = {
    "response_modalities": ["audio"],
    "thinking_config": {
        "thinking_budget": 256,
    },
}

Configure a utilização de ferramentas

Várias ferramentas são compatíveis com várias versões de modelos suportados pela API Live, incluindo:

Para ativar uma ferramenta específica para utilização nas respostas devolvidas, inclua o nome da ferramenta na lista tools quando inicializar o modelo. As seguintes secções fornecem exemplos de como usar cada uma das ferramentas incorporadas no seu código.

Chamada de funções

Use a chamada de funções para criar uma descrição de uma função e, em seguida, transmita essa descrição ao modelo num pedido. A resposta do modelo inclui o nome de uma função que corresponde à descrição e os argumentos para a chamar.

Todas as funções têm de ser declaradas no início da sessão através do envio de definições de ferramentas como parte da mensagem LiveConnectConfig.

Para ativar as chamadas de funções, inclua function_declarations na lista tools na mensagem de configuração:

Python

import asyncio
from google import genai
from google.genai import types

client = genai.Client(
    vertexai=True,
    project=GOOGLE_CLOUD_PROJECT,
    location=GOOGLE_CLOUD_LOCATION,
)
model = "gemini-live-2.5-flash"

# Simple function definitions
turn_on_the_lights = {"name": "turn_on_the_lights"}
turn_off_the_lights = {"name": "turn_off_the_lights"}

tools = [{"function_declarations": [turn_on_the_lights, turn_off_the_lights]}]
config = {"response_modalities": ["TEXT"], "tools": tools}

async def main():
    async with client.aio.live.connect(model=model, config=config) as session:
        prompt = "Turn on the lights please"
        await session.send_client_content(turns={"parts": [{"text": prompt}]})

        async for chunk in session.receive():
            if chunk.server_content:
                if chunk.text is not None:
                    print(chunk.text)
            elif chunk.tool_call:
                function_responses = []
                for fc in tool_call.function_calls:
                    function_response = types.FunctionResponse(
                        name=fc.name,
                        response={ "result": "ok" } # simple, hard-coded function response
                    )
                    function_responses.append(function_response)

                await session.send_tool_response(function_responses=function_responses)


if __name__ == "__main__":
    asyncio.run(main())
  

Para ver exemplos de utilização da Chamada de função em instruções do sistema, consulte o nosso exemplo de práticas recomendadas.

Pode usar a base com a Pesquisa Google com a API Live incluindo google_search na lista tools na mensagem de configuração:

Python

import asyncio
from google import genai
from google.genai import types

client = genai.Client(
    vertexai=True,
    project=GOOGLE_CLOUD_PROJECT,
    location=GOOGLE_CLOUD_LOCATION,
)
model = "gemini-live-2.5-flash"


tools = [{'google_search': {}}]
config = {"response_modalities": ["TEXT"], "tools": tools}

async def main():
    async with client.aio.live.connect(model=model, config=config) as session:
        prompt = "When did the last Brazil vs. Argentina soccer match happen?"
        await session.send_client_content(turns={"parts": [{"text": prompt}]})

        async for chunk in session.receive():
            if chunk.server_content:
                if chunk.text is not None:
                    print(chunk.text)

                # The model might generate and execute Python code to use Search
                model_turn = chunk.server_content.model_turn
                if model_turn:
                    for part in model_turn.parts:
                        if part.executable_code is not None:
                        print(part.executable_code.code)

                        if part.code_execution_result is not None:
                        print(part.code_execution_result.output)

if __name__ == "__main__":
    asyncio.run(main())
  

Validação com o Vertex AI RAG Engine

Pode usar o motor RAG do Vertex AI com a API Live para fundamentar, armazenar e obter contextos:

Python

from google import genai
from google.genai import types
from google.genai.types import (Content, LiveConnectConfig, HttpOptions, Modality, Part)
from IPython import display

PROJECT_ID=YOUR_PROJECT_ID
LOCATION=YOUR_LOCATION
TEXT_INPUT=YOUR_TEXT_INPUT
MODEL_NAME="gemini-live-2.5-flash"

client = genai.Client(
   vertexai=True,
   project=PROJECT_ID,
   location=LOCATION,
)

rag_store=types.VertexRagStore(
   rag_resources=[
       types.VertexRagStoreRagResource(
           rag_corpus=  # Use memory corpus if you want to store context.
       )
   ],
   # Set `store_context` to true to allow Live API sink context into your memory corpus.
   store_context=True
)

async with client.aio.live.connect(
   model=MODEL_NAME,
   config=LiveConnectConfig(response_modalities=[Modality.TEXT],
                            tools=[types.Tool(
                                retrieval=types.Retrieval(
                                    vertex_rag_store=rag_store))]),
) as session:
   text_input=TEXT_INPUT
   print("> ", text_input, "\n")
   await session.send_client_content(
       turns=Content(role="user", parts=[Part(text=text_input)])
   )

   async for message in session.receive():
       if message.text:
           display.display(display.Markdown(message.text))
           continue

Para mais informações, consulte o artigo Use o Vertex AI RAG Engine na API Gemini Live.

Configure as capacidades de áudio nativas

Os modelos com capacidades de áudio nativas suportam as seguintes funcionalidades:

Configure o diálogo afetivo

Quando a opção Diálogo afetivo está ativada, o modelo tenta compreender e responder com base no tom de voz e nas expressões emocionais do utilizador.

Para ativar o diálogo afetivo, defina enable_affective_dialog como true na mensagem de configuração:

Python

config = LiveConnectConfig(
    response_modalities=["AUDIO"],
    enable_affective_dialog=True,
)
  

Configure o áudio proativo

O áudio proativo permite-lhe controlar quando o modelo responde. Por exemplo, pode pedir ao Gemini para responder apenas quando receber um comando ou quando forem discutidos tópicos específicos. Para ver uma demonstração em vídeo do áudio proativo, consulte o artigo Pré-visualização de áudio nativo da Gemini Live API.

Para ativar o áudio proativo, configure o campo proactivity na mensagem de configuração e defina proactive_audio como true:

Python

config = LiveConnectConfig(
    response_modalities=["AUDIO"],
    proactivity=ProactivityConfig(proactive_audio=True),
)
  

Exemplo de conversa

Segue-se um exemplo de uma conversa com o Gemini sobre cozinhar:

Prompt: "You are an AI assistant in Italian cooking; only chime in when the topic is about Italian cooking."

Speaker A: "I really love cooking!" (No response from Gemini.)

Speaker B: "Oh yes, me too! My favorite is French cuisine." (No response from
Gemini.)

Speaker A: "I really like Italian food; do you know how to make a pizza?"

(Italian cooking topic will trigger response from Gemini.)
Live API: "I'd be happy to help! Here's a recipe for a pizza."

Exemplos de utilização comuns

Quando usa o áudio proativo, o Gemini funciona da seguinte forma:

  • Responde com latência mínima: o Gemini responde depois de o utilizador terminar de falar, o que reduz as interrupções e ajuda o Gemini a não perder o contexto se ocorrer uma interrupção.
  • Evita interrupções: o áudio proativo ajuda o Gemini a evitar interrupções causadas por ruído de fundo ou conversas externas e impede que o Gemini responda se forem introduzidas conversas externas durante uma conversa.
  • Processa interrupções: se o utilizador precisar de interromper durante uma resposta do Gemini, o áudio proativo facilita a comunicação bidirecional adequada do Gemini (o que significa que as interrupções adequadas são processadas), em vez de se o utilizador usar palavras de preenchimento, como hum ou ah.
  • Ouve áudio em simultâneo: o Gemini pode ouvir um ficheiro de áudio em simultâneo que não seja a voz do orador e, posteriormente, responder a perguntas sobre esse ficheiro de áudio mais tarde na conversa.

Faturação

Enquanto o Gemini estiver a ouvir uma conversa, são cobrados tokens de áudio de entrada.

No caso dos tokens de áudio de saída, só lhe é cobrado um valor quando o Gemini responde. Se o Gemini não responder ou permanecer em silêncio, não são cobrados tokens de áudio de saída.

Para mais informações, consulte os preços da Vertex AI.

O que se segue?

Para mais informações sobre a utilização da API Live, consulte: