Outils de recherche dans la base de données avec paramètres
Un outil de recherche sur demande permettra au LLM de trouver des devises par nom ou par code sans charger la liste complète. Utilisez une requête paramétrée (espace réservé ?) pour éviter l'injection de requêtes, et appliquez une limite de lignes afin que les réponses restent bornées.
Cette activité fait partie du cours
Introduction au Model Context Protocol (MCP)
Instructions de l’exercice
- Définissez un outil nommé
lookup_currencies()qui trouve les lignes danscurrenciesoùnameoucodecontientprefix(sans tenir compte de la casse). - Utilisez une requête SQL paramétrée pour insérer
prefixdans les espaces réservés?; utilisezLIMIT 50pour limiter le nombre de lignes retournées.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
# Add lookup_currencies(prefix): find rows where name or code contains prefix
@mcp.____()
def ____(____: str) -> str:
"""Find currencies whose code or name contains the given prefix."""
try:
# Use parameterized query and LIMIT 50
cursor = conn.execute(
"SELECT code, name FROM currencies WHERE name LIKE ? OR code LIKE ? LIMIT ____",
(f"%{____}%", f"%{____}%")
)
rows = cursor.fetchall()
return "\n".join(f"{row['code']} - {row['name']}" for row in rows)
except sqlite3.Error as e:
return f"Database error: {e}"
print(lookup_currencies("Euro"))