Synaplan Multimodal Gateway
ทางการนำเสนอฟังก์ชันการทำงานที่สมบูรณ์ของเซิร์ฟเวอร์โอเพนซอร์สเป็นตัวอย่าง MCP
คุณทำอะไรได้บ้างด้วย Synaplan Multimodal Gateway MCP?
- ค้นหาฐานความรู้ RAG ของคุณ — ถามคำถามเกี่ยวกับเอกสารที่คุณอัปโหลดและรับคำตอบที่อ้างอิงจากเนื้อหาของคุณเองผ่านปลายทาง
POST /mcp - ดึงข้อมูลความทรงจำของ AI — ค้นหาโปรไฟล์ผู้ใช้และบริบทที่จัดเก็บไว้ซึ่ง Synaplan ได้บันทึกไว้ โดยแสดงเป็นเครื่องมือผ่านเซิร์ฟเวอร์ MCP
- เชื่อมต่อเซิร์ฟเวอร์ MCP ภายนอก — เพิ่มบริการที่รองรับ MCP ของคุณเอง (CRM, wiki, n8n) ภายใต้ช่องทาง เพื่อให้ตัววางแผน AI สามารถดึงข้อมูลสดจากบริการเหล่านั้นได้
- ประมวลผลคำขอแบบหลายขั้นตอน — แยกย่อยงานที่ซับซ้อนเป็นกราฟของขั้นตอน (แยกข้อมูล, สรุป, สร้างเนื้อหา) ที่จะสตรีมการ์ดความคืบหน้าแบบเรียลไทม์ขณะดำเนินการ
เอกสาร
Synaplan
การจัดการความรู้ที่ขับเคลื่อนด้วย AI พร้อม RAG, วิดเจ็ตแชท และการผสานรวมหลายช่องทาง
อินสแตนซ์จริง: web.synaplan.com | เอกสาร: docs.synaplan.com | API: Swagger UI
ข้อกำหนดเบื้องต้น
- Docker + Docker Compose v2 (Docker Desktop บน macOS/Windows หรือ Docker Engine + ปลั๊กอิน Compose บน Linux)
- Git
- RAM ขั้นต่ำ 8 GB (แนะนำ 16 GB สำหรับการติดตั้งมาตรฐานแบบ local-AI)
- พื้นที่ดิสก์ว่าง ~9 GB สำหรับการติดตั้งมาตรฐาน (~5 GB สำหรับแบบขั้นต่ำ)
- พอร์ต TCP ที่ว่าง
5173,8000,8082,8025,3307,6333,11435
Mac ที่ใช้ Apple Silicon (M1–M4): อิมเมจคอนเทนเนอร์ของ Synaplan ถูกเผยแพร่สำหรับ
linux/amd64ดังนั้นจึงทำงานภายใต้การจำลองบน Apple Silicon ใน Docker Desktop → Settings → General ให้เปิดใช้งาน "Use Rosetta for x86/amd64 emulation on Apple Silicon" (macOS 13+) เพื่อให้คอนเทนเนอร์ทำงานเร็วขึ้นและเสถียรกว่า QEMU เริ่มต้นมาก ทุกอย่างทำงานได้โดยไม่ต้องเปิด — แค่ช้าลง และการสร้างครั้งแรกใช้เวลานานกว่า
เริ่มต้นอย่างรวดเร็ว
git clone https://github.com/metadist/synaplan.git
cd synaplan
docker compose up -d
เปิด http://localhost:5173 — UI พร้อมใช้งานใน ~2 นาที ด้วยการติดตั้งมาตรฐาน โมเดล Ollama ในเครื่อง (gpt-oss:20b, bge-m3, รวม ~14 GB) จะดาวน์โหลดต่อในพื้นหลัง — การแชทที่ใช้ AI ในเครื่องจะเริ่มทำงานเมื่อการดาวน์โหลดนั้นเสร็จสิ้น (docker compose logs -f backend แสดงความคืบหน้า) สำหรับประสบการณ์ครั้งแรกที่เร็วที่สุด ให้ใช้การติดตั้ง แบบขั้นต่ำ ด้านล่าง
ตัวเลือกการติดตั้ง
| โหมด | คำสั่ง | ขนาด | เหมาะที่สุดสำหรับ |
|---|---|---|---|
| มาตรฐาน | docker compose up -d | ~9 GB | ฟีเจอร์เต็มรูปแบบ, AI ในเครื่อง |
| ขั้นต่ำ | docker compose -f docker-compose-minimal.yml up -d | ~5 GB | AI บนคลาวด์เท่านั้น (Groq/OpenAI) |
สำหรับการติดตั้งแบบขั้นต่ำ ให้ตั้งค่า API key ของคุณ ก่อน เริ่มสแต็ก เพื่อให้การบูตครั้งแรกเห็นคีย์นั้น (หลีกเลี่ยงการรีสตาร์ท) รับคีย์ฟรีที่ console.groq.com:
echo "GROQ_API_KEY=your_key" >> backend/.env
docker compose -f docker-compose-minimal.yml up -d
เริ่มต้นไปแล้วโดยไม่มีคีย์? เพิ่มคีย์และรีสตาร์ทแบ็กเอนด์:
echo "GROQ_API_KEY=your_key" >> backend/.env && docker compose restart backend
การเข้าถึง
| บริการ | URL |
|---|---|
| แอป | http://localhost:5173 |
| API | http://localhost:8000 |
| เอกสาร API | http://localhost:8000/api/doc |
| phpMyAdmin | http://localhost:8082 |
| MailHog | http://localhost:8025 |
ข้อมูลประจำตัวสำหรับเข้าสู่ระบบเริ่มต้น:
| อีเมล | รหัสผ่าน | ระดับ |
|---|---|---|
| admin@synaplan.com | admin123 | ADMIN |
| demo@synaplan.com | demo123 | PRO |
| test@example.com | test123 | NEW (ยังไม่ยืนยัน) |
ฟีเจอร์
- AI Chat — Ollama, OpenAI, Anthropic, Groq, Gemini
- การจัดเส้นทางหลายงาน — ตัววางแผน AI แยกคำขอที่ซับซ้อนออกเป็นกราฟงาน (แยก → สรุป → สร้าง → ตอบกลับ) และสตรีมการ์ดงานสดขณะที่ขั้นตอนต่างๆ ทำงาน
- การค้นหา RAG — การค้นหาเอกสารเชิงความหมายด้วย MariaDB VECTOR หรือ Qdrant
- วิดเจ็ตแชท — ฝังบนเว็บไซต์ใดก็ได้ (คู่มือวิดเจ็ต)
- การสนับสนุนสด — เลเยอร์ WebSocket แบบเรียลไทม์ (Centrifugo + Redis): การ接管แชทวิดเจ็ตโดยมนุษย์, ตัวบ่งชี้การพิมพ์, การแจ้งเตือนผู้ปฏิบัติงาน (คู่มือเรียลไทม์)
- WhatsApp — การผสานรวม Meta Business API
- อีเมล — การตอบกลับอีเมลที่ขับเคลื่อนด้วย AI
- เสียง — การถอดเสียงด้วย Whisper (อินพุต) + synaplan-tts เสริม (เอาต์พุต)
- เอกสาร — PDF, Word, Excel, รูปภาพพร้อม OCR
- ความทรงจำ AI — การสร้างโปรไฟล์ผู้ใช้ด้วยการค้นหาเวกเตอร์ Qdrant
- ระบบข้อเสนอแนะ — การจับและวิเคราะห์ข้อเสนอแนะที่ขับเคลื่อนโดย Qdrant
- ปลั๊กอิน — ระบบปลั๊กอินแบบไม่รุกราน (คู่มือปลั๊กอิน)
- เซิร์ฟเวอร์ MCP (การเข้าถึงก่อนใคร) — เชื่อมต่อไคลเอนต์ AI (Claude, Cursor, …) ผ่าน Model Context Protocol; RAG และความทรงจำของคุณกลายเป็นเครื่องมือที่
POST /mcp(คู่มือ MCP) - ไคลเอนต์ MCP (การเข้าถึงก่อนใคร) — เชื่อมต่อเซิร์ฟเวอร์ MCP ของคุณ (CRM, วิกิ, n8n, …) ภายใต้ Channels → MCP Servers; ตัววางแผนหลายงานดึงข้อมูลสดจากพวกมันผ่านโหนด DAG
mcp_fetch— อ่านอย่างเดียว, ป้องกัน SSRF, เลือกใช้ตามหัวข้อ เปิดใช้งานโดยแฟล็กBCONFIGที่ถูกซีด (MCP.CLIENT_ENABLED,MULTITASK.MCP_FETCH_ENABLED—app:seedตั้งค่าเป็น ON เมื่อปรับใช้; แถว0ที่ชัดเจนคือสวิตช์ตัดการทำงานของผู้ปฏิบัติงาน) ดู docs/MULTITASK_DATA_NODES.md
ฐานข้อมูลเวกเตอร์ Qdrant
Qdrant ทำงานเป็นบริการ Docker ภายใน — ไม่จำเป็นต้องกำหนดค่า มันขับเคลื่อนความทรงจำ AI, การค้นหาเอกสาร RAG และระบบข้อเสนอแนะ
เริ่มต้นโดยอัตโนมัติด้วย docker compose up -d Synaplan ทำงานได้อย่างสมบูรณ์โดยไม่มีมัน (ความทรงจำและการค้นหาเวกเตอร์จะถูกปิดใช้งาน)
การประมวลผลแบบเรียลไทม์และเบื้องหลัง
ไฟล์ compose ทั้งสองยังเริ่มบริการภายในสามตัว (ไม่มีพอร์ตโฮสต์, ไม่จำเป็นต้องตั้งค่า):
| บริการ | บทบาท |
|---|---|
redis | โครงสร้างพื้นฐานที่ใช้ร่วมกันที่จำเป็น: แคช, เซสชัน, ล็อก, การจำกัดอัตรา, คิวข้อความ (Redis Streams), เอนจิน Centrifugo |
centrifugo | เกตเวย์ WebSocket สำหรับฟีเจอร์เรียลไทม์ (การ接管แชทสด, ตัวบ่งชี้การพิมพ์, การแจ้งเตือนผู้ปฏิบัติงาน) — เบราว์เซอร์เชื่อมต่อแบบ same-origin ผ่าน /connection/websocket |
worker | ผู้บริโภค Symfony Messenger ที่ดำเนินการงานแบบอะซิงโครนัส (การประมวลผล AI, การจัดทำดัชนีเอกสาร, การรวบรวมข้อมูลวิดเจ็ต) |
ในคลัสเตอร์หลายโหนด ทุกโหนดใช้ Redis ร่วมกันหนึ่งตัว ดังนั้นเหตุการณ์ WebSocket ที่เผยแพร่บนโหนดหนึ่งจะไปถึงเบราว์เซอร์ที่เชื่อมต่อกับโหนดอื่น รายละเอียด: docs/REALTIME.md
การแปลงข้อความเป็นเสียงพูด (ทางเลือก)
สำหรับเอาต์พุตเสียง ให้รัน synaplan-tts ควบคู่ไปกับ Synaplan:
git clone https://github.com/metadist/synaplan-tts.git && cd synaplan-tts && docker compose up -d
คำสั่งทั่วไป
# Logs
docker compose logs -f backend
# Restart
docker compose restart backend
# Reset database
docker compose down -v && docker compose up -d
# Run tests
make test
# Code quality
make lint
เอกสารประกอบ
เอกสารสำหรับผู้ใช้และ API อยู่ที่ docs.synaplan.com แหล่งที่มา: metadist/synaplan-docs
คู่มือใน repo (สำหรับนักพัฒนาที่ทำงานบนโค้ดเบสนี้):
| คู่มือ | คำอธิบาย |
|---|---|
| การติดตั้ง | คำแนะนำการตั้งค่าโดยละเอียด |
| การกำหนดค่า | ตัวแปรสภาพแวดล้อม, API keys |
| การพัฒนา | คำสั่ง, การทดสอบ, สถาปัตยกรรม |
| เรียลไทม์ / WebSockets | เลเยอร์เรียลไทม์ Centrifugo + Redis, การปรับใช้หลายโหนด |
| ระบบ RAG | การค้นหาและประมวลผลเอกสาร |
| วิดเจ็ตแชท | ฝังแชทบนเว็บไซต์ |
| การตั้งค่า Meta Business API | |
| อีเมล | การผสานรวมช่องทางอีเมล |
Repository ที่เกี่ยวข้อง
| Repo | วัตถุประสงค์ |
|---|---|
| synaplan | แอปหลัก (repo นี้) |
| synaplan-docs | ไซต์เอกสารสาธารณะ (docs.synaplan.com) |
| synaplan-tts | บริการ Piper TTS เสริม |
| synaplan-sortx | ปลั๊กอินการจัดเรียงเอกสาร + เครื่องมือในเครื่อง |
| synaplan-charts | Helm charts สำหรับ Kubernetes |
| synaplan-platform | การกำหนดค่าการปรับใช้สำหรับการใช้งานจริง |
โครงสร้างโปรเจกต์
synaplan/
├── backend/ # Symfony PHP API
├── frontend/ # Vue.js SPA
├── docs/ # Documentation
├── _docker/ # Docker configs
└── plugins/ # Plugin system
การมีส่วนร่วม
ดู AGENTS.md สำหรับแนวทางการพัฒนาและมาตรฐานโค้ด
