สอนอัปโหลดไฟล์ด้วย FastAPI หัวใจสำคัญที่คนทำแอป AI ต้องรู้

อ่าน 5 นาที 1 ผู้อ่าน

สอนอัปโหลดไฟล์ด้วย FastAPI หัวใจสำคัญที่คนทำแอป AI ต้องรู้

แอป AI ส่วนใหญ่ไม่ว่าจะเป็น ChatGPT หรือระบบตรวจเรซูเม่ต่างก็ต้องการไฟล์ข้อมูลจากเราทั้งนั้นครับ ถ้าเราส่งไฟล์ให้ AI ไม่ได้ มันก็ไม่มีอะไรให้ประมวลผล การรู้วิธีจัดการไฟล์ด้วย FastAPI (เครื่องมือสำหรับสร้างช่องทางเชื่อมต่อโปรแกรม) จึงเป็นทักษะสำคัญที่คนทำแอป AI ยุคนี้ต้องมีครับ

ทำไมแอป AI ถึงขาดระบบอัปโหลดไฟล์ไม่ได้

ลองนึกภาพแอปที่ช่วยอ่านกฎหมายหรือวิเคราะห์ผลตรวจเลือดดูครับ ผู้ใช้ต้องส่งไฟล์ PDF หรือรูปภาพเข้าไปในระบบก่อนเสมอ ขั้นตอนการทำงานคือผู้ใช้อัปโหลดไฟล์มาที่ FastAPI จากนั้นระบบจะอ่านไฟล์แล้วส่งต่อให้ AI ไปวิเคราะห์ผลต่อ ถ้าไม่มีขั้นตอนนี้ แอป AI ของคุณก็จะเป็นได้แค่แชทบอทที่ตอบโต้ได้แค่ตัวอักษรเท่านั้นครับ การรับไฟล์จึงเป็นประตูบานแรกที่ทำให้ AI เริ่มทำงานได้จริง

ติดตั้งเครื่องมือเสริมให้พร้อม

ก่อนจะเริ่มเขียนโค้ด เราต้องติดตั้งตัวช่วยที่ชื่อว่า python-multipart (โปรแกรมเสริมที่ช่วยให้ระบบอ่านข้อมูลไฟล์ได้) ก่อนครับ วิธีติดตั้งก็ง่ายมาก แค่พิมพ์คำสั่ง pip install python-multipart ในหน้าจอสั่งงานของคอมพิวเตอร์ ตัวนี้จะช่วยให้ระบบของเรารับไฟล์ที่ผู้ใช้ส่งมาจากหน้าเว็บได้ทันทีครับ ถ้าไม่ลงตัวนี้ FastAPI จะไม่สามารถแกะข้อมูลไฟล์ออกมาใช้งานได้เลย

UploadFile ตัวช่วยจัดการไฟล์แบบมือโปร

ใน FastAPI จะมีเครื่องมือชื่อ UploadFile (คลาสที่ใช้เก็บข้อมูลไฟล์ที่ถูกส่งมา) ซึ่งดีกว่าการรับไฟล์แบบเดิมๆ มากครับ เพราะมันไม่ได้แค่รับไฟล์มาเฉยๆ แต่มันยังบอกข้อมูลที่จำเป็นให้เราด้วย เช่น

  • filename: ชื่อไฟล์ที่ผู้ใช้อัปโหลดมา เช่น resume.pdf
  • content_type: ประเภทของไฟล์ เช่น เป็นไฟล์ PDF หรือเป็นรูปภาพ PNG
  • read(): คำสั่งสำหรับอ่านข้อมูลข้างในไฟล์

ข้อดีอีกอย่างคือมันประหยัดหน่วยความจำมากครับ เพราะมันจะไม่โหลดไฟล์ทั้งก้อนมาเก็บไว้ในทีเดียวถ้าไฟล์นั้นมีขนาดใหญ่เกินไป แต่มันจะค่อยๆ จัดการให้เราเอง ทำให้เซิร์ฟเวอร์ไม่ค้างครับ

วิธีเขียนโค้ดเพื่อรับและเซฟไฟล์ลงเครื่อง

การเขียนโค้ดรับไฟล์เราจะใช้ฟังก์ชันแบบ async (การทำงานแบบไม่ต้องรอให้เสร็จทีละอย่าง) เพื่อให้ระบบทำงานได้ลื่นไหลครับ เมื่อไฟล์ถูกส่งมา เราจะใช้คำสั่ง await file.read() เพื่ออ่านข้อมูล และใช้คำสั่ง open พร้อมโหมด "wb" (การเขียนไฟล์แบบข้อมูลดิบ) เพื่อเซฟไฟล์ลงในเครื่องคอมพิวเตอร์ของเราครับ

@app.post("/upload")
async def upload_file(file: UploadFile):
    contents = await file.read()
    with open(file.filename, "wb") as f:
        f.write(contents)
    return {"message": "อัปโหลดสำเร็จ"}

การเซฟแบบโหมด "wb" สำคัญมากสำหรับไฟล์ที่ไม่ใช่ข้อความธรรมดา เช่น ไฟล์ PDF หรือไฟล์รูปภาพ เพราะมันจะเก็บรักษาข้อมูลดิบของไฟล์ไว้ได้อย่างครบถ้วนครับ

ขั้นตอนการทำงานของแอป AI ยุคใหม่

เมื่อเราอัปโหลดไฟล์สำเร็จแล้ว กระบวนการที่ AI จะเอาไปทำต่อมักจะเป็นแบบนี้ครับ เริ่มจาก FastAPI รับไฟล์มา จากนั้นเราสั่งให้ระบบอ่านข้อความจากไฟล์ PDF นั้น แล้วส่งข้อความไปให้ AI วิเคราะห์ หรือเก็บลงใน Vector Database (ฐานข้อมูลพิเศษที่เก็บข้อมูลเป็นตัวเลขเพื่อให้ AI ค้นหาได้ง่าย) ขั้นตอนนี้คือหัวใจของระบบ RAG ที่กำลังฮิตอยู่ในปัจจุบันเลยครับ

สรุปสั้น ๆ

การอัปโหลดไฟล์คือจุดเริ่มต้นของแอป AI แทบทุกประเภทในปัจจุบันครับ การใช้ FastAPI ร่วมกับ UploadFile ช่วยให้เราสร้างระบบรับไฟล์ที่ทั้งเร็วและเสถียรได้ง่ายๆ โดยไม่ต้องเขียนโค้ดซับซ้อน ใครที่กำลังอยากทำระบบวิเคราะห์เอกสารหรือแอป AI ที่ต้องทำงานกับไฟล์จริงจัง ต้องเริ่มฝึกจากจุดนี้ให้คล่องครับ

แชร์ข่าวนี้

เรียบเรียงจากข่าวของ DEV Community อ่านข่าวต้นฉบับ ↗

← กลับไปหน้าข่าวสาร