Configura las capacidades de Gemini

En este documento, se muestra cómo configurar varias capacidades de los modelos de Gemini cuando se usa la API de Gemini Live. Puedes configurar el uso de herramientas, como la llamada a funciones y la fundamentación, y las capacidades de audio nativas, como el diálogo afectivo y el audio proactivo.

Configura el uso de herramientas

Varias herramientas son compatibles con diferentes versiones de los modelos compatibles con la API de Gemini Live, incluidas las siguientes:

Para habilitar una herramienta en particular para su uso en las respuestas devueltas, incluye el nombre de la herramienta en la lista tools cuando inicialices el modelo. En las siguientes secciones, se proporcionan ejemplos de cómo usar cada una de las herramientas integradas en tu código.

Llamada a función

Usa la llamada a función cuando quieras que el modelo interactúe con sistemas externos o APIs que administres. Úsala para tareas como verificar una base de datos, enviar un correo electrónico o interactuar con una API personalizada.

El modelo genera una llamada a función, y tu aplicación ejecuta el código y envía los resultados al modelo.

Todas las funciones deben declararse al comienzo de la sesión enviando definiciones de herramientas como parte del mensaje LiveConnectConfig.

Para habilitar las llamadas a funciones, incluye function_declarations en la lista tools del mensaje de configuración:

Python

import asyncio

from google import genai
from google.genai.types import (
    Content,
    LiveConnectConfig,
    Part,
)

# Initialize the client.
client = genai.Client(
    vertexai=True,
    project="GOOGLE_CLOUD_PROJECT",  # Replace with your project ID
    location="LOCATION",  # Replace with your location
)

MODEL_ID = "gemini-live-2.5-flash-native-audio"


def get_current_weather(location: str) -> str:
    """Example method. Returns the current weather.

    Args:
        location: The city and state, e.g. San Francisco, CA
    """
    weather_map: dict[str, str] = {
        "Boston, MA": "snowing",
        "San Francisco, CA": "foggy",
        "Seattle, WA": "raining",
        "Austin, TX": "hot",
        "Chicago, IL": "windy",
    }
    return weather_map.get(location, "unknown")


async def main():
    config = LiveConnectConfig(
        response_modalities=["AUDIO"],
        tools=[get_current_weather],
    )

    async with client.aio.live.connect(
        model=MODEL_ID,
        config=config,
    ) as session:
        text_input = "Get the current weather in Boston."
        print(f"Input: {text_input}")

        await session.send_client_content(
            turns=Content(role="user", parts=[Part(text=text_input)])
        )

        async for message in session.receive():
            if message.tool_call:
                function_responses = []
                for function_call in message.tool_call.function_calls:
                    print(f"FunctionCall > {function_call}")
                    # Execute the tool and send the response back to the model.
                    result = get_current_weather(**function_call.args)
                    function_responses.append(
                        {
                            "name": function_call.name,
                            "response": {"result": result},
                            "id": function_call.id,
                        }
                    )
                if function_responses:
                    await session.send_tool_response(function_responses=function_responses)


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

Para ver ejemplos del uso de la llamada a función en instrucciones del sistema, consulta nuestro ejemplo de prácticas recomendadas.

Usa la fundamentación con la Búsqueda de Google cuando quieras que el modelo proporcione respuestas más precisas y fácticas fundamentándolas en fuentes de información verificables. Úsalo para tareas como buscar en la Web.

A diferencia de la llamada a funciones, la integración del servidor controla la recuperación de información automáticamente.

Para habilitar la fundamentación con la Búsqueda de Google, incluye google_search en la lista tools del mensaje de configuración:

Python

import asyncio

from google import genai
from google.genai.types import (
    Content,
    LiveConnectConfig,
    Part,
)

# Initialize the client.
client = genai.Client(
    vertexai=True,
    project="GOOGLE_CLOUD_PROJECT",  # Replace with your project ID
    location="LOCATION",  # Replace with your location
)

MODEL_ID = "gemini-live-2.5-flash-native-audio"


async def main():
    config = LiveConnectConfig(
        response_modalities=["AUDIO"],
        tools=[{"google_search": {}}],
    )

    async with client.aio.live.connect(
        model=MODEL_ID,
        config=config,
    ) as session:
        text_input = "What is the current weather in Toronto, Canada?"
        print(f"Input: {text_input}")

        await session.send_client_content(
            turns=Content(role="user", parts=[Part(text=text_input)])
        )

        async for message in session.receive():
            # Consume the messages from the model.
            # In native audio, the model response is in audio format.
            pass


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

Fundamentación con Vertex AI RAG Engine

Puedes usar el motor de RAG de Vertex AI con la API de Live para fundamentar, almacenar y recuperar contextos. Úsalo para tareas como recuperar información de un corpus de documentos. Al igual que la fundamentación con la Búsqueda de Google, la fundamentación con RAG se controla del lado del servidor y recupera automáticamente información del corpus especificado:

Python

import asyncio

from google import genai
from google.genai.types import (
    Content,
    LiveConnectConfig,
    Part,
    Retrieval,
    Tool,
    VertexRagStore,
    VertexRagStoreRagResource,
)

# Initialize the client.
client = genai.Client(
    vertexai=True,
    project="GOOGLE_CLOUD_PROJECT",  # Replace with your project ID
    location="LOCATION",  # Replace with your location
)

MODEL_ID = "gemini-live-2.5-flash-native-audio"


async def main():
    rag_store = VertexRagStore(
        rag_resources=[
            VertexRagStoreRagResource(
                rag_corpus="RESOURCE_NAME"  # Replace with your corpus resource name
            )
        ],
        # Set `store_context` to true to allow Live API sink context into your memory corpus.
        store_context=True,
    )

    config = LiveConnectConfig(
        response_modalities=["AUDIO"],
        tools=[Tool(retrieval=Retrieval(vertex_rag_store=rag_store))],
    )

    async with client.aio.live.connect(
        model=MODEL_ID,
        config=config,
    ) as session:
        text_input = "YOUR_TEXT_INPUT"
        print(f"Input: {text_input}")

        await session.send_client_content(
            turns=Content(role="user", parts=[Part(text=text_input)])
        )

        async for message in session.receive():
            # Consume the messages from the model.
            # In native audio, the model response is in audio format.
            pass


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

Para obtener más información, consulta Cómo usar Vertex AI RAG Engine en la API de Gemini Live.

Configura las capacidades de audio nativas

Los modelos que tienen capacidades de audio nativas admiten las siguientes funciones:

Cómo configurar el diálogo basado en emociones detectadas

Cuando se habilita Diálogo Afectivo, el modelo intenta comprender y responder en función del tono de voz y las expresiones emocionales del usuario.

Para habilitar el diálogo afectivo, configura enable_affective_dialog como true en el mensaje de configuración:

Python

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

Cómo configurar el audio proactivo

El Audio proactivo te permite controlar cuándo responde el modelo. Por ejemplo, puedes pedirle a Gemini que solo responda cuando se le indique o cuando se hablen de temas específicos. Para ver una demostración en video de Audio proactivo, consulta Gemini LiveAPI Native Audio Preview.

Para habilitar el audio proactivo, configura el campo proactivity en el mensaje de configuración y establece proactive_audio en true:

Python

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

Ejemplo de conversación

A continuación, se muestra un ejemplo de cómo podría ser una conversación con Gemini sobre cocina:

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.)
Gemini Live API: "I'd be happy to help! Here's a recipe for a pizza."

Casos de uso habituales

Cuando usas Audio proactivo, Gemini funciona de la siguiente manera:

  • Responde con latencia mínima: Gemini responde después de que el usuario termina de hablar, lo que reduce las interrupciones y ayuda a Gemini a no perder el contexto si se produce una interrupción.
  • Evita interrupciones: El Audio proactivo ayuda a Gemini a evitar interrupciones por ruido de fondo o charlas externas, y evita que Gemini responda si se producen charlas externas durante una conversación.
  • Maneja interrupciones: Si el usuario necesita interrumpir una respuesta de Gemini, el audio proactivo facilita que Gemini realice una retroalimentación adecuada (es decir, se manejan las interrupciones apropiadas), en lugar de que un usuario use palabras de relleno como eh o um.
  • Escucha audio en conjunto: Gemini puede escuchar un archivo de audio en conjunto que no sea la voz del orador y, luego, responder preguntas sobre ese archivo de audio más adelante en la conversación.

Facturación

Mientras Gemini escucha una conversación, se cobrarán los tokens de audio de entrada.

En el caso de los tokens de audio de salida, solo se te cobra cuando Gemini responde. Si Gemini no responde o permanece en silencio, no se te cobrarán los tokens de audio de salida.

Para obtener más información, consulta los precios de Vertex AI.

¿Qué sigue?

Para obtener más información sobre el uso de la API de Gemini Live, consulta los siguientes recursos: