Kom igångKom igång gratis

Parametriserade databasuppslagsverktyg

Ett uppslagsverktyg på begäran gör det möjligt för LLM:en att söka efter valutor efter namn eller kod utan att läsa in hela listan. Använd en parametriserad fråga (platshållaren ?) för att undvika promptinjektion, och sätt ett radgräns så att svaren förblir avgränsade.

Den här övningen är en del av kursen

Introduktion till Model Context Protocol (MCP)

Visa kurs

Övningsinstruktioner

  • Definiera ett verktyg som heter lookup_currencies() och som hittar rader i currencies där name eller code innehåller prefix (skiftlägesokänsligt).
  • Använd en parametriserad SQL-fråga för att infoga prefix i ?-platshållarna; använd LIMIT 50 för att begränsa antalet returnerade rader.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

# 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"))
Redigera och kör kod