Geparametriseerde database-zoektools
Een on-demand zoektool laat het LLM valuta's op naam of code zoeken zonder de volledige lijst te laden. Gebruik een geparametriseerde query (placeholder ?) om prompt-injectie te voorkomen, en pas een rijlimiet toe zodat antwoorden beheersbaar blijven.
Deze oefening maakt deel uit van de cursus
Introductie tot Model Context Protocol (MCP)
Oefeninstructies
- Definieer een tool
lookup_currencies()die rijen incurrenciesvindt waarnameofcodeprefixbevat (niet hoofdlettergevoelig). - Gebruik een geparametriseerde SQL-query om
prefixin de?-placeholders te zetten; gebruikLIMIT 50om het aantal geretourneerde rijen te beperken.
Interactieve oefening met praktijkervaring
Probeer deze oefening door deze voorbeeldcode aan te vullen.
# 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"))