Les modèles compatibles avec l'API Live sont dotés de la capacité intégrée d'utiliser les outils suivants :
- Appel de fonction
- Exécution de code
- Ancrage avec la recherche Google
- Ancrage avec le moteur Vertex AI RAG (preview)
Pour activer un outil spécifique dans les réponses renvoyées, incluez son nom dans la liste tools
lorsque vous initialisez le modèle. Les sections suivantes fournissent des exemples d'utilisation de chacun des outils intégrés dans votre code.
Modèles compatibles
Vous pouvez utiliser l'API Live avec les modèles suivants :
Version de modèle | Niveau de disponibilité |
---|---|
gemini-live-2.5-flash |
DG privée* |
gemini-live-2.5-flash-preview-native-audio |
Version Preview publique |
* Contactez le représentant de l'équipe chargée de votre compte Google pour demander l'accès.
Appel de fonction
Utilisez l'appel de fonction pour créer une description d'une fonction, puis transmettez cette description au modèle dans une requête. La réponse du modèle inclut le nom d'une fonction correspondant à la description et les arguments avec lesquels l'appeler.
Toutes les fonctions doivent être déclarées au début de la session en envoyant des définitions d'outils dans le message LiveConnectConfig
.
Pour activer l'appel de fonction, incluez function_declarations
dans la liste tools
:
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())
Python
Exécution du code
Vous pouvez utiliser l'exécution de code avec l'API Live pour générer et exécuter directement du code Python. Pour activer l'exécution de code pour vos réponses, incluez code_execution
dans la liste tools
:
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 = [{'code_execution': {}}] config = {"response_modalities": ["TEXT"], "tools": tools} async def main(): async with client.aio.live.connect(model=model, config=config) as session: prompt = "Compute the largest prime palindrome under 100000." 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) 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())
Ancrage avec la recherche Google
Vous pouvez utiliser l'ancrage avec la recherche Google avec l'API Live en incluant google_search
dans la liste tools
:
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())
Ancrage avec le moteur RAG Vertex AI (aperçu)
Vous pouvez utiliser le moteur RAG Vertex AI avec l'API Live pour ancrer, stocker et récupérer des contextes :
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
Pour en savoir plus, consultez Utiliser le moteur RAG Vertex AI dans l'API Gemini Live.
(Aperçu public) Audio natif
Gemini 2.5 Flash avec l'API Live introduit des fonctionnalités audio natives, ce qui améliore les fonctionnalités standards de l'API Live. L'audio natif offre des interactions vocales plus riches et plus naturelles grâce à 30 voix HD dans 24 langues. Il inclut également deux nouvelles fonctionnalités exclusives à l'audio natif : Proactive Audio et Affective Dialog.
Utiliser l'audio proactif
La réponse audio proactive permet au modèle de ne répondre que lorsque cela est pertinent. Lorsqu'elle est activée, le modèle génère proactivement des transcriptions textuelles et des réponses audio, mais uniquement pour les requêtes adressées à l'appareil. Les requêtes non adressées à un appareil sont ignorées.
Pour utiliser l'audio proactif, configurez le champ proactivity
dans le message de configuration et définissez proactive_audio
sur true
:
Python
config = LiveConnectConfig( response_modalities=["AUDIO"], proactivity=ProactivityConfig(proactive_audio=True), )
Utiliser le dialogue affectif
Affective Dialog permet aux modèles utilisant l'audio natif de l'API Live de mieux comprendre les expressions émotionnelles des utilisateurs et d'y répondre de manière appropriée, ce qui permet d'avoir des conversations plus nuancées.
Pour activer Affective Dialog, définissez enable_affective_dialog
sur true
dans le message de configuration :
Python
config = LiveConnectConfig( response_modalities=["AUDIO"], enable_affective_dialog=True, )
En savoir plus
Pour en savoir plus sur l'utilisation de l'API Live, consultez les ressources suivantes :