- Published on
การพัฒนาเอเจนต์ของ Anthropic: ความเรียบง่ายชนะความซับซ้อน
ความหมายของเอเจนต์อัจฉริยะ
แนวคิดของเอเจนต์อัจฉริยะมีความหลากหลาย บางคนมองว่าเป็น 'ผู้จัดการอัจฉริยะ' ที่สามารถคิดเอง ตัดสินใจเอง และใช้เครื่องมือเพื่อทำภารกิจที่ซับซ้อนได้ ในขณะที่บางคนมองว่าเป็น 'พนักงานที่ทำตามกฎ' ซึ่งทำตามขั้นตอนที่กำหนดไว้ล่วงหน้า Anthropic เรียกทั้งสองอย่างนี้ว่าระบบอัจฉริยะ และแยกความแตกต่างระหว่างเวิร์กโฟลว์และเอเจนต์:
- เวิร์กโฟลว์: ระบบที่จัดลำดับแบบจำลองภาษาขนาดใหญ่ (LLM) และเครื่องมือผ่านเส้นทางโค้ดที่กำหนดไว้ล่วงหน้า
- เอเจนต์: ระบบที่ LLM กำหนดขั้นตอนและวิธีการใช้เครื่องมือแบบไดนามิก สามารถควบคุมวิธีการทำภารกิจให้สำเร็จได้เอง
เมื่อใดควรเลือกใช้เอเจนต์
Anthropic แนะนำให้ใช้หลักการ 'ทำให้ง่ายเข้าไว้' เมื่อพัฒนาแอปพลิเคชัน AI ไม่ใช่ทุกสถานการณ์ที่ต้องสร้างระบบอัจฉริยะที่ซับซ้อน ระบบอัจฉริยะมีประสิทธิภาพสูง แต่ก็อาจทำให้การตอบสนองช้าลงและมีค่าใช้จ่ายเพิ่มขึ้น นักพัฒนาจึงต้องชั่งน้ำหนักระหว่างฟังก์ชันการทำงานกับประสิทธิภาพ
- เวิร์กโฟลว์: เหมาะสำหรับงานที่ต้องการความสามารถในการคาดการณ์และความสอดคล้องกัน
- เอเจนต์: เหมาะสำหรับสถานการณ์ขนาดใหญ่ที่ต้องการความยืดหยุ่นและการตัดสินใจที่ขับเคลื่อนด้วยแบบจำลอง
สำหรับหลายแอปพลิเคชัน การใช้คำแนะนำที่ดีร่วมกับการดึงข้อมูลและตัวอย่างตามบริบท การถามคำถามกับแบบจำลองขนาดใหญ่โดยตรงก็เพียงพอแล้ว
การใช้เฟรมเวิร์ก
ปัจจุบันมีเฟรมเวิร์กมากมายที่ช่วยนักพัฒนาในการสร้างเอเจนต์อัจฉริยะ AI เช่น:
- LangGraph ของ LangChain
- เฟรมเวิร์ก AI Agent ของ Amazon Bedrock
- เครื่องมือสร้างเวิร์กโฟลว์แบบลากและวาง Rivet
- เครื่องมือ GUI Vellum สำหรับสร้างและทดสอบเวิร์กโฟลว์ที่ซับซ้อน
เฟรมเวิร์กเหล่านี้ช่วยลดความซับซ้อนของกระบวนการพัฒนา แต่ก็เพิ่มชั้นของนามธรรมให้กับโค้ด ทำให้ตรรกะพื้นฐานไม่โปร่งใส เพิ่มความยากในการดีบัก และอาจนำไปสู่โซลูชันที่ซับซ้อนเกินไปในสถานการณ์ที่เรียบง่าย
Anthropic แนะนำให้นักพัฒนาเริ่มต้นด้วยการใช้ API ของแบบจำลองขนาดใหญ่โดยตรง รูปแบบหลายอย่างสามารถทำได้ด้วยโค้ดเพียงไม่กี่บรรทัด หากเลือกใช้เฟรมเวิร์ก ต้องเข้าใจหลักการพื้นฐาน การขาดความเข้าใจกลไกพื้นฐานของเฟรมเวิร์กเป็นสาเหตุหลักของปัญหาการพัฒนา
Anthropic มีตัวอย่างเฉพาะใน cookbook
ส่วนประกอบ เวิร์กโฟลว์ และเอเจนต์
ส่วนประกอบพื้นฐาน: LLM ที่ได้รับการปรับปรุง
ส่วนประกอบพื้นฐานของระบบอัจฉริยะคือ LLM ที่ได้รับการปรับปรุง ซึ่งมีความสามารถในการดึงข้อมูลและความจำ แบบจำลองของ Anthropic สามารถใช้ความสามารถเหล่านี้ได้โดยอัตโนมัติ เช่น การสร้างคำค้นหา การเลือกเครื่องมือ และการตัดสินใจว่าจะเก็บข้อมูลใดไว้
เมื่อขยายฟังก์ชันการทำงาน ควรให้ความสำคัญกับ:
- การปรับแต่งฟังก์ชันให้เหมาะสมกับกรณีการใช้งานเฉพาะ
- การตรวจสอบให้แน่ใจว่ามีอินเทอร์เฟซที่เรียบง่ายและมีเอกสารครบถ้วนสำหรับแบบจำลอง
โปรโตคอลบริบทแบบจำลองที่ Anthropic เพิ่งเปิดตัว ช่วยลดความซับซ้อนในการรวมแบบจำลอง AI เข้ากับระบบนิเวศเครื่องมือของบุคคลที่สาม
เวิร์กโฟลว์: ห่วงโซ่คำแนะนำ
ห่วงโซ่คำแนะนำแบ่งงานที่ซับซ้อนออกเป็นหลายขั้นตอน โดยแต่ละขั้นตอนจะเรียกใช้แบบจำลองขนาดใหญ่หนึ่งครั้ง และขั้นตอนต่อๆ ไปจะประมวลผลตามผลลัพธ์ของขั้นตอนก่อนหน้า นักพัฒนาสามารถเพิ่มจุดตรวจสอบในขั้นตอนกลางเพื่อให้แน่ใจว่ากระบวนการดำเนินไปตามที่คาดไว้
ห่วงโซ่คำแนะนำเหมาะสำหรับสถานการณ์ที่สามารถแบ่งงานที่ซับซ้อนออกเป็นงานย่อยที่คงที่ได้อย่างชัดเจน แต่ละแบบจำลองมุ่งเน้นไปที่การทำภารกิจที่เรียบง่าย แม้ว่าเวลาตอบสนองโดยรวมอาจนานขึ้นเล็กน้อย แต่ความถูกต้องจะเพิ่มขึ้นอย่างมาก
ตัวอย่างการใช้งานทั่วไป:
- สร้างสำเนาการตลาดก่อน แล้วจึงแปลเป็นภาษาอื่น
- เขียนโครงร่างเอกสารก่อนและตรวจสอบความสอดคล้อง แล้วจึงเขียนเอกสารฉบับเต็มตามโครงร่าง
เวิร์กโฟลว์: การแบ่งประเภทอัจฉริยะ
เทคนิคการแบ่งประเภทจะตัดสินประเภทของงานที่ป้อนเข้ามา และกำหนดให้กับโมดูลที่เกี่ยวข้อง การออกแบบนี้ช่วยให้แต่ละโมดูลได้รับการปรับให้เหมาะสมกับงานเฉพาะ และหลีกเลี่ยงการรบกวนซึ่งกันและกันระหว่างประเภทงานที่แตกต่างกัน การแบ่งประเภทอัจฉริยะเหมาะสำหรับสถานการณ์ที่งานมีลักษณะการจำแนกประเภทที่ชัดเจน ระบบ AI สามารถระบุประเภทงานและทำการแบ่งประเภทได้อย่างแม่นยำโดยใช้แบบจำลองภาษาขนาดใหญ่หรืออัลกอริทึมแบบดั้งเดิม
ตัวอย่างการใช้งานทั่วไป:
- ในระบบบริการลูกค้า การนำคำถามทั่วไป คำขอคืนเงิน และการสนับสนุนด้านเทคนิคไปยังกระบวนการที่เกี่ยวข้อง
- กำหนดปัญหาที่เรียบง่ายและพบบ่อยให้กับแบบจำลองขนาดเล็ก และกำหนดปัญหาที่ยากและหายากให้กับแบบจำลองที่ทรงพลังกว่า เพื่อเพิ่มประสิทธิภาพด้านต้นทุนและความเร็ว
เวิร์กโฟลว์: ขนาน
แบบจำลองภาษาขนาดใหญ่สามารถประมวลผลงานพร้อมกัน และรวมเอาต์พุตด้วยวิธีทางโปรแกรม ลักษณะของเวิร์กโฟลว์แบบขนาน:
- การแบ่งส่วนงาน: แบ่งงานออกเป็นงานย่อยที่สามารถทำงานได้พร้อมกัน และรวมผลลัพธ์ในตอนท้าย
- กลไกการลงคะแนน: เรียกใช้ภารกิจเดียวกันหลายครั้ง เลือกผลลัพธ์ที่ดีที่สุด หรือรวมคำตอบหลายๆ คำตอบ
วิธีขนานมีประสิทธิภาพมากเมื่อสามารถทำงานย่อยได้พร้อมกันเพื่อเพิ่มความเร็ว หรือเมื่อต้องการลองหลายมุมมองเพื่อให้ได้ผลลัพธ์ที่มีความเชื่อมั่นสูงขึ้น สำหรับงานที่ซับซ้อน การปล่อยให้แต่ละการเรียกใช้มุ่งเน้นไปที่การจัดการด้านใดด้านหนึ่งโดยเฉพาะ จะให้ผลลัพธ์ที่ดีกว่า
ตัวอย่างการใช้งานทั่วไป:
- การแบ่งส่วนงาน:
- การป้องกันความปลอดภัย: แบบจำลองหนึ่งประมวลผลคำขอของผู้ใช้ และอีกแบบจำลองหนึ่งทำการตรวจสอบเนื้อหา
- การประเมินประสิทธิภาพ: แบบจำลองที่แตกต่างกันประเมินตัวชี้วัดประสิทธิภาพของระบบ
- กลไกการลงคะแนน:
- การตรวจสอบความปลอดภัยของโค้ด: แบบจำลองการตรวจจับหลายแบบร่วมกันค้นหาช่องโหว่ของโค้ด
- การตรวจสอบเนื้อหา: แบบจำลองหลายแบบประเมินความปลอดภัยของเนื้อหาจากมุมมองที่แตกต่างกัน
เวิร์กโฟลว์: ผู้นำ-ผู้ปฏิบัติงาน
แบบจำลองภาษาขนาดใหญ่ส่วนกลางจะแบ่งงานแบบไดนามิก กำหนดให้กับแบบจำลองผู้ปฏิบัติงาน และสรุปผลลัพธ์
เวิร์กโฟลว์นี้เหมาะสำหรับงานที่ซับซ้อนซึ่งยากต่อการกำหนดขั้นตอนที่เฉพาะเจาะจงล่วงหน้า การแบ่งงานไม่ได้คงที่ แต่ระบบ AI เป็นผู้กำหนดแบบไดนามิกตามสถานการณ์
ตัวอย่างการใช้งานทั่วไป:
- แอปพลิเคชันการเขียนโปรแกรมที่ต้องแก้ไขไฟล์หลายไฟล์อย่างซับซ้อน
- งานค้นหาที่ต้องรวบรวมและวิเคราะห์ข้อมูลที่เกี่ยวข้องจากหลายแหล่ง
เวิร์กโฟลว์: การประเมิน-การปรับปรุง
LLM หนึ่งตัวเรียกใช้เพื่อสร้างการตอบสนอง และอีกตัวหนึ่งให้การประเมินและข้อเสนอแนะ ซึ่งก่อให้เกิดวงจร
เวิร์กโฟลว์นี้มีประสิทธิภาพเป็นพิเศษเมื่อมีเกณฑ์การประเมินที่ชัดเจน และการปรับปรุงซ้ำๆ สามารถสร้างมูลค่าที่สำคัญได้ LLM สามารถให้ข้อเสนอแนะได้ คล้ายกับกระบวนการแก้ไขซ้ำๆ ของนักเขียนที่เป็นมนุษย์
ตัวอย่างการใช้งานทั่วไป:
- การแปลวรรณกรรม: แบบจำลองการประเมินพบความแตกต่างทางภาษาที่การแปลพลาดไป และให้คำแนะนำในการแก้ไข
- การค้นหาที่ซับซ้อน: แบบจำลองการประเมินตัดสินว่าจำเป็นต้องทำการค้นหาเชิงลึกต่อไปหรือไม่
เอเจนต์
เอเจนต์เกิดขึ้นเมื่อ LLM มีความสามารถที่สำคัญ เช่น การทำความเข้าใจอินพุตที่ซับซ้อน การให้เหตุผล การวางแผน การใช้เครื่องมือ และการกู้คืนข้อผิดพลาด
การทำงานของเอเจนต์เริ่มต้นด้วยคำสั่งหรือการสนทนาโต้ตอบกับผู้ใช้ที่เป็นมนุษย์ เมื่อภารกิจชัดเจนแล้ว เอเจนต์จะวางแผนและดำเนินการอย่างอิสระ อาจจำเป็นต้องขอข้อมูลเพิ่มเติมจากมนุษย์หรือให้มนุษย์ตัดสินใจ
ในทุกขั้นตอนของการดำเนินการ การได้รับ 'ข้อเท็จจริง' จากสภาพแวดล้อมเป็นสิ่งสำคัญ เอเจนต์สามารถหยุดชั่วคราวเพื่อขอความคิดเห็นจากมนุษย์ที่จุดตรวจสอบหรือเมื่อพบกับอุปสรรค ภารกิจมักจะสิ้นสุดเมื่อเสร็จสิ้น แต่โดยทั่วไปจะมีเงื่อนไขการหยุดด้วย
เอเจนต์สามารถจัดการงานที่ซับซ้อนได้ แต่การใช้งานมักจะเรียบง่าย โดยทั่วไปจะเป็นเพียงแบบจำลองภาษาขนาดใหญ่ที่ใช้เครื่องมือตามข้อเสนอแนะจากสภาพแวดล้อมในวงจร ดังนั้น การออกแบบชุดเครื่องมือและเอกสารจึงมีความชัดเจนและรอบคอบเป็นสิ่งสำคัญ
เอเจนต์เหมาะสำหรับปัญหาแบบเปิด ซึ่งยากต่อการคาดการณ์จำนวนขั้นตอนที่จำเป็น และไม่สามารถเข้ารหัสเส้นทางที่ตายตัวได้ ความเป็นอิสระของเอเจนต์ทำให้เป็นตัวเลือกที่เหมาะสมสำหรับการขยายงานในสภาพแวดล้อมที่เชื่อถือได้ ความเป็นอิสระของเอเจนต์หมายถึงต้นทุนที่สูงขึ้น และอาจมีความเสี่ยงในการสะสมข้อผิดพลาด ขอแนะนำให้ทำการทดสอบอย่างกว้างขวางในสภาพแวดล้อมแซนด์บ็อกซ์ และตั้งค่ามาตรการป้องกันที่เหมาะสม
ตัวอย่างการใช้งานเอเจนต์:
- เอเจนต์โค้ดที่ใช้ในการแก้ไขไฟล์หลายไฟล์ตามคำอธิบายภารกิจของ SWE-bench
- ฟังก์ชัน 'การใช้คอมพิวเตอร์' ของ Anthropic ซึ่ง Claude ใช้คอมพิวเตอร์เพื่อทำภารกิจ
การรวมและการปรับแต่ง
ส่วนประกอบเหล่านี้ไม่ได้มีข้อกำหนดตายตัว นักพัฒนาสามารถปรับแต่งและรวมเข้าด้วยกันได้ตามกรณีการใช้งาน กุญแจสู่ความสำเร็จคือการวัดประสิทธิภาพและดำเนินการซ้ำๆ ควรพิจารณาเพิ่มความซับซ้อนเมื่อโซลูชันที่ง่ายกว่าไม่สามารถใช้งานได้เท่านั้น ความสำเร็จในด้าน LLM ไม่ได้อยู่ที่การสร้างระบบที่ซับซ้อนที่สุด แต่อยู่ที่การสร้างระบบที่เหมาะสมกับความต้องการ เริ่มต้นด้วยคำแนะนำที่เรียบง่าย ปรับปรุงด้วยการประเมินอย่างละเอียด และเพิ่มระบบเอเจนต์หลายขั้นตอนเมื่อโซลูชันที่ง่ายกว่าไม่สามารถใช้งานได้
เมื่อปรับใช้เอเจนต์ ต้องปฏิบัติตามหลักการดังต่อไปนี้:
- รักษาความเรียบง่ายในการออกแบบเอเจนต์
- ให้ความสำคัญกับความโปร่งใสของเอเจนต์ โดยแสดงทุกขั้นตอนที่วางแผนไว้อย่างชัดเจน
- สร้างอินเทอร์เฟซเอเจนต์-คอมพิวเตอร์ (ACI) อย่างพิถีพิถัน ด้วยเอกสารเครื่องมือและการทดสอบที่ครอบคลุม