Začněte nyníZačněte zdarma

Parametrizované nástroje pro vyhledávání v databázi

Nástroj pro vyhledávání na vyžádání umožní LLM prohledávat měny podle názvu nebo kódu, aniž by musel načítat celý seznam. Použij parametrizovaný dotaz (zástupný znak ?) jako ochranu před prompt injection a nastav limit řádků, aby odpovědi zůstaly přiměřeně velké.

Toto cvičení je součástí kurzu

Introduction to Model Context Protocol (MCP)

Zobrazit kurz

Pokyny k cvičení

  • Definuj nástroj lookup_currencies(), který v tabulce currencies vyhledá řádky, kde name nebo code obsahuje hodnotu prefix (bez ohledu na velikost písmen).
  • Pomocí parametrizovaného SQL dotazu vlož prefix na místo zástupných znaků ?; použij LIMIT 50 pro omezení počtu vrácených řádků.

Interaktivní cvičení na vyzkoušení si v praxi

Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.

# 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"))
Upravit a spustit kód