\n\n\n\n Créer des Plugins d’Agent : Guide de Démarrage Rapide avec Exemples Pratiques - AgntKit \n

Créer des Plugins d’Agent : Guide de Démarrage Rapide avec Exemples Pratiques

📖 14 min read2,697 wordsUpdated Mar 27, 2026

Introduction aux Plugins d’Agent

L’espace de l’intelligence artificielle évolue rapidement, avec des modèles de langage de grande taille (LLMs) à l’avant-garde de cette révolution. Ces modèles, bien que puissants, fonctionnent souvent dans les limites de leurs données d’entraînement. Pour vraiment libérer leur potentiel et les intégrer dans des applications du monde réel, nous devons étendre leurs capacités au-delà de la simple génération de texte. C’est ici que les plugins d’agent entrent en jeu. Les plugins d’agent sont essentiellement des outils ou des fonctions qu’un agent IA peut choisir d’utiliser pour effectuer des tâches spécifiques, accéder à des informations externes ou interagir avec d’autres systèmes. Ils comblent le fossé entre les capacités de raisonnement du LLM et le monde extérieur, transformant un modèle de langage en un agent sophistiqué et orienté vers des objectifs.

Imaginez un assistant IA qui comprend non seulement votre demande de ‘trouver le restaurant italien le plus proche’, mais qui peut réellement naviguer sur le web, filtrer les résultats et fournir des directions. Ce niveau de fonctionnalité est atteint grâce aux plugins. Ces plugins permettent à l’agent de :

  • Accéder à des Données en Temps Réel : Récupérer la météo actuelle, les prix des actions, les nouvelles, ou les informations d’une base de données.
  • Effectuer des Actions : Envoyer des emails, planifier des rendez-vous, contrôler des appareils domestiques intelligents, ou interagir avec des API.
  • Surmonter les Limitations des LLM : Effectuer des calculs complexes, exécuter du code ou récupérer des informations factuelles précises qui pourraient dépasser le cadre de ses données d’entraînement.

Ce guide vous conduira à travers les étapes pratiques de la création de plugins d’agent, en se concentrant sur une approche de démarrage rapide avec des exemples clairs pour vous mettre en route.

Comprendre les Concepts Clés

Comment les Agents Utilisent les Plugins

Au cœur de tout cela, un agent IA fonctionne sur un cycle de ‘réfléchir-planifier-agir’. Lorsqu’on lui présente une invite, l’agent ‘réfléchit’ d’abord à la meilleure ligne de conduite. S’il détermine qu’un outil externe (plugin) est nécessaire pour satisfaire la demande, il ‘planifie’ quel plugin utiliser, quels arguments passer, et ensuite ‘agit’ en invoquant ce plugin. La sortie du plugin est ensuite renvoyée à l’agent, qui utilise cette nouvelle information pour poursuivre son processus de raisonnement et formuler une réponse finale.

Composants Clés d’un Plugin

Bien que les implémentations puissent varier, la plupart des plugins d’agent partagent ces composants fondamentaux :

  • Nom : Un identifiant unique pour le plugin (par exemple, get_weather, send_email).
  • Description : Une explication concise de ce que fait le plugin. C’est crucial car le LLM utilise cette description pour décider quand et comment utiliser le plugin.
  • Paramètres/Schéma : Une définition des entrées que le plugin attend, souvent décrite en utilisant un schéma (comme JSON Schema). Cela indique au LLM quels arguments fournir.
  • Fonction/Implémentation : Le code réel qui exécute la logique du plugin (par exemple, effectuer un appel API, réaliser un calcul).

Demarrage Rapide : Créer Votre Premier Plugin

Pour ce démarrage rapide, nous utiliserons un cadre basé sur Python qui simplifie le développement d’agents. De nombreux cadres comme LangChain, LlamaIndex, ou même les capacités d’appel de fonction d’OpenAI fournissent des mécanismes similaires. Nous nous concentrerons sur les principes qui sont transférables entre eux.

Prérequis

  • Python installé (3.8+)
  • Un environnement virtuel (recommandé)
  • Une compréhension de base des fonctions Python

Exemple 1 : Un Plugin de Calculatrice Simple

Commençons par un plugin très basique qui effectue l’addition. Bien qu’un LLM puisse faire des mathématiques simples, cela illustre clairement le processus.

Étape 1 : Définir la Fonction du Plugin

Tout d’abord, nous créons une fonction Python standard qui effectue l’opération désirée.

# calculator_plugin.py
def add_numbers(num1: float, num2: float) -> float:
 """
 Ajoute deux nombres ensemble.
 Args:
 num1 (float): Le premier nombre.
 num2 (float): Le second nombre.
 Returns:
 float: La somme des deux nombres.
 """
 return num1 + num2

Étape 2 : Décrire le Plugin pour l’Agent

C’est ici que les cadres sont utiles. Ils fournissent des décorateurs ou des classes spécifiques pour transformer une fonction Python ordinaire en un outil accessible par un agent. Nous devons fournir une description et, implicitement, le LLM inférera les paramètres à partir de la signature de fonction et des docstrings.

Utilisons une représentation conceptuelle de cadre (similaire à la façon dont LangChain ou LlamaIndex l’abstrairaient) :

# Utilisation d'une classe 'Tool' conceptuelle (similaire à l'outil de LangChain ou à la FunctionTool de LlamaIndex)
class CalculatorTool:
 def __init__(self):
 self.name = "add_numbers"
 self.description = (
 "Un outil pour ajouter deux nombres. "
 "Utile lorsque vous devez additionner deux valeurs numériques."
 )
 self.function = add_numbers
 self.parameters = {
 "type": "object",
 "properties": {
 "num1": {"type": "number", "description": "Le premier nombre à ajouter"},
 "num2": {"type": "number", "description": "Le second nombre à ajouter"}
 },
 "required": ["num1", "num2"]
 }

# Ou, plus pratiquement, en utilisant la création d'outils intégrée d'un cadre :

# Exemple avec la création d'outil de fonction de LangChain
from langchain.tools import create_function_tool

def add_numbers(num1: float, num2: float) -> float:
 """
 Ajoute deux nombres ensemble.
 Args:
 num1 (float): Le premier nombre.
 num2 (float): Le second nombre.
 Returns:
 float: La somme des deux nombres.
 """
 return num1 + num2

add_tool = create_function_tool(
 func=add_numbers,
 name="add_numbers",
 description="Un outil pour ajouter deux nombres. Utile lorsque vous devez additionner deux valeurs numériques."
)

print(add_tool.name)
print(add_tool.description)
# print(add_tool.args) # LangChain infère cela à partir de la signature de fonction

La description est primordiale. Le LLM s’appuie fortement sur cela pour comprendre l’objectif du plugin et quand l’invoquer. Rendre cela clair, concis et mettre en avant son utilité.

Étape 3 : Intégrer avec un Agent

Maintenant, nous devons fournir cet outil à un agent IA. Cela implique généralement d’instancier un LLM et une classe d’agent, puis de passer notre liste d’outils à celui-ci.

En utilisant LangChain comme exemple :

from langchain_openai import ChatOpenAI
from langchain.agents import AgentExecutor, create_openai_tools_agent
from langchain import hub

# Supposant que vous avez une clé API OpenAI définie en tant que variable d'environnement (OPENAI_API_KEY)
llm = ChatOpenAI(model="gpt-4o", temperature=0)

# Les outils que nous avons créés
tools = [add_tool]

# Récupérer l'invite depuis le hub de LangChain
prompt = hub.pull("hwchase17/openai-tools-agent")

# Créer l'agent
agent = create_openai_tools_agent(llm, tools, prompt)

# Créer un exécuteur d'agent pour faire fonctionner l'agent
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)

# Maintenant, faisons-le fonctionner !
response = agent_executor.invoke({"input": "Quelle est la somme de 123 et 456 ?"})
print(response["output"])

Lorsque vous exécutez ceci, vous verrez le processus de réflexion de l’agent (si verbose=True) :


> Entrée dans une nouvelle chaîne d'exécution d'AgentExecutor...
Pensée :
L'utilisateur demande d'additionner deux nombres. L'outil `add_numbers` est approprié pour cette tâche.
Je dois appeler l'outil `add_numbers` avec `num1=123` et `num2=456`.
Action :
```json
{
 "tool_name": "add_numbers",
 "args": {
 "num1": 123,
 "num2": 456
 }
}
```
Observation : 579.0
Pensée :
L'outil `add_numbers` a retourné 579.0. C'est la somme de 123 et 456.
Je devrais maintenant répondre à l'utilisateur avec le résultat.
Réponse Finale : La somme de 123 et 456 est 579.0.

> Chaîne terminée.
La somme de 123 et 456 est 579.0.

Exemple Pratique 2 : Un Plugin Météo

Construisons un plugin plus pratique qui récupère les informations météorologiques actuelles à l’aide d’une API publique. Nous utiliserons l’API OpenWeatherMap pour cet exemple (vous aurez besoin d’une clé API gratuite).

Étape 1 : Obtenir une Clé API

Allez sur l’API OpenWeatherMap et inscrivez-vous pour obtenir une clé API gratuite.

Étape 2 : Définir la Fonction du Plugin

Cette fonction effectuera une requête HTTP vers l’API OpenWeatherMap.


import requests
import os
from typing import Dict, Any

# Assurez-vous de définir votre clé API comme une variable d'environnement
# Par exemple, export OPENWEATHER_API_KEY="YOUR_API_KEY"
OPENWEATHER_API_KEY = os.getenv("OPENWEATHER_API_KEY")

def get_current_weather(city: str, unit: str = "metric") -> Dict[str, Any]:
 """
 Récupère les conditions météorologiques actuelles pour une ville spécifiée.

 Args:
 city (str): Le nom de la ville (par exemple, "Londres", "New York").
 unit (str): L'unité de température. Peut être "metric" (Celsius) ou "imperial" (Fahrenheit). Par défaut "metric".

 Returns:
 dict: Un dictionnaire contenant des informations météorologiques, ou un message d'erreur.
 """
 if not OPENWEATHER_API_KEY:
 return {"error": "Clé API OpenWeatherMap non définie."}

 base_url = "http://api.openweathermap.org/data/2.5/weather"
 params = {
 "q": city,
 "appid": OPENWEATHER_API_KEY,
 "units": unit
 }
 try:
 response = requests.get(base_url, params=params)
 response.raise_for_status() # Lève une HTTPError pour les mauvaises réponses (4xx ou 5xx)
 data = response.json()

 if data.get("cod") == "404":
 return {"error": f"Ville '{city}' non trouvée."}

 weather_description = data["weather"][0]["description"]
 temperature = data["main"]["temp"]
 feels_like = data["main"]["feels_like"]
 humidity = data["main"]["humidity"]
 wind_speed = data["wind"]["speed"]

 return {
 "city": city,
 "description": weather_description,
 "temperature": temperature,
 "feels_like": feels_like,
 "humidity": humidity,
 "wind_speed": wind_speed,
 "unit": "Celsius" if unit == "metric" else "Fahrenheit"
 }
 except requests.exceptions.RequestException as e:
 return {"error": f"Erreur réseau ou API : {e}"}
 except KeyError as e:
 return {"error": f"Erreur lors de l'analyse des données météorologiques : clé manquante {e}. Réponse : {data}"}

Étape 3 : Créer l’outil pour l’agent


from langchain.tools import create_function_tool

weather_tool = create_function_tool(
 func=get_current_weather,
 name="get_current_weather",
 description=(
 "Un outil pour récupérer les conditions météorologiques actuelles pour une ville spécifiée. "
 "Utile lorsqu'on vous demande la météo actuelle, la température ou les conditions dans un lieu. "
 "Fournissez le nom de la ville et éventuellement l'unité (métrique pour Celsius, impérial pour Fahrenheit)."
 )
)

print(weather_tool.name)
print(weather_tool.description)

Notez la description détaillée, qui aide le LLM à comprendre quand utiliser cet outil et quels paramètres il nécessite.

Étape 4 : Intégrer et Tester

Ajoutez le nouvel outil à la liste des outils de votre agent et testez-le.


# ... (importations précédentes et configuration du LLM)

# Combiner nos outils
tools = [add_tool, weather_tool]

# Créer l'agent et l'exécuteur comme précédemment
agent = create_openai_tools_agent(llm, tools, prompt)
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)

# Tester le plugin météo
response_weather = agent_executor.invoke({"input": "Quel temps fait-il à Tokyo ?"})
print(response_weather["output"])

response_weather_imperial = agent_executor.invoke({"input": "Quelle est la température à New York en Fahrenheit ?"})
print(response_weather_imperial["output"])

response_invalid_city = agent_executor.invoke({"input": "Dis-moi quel temps il fait à Nocityhere."})
print(response_invalid_city["output"])

Résultat attendu (variera en fonction de la météo réelle et de la configuration de la clé API) :


> Entrée dans une nouvelle chaîne AgentExecutor...
Réflexion :
L'utilisateur demande la météo à Tokyo. L'outil `get_current_weather` est approprié pour cette tâche.
Je devrais appeler `get_current_weather` avec `city='Tokyo'`.
Action:
```json
{
 "tool_name": "get_current_weather",
 "args": {
 "city": "Tokyo"
 }
}
```
Observation: {'city': 'Tokyo', 'description': 'pluie légère', 'temperature': 15.2, 'feels_like': 14.8, 'humidity': 90, 'wind_speed': 3.09, 'unit': 'Celsius'}
Réflexion :
La météo à Tokyo est une pluie légère avec une température de 15.2 Celsius, ressentie comme 14.8 Celsius. L'humidité est de 90 % et la vitesse du vent est de 3.09 m/s.
Réponse finale : À Tokyo, la météo actuelle est une pluie légère, avec une température de 15.2°C (ressentie comme 14.8°C). L'humidité est de 90 % et la vitesse du vent est de 3.09 m/s.
> Chaîne terminée.
À Tokyo, la météo actuelle est une pluie légère, avec une température de 15.2°C (ressentie comme 14.8°C). L'humidité est de 90 % et la vitesse du vent est de 3.09 m/s.

Considérations Avancées et Meilleures Pratiques

Gestion des Erreurs

Comme vu dans l’exemple météo, les plugins du monde réel interagissent avec des systèmes externes qui peuvent échouer. Implémentez toujours une gestion des erreurs solide (blocs try-except) pour attraper les problèmes réseau, les erreurs API ou les formats de données inattendus. Retournez des messages d’erreur informatifs afin que l’agent puisse comprendre ce qui a mal tourné et éventuellement le communiquer à l’utilisateur ou essayer une approche alternative.

Descriptions Claires et Spécifiques

Cela ne peut pas être sous-estimé. La capacité du LLM à choisir l’outil correct dépend presque entièrement de la qualité de la description de votre plugin. Incluez :

  • Ce que fait l’outil.
  • Quand il doit être utilisé.
  • Quels arguments il attend et leurs types/buts.
  • Toutes contraintes ou effets secondaires.

Validation des Paramètres

Bien que le LLM essaie d’inférer les paramètres, il est bon de pratiquer la validation des entrées au sein de vos fonctions de plugin. Cela empêche des données inattendues de causer des problèmes si le LLM fait une erreur ou si l’utilisateur fournit une entrée malformée.

Opérations Asynchrones

Pour les plugins qui impliquent des opérations de longue durée (par exemple, des requêtes complexes dans une base de données, le téléchargement de gros fichiers), envisagez de les mettre en œuvre de manière asynchrone pour éviter de bloquer le fil d’exécution de l’agent. De nombreux frameworks prennent en charge les outils asynchrones.

Gestion d’État (Avancé)

La plupart des plugins simples sont sans état. Cependant, pour des interactions plus complexes, un agent pourrait avoir besoin de maintenir un état au cours de plusieurs tours ou appels de plugins. C’est un sujet plus avancé et implique souvent que le cadre de l’agent gère l’historique de la conversation ou une mémoire d’état dédiée.

Sécurité

Faites attention à la sécurité lors de l’exposition de fonctionnalités via des plugins. Un agent pourrait potentiellement être incité à abuser d’un plugin s’il n’est pas correctement sécurisé. Envisagez :

  • Contrôle d’Accès : Assurez-vous que les plugins n’accèdent qu’aux ressources pour lesquelles ils sont autorisés.
  • Assainissement des Entrées : Prévenez les attaques par injection si les entrées du plugin sont passées à des bases de données ou des commandes shell.
  • Moindre Privilège : Donnez aux plugins uniquement les permissions minimales requises pour effectuer leur tâche.

Chaine d’Outils et Raisonnement

Le véritable pouvoir des agents émerge lorsqu’ils peuvent enchaîner plusieurs outils ensemble. Par exemple, un agent pourrait d’abord utiliser un outil de ‘recherche’ pour trouver des informations pertinentes, puis un outil de ‘synthèse’ pour les distiller, et enfin un outil ’email’ pour envoyer le résumé. Concevez vos plugins pour être atomiques et composables, permettant à l’agent de les combiner de manière flexible.

Conclusion

Construire des plugins pour agents est un moyen puissant d’étendre les capacités des grands modèles de langage, les transformant de générateurs de texte sophistiqués en agents intelligents et orientés vers l’action. En suivant ce guide de démarrage rapide et en comprenant les principes de base, vous pouvez commencer à intégrer des données externes, des services et une logique complexe dans vos applications d’IA.

N’oubliez pas de vous concentrer sur des descriptions claires, une gestion des erreurs solide, et de concevoir des fonctions atomiques et composables. À mesure que vous vous sentirez plus à l’aise, vous pourrez explorer des sujets plus avancés tels que les opérations asynchrones, la gestion d’état et la sécurité pour construire des agents IA de plus en plus sophistiqués et fiables. L’avenir de l’interaction avec l’IA réside dans ces capacités étendues, et en maîtrisant le développement de plugins, vous êtes à l’avant-garde de cette frontière passionnante.

🕒 Published:

✍️
Written by Jake Chen

AI technology writer and researcher.

Learn more →
Browse Topics: comparisons | libraries | open-source | reviews | toolkits
Scroll to Top