สร้างระบบวิเคราะห์ CSV ด้วย SQLite และ LangChain ให้ปลอดภัย
เรียนรู้วิธีสร้างระบบฐานข้อมูล SQLite จากไฟล์ CSV ควบคุมด้วย SQL แบบอ่านอย่างเดียว เพื่อใช้งานร่วมกับ LangChain อย่างปลอดภัย

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง
- สร้างรากฐานวิเคราะห์ CSV สู่ SQLite ที่ปลอดภัยสำหรับ LangChain
- ควบคุมการทำงานด้วย SQL แบบอ่านอย่างเดียวและจำกัดผลลัพธ์ไม่เกิน 100 แถว
- แยกตรรกะความปลอดภัยออกจากโมเดลภาษาเพื่อลดความเสี่ยงด้านข้อมูล
- ใช้งาน Python 3.10 ขึ้นไป พร้อมโมดูลมาตรฐานโดยไม่ต้องพึ่งพาไลบรารีภายนอก
การพัฒนาเอเจนต์ปัญญาประดิษฐ์เพื่อดึงข้อมูลมักเผชิญกับความท้าทายด้านความปลอดภัย โดยเฉพาะเมื่อต้องให้ระบบ AI เข้าถึงฐานข้อมูล บทความเชิงเทคนิคจาก Gate of AI ได้นำเสนอแนวทางการสร้างระบบวิเคราะห์ข้อมูลจากไฟล์ CSV สู่ฐานข้อมูล SQLite ที่มีการควบคุมความปลอดภัยอย่างเข้มงวด เพื่อให้ระบบเอเจนต์รูปแบบ LangChain สามารถเรียกใช้งานได้อย่างปลอดภัยหลังจากผ่านการตรวจสอบเอกสารอย่างเป็นทางการแล้ว
แนวคิดหลักของสถาปัตยกรรมนี้คือการแยกส่วนการทำงานที่ต้องมีความแน่นอนออกจากตัวโมเดลภาษา แม้ว่า AI จะมีความสามารถในการเลือกเครื่องมือและแปลงคำถาม แต่ไม่ควรได้รับสิทธิ์เข้าถึงฐานข้อมูลแบบเขียนได้ ฟังก์ชันเชลล์ หรือการรันโค้ด Python โดยไม่มีการจำกัดสิทธิ์ แอปพลิเคชันหลักควรเป็นผู้ควบคุมขั้นตอนการนำเข้าข้อมูล การเข้าถึงฐานข้อมูล ขีดจำกัดของคิวรี และนโยบายการบันทึกข้อมูลทั้งหมด
ในทางปฏิบัติ การให้สิทธิ์ AI เข้าถึงฐานข้อมูลโดยตรงถือเป็นความเสี่ยงด้านความปลอดภัยขั้นสูง การสร้างชั้นความปลอดภัย (Security Boundary) ด้วยการตรวจสอบ SQL แบบอ่านอย่างเดียวและการเปิดฐานข้อมูลในโหมด Read-Only ผ่าน URI ช่วยป้องกันการโจมตีประเภท SQL Injection หรือการแก้ไขข้อมูลโดยไม่ตั้งใจ แม้ว่าตัวโมเดลภาษาจะสร้างคำสั่งผิดพลาดก็ตาม
ระบบต้นแบบนี้พัฒนาขึ้นด้วยภาษา Python 3.10 ขึ้นไป โดยอาศัยเพียงไลบรารีมาตรฐานอย่างโมดูล sqlite3 เท่านั้น โครงสร้างโปรเจกต์ประกอบด้วยไฟล์สำคัญดังนี้:
sample_data.pyสำหรับสร้างข้อมูลตัวอย่างdatabase.pyสำหรับจัดการฐานข้อมูลและการตรวจสอบความปลอดภัยapp.pyสำหรับเป็นจุดเชื่อมต่อการทำงานของแอปพลิเคชันtests/test_database.pyสำหรับชุดทดสอบการทำงาน
กระบวนการนำเข้าข้อมูลจะเริ่มจากการปรับแต่งหัวข้อ CSV ให้เป็นตัวระบุในฐานข้อมูลที่ปลอดภัย สร้างตารางคำสั่งซื้อ และใช้การแทรกข้อมูลแบบกำหนดพารามิเตอร์ ข้อมูลที่นำเข้าทั้งหมดจะถูกจัดเก็บเป็นข้อความเพื่อป้องกันปัญหาการแปลงค่าที่ไม่ต้องการ เช่น รหัสที่มีเลขศูนย์นำหน้า ขณะที่การวิเคราะห์เชิงตัวเลขจะบังคับให้แปลงประเภทข้อมูลเป็น REAL อย่างชัดเจน

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง
ในส่วนของเกราะป้องกันคำสั่ง SQL ระบบจะทำการปฏิเสธคำสั่งที่มีเครื่องหมายคอมเมนต์ เครื่องหมายอัฒภาค คิวรีแบบเรียกซ้ำ คำสั่งเริ่มต้นที่ไม่ใช่การอ่าน และรายการปฏิบัติการระดับผู้ดูแลระบบหรือการเขียนข้อมูล นอกจากนี้ยังเปิดฐานข้อมูลผ่าน SQLite Read-Only URI และจำกัดจำนวนแถวที่ส่งคืนไม่ให้เกิน 100 แถว เพื่อเป็นชั้นป้องกันเสริมอีกชั้นหนึ่ง
ชุดทดสอบควรได้รับการตรวจสอบการนำเข้าและเกราะป้องกันคิวรีโดยไม่ต้องเรียกใช้โมเดล เพื่อให้สามารถตรวจสอบข้อผิดพลาดได้อย่างรวดเร็วและคงความปลอดภัยไว้ได้อิสระจากรูปแบบของพรอมต์ เมื่อมีเอกสารอย่างเป็นทางการสำหรับเวอร์ชันของ LangChain ที่ใช้งาน นักพัฒนาควรเปิด expose ฟังก์ชันแคบๆ เพียงสองฟังก์ชัน ได้แก่ฟังก์ชันดึงโครงสร้างสกีมาและฟังก์ชันรันคิวรีที่ผ่านการตรวจสอบแล้วเท่านั้น
ที่มา: Dev.to
พบข้อมูลผิดพลาดในบทความนี้? แจ้งปัญหาบทความนี้
ความคิดเห็น
แสดงความคิดเห็น