ตลอดสองปีที่ผ่านมา วิศวกรรม AI ดำเนินไปตามรูปแบบที่เรียบง่าย เพียงแค่ให้ prompt, เครื่องมือบางอย่าง และเลเยอร์หน่วยความจำ (memory layer) แก่เอเจนต์ แล้วเฝ้าดูมันนัดหมายการประชุม สรุปสัญญา หรือดีบั๊กสคริปต์ เป้าหมายทั้งหมดคือการทำให้เอเจนต์เพียงตัวเดียวสามารถใช้งานได้ด้วยตัวเอง
เป้าหมายนั้นได้เปลี่ยนไปแล้ว
ขณะนี้เรากำลังเห็นอุตสาหกรรมเปลี่ยนผ่านจากเอเจนต์เดี่ยว (solo agents) ไปสู่ทีมเอเจนต์ (agent teams) บอทคัดกรองงานบริการลูกค้า (customer service triage bot) ระบุคำขอคืนเงินและส่งต่อเคสไปยังเอเจนต์ด้านการชำระเงิน (payments agent) เอเจนต์วิจัยที่กำลังดึงข้อมูลจากเว็บ (scraping web data) พบช่องว่างเฉพาะทางและส่งต่องานไปยังผู้เชี่ยวชาญที่ดูแลฐานข้อมูลเฉพาะ (proprietary database) เอเจนต์โลจิสติกส์ที่กำลังวางแผนการขนส่งต้องการใบเสนอราคาค่าระวางสินค้าแบบเรียลไทม์ จึงขอตัวเลขจากเอเจนต์ด้านราคา (pricing agent)
ฟังดูเหมือนจะง่ายในทางทฤษฎี แต่ในทางปฏิบัติ มันกลับเปราะบางมาก
ความท้าทายใหม่คือความสามารถในการทำงานร่วมกัน (interoperability) ทีมต่างๆ สร้างเอเจนต์ด้วยเฟรมเวิร์ก (frameworks) ที่แตกต่างกัน ผู้ให้บริการ (vendors) รายต่างๆ ส่งมอบเอเจนต์ที่มีอินเทอร์เฟซ (interfaces) ต่างกัน เมื่อบริษัทหนึ่งต้องการทำงานร่วมกับอีกบริษัทหนึ่ง ช่องว่างก็จะยิ่งกว้างขึ้น ตอนนี้เราอยู่ในสภาพแวดล้อมที่เต็มไปด้วยคนทำงานที่มีความสามารถ แต่ขาดภาษาที่ใช้สื่อสารร่วมกัน เอเจนต์ไม่สามารถค้นหาเอเจนต์ตัวอื่นในสารบบได้ ไม่สามารถอ่านคำอธิบายได้ว่าเพื่อนร่วมงานของมันทำอะไร และไม่สามารถส่งต่องานที่ละเอียดอ่อนได้โดยไม่เสี่ยงต่อการรั่วไหลของข้อมูล การสูญเสียบริบท (context loss) หรือการทำงานซ้ำซ้อน
นี่คือปัญหาที่ A2A ถูกสร้างขึ้นมาเพื่อแก้ไขโดยเฉพาะ มันช่วยให้เอเจนต์มีโปรโตคอล (protocol) กลางสำหรับการค้นหา (discovery) การมอบหมายงาน (delegation) และการทำงานร่วมกันอย่างปลอดภัย
จากเอเจนต์เดี่ยวสู่การทำงานแบบแยกส่วน (Agent Silos)
เฟรมเวิร์กเอเจนต์ในระลอกแรกมองว่าขอบเขตของระบบคือขอบเขตของเอเจนต์ คุณสร้างลูปการใช้เหตุผล (reasoning loop) มอบชุดเครื่องมือให้ และหวังว่ามันจะสามารถคิดหาทางผ่านเวิร์กโฟลว์ (workflow) ไปได้ ซึ่งมันก็ใช้งานได้ดีพอสมควรหากเอเจนต์นั้นทำงานอยู่ภายในโค้ดเบส (codebase) เดียวกัน บัญชีคลาวด์เดียว หรือแพลตฟอร์มของผู้ให้บริการรายเดียว
ธุรกิจจริงๆ ไม่ได้ทำงานอยู่ภายในระบบแบบโมโนลิท (monoliths) คำขอคืนเงินอาจเริ่มจาก CRM ส่งต่อไปยังบริการชำระเงินภายในที่เขียนด้วย Python และจบลงที่การตรวจสอบการทุจริต (fraud check) ที่โฮสต์โดยบุคคลที่สาม เมื่อคุณจำลองบริการแต่ละอย่างเป็นเอเจนต์ คุณจะตระหนักได้อย่างรวดเร็วว่าเอเจนต์ที่สร้างบนสแต็ก (stacks) ที่ต่างกันนั้นไม่เข้าใจกันโดยธรรมชาติ เอเจนต์ระดับองค์กรที่สร้างบนเฟรมเวิร์กเฉพาะทางจะไม่ประกาศความสามารถของตนสู่โลกภายนอก
หากไม่มีมาตรฐาน ทุกการเชื่อมต่อ (integration) จะกลายเป็นโปรเจกต์แบบสั่งทำพิเศษ (custom project) วิศวกรต้องเขียนโค้ดเชื่อมต่อ (glue code) แบบครั้งเดียวทิ้ง บริบทสูญหายไประหว่างการสื่อสาร นโยบายความปลอดภัยก็ไม่สอดคล้องกัน เพราะการส่งต่องานแต่ละครั้งเป็นการทำขึ้นมาเฉพาะกิจ
Agent Cards: เรซูเม่สาธารณะ
A2A นำเสนอ Agent Cards เพื่อเป็นวิธีให้เอเจนต์ประกาศว่าพวกมันคือใครและสามารถทำอะไรได้บ้าง
ให้คิดว่า Agent Card คือเรซูเม่ที่เครื่องจักรสามารถอ่านได้ (machine-readable résumé) เอเจนต์จะเผยแพร่การ์ดที่อธิบายโดเมน (domain) ของมัน, อินพุต (inputs) ที่จำเป็น, เอาต์พุต (outputs) ที่คาดหวัง และข้อจำกัดใดๆ ในงานที่มันรับทำ เอเจนต์ด้านการชำระเงินอาจประกาศว่ามันประมวลผลคำขอคืนเงินที่มียอดไม่เกินจำนวนที่กำหนด เมื่อได้รับ order ID และรหัสเหตุผล (reason code) และจะส่งคืนหมายเลขยืนยันหรือข้อผิดพลาด ส่วนผู้เชี่ยวชาญด้านข้อมูลอาจระบุว่ารับไฟล์ที่มีโครงสร้าง (structured files) ขนาดไม่เกินที่กำหนด และจะส่งคืนข้อมูลอนุกรมเวลา (time-series data) ที่ทำความสะอาดแล้วภายในระยะเวลาที่คาดการณ์ได้
ก่อนที่จะมอบหมายงาน เอเจนต์ผู้ร้องขอจะอ่านการ์ดนั้น เพื่อทำความเข้าใจว่าเอเจนต์เป้าหมายมีความสามารถในการทำงานนั้นหรือไม่ มันจะเรียนรู้ว่า payload ต้องอยู่ในรูปแบบใด และรู้ว่าควรคาดหวังการตอบสนองแบบซิงโครนัส (synchronous response) หรือเป็นงานแบบอะซิงโครนัส (asynchronous task) ที่จะเสร็จสิ้นในภายหลัง
สิ่งนี้ช่วยขจัดความไม่แน่นอน แทนที่จะต้องเขียนโค้ดเชื่อมต่อแบบตายตัว (hardcoding) กับพาร์ทเนอร์ทุกรายที่เป็นไปได้ เอเจนต์สามารถเรียกดูความสามารถที่มีอยู่และเลือกเพื่อนร่วมทีมที่เหมาะสมได้อย่างคล่องตัว (dynamically)
Tasks: งานที่มีโครงสร้าง ไม่ใช่แค่การเรียก API
เอเจนต์ไม่จำเป็นต้องแชทเหมือนมนุษย์ พวกมันต้องการส่งต่องานอย่างเป็นระบบ A2A จำลองการแลกเปลี่ยนนี้ในรูปแบบของ Task
Task เป็นมากกว่า
