Flowtica

Structured Output กับ AI Agent: ทำไมต้องบังคับให้ AI ตอบเป็น JSON ก่อนเชื่อม ERP/CRM

โดย ทีม Flowtica
AI & เทคโนโลยีพื้นฐาน

ถ้าธุรกิจคุณใช้ Odoo, ERP หรือ CRM เพื่อจัดการเอกสาร จุดที่แพงที่สุดของการนำ AI Agent มาใช้ไม่ใช่ตัว AI แต่คือฟอร์แมตข้อมูลที่ส่งกลับมา Structured Output คือกลไกที่บังคับให้ AI ตอบเป็น JSON ตาม Schema ที่กำหนดไว้ ทำให้ AI ไม่ได้เก่งแค่เขียนข้อความสวยงาม แต่กลายเป็นฟันเฟืองที่ระบบอ่านแล้วทำงานต่อได้จริง สำหรับ SME ไทย นี่คือสะพานสำคัญระหว่าง AI กับระบบหลังบ้าน เช่น การอ่านอีเมลใบสั่งซื้อจากลูกค้าแล้วสร้าง Sales Order ใน Odoo แบบอัตโนมัติโดยมีคนตรวจสอบ

Structured Output คืออะไร ต่างจากการสั่ง “ตอบเป็น JSON” อย่างไร

Structured Output คือแนวทางที่ผู้พัฒนากำหนดผลลัพธ์ของโมเดลภาษาให้อยู่ในโครงสร้างข้อมูลแบบ machine-readable โดยเฉพาะ JSON ตาม JSON Schema ที่เราออกแบบไว้ล่วงหน้า ระบบจะบังคับว่า AI ต้องส่งฟิลด์อะไรบ้าง ฟิลด์ไหนเป็น string, number, array หรือ enum และฟิลด์ใดจำเป็นต้องมีค่า เช่น

{
  "type": "object",
  "properties": {
    "po_reference": { "type": "string" },
    "customer_code": { "type": "string" },
    "order_date": { "type": "string", "format": "date" },
    "lines": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "product_code": { "type": "string" },
          "quantity": { "type": "number" },
          "unit_price": { "type": "number" }
        },
        "required": ["product_code", "quantity", "unit_price"]
      }
    }
  },
  "required": ["po_reference", "customer_code", "order_date", "lines"]
}

การสั่งแค่ใน prompt ว่า “ตอบเป็น JSON” ไม่ใช่ Structured Output เพราะ prompt เป็นเพียงคำขอที่โมเดลอาจเชื่อฟังหรือไม่ก็ได้ โมเดลอาจลืม comma, สลับประเภทข้อมูล, เพิ่มฟิลด์ที่ schema ไม่มี หรือเปลี่ยนชื่อ key เพราะไม่มีกลไกการันตีจากฝั่ง model ตรงกันข้ามกับ API โหมด Structured Outputs หรือ JSON Schema ของผู้ให้บริการ LLM รายใหญ่ เช่น OpenAI, Google และ Anthropic ซึ่งใช้เทคนิค constrained decoding เพื่อทำให้ token ที่ AI สร้างออกมาอยู่ในกรอบ JSON Schema อย่างเคร่งครัด ข้อดีคือ ลดปัญหาที่เรียกว่า “AI ตอบมาสวยแต่ใช้ไม่ได้” ลงได้เยอะ และทำให้ขั้นตอน validate กับ ERP/CRM ทำได้ตรงไปตรงมา

ทำไม SME ที่ใช้ ERP/CRM ถึงต้องสนใจ Structured Output

ERP/CRM ถูกออกแบบมาให้ทำงานกับข้อมูลที่มีโครงสร้างแน่นอน เช่น Odoo ต้องการทราบว่าใครคือลูกค้า ใช้สินค้า code ไหน จำนวนเท่าไหร่ ราคาเท่าไหร่ และต้องส่งมอบเมื่อใด ระบบไม่ได้เก่งเรื่องอ่านใจหรือตีความประโยคฟรีฟอร์ม ถ้า AI Agent ส่งผลลัพธ์เป็นบทความยาว ๆ หรือตารางที่มีรูปแบบไม่แน่นอน พนักงานก็ต้องมานั่ง “ก็อปปี้วาง” หรืออ่านแล้วกรอกใหม่ ต้นทุนที่ธุรกิจเสียไปไม่ได้หายไปไหน แค่ย้ายจากพิมพ์เองมาเป็นแก้และจัดการ output ที่ AI สร้างขึ้น

สำหรับ SME ไทยที่ฝันอยากให้ AI Agent ช่วยงานจริง Structured Output คือตัวตัดสินว่า AI Agent จะเป็นเครื่องจักรทำงานได้หรือเป็นแค่แชตบอตพูดเก่ง เพราะเมื่อ JSON ถูกต้อง ระบบ Odoo ก็สามารถเรียก API เพื่อสร้างใบสั่งซื้อ ใบเสนอราคา หรืออัปเดตข้อมูลลูกค้าได้ทันที โดยไม่ต้องมีคนคอยเอาข้อมูลไป “แปลงเป็นแบบฟอร์ม” ให้อีกที

อีกเหตุผลสำคัญคือเรื่องการควบคุมคุณภาพ เมื่อ output อยู่ในรูป JSON เราสามารถเขียน validation rule ได้ง่าย เช่น ตรวจว่า quantity เป็นตัวเลขและมากกว่า 0, customer_code ต้องมีอยู่ใน Odoo, order_line ต้องไม่ว่างเปล่า ถ้า AI ตอบเป็นภาษาไทยธรรมชาติ เราจะเขียน logic ตรวจสอบความถูกต้องได้ยากมาก เพราะต้องใช้คนอ่านและตัดสินใจทุกครั้ง ทำให้ระบบ automation ไม่สามารถทำงานแบบ unattended ได้จริง

ตัวอย่างจริง: AI อ่านอีเมลใบสั่งซื้อแล้วสร้าง Sales Order ใน Odoo

ลองวางสถานการณ์ โรงงาน SME แห่งหนึ่งขายอะไหล่เครื่องจักร ลูกค้าส่งใบสั่งซื้อทางอีเมลเป็นข้อความสั้น ๆ เช่น “ต้องการมอเตอร์รุ่น PX-200 จำนวน 10 ตัว ราคาตัวละ 2,900 บาท ส่งภายใน 20 กันยายน ขอออกเอกสารเป็นชื่อบริษัท สยามแมชชีน จำกัด” หากไม่มี Structured Output พนักงานต้องเปิด Odoo ค้นหาลูกค้า ค้นหาสินค้า แล้วกรอก Sales Order เองทุกใบ

แต่เมื่อสร้าง AI workflow ด้วย n8n และ Odoo ระบบจะทำงานประมาณนี้:

  1. n8n ตรวจสอบอีเมลใหม่จากกล่องจดหมาย
  2. ส่งเนื้อหาอีเมลและไฟล์แนบไปยัง LLM API พร้อม Schema ที่กำหนดว่า ต้องมี customer_name, customer_code, po_reference, expected_date และ order_lines
  3. AI ตอบกลับเป็น JSON ตาม Schema
  4. workflow ค้นหา partner และ product ใน Odoo ด้วย JSON ที่ได้รับ
  5. ถ้าค้นพบครบ ระบบจะสร้าง Sales Order ในสถานะ draft
  6. พนักงานตรวจสอบรายการใน Odoo แล้วกดยืนยัน

ตัวอย่าง JSON ที่ AI ส่งกลับมาเช่น:

{
  "customer_code": "CUS-00321",
  "po_reference": "PO-2026-0099",
  "expected_date": "2026-09-20",
  "lines": [
    {
      "product_code": "PX-200",
      "quantity": 10,
      "unit_price": 2900
    }
  ]
}

การที่ JSON ออกมาเป็นแบบนี้ ทำให้ n8n ไม่ต้อง “เดา” ว่ารายการใดคือชื่อสินค้า หรือราคาที่ลูกค้าพิมพ์รวมภาษีหรือยัง ทีมงานสามารถ mapping ค่าตรงไปยังฟิลด์ใน Odoo API ได้โดยตรง ที่สำคัญคือ คนตรวจสอบยังเห็นรายการ draft ก่อนอนุมัติ จึงเหมาะกับธุรกิจที่ยังไม่ไว้ใจ AI 100% แต่ต้องการเริ่มลดงาน manual

เทคนิคการันตีความถูกต้อง ก่อนส่งข้อมูลเข้าระบบ

Structured Output ช่วยเรื่องรูปแบบ แต่ไม่ได้รับประกันความหมายของเนื้อหา เพราะฉะนั้น workflow ที่ดีต้องมี Validation Layer หรือชั้นตรวจสอบข้อมูลคั่นกลาง อย่างน้อยควรเช็กสิ่งเหล่านี้ก่อนส่งเข้าระบบ ERP/CRM

ฟิลด์ครบถ้วน JS Library หรือ n8n Code Node ตรวจสอบว่ามี key ตาม Schema และ type ถูกต้อง เช่น ราคาต้องเป็นตัวเลข วันที่ต้องอยู่ในรูปแบบ ISO 8601 ฟิลด์ที่จำเป็นต้องไม่เป็นค่าว่าง ต่อจากนั้นควรตรวจ Business Rule เช่น จำนวนสั่งซื้อต้องมากกว่า 0, ราคาต้องไม่ติดลบ, วันที่ส่งของต้องไม่เป็นวันในอดีต และถ้าราคาในใบสั่งซื้อแตกต่างจากราคาล่าสุดใน Odoo เกินเกณฑ์ที่ตั้งไว้ ให้ Stop and Ask

นอกจากนี้ยังควร validate กับข้อมูลจริงในระบบ เช่น ส่ง customer_code และ product_code ไปค้นหาใน Odoo ให้แน่ใจว่ามีอยู่จริง ถ้าไม่พบ ให้ AI ใช้ค่า null หรือ unknown แทนการเดา หลังได้ JSON แล้วสามารถให้ LLM ลอง retry อีกครั้งโดยส่ง error จาก validation กลับไป เช่น “customer_code ไม่พบในระบบ ช่วยค้นหาจากชื่อลูกค้าแล้วส่ง code ที่ถูกต้องมา” แต่ถ้ายังไม่ได้คำตอบที่น่าเชื่อถือ ให้หยุด workflow และส่งเรื่องให้คนตรวจสอบ

กลยุทธ์ที่ใช้กับรายการสำคัญโดยเฉพาะคือ Human Approval ไม่จำเป็นต้องให้ AI ยิง Sales Order เข้าระบบเป็น confirmed ทันที ให้ AI สร้างเป็น draft/quotation ก่อน แล้วส่งลิงก์ใน LINE หรือ Slack ให้หัวหน้าทีมตรวจสอบ เพียงเท่านี้ SME ก็ได้ทั้งความเร็วจาก AI และความปลอดภัยจากคนตัดสินใจ

แนวทางเริ่มใช้ Structured Output กับ Odoo และ n8n

สำหรับธุรกิจที่ยังไม่เคยเขียนโปรแกรม n8n ช่วยลดความยุ่งยากได้มากเพราะเป็นเครื่องมือ workflow แบบ visual ที่มี node เชื่อมต่อ Gmail, HTTP Request, OpenAI และฐานข้อมูล หลักสำคัญของขั้นตอนเริ่มต้นคือ เริ่มเล็ก ๆ แต่ปิด loop ให้ครบ นั่นคือเลือกงานที่มีผลลัพธ์ชัดเจนและมีความผิดพลาดไม่รุนแรง เช่น การสร้างใบเสนอราคาหรือสร้าง Opportunity ใน CRM ก่อนที่จะไปแตะงานบัญชีที่มีผลกับเงินจริง

ระหว่างตั้งค่า ควรกำหนด Schema ให้แคบที่สุดเท่าที่จำเป็น ตัวอย่างเช่น ถ้าต้องการให้ AI อ่านอีเมลเพื่อหาลูกค้า ก็ไม่จำเป็นต้องให้ AI วิเคราะห์อารมณ์หรือสรุปเนื้อหา ให้สนใจแค่ฟิลด์ที่ Odoo ใช้จริง และเก็บ prompt instruction ที่บอกว่า ให้ใช้ข้อมูลจากเนื้อหาอีเมลเท่านั้น ห้ามเติมข้อมูลที่ไม่มีหลักฐาน

ใน n8n ควรสร้าง flow แยกเป็น 2 ส่วน คือ Flow หลักสำหรับประมวลผลอีเมล และ Flow สำหรับการอนุมัติ เช่น เมื่อสร้าง draft แล้วให้พนักงานกด approve ผ่านฟอร์มลิงก์ แล้วระบบค่อยเรียก Odoo API เพื่อยืนยันเอกสารอีกที การแยกแบบนี้ทำให้ลดความเสี่ยงที่ AI จะสั่งให้ระบบทำรายการสำคัญโดยที่ยังไม่มีคนดู

ข้อควรระวัง: Structured Output ไม่ได้แก้ปัญหา AI “หลอน” เนื้อหา

แม้ Structured Output จะช่วยเรื่องรูปแบบ แต่ตัว AI ยังอาจเข้าใจเนื้อหาผิดหรือคิดว่ามีข้อมูลที่ไม่ได้อยู่ในอีเมล เช่น อีเมลไม่ระบุเลขที่ PO แล้ว AI ดันเติม “PO-2026-XYZ” เข้าไป หรือลูกค้าพิมพ์ราคาเป็น “2.9K” แล้ว AI เข้าใจเป็น 2.9 บาท ทำให้ Sales Order ราคาผิดพลาด วิธีรับมือคือ ตั้งกฎว่า ข้อมูลที่ AI ไม่เห็นต้องแจ้งว่าไม่ทราบ และกันการเดาด้วยการไม่ใส่ไว้ใน Schema หรือกำหนดให้เป็น optional ที่ต้องมีคนกรอก

อีกเรื่องคือ token cost โหมด Structured Output ต้อง consume token เพื่อสร้าง key และ structure ในทุกคำตอบ ส่งผลให้ค่าใช้จ่ายสูงกว่าการให้ AI ตอบอิสระเล็กน้อย โดยเฉพาะถ้าส่ง Schema ใหญ่และมี order line หลายรายการ ต้องออกแบบ Schema ให้สมดุลระหว่างความละเอียดกับค่าใช้จ่าย และเลือกใช้โมเดลขนาดเล็กที่เหมาะกับงานสกัดข้อมูลแทนโมเดลใหญ่เกินจำเป็น

สุดท้าย อย่าเริ่มจาก workflow ที่ใหญ่เกินไป ถ้าธุรกิจเพิ่งลองครั้งแรก อย่าให้ AI จัดการทั้งการอ่านอีเมล การตรวจสอบเครดิตลูกค้า และการยืนยันสินค้าในรอบเดียว เพราะถ้าผิดจะหาจุดผิดยาก ให้เริ่มจากงานที่ผลตอบแทนชัดเจน เช่น อ่าน PO แล้วสร้าง draft ซึ่งต้องใช้พนักงานตรวจสอบอีกชั้นหนึ่ง เมื่อเห็นว่าแม่นยำดีแล้วค่อยขยายไปยังขั้นตอนอื่น

สรุปแล้ว SME ไทยควรเริ่มจากตรงไหน

คำตอบสั้น ๆ คือ ให้เริ่มจาก Structured Output เป็นพื้นฐานของ AI Agent ทุกตัวที่จะเชื่อมกับ Odoo หรือ CRM เพราะแค่ให้ AI “ตอบเป็นภาษาไทยสละสลวย” ไม่พอ ระบบหลังบ้านต้องการข้อมูลที่ตรงฟิลด์และพร้อมใช้งาน Flowtica แนะนำให้เลือกอีเมลใบสั่งซื้อหรืองานสร้างเอกสารซ้ำ ๆ เป็นโปรเจกต์นำร่อง ออกแบบ JSON Schema ร่วมกับทีมที่เข้าใจระบบปัจจุบัน เชื่อม n8n กับ Odoo จากนั้นใช้คนตรวจสอบ draft ก่อนอนุมัติ เมื่อทีมเริ่มคุ้นเคยและระบบแม่นยำขึ้น จึงค่อยเพิ่มอัตโนมัติในรายการที่มีความเสี่ยงต่ำ

เทคโนโลยีนี้ไม่ได้ซับซ้อนเกินกว่า SME ไทยจะเริ่มใช้ เพียงแต่ต้องเข้าใจว่า AI ที่ตอบ “ถูกต้อง” กับ AI ที่ทำงาน “ได้ถูกต้อง” เป็นคนละเรื่องกัน Structured Output คือสะพานที่ทำให้ทั้งสองเรื่องนั้นเชื่อมถึงกัน และเป็นก้าวแรกที่ทำให้ AI Agent เป็นพนักงานดิจิทัลตัวจริงในกระบวนการ ERP/CRM ของคุณ

คำถามที่พบบ่อย

Structured Output กับการสั่งให้ AI 'ตอบเป็น JSON' ใน prompt ต่างกันอย่างไร

การสั่งผ่าน prompt เป็นเพียงคำขอ ไม่มีกลไกการันตี โมเดลอาจตอบฟิลด์หายหรือใช้ชื่อ key ไม่ตรงกับ schema ส่วน Structured Output ถูกบังคับจากฝั่ง API ด้วย JSON Schema และเทคนิค constrained decoding ผู้ให้บริการรายใหญ่อย่าง OpenAI ระบุว่าโหมดนี้สร้างผลลัพธ์ตาม schema ได้จริง (ผู้ให้บริการระบุ / ผลจริงขึ้นกับบริบท) แต่ฝั่งธุรกิจยังต้องเช็กค่าที่ได้อีกชั้นหนึ่งก่อนใช้ทำงาน

จำเป็นต้องใช้ Odoo ไหม ถ้าบริษัทใช้ ERP/CRM ตัวอื่นอยู่

หลักการนี้ใช้กับ ERP/CRM ทุกตัวที่มี API และมีฟิลด์อัปเดตได้ ไม่จำกัดเฉพาะ Odoo บทความนี้อ้างอิง Odoo เป็นหลักเพราะเป็น open source ที่ SME นิยมใช้และเปิด API ให้เรียกสร้างเอกสารได้ง่าย ส่วน n8n เป็นตัวกลางเชื่อมต่อแบบ visual สำหรับทีม IT ที่มีน้อย วิธีเดียวกันนี้ใช้กับ SAP, Microsoft Dynamics หรือระบบบัญชี ERP อื่นได้ โดยต้องปรับ Schema และ endpoint ให้ตรงกับแต่ละระบบ

ถ้า AI อ่านอีเมลลูกค้าผิด จะมีวิธีให้คนตรวจสอบก่อนไหม

ได้ และควรทำโดยเฉพาะช่วงเริ่มต้น ให้ AI สร้างเอกสารในสถานะ draft หรือ quotation ไม่ใช่ยืนยันเอกสารทันที จากนั้นคนตรวจสอบกดอนุมัติใน Odoo หรือผ่านหน้า n8n ก่อนระบบบันทึกจริง ระหว่าง workflow ให้ใส่ validation เช่น ห้ามจำนวนติดลบ ราคาต้องมากกว่า 0 และถ้าเจอรายการที่ไม่สามารถ map กับรหัสสินค้าได้ ให้หยุดรอคนตรวจสอบ วิธีนี้ช่วยลดความเสี่ยงจาก AI อ่านผิดและเพิ่มความไว้วางใจให้ทีมงาน

ค่าใช้จ่าย token เพิ่มขึ้นจริงไหม แล้วเริ่มแล้วจะคุ้มหรือเปล่า

จริง เพราะทุกครั้งที่เรียก API ต้องใช้โทเคนกับ schema และเนื้อหา JSON เพิ่มขึ้นเล็กน้อย แต่ค่าแรงพนักงานที่เสียไปกับการคีย์ อ่านอีเมล และแก้ข้อมูลผิดมักสูงกว่า SMEs ควรเริ่มจาก workflow ที่มีปริมาณไม่มากและเห็นผลชัดเจน เช่น อ่านใบสั่งซื้อวันละ 10-20 ฉบับ แล้วให้คนตรวจสอบ 2-3 นาที/รายการ เพื่อพิสูจน์ว่าคุ้มก่อนขยายผล สัดส่วนต้นทุนจริงขึ้นกับจำนวนเอกสาร โมเดลที่ใช้ และระยะเวลาเทสต์

Structured Output ช่วยให้ AI รู้ว่าข้อมูลในอีเมลเป็นความจริงหรือไม่

ไม่ได้ช่วยเรื่องความถูกต้องเชิงเนื้อหา เพราะ Structured Output รับประกันแค่รูปแบบ ไม่ได้รับประกันความหมาย ถ้าอีเมลระบุราคาไม่ชัดเจนหรือมีเลขที่ PO กำกวม AI อาจเดาใส่ข้อมูล ควรกำหนดให้ AI ใช้เฉพาะข้อมูลที่ปรากฏในอีเมลเท่านั้น ถ้าไม่มีข้อมูลจริงให้ส่งค่า null หรือ mark เป็น unknown แล้วให้พนักงานตรวจสอบก่อนสร้างเอกสารเสมอ

แหล่งอ้างอิงและข้อมูลเพิ่มเติม

ลิงก์ไปยังเว็บไซต์ทางการของหน่วยงานและผู้พัฒนา — กฎเกณฑ์และรายละเอียดอาจเปลี่ยนแปลง กรุณายึดข้อมูลจากต้นทางเป็นหลัก