Parameterized Database Lookup Tools
एक ऑन-डिमांड lookup टूल LLM को करेंसीज़ को नाम या कोड से खोजने देगा, बिना पूरी सूची लोड किए। प्रॉम्प्ट इंजेक्शन से बचने के लिए parameterized query (placeholder ?) का उपयोग करें, और जवाब सीमित रखने के लिए row limit लगाएँ.
यह अभ्यास पाठ्यक्रम का हिस्सा है
Model Context Protocol (MCP) परिचय
अभ्यास निर्देश
lookup_currencies()नाम का एक टूल डिफाइन करें जोcurrenciesमें वे rows ढूँढे जहाँnameयाcodeमेंprefixशामिल हो (case-insensitive).- एक parameterized SQL क्वेरी का उपयोग करके
?placeholders मेंprefixइंसर्ट करें; लौटाई जाने वाली rows की संख्या सीमित करने के लिए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"))