สร้าง AI Agent บน LINE ด้วย Garudust (Rust) — ตั้งแต่ต้นจนใช้งานได้จริง
ถ้าคุณอยากมี AI Agent ส่วนตัวที่คุยได้ผ่าน LINE โดยไม่ต้องพึ่ง no-code platform บทความนี้จะพาคุณทำตั้งแต่ต้นจนจบ เครื่องมือที่ใช้คือ Garudust — AI Agent framework เขียนด้วย Rust รองรับ OpenAI, Anthropic, Ollama, vLLM และ OpenAI-compatible endpoint ทุกเจ้า เซิร์ฟเวอร์ Linux หรือ macOS (หรือรันบน VPS ก็ได้) บัญชี LINE Developers (ฟรี) → developers.line.biz API Key จาก OpenAI, Anthropic, หรือ endpoint อื่น ๆ ngrok (สำหรับ dev) หรือโดเมนจริง (สำหรับ production) ไปที่ Releases แล้วดาวน์โหลดไฟล์ที่ตรงกับระบบของคุณ เช่น: bash # Linux x86_64 curl -LO https://github.com/garudust-org/garudust-agent/releases/latest/download/garudust-v0.3.1-x86_64-unknown-linux-musl.tar.gz tar -xzf garudust-*.tar.gz sudo mv garudust*/garudust garudust*/garudust-server /usr/local/bin/ วิธีที่ 2 — Build จาก source (ต้องมี Rust 1.87+) git clone https://github.com/garudust-org/garudust-agent.git cd garudust-agent cargo build --release --bin garudust --bin garudust-server sudo cp target/release/garudust target/release/garudust-server /usr/local/bin/ ตรวจสอบว่าติดตั้งสำเร็จ: garudust --version garudust-server --version 2. ตั้งค่า LINE Messaging API เข้าไปที่ LINE Developers Console สร้าง Provider ใหม่ (หรือใช้อันที่มีอยู่) สร้าง Channel ประเภท Messaging API ที่ tab Basic settings → คัดลอก Channel secret ที่ tab Messaging API → คลิก Issue เพื่อสร้าง Channel access token (long-lived) เปิด Use webhook → เปิด toggle ให้เป็น Enable เก็บค่าสองอย่างนี้ไว้: LINE_CHANNEL_SECRET LINE_CHANNEL_ACCESS_TOKEN 3. รัน Setup Wizard garudust setup Wizard จะถามทีละขั้น: ? Select your LLM provider: openai anthropic > ollama custom ? Model name: claude-sonnet-4-6 ? API Key (leave blank if not needed): sk-ant-... ? Enable LINE platform? Yes ? LINE Channel Secret: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ? LINE Channel Access Token: eyJhbGci... Wizard จะสร้างไฟล์สองไฟล์: ~/.config/garudust/config.yaml — ตั้งค่าทั่วไป (provider, model, platform) ~/.config/garudust/.env — API key (ไม่ commit ขึ้น git) ดูค่าที่ตั้งไว้: garudust config show ปรับค่าเพิ่มเติมได้โดยตรง: garudust config set platforms.line.port 3002 garudust config set platforms.line.webhook_path /webhooks/line 4. รัน garudust-server garudust-server ค่าเริ่มต้น: port 3000 สำหรับ API หลัก, port 3002 สำหรับ LINE webhook ถ้าต้องการเปลี่ยน port หลัก: garudust-server --port 8080 # หรือ garudust config set server.port 8080 garudust-server ดู log จะเห็นประมาณนี้: INFO garudust_server: LINE webhook listening on 0.0.0.0:3002/webhooks/line INFO garudust_server: API server listening on 0.0.0.0:3000 5. เปิด Webhook ด้วย ngrok (สำหรับ Dev) LINE ต้องการ HTTPS เท่านั้น — ngrok จะสร้าง HTTPS URL ชั่วคราวให้ # ติดตั้ง ngrok ถ้ายังไม่มี # https://ngrok.com/download ngrok http 3002 ngrok จะแสดง URL เช่น: Forwarding https://abc123.ngrok-free.app -> http://localhost:3002 URL webhook ของคุณจะเป็น: https://abc123.ngrok-free.app/webhooks/line 6. ตั้งค่า Webhook URL ใน LINE Developers Console กลับไปที่ LINE Developers Console → Channel ของคุณ Tab Messaging API → ส่วน Webhook settings ใส่ URL: https://abc123.ngrok-free.app/webhooks/line คลิก Verify — ควรได้ "Success" เปิด Use webhook ให้เป็น Enable ตอนนี้ลองส่งข้อความหา LINE Official Account ของคุณ — AI จะตอบกลับ! 7. ปรับแต่ง System Prompt แก้ไฟล์ ~/.config/garudust/config.yaml: provider: anthropic model: claude-sonnet-4-6 system_prompt: | คุณคือผู้ช่วย AI ชื่อ "น้องการุด" พูดภาษาไทย ตอบสั้นกระชับ ช่วยงานด้านข้อมูล วิเคราะห์ข้อความ และตอบคำถามทั่วไป ไม่ตอบเนื้อหาที่ไม่เหมาะสม platforms: line: enabled: true port: 3002 webhook_path: /webhooks/line รีสตาร์ท garudust-server เพื่อโหลด config ใหม่ (หรือ hot-reload จะทำงานอัตโนมัติถ้าเปิดใช้) 8. เพิ่ม Cron Job (ทำงานอัตโนมัติ) Garudust มีระบบ cron ในตัว — ตั้งค่าใน config: cron: memory_consolidation: "0 3 * * *" # รวบรวม memory ทุกคืน 03:00 memory_expiry: "0 4 * * 0" # ล้าง memory เก่าทุกอาทิตย์ 04:00 ปรับผ่าน CLI: garudust config set cron.memory_consolidation "0 3 * * *" 9. Deploy จริง (Production ด้วย systemd + nginx) ตั้งค่า nginx reverse proxy # /etc/nginx/sites-available/garudust server { listen 443 ssl; server_name yourdomain.com; ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem; location /webhooks/line { proxy_pass http://127.0.0.1:3002; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } location / { proxy_pass http://127.0.0.1:3000; proxy_set_header Host $host; } } sudo ln -s /etc/nginx/sites-available/garudust /etc/nginx/sites-enabled/ sudo nginx -t && sudo systemctl reload nginx ตั้งค่า systemd service # /etc/systemd/system/garudust.service [Unit] Description=Garudust AI Agent Server After=network.target [Service] Type=simple User=ubuntu ExecStart=/usr/local/bin/garudust-server Restart=on-failure RestartSec=5 EnvironmentFile=/home/ubuntu/.config/garudust/.env WorkingDirectory=/home/ubuntu [Install] WantedBy=multi-user.target sudo systemctl daemon-reload sudo systemctl enable --now garudust sudo systemctl status garudust ตอนนี้ webhook URL จริงของคุณคือ: https://yourdomain.com/webhooks/line ตั้งใน LINE Developers Console แล้วกด Verify — เสร็จสมบูรณ์! สรุป ขั้นตอน สิ่งที่ทำ garudust setup ตั้งค่า provider, model, LINE credentials garudust-server รัน API + webhook server ngrok / nginx เปิด HTTPS endpoint ให้ LINE เข้าถึงได้ LINE Console ตั้ง webhook URL + Verify config.yaml ปรับ system prompt, cron, platform Garudust รองรับ OpenAI, Anthropic, Ollama, vLLM และ OpenAI-compatible endpoint ทุกเจ้า — เปลี่ยน provider ได้แค่แก้ 2 บรรทัดใน config แล้วรีสตาร์ท GitHub: garudust-org/garudust-agent Docs: garudust-org.github.io/garudust-agent ถ้ามีคำถามหรือเจอปัญหา เปิด Issue บน GitHub ได้เลย หรือ comment ไว้ด้านล่างครับ
