CommencezCommencez gratuitement

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)

Voir le cours

Instructions de l’exercice

  • Définissez un outil nommé lookup_currencies() qui trouve les lignes dans currenciesname ou code contient prefix (sans tenir compte de la casse).
  • Utilisez une requête SQL paramétrée pour insérer prefix dans les espaces réservés ?; utilisez LIMIT 50 pour 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"))
Modifier et exécuter le code