Công cụ tra cứu cơ sở dữ liệu có tham số
Một công cụ tra cứu theo yêu cầu sẽ cho phép LLM tìm kiếm tiền tệ theo tên hoặc mã mà không cần tải toàn bộ danh sách. Hãy dùng truy vấn có tham số (ký tự giữ chỗ ?) để tránh prompt injection, và áp dụng giới hạn số hàng để câu trả lời luôn ở mức kiểm soát.
Bài tập này là một phần của khóa học
Giới thiệu về Model Context Protocol (MCP)
Hướng dẫn bài tập
- Định nghĩa một tool tên
lookup_currencies()để tìm các dòng trongcurrenciesnơinamehoặccodechứaprefix(không phân biệt hoa thường). - Dùng truy vấn SQL có tham số để chèn
prefixvào các ký tự giữ chỗ?; dùngLIMIT 50để giới hạn số hàng được trả về.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
# 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"))