AI APIs

Construire des agents intelligents : Maîtriser l'appel de fonctions et l'exécution de code de l'API Gemini

L'ère des interactions simples de questions-réponses avec les grands modèles de langage (LLM) évolue rapidement. Le paysage de développement actuel exige des systèmes capables de raisonner, d'agir et de vérifier. L'API Gemini de Google se situe à la pointe de ce changement, offrant des primitives puissantes permettant aux développeurs de construire des flux de travail agentiques. En combinant les capacités d'Appel de fonctions et d'Exécution de code, les développeurs peuvent créer des agents IA qui non seulement génèrent des plans, mais exécutent également une logique complexe et récupèrent des données en temps réel.

Comprendre la boucle agentique

Un système « agentique » fonctionne en boucle : il planifie, agit, observe le résultat, puis replanifie. Dans le contexte de l'API Gemini, cette boucle est orchestrée par deux mécanismes clés :

  1. Appel de fonctions : Cela permet au modèle de produire des données JSON structurées indiquant quelles fonctions externes il souhaite appeler et avec quels paramètres. C'est le pont entre le « processus de pensée » du LLM et la « couche d'action » de votre application.
  2. Exécution de code (Python sandboxé) : Gemini peut générer et exécuter du code Python dans un environnement sandbox sécurisé. C'est crucial pour les tâches nécessitant une précision numérique, la manipulation de données ou une vérification logique multi-étapes que la simple génération de texte pourrait traiter mal.

Étape 1 : Définir des fonctions pour les actions externes

Pour permettre à un agent d'interagir avec votre application spécifique ou vos sources de données, vous devez définir des signatures de fonctions. Considérons un agent qui doit vérifier la météo et calculer les temps de trajet optimaux.

import google.generativeai as genai

# Définir la signature de la fonction
def get_weather(location: str):
    # Cette fonction appellerait normalement une API externe
    return {"temp_c": 22, "condition": "Ensoleillé"}

def calculate_optimal_time(distance_km: float, speed_kmh: float):
    # Cette fonction effectuerait des calculs logistiques complexes
    return {"hours": distance_km / speed_kmh}

# Configurer le modèle avec les outils disponibles
genai.configure(api_key="VOTRE_CLE_API")
model = genai.GenerativeModel(
    'gemini-1.5-pro',
    tools=[get_weather, calculate_optimal_time]
)

Étape 2 : Activer l'exécution de code pour le raisonnement logique

Tandis que l'appel de fonctions gère les actions externes, l'exécution de code gère le calcul interne. En utilisant l'outil `code_execution`, Gemini peut écrire des scripts Python pour résoudre des problèmes de mathématiques ou manipuler des tableaux de données fournis dans le prompt.

Voici comment l'activer dans votre configuration de modèle :

# Note : Dans le SDK le plus récent, l'exécution de code est souvent activée via des paramètres d'outils spécifiques
# ou en utilisant la capacité 'code_execution' si disponible dans votre région/plan.

model_with_code = genai.GenerativeModel(
    'gemini-1.5-pro',
    system_instruction="Vous êtes un agent d'analyse de données. Utilisez l'exécution de code pour vérifier les calculs."
)

# Le modèle décidera désormais d'exécuter du code s'il voit des tâches mathématiques ou chargées en données
response = model_with_code.generate_content("Analysez cet ensemble de données et trouvez les 3 principales tendances.")
print(response.text)

Exemple pratique : L'agent hybride

Imaginez un scénario où un utilisateur demande : « Quel est le meilleur moment pour réserver un vol vers Paris si j'ai 1 000 $, et quelle est la météo probable ? »

L'agent fonctionne comme suit :

  1. Planification : Le modèle identifie deux sous-tâches : vérifier la météo (données externes) et le budget (calcul logique).
  2. Action 1 : Il déclenche la fonction `get_weather("Paris")`.
  3. Action 2 : Il exécute un script Python pour déterminer si 1 000 $ couvrent les prix typiques des vols sur la base des données historiques fournies dans le contexte.
  4. Observation : Le modèle reçoit le JSON de la fonction et la sortie du sandbox Python.
  5. Réponse finale : Il synthétise les deux informations en une réponse cohérente : « Il fait actuellement 20°C et il est ensoleillé à Paris. Avec votre budget de 1 000 $, vous pouvez sécuriser un billet de gamme moyenne partant le mardi. »

Meilleures pratiques pour des agents robustes

  • Descriptions claires : Les docstrings de vos fonctions sont la principale source de vérité pour le LLM. Soyez explicite sur les types de paramètres et les résultats attendus.
  • Gestion des erreurs : Attrapez toujours les exceptions dans vos callbacks de fonctions. Renvoyez un message d'erreur structuré au LLM pour qu'il puisse réessayer ou informer l'utilisateur.
  • Limiter la complexité du sandbox : Bien que l'exécution de code de Gemini soit puissante, gardez le code généré simple pour assurer des temps d'exécution plus rapides et un débogage plus facile.

Conclusion

En exploitant les outils d'appel de fonctions et d'exécution de code de l'API Gemini, les développeurs passent au-delà des chatbots statiques pour entrer dans le domaine des agents autonomes. Ces agents peuvent percevoir leur environnement via des API externes et raisonner sur des problèmes complexes via du code sandboxé. À mesure que ces capacités mûrissent, la capacité à orchestrer de tels flux de travail multi-étapes utilisant des outils deviendra une exigence standard pour les applications IA de niveau entreprise. Commencez petit, définissez des outils clairs et laissez le modèle gérer l'orchestration.

Share: