ปัญหาหลักที่ได้รับฟี้ดแบคมาคือ Developer ที่เพิ่งเริ่มต้นทำระบบ LLM/Agent ไม่รู้จะนำ ทฤษฎี Agentic Pattern ที่อ่านมาจากในเน็ต มาประยุกต์ยังไง บทความนี้จะมาเล่าให้ฟังว่า จากโจทย์ที่เราได้รับมาจากลูกค้า เราใช้ Agentic Pattern อันไหน ที่เราใช้ช่วยแก้ปัญหาให้ลูกค้าได้จริงๆ
ด้วยเหตุนี้เลยอยากเขียนบทความนำเคสการออกแบบ Agentic Pattern จริงๆ มาแบ่งปันกัน โดยดั้งใจว่าจะแบ่งออกเป็นตอนๆ
หน้าที่ของ agent ตัวนี้คือการอ่าน และวิเคราะห์ รายงานประจำปี และทำรายงานสรุปออกมาเฉพาะส่วนที่สนใจ อย่างเช่น งบกำไรขาดทุน งบฐานะการเงิน งบกำไรขาดทุนเบ็ดเสร็จ
Input คือ รายงานประจำปี
Output คือ JSON data ที่จะนำไป ทำกราฟสรุป 3 กราฟ
ตัวอย่างด้านล่างคือ JSON และ กราฟที่จะนำไปพล็อต
{
"periods": ["Q1", "Q2", "Q3", "Q4"],
"incomeStatement": {
"revenue": [120, 150, 170, 200],
"expenses": [80, 100, 120, 140]
},
"balanceSheet": {
"assets": [500, 550, 600, 650],
"liabilities": [300, 320, 340, 360]
},
"comprehensiveIncome": {
"netIncome": [40, 50, 55, 60],
"otherIncome": [5, -3, 8, 2]
}
}
เรามาลองวิเคราะห์การวาง structure AI แบบต่างๆ เริ่มจากแบบแรก
ตัวอย่าง Pseudo Prompt
<Context>[Report Content]</Context>
From the given report in xml tag above, Extract ….
โครงสร้างแรกที่เรามักจะเริ่มคือการใช้ LLM ในแบบเดียวกับ ChatGPT ปี 2023 นั่นก็คือใส่ Input ให้ LLM ส่งทุกอย่างออกมาเป็นอันจบ
ข้อเสียของวิธีนี้คือ ถ้า report มีขนาดใหญ่ LLM มีโอกาส Hullucinate สูงมาก ซึ่งในความเป็นจริง report ทางการเงินของบริษัทในตลาดหุ้นจะมีขนาดค่อนข้างใหญ่ ประมาณ 100–1000 หน้า โดยประมาณ
และถ้า Input content มีขนาดใหญ่เกิน LLM ก็จะส่ง error กลับมา
ลองสมมุติว่า LLM เราสามารถ รับ Input ได้ และเราจะใช้การ plot graph โดยการให้ LLM extract เฉพาะตัวเลขของแต่ละไตรมาส ของแต่ละ graph ออกมา เป็น JSON ให้ function code ของเราเอาไปใช้ต่อได้ อันนี้น่าจะทำได้ไม่ยาก เพราะ LLM api ส่วนใหญ่ support structure output แล้ว
ฝากไว้อีกนิดนึง ถ้าหากสามารถ ให้ LLM แค่ extract text/number แล้วสามารถคำณวนต่อเองในโค้ดได้แนะนำให้ทำเป็นอย่างยิ่ง พยายามอย่าให้ LLM คำณวนตัวเลขเองเพื่อความแม่นยำสูงสุด
การที่จะ fine tune prompt ให้สามารถทำ graph ทั้ง 3 อันเป็นไปได้ยาก หากมีความต้องการยิบย่อยจากลูกค้าเพียงเล็กน้อย เราจำเป็นต้องทดสอบและปรับแก้ Prompt ที่มีขนาดใหญ่มากๆ หากท่านเคย fine-tune prompt ก็จะรู้ว่าเพียงแค่ขยับนิดหน่อยจะทำให้ผลลัพธ์ต่างออกไปมากน้อย ก็ไม่สามารถคาดเดาได้
จากการ วิเคราะห์ทั้งสามส่วนสามารถ สรุปได้ว่า
ตัวอย่าง Pseudo Prompt
<Context>[Only Relevant Report Content]</Context>
From the given report in xml tag above, Extract [Income Sheet/Balance Sheet/Comprehensive Income]….
จากบทสรุปของ Solution แรก ทำให้เราต้องปรับปรุง Agentic Design ของเราวะน้อย มาสู่ Diagram ที่เป็น RAG+Agentic Pattern(ในที่นี้ผมไม่ได้อธิบายเรื่อง RAG อย่างละเอียด แนะนำให้ไป google เพิ่มเติมหรือดูในบทความน้องริวกับน้องนัด)
RAG มีหน้าที่ในการหา Relevant content(เนื้อหาหน้าที่เกี่ยวข้องกับกราฟนั้นๆ) ไปเป็นส่วนหนึ่งของ Prompt
Agentic Pattern ที่เหมาะกับงานนี้คือ Workflow: Parallelization คือการแบ่งงานเป็น section แล้วเรียก LLM parallel กัน(นึกถึง promise all ใน javascript/typescript)
เมื่อได้รับ result ของทุกตัวออกมาแล้วเราก็จะเขียนโค้ดให้ รวม JSON ของทั้ง 3 agent เข้าด้วยกัน
เรามาวิเคราะห์ Agentic Design ตัวนี้กัน
จะเห็น ได้ว่า Prompt จะมีขนาดเล็กลงอย่างเห็นได้ชัด เพราะคัดมาแต่เนื้อหาที่เกี่ยวข้อง ทำให้ความแม่นยำไม่เปลี่ยนไปตามขนาดของ Report(แต่ RAG ก็ยังต้อง Optimize อีก)
Output ของแต่ละ LLM Call มีขนาดเล็กลง เพราะแต่ละตัว โฟกัสแค่งานอย่างเดียว
จะเห็นได้ว่าหลังจากแยก LLM หรือ Agent เป็น กราฟละหนึ่งตัวแล้ว การเขียน Prompt จะง่ายขึ้นมาก เพราะสามารถแก้ prompt ของ แต่ละอันได้อย่างอิสระหรือมี seperation of concern นั่นเอง เราสามารถ แก้ Income Statement Prompt ได้ โดยที่ไม่ต้องกังวลว่าจะมีผลกับ Balance Sheet
จากการปรับปรุงและวิเคราะห์ Agentic Pattern ทั้งสามส่วนด้านบน สามารถสรุปได้ว่า
จากตัวอย่างการออกแบบ Agentic Pattern ด้านบนจะเห็นได้ว่า Parallelization จะค่อนข้างทรงพลังอย่างมากถ้าเอามาใช้ให้ถูกกับเนื้องาน ซึ่งส่วนตัวมองว่า Parallelization เป็น Pattern แรกๆที่ทุกคนมีโอกาสจะหยิบไปใช้งาน
ถ้าใครชอบบทความนี้แล้วอยากเห็นโจทย์ถัดไปสามารถติดตามกันได้เลย
หากท่านไหนต้องการปรึกษาหรือหาคนช่วยทำ Agentic AI Workflow, รีวิว Agentic Architecture, ปรับ Prompt & Template, เลือกเครื่องมือ RAG, เขียนโค้ดรวมผลลัพธ์/แปลงเป็น JSON, ไปจนถึงตั้งค่า Guardrails/Observability สำหรับใช้งานจริงในองค์กร ให้ทีม PALO IT Thailand เข้าไปช่วยทำได้เลย!
ติดต่อพวกเราผ่าน Facebook: PALO IT Thailand