CommencerCommencez gratuitement

Outils de recherche en base paramétrés

Un outil de recherche à la 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 dans l'invite, et appliquez une limite de lignes afin que les réponses restent bornées.

Cet exercice fait partie du cours

<cours>Introduction au Model Context Protocol (MCP)</cours>
Voir le cours

Instructions de l’exercice

  • Définissez un outil nommé lookup_currencies() qui trouve les lignes de currenciesname ou code contient prefix (insensible à 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 renvoyé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