Parametreli Veritabanı Arama Araçları
İsteğe bağlı bir arama aracı, LLM'in tam listeyi yüklemeden para birimlerini ada veya koda göre aramasına izin verir. İleti enjeksiyonunu önlemek için bir parametreli sorgu (yer tutucu ?) kullan ve yanıtların sınırlı kalması için satır sınırı uygula.
Bu egzersiz, kursun bir parçasıdır
Model Context Protocol (MCP) Giriş
Egzersiz talimatları
lookup_currencies()adında,nameveyacodealanındaprefixgeçen (büyük/küçük harf duyarsız)currenciessatırlarını bulan bir araç tanımla.prefixdeğerini?yer tutucularına yerleştirmek için parametreli bir SQL sorgusu kullan; döndürülen satır sayısını sınırlamak içinLIMIT 50kullan.
Uygulamalı etkileşimli egzersiz
Bu egzersizi bu örnek kodu tamamlayarak deneyin.
# 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"))