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)
Övningsinstruktioner
- Definiera ett verktyg som heter
lookup_currencies()och som hittar rader icurrenciesdärnameellercodeinnehållerprefix(skiftlägesokänsligt). - Använd en parametriserad SQL-fråga för att infoga
prefixi?-platshållarna; användLIMIT 50fö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"))