Instrumente Parametrizate de Căutare în Baze de Date
Un instrument de căutare la cerere va permite LLM-ului să caute valute după nume sau cod, fără a încărca lista completă. Folosește o interogare parametrizată (substituent ?) pentru a evita injecția de cod, și aplică o limită a numărului de rânduri pentru a menține răspunsurile în limite rezonabile.
Acest exercițiu face parte din cursul
Introducere în Model Context Protocol (MCP)
Instrucțiuni pentru exercițiu
- Definește un instrument numit
lookup_currencies()care găsește rândurile dincurrenciesîn carenamesaucodeconținprefix(fără distincție între majuscule și minuscule). - Folosește o interogare SQL parametrizată pentru a insera
prefixîn substituenții?; foloseșteLIMIT 50pentru a limita numărul de rânduri returnate.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
# 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"))