Un outil donne à l’agent accès à une capacité contrôlée. Commençons par une fonction sans effet de bord, puis vérifions que le modèle l’appelle avec des arguments valides.
Installer
~~~bash python -m venv .venv source .venv/bin/activate pip install -U agno ~~~
Ajoutez ensuite le paquet du fournisseur de modèle utilisé et configurez sa clé dans l’environnement.
Définir l’outil
~~~python def convert_eur_to_usd(amount_eur: float, rate: float = 1.08) -> dict: """Convertit un montant positif en euros vers des dollars au taux fourni.""" if amount_eur < 0 or amount_eur > 100_000: raise ValueError('Montant hors limites') if not 0.5 <= rate <= 2: raise ValueError('Taux hors limites') return {'amount_eur': amount_eur, 'amount_usd': round(amount_eur * rate, 2)} ~~~
Dans une application financière, le taux doit venir d’une source fiable côté serveur, pas du modèle. Cet exemple garde le paramètre visible uniquement pour apprendre le schéma.
Créer l’agent
~~~python from agno.agent import Agent from agno.models.openai import OpenAIChat
agent = Agent( model=OpenAIChat(id='votre-modele-actif'), tools=[convert_eur_to_usd], instructions='Utilise l’outil pour tout calcul de conversion.', markdown=True, )
agent.print_response('Convertis 120 euros en dollars.', stream=True) ~~~
Adaptez l’import au provider installé et au modèle actif.
Tester
Vérifiez un montant normal, négatif, immense et ambigu. Inspectez l’appel d’outil, pas seulement la phrase finale. L’agent doit expliquer une erreur au lieu d’inventer un résultat.
Ajouter un outil réel
Pour une API, fixez base URL, timeout et credentials côté serveur. Retournez un objet minimal. Une action d’écriture exige identité, autorisation, confirmation et clé d’idempotence.
Production
Limitez appels et tours, tracez durée et erreurs, masquez les secrets et verrouillez les dépendances. La description de l’outil aide le modèle, mais elle ne remplace aucune règle de sécurité.
FAQ
Peut-on donner une fonction shell comme outil ?
Évitez un shell générique. Exposez des opérations précises avec arguments validés et environnement isolé.
Pourquoi typer les paramètres ?
Les types produisent un schéma plus clair et permettent de refuser les arguments invalides avant l’exécution.