Parametryzowane narzędzia do wyszukiwania w bazie danych
Narzędzie do wyszukiwania na żądanie pozwoli LLM przeszukiwać waluty według nazwy lub kodu bez wczytywania całej listy. Użyj zapytania parametryzowanego (symbol zastępczy ?), aby uniknąć wstrzyknięcia danych wejściowych, i zastosuj limit wierszy, żeby odpowiedzi miały skończony rozmiar.
To ćwiczenie jest częścią kursu
Wprowadzenie do Model Context Protocol (MCP)
Instrukcje do ćwiczenia
- Zdefiniuj narzędzie
lookup_currencies(), które wyszukuje wiersze w tabelicurrencies, gdzienamelubcodezawiera wartośćprefix(bez rozróżniania wielkości liter). - Użyj parametryzowanego zapytania SQL, aby wstawić
prefixw miejsce symboli zastępczych?; zastosujLIMIT 50, aby ograniczyć liczbę zwracanych wierszy.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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"))