# Workflow

รันสคริปต์ที่ประสานงานเอเจนต์ย่อยจำนวนมากในแบบกำหนดได้แน่นอน — fan-out, ไปป์ไลน์, ลูป และการตรวจสอบ — สำหรับงานที่กว้างเกินไป ไม่แน่นอนเกินไป หรือใหญ่เกินกว่าที่บริบทเดียวจะรองรับ

## เมื่อใดควรใช้

- แยกย่อยงานขนาดใหญ่และครอบคลุมงานนั้นแบบขนานด้วยเอเจนต์จำนวนมาก
- ตรวจสอบไขว้ข้อค้นพบด้วยการตรวจสอบแบบอิสระหรือแบบปฏิปักษ์ก่อนที่จะเชื่อถือ
- รับมือกับขนาดที่บริบทเดียวรองรับไม่ได้: การย้ายข้อมูล, การตรวจสอบ, การกวาดทั่วหลายไฟล์ในวงกว้าง

## วิธีการทำงาน

- รันในเบื้องหลัง คุณจะได้รับการแจ้งเตือนเมื่อเสร็จสิ้น ดูความคืบหน้าแบบเรียลไทม์ได้ด้วย `/workflows`
- สคริปต์ประสานงานเอเจนต์ด้วย `agent()`, `parallel()`, `pipeline()` และ `phase()`
- `pipeline()` ส่งแต่ละรายการไหลผ่านขั้นตอนต่างๆ โดยไม่มีแบร์ริเออร์ (ค่าเริ่มต้น); `parallel()` คือแบร์ริเออร์ที่รอผลลัพธ์ทั้งหมด
- เมื่อใช้ร่วมกับ schema แต่ละครั้งที่ `agent()` จะคืนค่าข้อมูลที่มีโครงสร้างและผ่านการตรวจสอบแล้วแทนข้อความอิสระ

## หมายเหตุ

- รันเฉพาะเมื่อผู้ใช้เลือกการประสานงานแบบหลายเอเจนต์อย่างชัดเจน มันสามารถสร้างเอเจนต์จำนวนมากและใช้ token จำนวนมาก
- จำนวนการทำงานพร้อมกันมีขีดจำกัดต่อ workflow; เอเจนต์ส่วนเกินจะเข้าคิวและรันเมื่อมีช่องว่าง
- หากต้องการเอเจนต์ย่อยเพียงตัวเดียว ให้ใช้เครื่องมือ `Agent` แทน — สงวน Workflow ไว้สำหรับ fan-out จริงๆ

## แนวคิดที่เกี่ยวข้อง

- สร้างขึ้นบนเครื่องมือ `Agent` โดยรันเอเจนต์จำนวนมากภายใต้โฟลว์การควบคุมแบบกำหนดได้แน่นอน
