- วิธีที่ให้ LLM ประมวลผลผลลัพธ์ทั้งหมดจากการเรียกใช้ทูลนั้นช้า มีต้นทุนสูง และไม่เหมาะกับการขยายสเกล
- ทางเลือกที่เสนอคือให้ LLM ทำหน้าที่ออร์เคสตรา โดย จัดการข้อมูลแบบมีโครงสร้างตาม output schema ด้วยโค้ด
- แนวทางนี้ เหมาะกับการประมวลผลข้อมูลปริมาณมากผ่านการเชื่อมต่อฟังก์ชันด้วยโค้ดและการจัดการหน่วยความจำด้วยตัวแปร
- แนวทางประมวลผลข้อมูลบนฐานการรันโค้ด มีความแม่นยำและขยายสเกลได้ดี เพราะ LLM ไม่ต้องสร้างข้อมูลขึ้นมาใหม่โดยตรง
- การสร้างสภาพแวดล้อม AI runtime ที่ปลอดภัยกำลังกลายเป็นโจทย์ใหม่ และต้องการสภาพแวดล้อมการรันที่ยั่งยืนและคงสถานะได้
LLM function calls don't scale; code orchestration is simpler, more effective.
ข้อจำกัดของวิธีเดิมที่ส่งผลลัพธ์จากการเรียกทูลกลับเข้าไปให้ LLM อีกครั้ง
- เมื่อใช้ทูล MCP(Machine Context Protocol) โดยทั่วไปจะส่งผลลัพธ์จากทูลให้ LLM ในรูปข้อความเพื่อชี้นำการดำเนินการถัดไป
- ในกรณีใช้งานจริง MCP server ของ Linear และ Intercom จะส่งกลับ คำตอบ JSON ขนาดใหญ่
- JSON มีลักษณะคล้าย API แต่ ไม่มี output schema ที่กำหนดไว้ ทำให้ LLM ต้องแบกรับภาระในการ parse ข้อความทั้งหมด
- ตัวอย่างเช่น ผลลัพธ์การดึงรายการ issue ของ Linear มีขนาด 70,000 อักขระสำหรับ 50 รายการ หรือราว 25,000 โทเค็น ซึ่งใหญ่มาก
- ฟิลด์
id จำนวนมากแทบไม่มีความหมายแต่กินโทเค็น และ หาก LLM ต้องสร้างสิ่งเหล่านี้ซ้ำตามเดิม ต้นทุนและความผิดพลาดจะยิ่งสูงขึ้น
ความจำเป็นในการแยกการประมวลผลข้อมูลออกจากการออร์เคสตรา
- วิธีปัจจุบันคือการ ผสมการประมวลผลข้อมูลและการออร์เคสตราไว้ในแชตเซสชันเดียวกัน
- บางส่วนแก้ปัญหานี้ด้วยการสร้างเธรดอื่นในรูปแบบ "agent" แต่เมื่อ JSON มีโครงสร้างอยู่แล้ว วิธีนี้กลับไม่มีประสิทธิภาพ
- วิธีที่ดีกว่าคือ ประมวลผลข้อมูลแบบมีโครงสร้างด้วยโค้ดโดยตรง
- ตัวอย่าง: การจัดเรียง issue ไม่จำเป็นต้องให้ LLM สร้างผลลัพธ์เอง แต่ให้รัน
sort ด้วยโค้ดแล้วส่งกลับเฉพาะอาร์เรย์ผลลัพธ์
การประมวลผลข้อมูลบนฐานการรันโค้ด
- การคำนวณ AI ผ่านการรันโค้ด ถูกใช้งานอยู่แล้วใน AI interpreter หลายประเภท
- วิธีนี้เปิดทางให้มีโครงสร้างที่กระชับ โดย LLM ไม่ต้องแสดงข้อมูลออกมาเอง แต่ เพียงตัดสินใจวิธีใช้เครื่องมือเท่านั้น
แนวคิดหลัก
- ใช้ตัวแปรเป็นหน่วยความจำ: กำหนดค่า = จัดเก็บ, แสดงผล = เรียกดู, ส่งต่อเป็นอาร์กิวเมนต์เมื่อเรียกฟังก์ชัน
- รองรับการเชื่อมต่อฟังก์ชัน: ผสานการเรียกหลายฟังก์ชันแบบ ขนาน/ลำดับ และแสดงความสัมพันธ์แบบพึ่งพากันผ่านลำดับการไหลของโค้ดอย่างเป็นธรรมชาติ
- ประมวลผลข้อมูลจำนวนมากได้อย่างขยายสเกล: เมื่อนำไปรวมกับ NumPy, pandas เป็นต้น ก็สามารถจัดการข้อมูลหลักพันถึงหลักหมื่นรายการได้ง่าย
- สามารถเรียก LLM อื่นเพิ่มเติมได้: ภายในโค้ดที่ LLM เขียนยังสามารถเรียก LLM อื่นเพื่อ จัดการข้อมูลแบบไม่มีโครงสร้าง ได้
MCP พร้อมแล้วหรือยัง?
- สเปกของ MCP มีการกำหนด input schema ไว้อยู่แล้ว และล่าสุดก็มีการยื่น PR สำหรับ output schema ด้วย
- หาก output schema กลายเป็นมาตรฐานทั่วไป ก็จะสามารถนำไปใช้ได้ในลักษณะต่อไปนี้:
- แดชบอร์ดสถานะ issue
- รายงานตั๋วที่เสร็จสิ้นประจำสัปดาห์
- ให้ AI ติดตามตั๋วที่ค้างนิ่งและส่งการแจ้งเตือนแบบ push
ความท้าทายของสภาพแวดล้อมการรันโค้ด
- ความปลอดภัยคือประเด็นหลัก: เพราะต้องรันโค้ดที่ AI/ผู้ใช้สร้างขึ้น จึง จำเป็นต้องออกแบบเพื่อป้องกันการเปิดเผย API key และข้อมูล
- ในกรณีของ Lutra สภาพแวดล้อมการรันถูกออกแบบแบบ sandbox และให้เอกสารการเรียก API แก่โมเดลเท่านั้น
- สภาพแวดล้อมการรันแบบคงสถานะ (เช่น Jupyter) มีต้นทุนสูง และสำหรับเซสชันระยะยาวจำเป็นต้องมีคุณสมบัติ stateless + persistent
- สิ่งนี้กำลังก่อรูปเป็นหมวดหมู่ใหม่ของ AI runtime และยังอยู่ในช่วงที่มีการออกแบบอย่างคึกคัก
บทสรุป
- วิธีเดิมที่นำผลลัพธ์จากการเรียกทูลไปให้ LLM ประมวลผลต่อมี ข้อจำกัดทั้งด้านต้นทุนและความแม่นยำ
- การออร์เคสตราบนฐานโค้ดทำให้เกิดการประมวลผลที่ กระชับ ขยายสเกลได้ และแม่นยำ
- สภาพแวดล้อมรันโค้ด AI กำลังได้รับความสนใจในฐานะ runtime ยุคถัดไปที่ต้องมี ความปลอดภัย ความคงทน และความสามารถในการขยายสเกล
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News