เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

การสร้าง Tool สำหรับค้นหาข้อมูลในฐานข้อมูลแบบรับพารามิเตอร์

การสร้าง lookup tool แบบ on-demand จะช่วยให้ LLM ค้นหาสกุลเงินตามชื่อหรือรหัสได้โดยไม่ต้องโหลดข้อมูลทั้งหมด ใช้ parameterized query (placeholder ?) เพื่อป้องกัน prompt injection และกำหนดจำนวนแถวสูงสุดเพื่อให้ผลลัพธ์ไม่เกินขอบเขตที่ต้องการ

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

Model Context Protocol (MCP) เบื้องต้น

ดูคอร์ส

คำแนะนำการฝึกหัด

  • กำหนดฟังก์ชัน lookup_currencies() ที่ค้นหาแถวในตาราง currencies โดยกรองแถวที่คอลัมน์ name หรือ code มีค่าที่ตรงกับ prefix (ไม่คำนึงถึงตัวพิมพ์ใหญ่-เล็ก)
  • ใช้ parameterized SQL query เพื่อแทรกค่า prefix ลงใน placeholder ? และใช้ 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"))
แก้ไขและรันโค้ด