AI ครบชุดในแอปของคุณเอง
CKN AI รวม LLM (Claude, ChatGPT, Gemini), agent, RAG, machine learning, การหาค่าเหมาะที่สุด, OCR และ speech-to-text ไว้ใน library เดียว ใช้ได้ทั้งบน Node และในเบราว์เซอร์ ธุรกิจได้ AI ที่ผูกกับข้อมูลและระบบของตัวเอง โดยไม่ต้องต่อ SDK หลายตัวเข้าด้วยกัน และเปลี่ยนผู้ให้บริการ LLM ได้โดยไม่ต้องเขียนใหม่
สิ่งที่ CKN AI ทำได้
LLM หลายเจ้า ใช้ API เดียว
เขียนโค้ดครั้งเดียว สลับระหว่าง Claude, ChatGPT และ Gemini ได้ด้วยการเปลี่ยน provider รองรับ streaming, reasoning, ภาพ เสียง และไฟล์แนบ
- ประมาณค่าใช้จ่ายจากตารางราคาที่คุณกำหนดเอง
- retry อัตโนมัติเมื่อเจอ 429 และ 5xx
- ถ้าโมเดลไม่รองรับไฟล์ประเภทนั้น จะแจ้ง error ไม่ตัดทิ้งเงียบ ๆ
- ให้ LLM ตอบเป็น JSON ที่ parse ได้
Agent และ MCP
สร้าง agent ที่เรียกใช้ tool ของระบบคุณ ตรวจ input ด้วย JSON schema ก่อนทำงาน และหยุดรออนุมัติได้ เชื่อมกับ MCP server ภายนอกได้ทั้งแบบ stdio และ HTTP
- tool ระบุ sideEffects ได้ (อ่านอย่างเดียว หรือเขียนข้อมูล)
- memory, checkpoint และ resume งานที่ค้างอยู่
- จำกัดจำนวนขั้นตอนและ deadline ของ agent
- ส่งความคืบหน้าให้หน้าจอผ่าน SSE
RAG และการประมวลผลข้อความ
ให้ AI ตอบจากเอกสารของคุณเอง แบ่งข้อความ ทำ embedding แล้วค้นหาแบบ vector, keyword หรือผสมกัน รองรับข้อความภาษาไทย
- hybrid search (vector + BM25) และ HNSW สำหรับคลังข้อมูลใหญ่
- สรุปเอกสารยาวแบบ stream
- tool ค้นเว็บสำหรับ agent
- export และ import index เป็นไฟล์ binary
Machine learning และการพยากรณ์
เทรนโมเดลบนข้อมูลของคุณเองด้วย TensorFlow.js ทั้งบน server และในเบราว์เซอร์ เช่น พยากรณ์ยอดขาย ตรวจจับความผิดปกติ จัดกลุ่มลูกค้า แนะนำสินค้า
- MLP, CNN, LSTM/GRU, autoencoder, Transformer, recommender และอื่น ๆ
- preprocessing ถูกบันทึกไปกับโมเดล
- k-fold, grid search, เทรนใน worker พร้อมยกเลิกได้
- รัน model ONNX เพื่อ inference
Optimization และ scenario
แก้โจทย์วางแผน (LP/MILP) เช่น จัดสรรทรัพยากร ผสมสินค้า จัดเส้นทาง ด้วย solver ที่เขียนเองใน library ถามแบบ what-if ได้ และให้ผลเป็นข้อเสนอที่คนต้องอนุมัติก่อนนำไปใช้
- shadow price บอกว่าข้อจำกัดไหนมีผลต่อกำไรมากที่สุด
- หลายเป้าหมายพร้อมกัน (multi-objective)
- สร้าง scenario จากข้อความภาษาธรรมชาติ
- ไม่ throw error แต่คืนสถานะให้ตรวจ ไม่ลงมือถ้าผลยังใช้ไม่ได้
เอกสาร เสียง และภาพ
อ่านใบกำกับภาษี ใบสั่งซื้อ และไฟล์สแกนเป็นข้อมูลโครงสร้าง ถอดเสียงเป็นข้อความ และตรวจจับคน/ป้ายทะเบียนไทยจากภาพกล้อง
- OCR ด้วย Tesseract หรือ LLM, PDF ที่มีข้อความอ่านตรง ถ้าเป็นภาพสแกนจะ OCR ต่อให้
- speech-to-text ทั้งแบบ cloud และแบบรันในเครื่อง พร้อมไฟล์ SRT/VTT
- ตรวจจับคน ติดตาม นับเข้า-ออกโซน ด้วย model ONNX ของคุณ
- อ่านป้ายทะเบียนไทย ตรวจจังหวัด พร้อมโหวตผลต่อคัน
ตัวเลขที่วัดจริง
ตัวเลขทั้งหมดมาจากการวัดจริงที่บันทึกไว้ในเอกสารของ package บนเครื่อง Apple-silicon Mac และ Node 24 ผลบนเครื่องอื่นจะต่างออกไป
ตัวเลขจากชุดทดสอบและ benchmark ภายในของ CKN ผลจริงขึ้นกับเครื่องและปริมาณข้อมูลของแต่ละระบบ
ธุรกิจของคุณได้อะไร
ไม่ผูกกับเจ้าใดเจ้าหนึ่ง
ธุรกิจเลือก LLM ตามราคาและคุณภาพ แล้วเปลี่ยนได้เมื่อตลาดเปลี่ยน โดยโค้ดส่วนที่เหลือไม่ต้องแก้ library ไม่ฝังราคาไว้ คุณกำหนดตารางราคาเองเพื่อประมาณค่าใช้จ่ายต่อคำขอ
คุมความเสี่ยงได้ตั้งแต่ระดับโค้ด
tool ของ agent ตรวจ input ก่อนทำงานทุกครั้ง ระบุได้ว่าเขียนข้อมูลหรือไม่ และ scenario ที่ AI เสนอจะไม่ถูกนำไปใช้จนกว่าคนจะอนุมัติ endpoint ของผู้ให้บริการจำกัดเฉพาะ https บน allowlist
ข้อมูลและโมเดลอยู่ในมือคุณ
ทุกอย่างรันในแอปของคุณเอง OCR, speech-to-text, ML และ solver ทำงานในเครื่องได้โดยไม่ส่งข้อมูลออก ส่วน LLM จะเรียกเฉพาะเมื่อคุณเลือกใช้ ส่วน vision ใช้ model ที่คุณเลือกเอง
ให้ agent ตอบจากเอกสารของคุณ
ใช้งานอยู่ในส่วนต่าง ๆ ของ CKN stack
- ผู้ช่วย AI เขียน SQL ใน CKN Intelligent (ผ่านชุด /llm ที่ไม่ดึง TensorFlow)
- พร้อมใช้ในบริการธุรกิจทั้ง 14 ตัว สำหรับงานพยากรณ์ OCR และ agent
- คำสั่ง ckn CLI ด้าน PDF (อ่านข้อความและดึงข้อมูลจากไฟล์)
import { createInMemoryRagStore, createRagTool, createGeminiEmbeddingProvider,
Agent, createClaudeProvider } from "@ckn-technology/ai";
const embedder = createGeminiEmbeddingProvider({
apiKey: process.env.GEMINI_API_KEY!, model: process.env.EMBEDDING_MODEL!
});
const store = createInMemoryRagStore(embedder, {
chunkOptions: { strategy: "paragraph", maxTokens: 512 }
});
await store.index([{ id: "doc-1", text: document1, metadata: { source: "internal-wiki" } }]);
const ragTool = createRagTool(store, { name: "search_knowledge_base", topK: 5,
description: "Search the internal knowledge base." });
const agent = new Agent({
provider: createClaudeProvider({ apiKey: process.env.ANTHROPIC_API_KEY! }),
model: process.env.LLM_MODEL!, tools: [ragTool]
});
const result = await agent.run({ input: "What is our onboarding process?" });
