1. Avant de commencer
Bienvenue dans la deuxième partie de la série "Créer des agents d'IA avec ADK" ! Dans cet atelier de programmation pratique, vous allez doter un agent d'IA de base de différents outils.
Pour commencer, ce guide propose deux chemins : l'un pour ceux qui continuent l'atelier de programmation Créer des agents d'IA avec ADK : les bases et l'autre pour ceux qui débutent. Les deux chemins d'accès vous permettront d'obtenir le code d'agent de base nécessaire pour commencer.
À la fin de cet atelier de programmation, vous aurez doté votre agent assistant personnel d'outils à des fins diverses. Vous serez ainsi un peu plus près de le transformer en un système multi-agents (MAS) sophistiqué, comme nous le ferons dans les prochaines parties de cette série.
Prérequis
- Comprendre les concepts de l'IA générative
- Maîtrise des bases de la programmation Python
- Avoir suivi l'atelier de programmation Créer des agents IA avec ADK : les bases ou un atelier similaire
Points abordés
- Donnez de nouvelles compétences à votre agent en créant des fonctions Python personnalisées en tant qu'outils.
- Connectez votre agent à des informations en temps réel à l'aide d'outils intégrés comme la recherche Google.
- Structurez un agent multi-outil en créant des sous-agents spécialisés pour les tâches complexes.
- Intégrez des outils issus de frameworks d'IA populaires comme LangChain pour étendre rapidement les fonctionnalités.
Prérequis
- Un ordinateur qui fonctionne et un réseau Wi-Fi fiable
- Un navigateur, tel que Chrome, pour accéder à la console Google Cloud
- Un projet Google Cloud avec facturation activée
- Un esprit curieux et une soif d'apprendre
2. Introduction
Un agent de base créé avec l'ADK dispose d'un puissant cerveau LLM, mais il présente également des limites : il ne peut pas accéder aux informations créées après sa date d'entraînement et il ne peut pas interagir avec des services externes. C'est comme un assistant brillant et érudit enfermé dans une bibliothèque sans téléphone ni Internet. Pour qu'un agent soit vraiment utile, nous devons lui fournir des outils.
Considérez les outils comme un moyen pour l'assistant IA d'accéder au monde extérieur : une calculatrice, un navigateur Web ou l'accès à une base de données d'entreprise spécifique. Dans l'ADK, un outil est un élément de code modulaire qui permet à l'agent d'effectuer des actions spécifiques, comme rechercher des données en temps réel ou appeler une API externe. L'utilisation d'outils étend ses capacités bien au-delà de la simple conversation.
L'ADK propose trois catégories d'outils :
- Outils de fonction : outils personnalisés que vous développez pour répondre aux exigences spécifiques de votre application, tels que des fonctions et des agents prédéfinis.
- Outils intégrés : outils prêts à l'emploi fournis par le framework pour les opérations courantes, comme la recherche Google et l'exécution de code.
- Outils tiers : bibliothèques externes populaires telles que Serper et outils de LangChain et CrewAI.
Pour en savoir plus sur l'utilisation des outils avec les agents ADK, consultez la documentation officielle. Dans cet atelier de programmation, nous allons ajouter des outils pour transformer notre agent simple en assistant de voyage personnel efficace. C'est parti !
3. Premiers pas : votre agent de base
Avant de pouvoir fournir des outils à un agent, vous avez besoin d'un agent de base. Choisissez le parcours qui correspond le mieux à votre progression.
Parcours A : Continuer à partir de l'atelier de programmation de base
Si vous venez de terminer l'atelier de programmation Créer des agents d'IA avec ADK : les bases, vous êtes prêt. Vous pouvez continuer à travailler dans votre répertoire de projet ai-agents-adk
existant.
Parcours B : partir de zéro
Si vous commencez cet atelier de programmation directement, suivez ces quatre étapes pour configurer votre environnement et créer l'agent de démarrage nécessaire.
- Configurer les services Google Cloud
- Créer un environnement virtuel Python
- Créer un agent
- Exécuter l'agent sur l'interface utilisateur de développement
Une fois ces étapes effectuées, vous pouvez commencer votre parcours d'apprentissage.
4. Créer un outil personnalisé pour le change de devises
À ce stade, vous devriez déjà savoir comment créer un agent d'IA simple à l'aide de l'ADK et l'exécuter sur l'interface utilisateur de développement.
Imaginez que vous préparez un voyage au Japon le mois prochain et que vous devez vérifier le taux de change actuel. Demandez à l'agent "Quel est le taux de change entre le dollar de Singapour et le yen japonais ?"
Vous verrez que l'agent ne peut pas récupérer les taux de change en temps réel. En effet, l'agent n'a actuellement pas accès à Internet ni aux systèmes externes. Même si l'agent répond avec une valeur, il est difficile de lui faire confiance, car il s'agit probablement d'une hallucination.
Pour résoudre ce problème, nous allons implémenter une fonction Python permettant de récupérer les taux de change via une API REST et l'intégrer en tant qu'outil de fonction pour l'agent.
Arrêtez le processus de l'agent en cours d'exécution à l'aide du raccourci clavier Ctrl+C (pour Windows/Linux) ou Cmd+C (pour macOS) dans la fenêtre du terminal.
Créez le fichier custom_functions.py
:
Créez un fichier Python nommé custom_functions.py
dans le dossier personal_assistant
en saisissant cette commande dans le terminal.
touch personal_assistant/custom_functions.py
Voici à quoi devrait ressembler la structure de vos dossiers :
ai-agents-adk/ └── personal_assistant/ ├── .env ├── __init__.py ├── agent.py └── custom_functions.py
Ouvrez le fichier custom_functions.py
dans l'éditeur de code. Ce fichier contiendra la fonction Python chargée de récupérer les données sur les taux de change à partir d'une API externe.
Copiez et collez le code suivant à l'intérieur :
import requests
# define a function to get exchange rate
def get_fx_rate(base: str, target: str):
"""
Fetches the current exchange rate between two currencies.
Args:
base: The base currency (e.g., "SGD").
target: The target currency (e.g., "JPY").
Returns:
The exchange rate information as a json response,
or None if the rate could not be fetched.
"""
base_url = "https://hexarate.paikama.co/api/rates/latest"
api_url = f"{base_url}/{base}?target={target}"
response = requests.get(api_url)
if response.status_code == 200:
return response.json()
Modifiez maintenant le fichier agent.py
: importez la fonction get_fx_rate
et attribuez-la en tant que FunctionTool
.
Mettre à jour le fichier agent.py
**:**
Copiez ce bloc de code et remplacez le contenu existant du fichier agent.py
:
from google.adk.agents import Agent
from google.adk.tools import FunctionTool
from .custom_functions import get_fx_rate
root_agent = Agent(
model='gemini-2.5-flash',
name='root_agent',
description='A helpful assistant for user questions.',
instruction='Answer user questions to the best of your knowledge',
tools=[FunctionTool(get_fx_rate)]
)
Après les modifications, redémarrez l'agent en saisissant :
uv run adk web
Une fois l'agent opérationnel, posez à nouveau la même question : "Quel est le taux de change entre le dollar singapourien et le yen japonais ?"
Cette fois, vous devriez voir le taux de change réel fourni par l'outil get_fx_rate
.
N'hésitez pas à poser toutes les questions que vous souhaitez sur les taux de change.
5. Intégrer l'outil de recherche Google intégré
L'agent étant désormais capable de fournir des taux de change, la prochaine tâche consiste à obtenir les prévisions météorologiques du mois prochain. Posez la question suivante à l'agent : "Quelles sont les prévisions météo à Tokyo, au Japon, pour le mois prochain ?"
Comme vous pouvez l'imaginer, les prévisions météo nécessitent des informations en temps réel dont notre agent ne dispose pas. Bien que nous puissions coder de nouvelles fonctions Python pour chaque élément de données en temps réel requis, l'ajout d'un nombre croissant d'outils personnalisés rend rapidement l'agent trop complexe et difficile à gérer.
Heureusement, l'Agent Development Kit (ADK) fournit une suite d'outils intégrés, y compris la recherche Google, qui sont prêts à l'emploi et simplifient la façon dont notre agent interagit avec le monde extérieur. Ajoutons un outil de recherche Google à notre agent.
Pour ce faire, vous devez modifier le fichier agent.py
comme suit :
from google.adk.agents import Agent
from google.adk.tools import FunctionTool
from google.adk.tools import google_search
from .custom_functions import get_fx_rate
root_agent = Agent(
model='gemini-2.5-flash',
name='root_agent',
description='A helpful assistant for user questions.',
instruction='Answer user questions to the best of your knowledge',
tools=[
FunctionTool(get_fx_rate),
google_search,
]
)
Une fois le fichier modifié, redémarrez l'instance adk web
. En cas d'oubli,
- Cliquez sur le terminal, puis appuyez sur Ctrl+C ou Cmd+C pour arrêter l'instance.
uv run adk web
pour démarrer l'instance- Essayez de poser la même question : "Quelle est la météo prévue à Tokyo, au Japon, pour le mois prochain ?"
L'approche recommandée consiste à adopter un modèle multi-agent : créer un agent spécialisé dont la seule tâche est d'effectuer des recherches Google. Nous attribuons ensuite ce nouvel agent Recherche Google à notre personal_assistant
principal en tant qu'outil.
Créer un fichier custom_agents.py
À présent, créez un fichier Python nommé custom_agents.py
dans le dossier personal_assistant
.
touch personal_assistant/custom_agents.py
Voici à quoi devrait ressembler la structure de vos dossiers :
ai-agents-adk/ └── personal_assistant/ ├── .env ├── __init__.py ├── agent.py ├── custom_functions.py └── custom_agents.py
Ce fichier contiendra le code du google_search_agent
spécialisé. Copiez le code suivant dans le fichier custom_agents.py
à l'aide de l'éditeur de code.
from google.adk.agents import Agent
from google.adk.tools import google_search
# Create an agent with google search tool as a search specialist
google_search_agent = Agent(
model='gemini-2.5-flash',
name='google_search_agent',
description='A search agent that uses google search to get latest information about current events, weather, or business hours.',
instruction='Use google search to answer user questions about real-time, logistical information.',
tools=[google_search],
)
Une fois le fichier créé, mettez à jour le fichier agent.py
comme indiqué ci-dessous.
Mettre à jour le fichier agent.py
Copiez ce bloc de code et remplacez le contenu existant du fichier agent.py
:
from google.adk.agents import Agent
from google.adk.tools import FunctionTool
from google.adk.tools import agent_tool
from .custom_functions import get_fx_rate
from .custom_agents import google_search_agent
root_agent = Agent(
model='gemini-2.5-flash',
name='root_agent',
description='A helpful assistant for user questions.',
tools=[
FunctionTool(get_fx_rate),
agent_tool.AgentTool(agent=google_search_agent),
]
)
Examinons le nouveau modèle puissant dans le code :
- Nouvel agent spécialisé : nous avons défini un tout nouvel agent,
google_search_agent
. Notez sa description spécifique et le fait que son seul outil estgoogle_search
. Il s'agit d'un spécialiste de la recherche. agent_tool.AgentTool
: il s'agit d'un wrapper spécial de l'ADK. Il prend un agent entier (notre google_search_agent) et l'emballe pour qu'il ressemble et agisse comme un outil standard.- Plus intelligent**
root_agent
**: notreroot_agent
dispose désormais d'un nouvel outil :agent_tool.AgentTool(agent=google_search_agent)
. Il ne sait pas comment effectuer des recherches sur le Web, mais il sait qu'il dispose d'un outil auquel il peut déléguer les tâches de recherche.
Notez que le champ d'instructions a disparu de root_agent
. Ses instructions sont désormais définies de manière implicite par les outils dont il dispose.
Le root_agent
est devenu un orchestrateur ou un routeur, dont la tâche principale est de comprendre la demande d'un utilisateur et de la transmettre à l'outil approprié, qu'il s'agisse de la fonction get_fx_rate
ou de google_search_agent
. Cette conception décentralisée est essentielle pour créer des systèmes d'agents complexes et faciles à gérer.
Maintenant, redémarrez
adk web
instance et posez à nouveau la question à l'agent : "Quelles sont les prévisions météo à Tokyo, au Japon, pour le mois prochain ?"
L'agent utilise désormais google_search_agent
pour obtenir les dernières informations.
Vous pouvez également poser une question sur les taux de change actuels. L'agent devrait désormais être en mesure d'utiliser le bon outil pour la question concernée.
N'hésite pas à poser d'autres questions nécessitant des informations en temps réel à l'agent et à observer comment il gère les requêtes à l'aide des outils à sa disposition.
6. Exploiter l'outil Wikipédia de LangChain
Notre agent est en passe de devenir un excellent assistant de voyage. Il peut gérer les taux de change avec son outil get_fx_rate
et la logistique avec son outil google_search_agent
. Mais un voyage réussi ne se limite pas à la logistique. Il s'agit également de comprendre la culture et l'histoire de votre destination.
Bien que google_search_agent
puisse trouver des faits culturels et historiques, les informations provenant d'une source dédiée comme Wikipédia sont souvent plus structurées et fiables.
Heureusement, l'ADK est conçu pour être très extensible, ce qui vous permet d'intégrer facilement des outils provenant d'autres frameworks d'agents d'IA comme CrewAI et LangChain. Cette interopérabilité est essentielle, car elle permet de réduire le temps de développement et de réutiliser les outils existants. Pour ce cas d'utilisation, nous allons exploiter les outils Wikipédia de LangChain.
Tout d'abord, arrêtez le processus de l'agent en cours d'exécution (Ctrl+C ou Cmd+C), puis installez des bibliothèques supplémentaires dans l'environnement virtuel Python actuel en saisissant les commandes suivantes dans le Terminal.
uv add langchain-community
uv add wikipedia
Créer un fichier third_party_tools.py
À présent, créez un fichier Python nommé third_party_tools.py
dans le dossier personal_assistant
.
touch personal_assistant/third_party_tools.py
Voici à quoi devrait ressembler la structure de vos dossiers :
ai-agents-adk/ └── personal_assistant/ ├── .env ├── __init__.py ├── agent.py ├── custom_functions.py ├── custom_agents.py └── third_party_tools.py
Ce fichier contiendra l'implémentation de l'outil LangChain Wikipedia. Copiez le code suivant dans third_party_tools.py
à l'aide de l'éditeur Cloud :
from langchain_community.tools import WikipediaQueryRun
from langchain_community.utilities import WikipediaAPIWrapper
# Configure the Wikipedia LangChain tool to act as our cultural guide
langchain_wikipedia_tool = WikipediaQueryRun(
api_wrapper=WikipediaAPIWrapper(top_k_results=1, doc_content_chars_max=3000)
)
# Give the tool a more specific description for our agent
langchain_wikipedia_tool.description = (
"Provides deep historical and cultural information on landmarks, concepts, and places."
"Use this for 'tell me about' or 'what is the history of' type questions."
)
Mettre à jour le fichier agent.py
Modifiez maintenant le fichier agent.py
avec le contenu ci-dessous :
from google.adk.agents import Agent
from google.adk.tools import FunctionTool
from google.adk.tools import agent_tool
from google.adk.tools import langchain_tool
from .custom_functions import get_fx_rate
from .custom_agents import google_search_agent
from .third_party_tools import langchain_wikipedia_tool
root_agent = Agent(
model='gemini-2.5-flash',
name='root_agent',
description='A helpful assistant for user questions.',
tools=[
FunctionTool(get_fx_rate),
agent_tool.AgentTool(agent=google_search_agent),
langchain_tool.LangchainTool(langchain_wikipedia_tool),
]
)
Maintenant, redémarrez l'instance adk web
et posez cette question à l'agent : Parle-moi de l'histoire de Kyoto.
L'agent identifie correctement cette requête comme historique et utilise son nouvel outil Wikipedia. En intégrant un outil tiers et en lui attribuant un rôle spécifique, vous avez rendu votre agent beaucoup plus intelligent et utile pour la planification de voyages.
Pour savoir exactement comment l'agent a fait ce choix, vous pouvez utiliser l'inspecteur d'événements dans l'UI adk web
. Cliquez sur l'onglet "Événements", puis sur l'événement functionCall
le plus récent.
L'inspecteur affiche la liste de tous les outils disponibles et met en évidence le tool_code de celui qui a été exécuté par l'agent.
7. Nettoyer (facultatif)
Comme cet atelier de programmation n'implique aucun produit à longue durée d'exécution, il suffit d'arrêter vos sessions d'agent actives (par exemple, l'instance adk web
dans votre terminal) en appuyant sur Ctrl+C dans le terminal.
Supprimer les dossiers et fichiers du projet d'agent
Si vous souhaitez uniquement supprimer le code de votre environnement Cloud Shell, utilisez les commandes suivantes :
cd ~
rm -rf ai-agents-adk
Désactiver l'API Vertex AI
Pour désactiver l'API Vertex AI que vous avez activée précédemment, exécutez la commande suivante :
gcloud services disable aiplatform.googleapis.com
Arrêter l'intégralité du projet Google Cloud
Si vous souhaitez arrêter complètement votre projet Google Cloud, consultez le guide officiel pour obtenir des instructions détaillées.
8. Conclusion
Félicitations ! Vous avez réussi à doter l'agent assistant personnel de fonctions personnalisées et d'un accès en temps réel à la recherche Google. Consultez la documentation officielle sur l'utilisation d'outils avec Google ADK.
Plus important encore, vous avez appris le schéma d'architecture fondamental pour créer des agents performants : utiliser des agents spécialisés comme outils. En créant un google_search_agent
dédié et en l'attribuant à votre root_agent
, vous avez fait le premier pas pour passer de la création d'un agent unique à l'orchestration d'un système multi-agents simple, mais puissant.
Vous êtes maintenant parfaitement préparé pour le prochain atelier de programmation de la série, dans lequel nous examinerons plus en détail l'orchestration de plusieurs agents et workflows. À très bientôt !