Parametrisierte Datenbank-Lookup-Tools
Ein On-Demand-Lookup-Tool ermöglicht es dem LLM, Währungen nach Name oder Code zu suchen, ohne die gesamte Liste zu laden. Verwende eine parametrisierte Abfrage (Platzhalter ?), um Prompt Injection zu vermeiden, und setze ein Zeilenlimit, damit die Antworten begrenzt bleiben.
Diese Übung ist Teil des Kurses
<Kurs>Einführung in das Model Context Protocol (MCP)</Kurs>Übungsanweisungen
- Definiere ein Tool namens
lookup_currencies(), das Zeilen incurrenciesfindet, in denennameodercodeprefixenthält (Groß-/Kleinschreibung ignorieren). - Nutze eine parametrisierte SQL-Abfrage, um
prefixin die?-Platzhalter einzusetzen; verwendeLIMIT 50, um die Anzahl der zurückgegebenen Zeilen zu begrenzen.
Interaktive praktische Übung
Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.
# 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"))