Параметризованные инструменты поиска в базе данных
Инструмент поиска по запросу позволит языковой модели искать валюты по названию или коду, не загружая весь список. Используйте параметризованный запрос (заполнитель ?), чтобы защититься от инъекций в подсказку, и ограничьте количество строк в ответе.
Это упражнение является частью курса
Введение в 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"))