สร้าง AI Agent จัดระเบียบไฟล์และเอกสารอัตโนมัติ: ลาขาดโฟลเดอร์ดาวน์โหลดสุดรกด้วย Python + Ollama
เปลี่ยนโฟลเดอร์ดาวน์โหลดหรือโฟลเดอร์งานที่แสนรกให้เป็นระเบียบตามหมวดหมู่โดยอัตโนมัติ ด้วยสคริปต์ Python ที่เชื่อมโยงกับโมเดลภาษาขนาดใหญ่ (LLM) ในเครื่องเพื่ออ่านบริบทและคัดแยกประเภทเอกสารอย่างชาญฉลาด
ลองเปิดโฟลเดอร์ Downloads หรือโฟลเดอร์หน้าจอ Desktop ของคุณดูตอนนี้... คุณเห็นไฟล์นับร้อยที่กองรวมกันอยู่อย่างกระจัดกระจายหรือไม่? ทั้งไฟล์ PDF ใบเสร็จ, คู่มือการใช้งาน, สไลด์งานประชุม, รูปภาพอ้างอิง, ไฟล์โค้ด ไปจนถึงหนังสือ E-book
ปัญหาคือ การจัดระเบียบไฟล์เหล่านี้ด้วยตัวเองเป็นเรื่องที่น่าเบื่อและใช้พลังงานสมองค่อนข้างมาก ครั้นจะเขียนสคริปต์จัดระเบียบแบบเดิมๆ ที่ย้ายไฟล์ตาม นามสกุลไฟล์ (File Extension) เช่น ย้ายไฟล์ .pdf ทั้งหมดไปไว้โฟลเดอร์เดียวกัน ก็ยังไม่ตอบโจทย์ เพราะในความเป็นจริง ใบเสร็จรับเงิน PDF กับบทความวิจัย PDF ควรจะอยู่คนละที่กันโดยสิ้นเชิง
นี่คือจุดที่ Cognitive Automation หรือการเปลี่ยนงานที่ต้องใช้ระดับการคิดพื้นฐานให้เป็นอัตโนมัติ เข้ามามีบทบาท ในบทความนี้ เราจะมาสร้าง AI Agent แบบรัน Local 100% ในเครื่องคอมพิวเตอร์ของคุณ เพื่อทำหน้าที่อ่านชื่อไฟล์และวิเคราะห์ประเภทของเอกสาร จากนั้นจึงย้ายไฟล์ไปยังโฟลเดอร์ที่เหมาะสมอย่างถูกต้องแม่นยำ
หลักการทำงานของ AI File Sorter
แทนที่จะใช้นามสกุลไฟล์หรือการเขียนเงื่อนไขด้วย if-else อันซับซ้อน เราจะใช้ Local LLM ผ่าน Ollama เป็นสมองส่วนกลาง สคริปต์ Python ของเราจะทำหน้าที่ดังนี้:
- สแกนรายชื่อไฟล์ ในโฟลเดอร์เป้าหมาย (เช่น
Downloads) - ส่งชื่อไฟล์ ไปให้ Local LLM วิเคราะห์
- จัดหมวดหมู่ โดย LLM จะตอบกลับมาเป็นหมวดหมู่ที่เหมาะสมจากตัวเลือกที่เรากำหนดไว้ (เช่น Receipts, Books, Projects, Media)
- ย้ายไฟล์ ไปยังโฟลเดอร์ย่อยตามหมวดหมู่นั้นๆ โดยอัตโนมัติ
การประมวลผลทั้งหมดเกิดขึ้นบนเครื่องของคุณ ข้อมูลชื่อไฟล์และเอกสารสำคัญต่างๆ จึงปลอดภัยจากการถูกส่งขึ้นระบบคลาวด์ภายนอก
ขั้นตอนที่ 1: เตรียมสภาพแวดล้อมและโมเดล AI
ก่อนเริ่มเขียนโค้ด ตรวจสอบให้มั่นใจว่าคุณติดตั้ง Ollama เรียบร้อยแล้ว (หากยังไม่มี สามารถอ่านคู่มือติดตั้ง Ollama ได้ในบทความก่อนหน้า)
เราจะใช้โมเดลขนาดเล็กที่มีความเร็วสูงและฉลาดเพียงพอสำหรับการแยกแยะประเภท เช่น Llama 3 (8B) หรือ Gemma 2 (2B / 9B) ในตัวอย่างนี้เราจะใช้ gemma2:2b ซึ่งประหยัดทรัพยากรเครื่องอย่างมาก
เปิด Terminal แล้วดาวน์โหลดโมเดลด้วยคำสั่ง:
ollama run gemma2:2b
จากนั้น ทำการติดตั้งไลบรารี Python ที่จำเป็น:
pip install requests
ขั้นตอนที่ 2: เขียนสคริปต์ Python ควบคุม AI Agent
สร้างสคริปต์ชื่อ file_agent.py ขึ้นมา โดยโค้ดจะแบ่งออกเป็น 3 ส่วนหลักๆ คือ การเรียกใช้ Ollama API, การตัดสินใจเลือกหมวดหมู่ และการจัดการย้ายไฟล์จริง
นี่คือโค้ดตัวอย่างสำหรับการทำงาน:
import os
import shutil
import requests
import json
# ตั้งค่าโฟลเดอร์ต้นทางและโฟลเดอร์ปลายทาง
SOURCE_DIR = os.path.expanduser("~/Downloads")
TARGET_BASE_DIR = os.path.expanduser("~/OrganizedFiles")
# กำหนดหมวดหมู่เป้าหมายพร้อมคำอธิบายเพื่อให้ AI เข้าใจ
CATEGORIES = {
"Receipts": "ใบเสร็จรับเงิน, Invoice, หลักฐานการโอนเงิน, ใบรับรองการจ่ายเงิน",
"Books_and_Papers": "หนังสือ, E-book, งานวิจัย (Research Papers), คู่มือการใช้งานเชิงลึก (Manuals)",
"Work_Documents": "เอกสารการทำงาน, รายงานการประชุม, สไลด์นำเสนอ (PPTX), ไฟล์ Word (DOCX) ที่เกี่ยวกับงาน",
"Code_and_Data": "ไฟล์โปรเจกต์โค้ด (.py, .js, .json), ไฟล์ฐานข้อมูล (.csv, .xlsx, .sql)",
"Media_and_Designs": "รูปภาพอ้างอิง, ไฟล์วิดีโอ, เสียงบันทึก, ไฟล์ออกแบบดิบ (.psd, .fig)",
"Others": "ไฟล์อื่นๆ ที่ไม่เข้าพวก หรือไม่มั่นใจว่าเป็นประเภทไหน"
}
# สร้างโฟลเดอร์ปลายทางรอไว้
for cat in CATEGORIES.keys():
os.makedirs(os.path.join(TARGET_BASE_DIR, cat), exist_ok=True)
def classify_file_with_ai(filename):
url = "http://localhost:11434/api/generate"
# สร้าง Prompt ที่ชัดเจนและบังคับให้ตอบเฉพาะชื่อหมวดหมู่เท่านั้น
prompt = f\"\"\"
คุณเป็น AI ผู้ช่วยจัดระเบียบไฟล์ส่วนตัว
จงวิเคราะห์ชื่อไฟล์ต่อไปนี้: "{filename}"
แล้วเลือกหมวดหมู่ที่เหมาะสมที่สุดเพียงหมวดหมู่เดียวจากตัวเลือกด้านล่างนี้:
{json.dumps(CATEGORIES, ensure_ascii=False, indent=2)}
กฎเหล็ก:
- ตอบกลับเป็นเฉพาะชื่อคีย์ภาษาอังกฤษของหมวดหมู่เท่านั้น (เช่น Receipts หรือ Work_Documents)
- ห้ามอธิบาย ห้ามใส่เครื่องหมายคำพูด ห้ามมีคำขึ้นต้นหรือคำลงท้ายใดๆ ทั้งสิ้น
\"\"\"
payload = {
"model": "gemma2:2b",
"prompt": prompt,
"stream": False,
"options": {
"temperature": 0.0 # ตั้งค่าเป็น 0 เพื่อให้ได้ผลลัพธ์ที่เสถียรและแม่นยำที่สุด
}
}
try:
response = requests.post(url, json=payload)
result = response.json()
category = result.get("response", "").strip()
# ตรวจสอบว่าคำตอบที่ได้ตรงกับหมวดหมู่จริงหรือไม่
if category in CATEGORIES:
return category
else:
# ค้นหาเผื่อ AI ตอบปนข้อความอื่นมา
for cat in CATEGORIES.keys():
if cat in category:
return cat
return "Others"
except Exception as e:
print(f"Error connecting to Ollama: {e}")
return "Others"
def organize_folder():
print(f"กำลังสแกนโฟลเดอร์: {SOURCE_DIR}...")
files = [f for f in os.listdir(SOURCE_DIR) if os.path.isfile(os.path.join(SOURCE_DIR, f))]
if not files:
print("ไม่พบไฟล์ที่ต้องการจัดระเบียบ")
return
for filename in files:
# ข้ามไฟล์ซ่อน (Hidden files)
if filename.startswith('.'):
continue
print(f"วิเคราะห์ไฟล์: {filename}...")
category = classify_file_with_ai(filename)
src_path = os.path.join(SOURCE_DIR, filename)
dest_path = os.path.join(TARGET_BASE_DIR, category, filename)
# จัดการกรณีชื่อไฟล์ซ้ำในโฟลเดอร์ปลายทาง
if os.path.exists(dest_path):
base, extension = os.path.splitext(filename)
counter = 1
while os.path.exists(dest_path):
new_filename = f"{base}_{counter}{extension}"
dest_path = os.path.join(TARGET_BASE_DIR, category, new_filename)
counter += 1
try:
shutil.move(src_path, dest_path)
print(f"-> ย้ายไปที่ [{category}] เรียบร้อย")
except Exception as e:
print(f"เกิดข้อผิดพลาดในการย้ายไฟล์ {filename}: {e}")
if __name__ == "__main__":
organize_folder()
print("เสร็จสิ้นการจัดระเบียบไฟล์!")
ขั้นตอนที่ 3: ทดสอบการทำงานของสคริปต์
เมื่อคุณรันสคริปต์นี้ ตัวสคริปต์จะค้นหาไฟล์ทั้งหมดในโฟลเดอร์ Downloads (SOURCE_DIR) ส่งชื่อไปสอบถามความเข้าใจจากโมเดล AI ในเครื่อง แล้วย้ายมันไปเก็บแยกตามโฟลเดอร์ย่อยใน OrganizedFiles (TARGET_BASE_DIR) ทันที
ลองสังเกตการคัดแยก: * ไฟล์ชื่อ receipt_july2026.pdf -> จะถูกส่งไปยังโฟลเดอร์ Receipts * ไฟล์ชื่อ intro_to_deep_learning_textbook.pdf -> จะถูกส่งไปยังโฟลเดอร์ Books_and_Papers * ไฟล์ชื่อ marketing_plan_v2.docx -> จะถูกส่งไปยังโฟลเดอร์ Work_Documents * ไฟล์ชื่อ data_clean_script.py -> จะถูกส่งไปยังโฟลเดอร์ Code_and_Data
ความมหัศจรรย์คือคุณไม่ต้องมานั่งเขียน Regex คอยดักคำศัพท์หลายร้อยคำ เพราะ LLM มี Semantic Understanding หรือความสามารถในการเข้าใจความหมายเชิงบริบทของข้อความ ทำให้มันคัดแยกประเภทของไฟล์ผ่านชื่อได้อย่างน่าทึ่ง
ขั้นตอนที่ 4: ตั้งเวลาทำงานอัตโนมัติ (Automation)
เพื่อพัฒนาให้เป็นระบบ Cognitive Automation แบบสมบูรณ์ คุณคงไม่อยากมากดรันสคริปต์ Python นี้เองทุกวัน เราสามารถตั้งเวลาให้คอมพิวเตอร์รันสคริปต์นี้โดยอัตโนมัติได้ง่ายๆ
สำหรับระบบ macOS และ Linux (ผ่าน Cron):
- เปิด Terminal แล้วพิมพ์คำสั่ง
crontab -e - เพิ่มคำสั่งเพื่อให้สคริปต์ทำงานทุกวันเวลา 18.00 น. (หรือเวลาที่ต้องการ):
bash 0 18 * * * /usr/bin/python3 /path/to/file_agent.py
สำหรับระบบ Windows (ผ่าน Task Scheduler):
- ค้นหาโปรแกรม Task Scheduler ในปุ่ม Start
- เลือก Create Basic Task ตั้งค่าทริกเกอร์เป็น Daily
- ในส่วน Action เลือก Start a program แล้วกำหนดที่อยู่ของสคริปต์ Python ของคุณ
บทสรุป
การสร้าง AI Agent สำหรับจัดระเบียบไฟล์นี้เป็นเพียงจุดเริ่มต้นเล็กๆ ของการทำ Cognitive Automation มันช่วยประหยัดเวลาและพลังสมองในการทำงานธุรการทั่วไป เพื่อให้คุณมีเวลาไปโฟกัสกับงานที่สำคัญกว่า
ความสวยงามของการใช้ระบบนี้บน Private Brain OS คือ ความปลอดภัยสูงสุด ข้อมูลทั้งหมดของคุณยังคงอยู่ในพื้นที่ของคุณเองอย่างปลอดภัย 100% ลองนำสคริปต์นี้ไปประยุกต์ใช้ ปรับปรุงหมวดหมู่ให้เข้ากับสายงานของคุณ แล้วก้าวเข้าสู่การทำงานที่มีประสิทธิภาพแบบออฟไลน์ไปพร้อมกัน!