Параметризовані інструменти пошуку в базі даних
Інструмент пошуку на вимогу дозволить LLM шукати валюти за назвою або кодом без завантаження всього списку. Використайте параметризований запит (плейсголдер ?), щоб уникнути інʼєкції в підказку, і застосуйте обмеження на кількість рядків, щоб відповіді залишалися контрольованими.
Ця вправа є частиною курсу
Вступ до Model Context Protocol (MCP)
Інструкції до вправи
- Визначте інструмент
lookup_currencies(), який знаходить рядки вcurrencies, деnameабоcodeмістятьprefix(без урахування регістру). - Використайте параметризований SQL-запит, щоб підставити
prefixу плейсголдери?; застосуйтеLIMIT 50, щоб обмежити кількість повернутих рядків.
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
# 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"))