ข้าม​ไป​ยัง​เนื้อหา

Workflow ต่าง​กับ Agent

บท​ที่​แล้ว​เรา​เปิด​กล่อง runtime ออก​มา​ดู​ข้าง​ใน — harness สี่​ชิ้น, loop แบบ gather → act → verify → repeat และ stop policy ที่​เป็น​นโยบาย​ประกอบ5 clause ก่อน​จะ​ลงมือ​สร้าง runtime ตัว​นั้น​ทีละชิ้นในบทหลังๆ มี​คำถาม​หนึ่ง​ข้อ​ที่​ต้อง​ตอบ​ให้​จบ ก่อน เอื้อม​มือ​ไป​หา harness ด้วย​ซ้ำ — สิ่ง​ที่​คุณ​กำลัง​จะ​สร้าง​ควร​เป็น agent จริงๆ หรือ​ควร​เป็น​แค่ workflow ธรรมดา บท​นี้​เป็น​บท​วาง​จุดยืน (thesis) ของ​ทั้ง​คอร์ส code น้อย แต่​เส้น​แบ่ง​ที่​ลาก​ใน​บท​นี้​จะ​กำกับ​ทุก​บท​ที่​เหลือ

📦 code ตัวอย่าง

บท​นี้​ยัง​ต่อยอด agent Order ตัว​เดิม​จาก​คอร์ส #15 (พร้อม context layer จาก​คอร์ส #16) — repo kaen-food-ordering (กำลัง​จัด​ทำ) code ใน​บท​นี้​แสดง สอง​รูปทรง ของ Order flow เดียวกัน — แบบ workflow ที่​เรา​คุม​ลำดับ​เอง กับ​แบบ agent ที่ model คุม​ลำดับ​เอง — เพื่อ​ให้​เห็น​เส้น​แบ่ง​ด้วย​ตา ไม่มี API surface ใหม่ ทุก​กติกา​ฝั่ง​แชต​จาก​บท​ที่ 1 ยัง​ยึด​เดิม​ทุก​ข้อ

Anthropic ลาก​เส้น​แบ่ง​สถาปัตยกรรม​ไว้​ประโยค​เดียว และ​เรา​จะ​ยก​มา​ทั้ง​สอง​ครึ่ง​เพราะ​ทุก​คำ​มี​น้ำหนัก — workflowWorkflowตาม​นิยาม BEA: 'systems where LLMs and tools are orchestrated through predefined code paths' — เส้นทาง​ถูก​กำหนด​ไว้​ใน code จึง​คาด​เดา​ได้​และ test ได้ (prompt chaining, routing, parallelization, orchestrator-workers, evaluator-optimizer) เป็น​ที่มา​ของ​คุณค่า​ส่วน​ใหญ่​ใน​โปร​ดัก​ชัน และ​เป็น​ค่า​เริ่มต้น​ที่​ควร​เอื้อมหา​ก่อน autonomous loop ตรง​ข้าม​กับ Autonomous AgentArchitecture คือ “systems where LLMs and tools are orchestrated through predefined code paths” ส่วน agentAutonomous Agentตาม​นิยาม BEA: 'systems where LLMs dynamically direct their own processes and tool usage, maintaining control over how they accomplish tasks' — model กำหนด​ทิศทาง​ของ​ตัวเอง​แบบ dynamic; harness + loop ของ​บท1 คือ​สิ่ง​ที่​ทำให้​ระบบ​เป็น agent ไม่ใช่ workflow แลก​ความ​ยืดหยุ่น​มา​ด้วย latency + cost + โอกาส​สะสม error จึง​ต้อง​คุ้ม​ค่า​ก่อน​จึง​จะ​ใช้ (ประกอบ​จริง​ใน​บท8)Architecture คือ “systems where LLMs dynamically direct their own processes and tool usage, maintaining control over how they accomplish tasks.”

อ่าน​ช้าๆ เส้น​แบ่ง​อยู่​ที่​คำถาม​เดียว: ใคร​เป็น​คน​กำหนด​ลำดับ​ของ​ขั้นตอน?

  • ใน workflow ลำดับ​ถูก​เขียน​ตาย​ไว้​ใน code C# ของ​คุณ — model ถูก​เรียก​ใน​จุด​ที่​คุณ​วาง​ไว้ ตาม​ลำดับ​ที่​คุณ​คุม model เป็น​แค่​ขั้นตอน​หนึ่ง​ใน​เส้นทาง​ที่​คุณ​ออกแบบ
  • ใน agent ลำดับ​ถูก​กำหนด​โดย ตัว model เอง ผ่าน loop — model ตัดสิน​ว่า​จะ​เรียก tool ตัว​ไหน เมื่อไร กี่​ครั้ง แล้ว​จึง​ประกาศ​ว่า​เสร็จ นี่​คือ harness กับ stop policy จาก​บท​ที่ 1 ที่​ทำงาน​อยู่

พูด​อีก​อย่าง: harness และ loop จาก​บท​ที่ 1 คือ​สิ่ง​ที่​ทำให้​ของ​กลาย​เป็น agent ไม่ใช่ workflow ถ้า​คุณ​ถอด while ออก​แล้ว​เรียง​ลำดับ​การ​เรียก model เอง​ใน code สิ่ง​ที่​เหลือ​คือ workflow และ​นี่​คือ​ประเด็น​ที่​ต้อง​กลืน​ให้​ลง — มูลค่า​จริง​ส่วน​ใหญ่​ที่​ทีม​สร้าง​ได้​ใน​โปร​ดัก​ชัน​คือ workflow ไม่ใช่ agent 🔁 (บท​ที่ 1 · loop คือ​เครื่องยนต์ เปิด​กล่อง runtime นั้น​ไว้​แล้ว บท​นี้​ถาม​ว่า​เมื่อไร​ควร​เปิด​มัน)

เส้น​แบ่ง​นี้​ต่าง​จาก​คำถาม​เรื่อง 'ขอบเขต' ของ​คอร์ส #12

คอร์ส​นี้​สอน กลไก ของ runtime — workflow กับ agent ต่าง​กัน​เชิง​โครงสร้าง​อย่างไร ส่วน​คำถาม​ว่า “งาน​นี้​ควร​เป็น agent กี่​ตัว ขอบเขต​ของ​แต่ละ​ตัว​อยู่​ตรง​ไหน” เป็น​เรื่อง​ของ​คอร์ส #12 Agent as Bounded Context เส้น​แบ่ง workflow/agent เป็น​คนละ​แกน​กับ​เส้น​แบ่ง​ขอบเขต — แต่​ทั้ง​สอง​แกน​เดิน​ตาม​หลัก​เดียวกัน​คือ เริ่ม​จาก​สิ่ง​ที่​ง่าย​ที่สุด

หลัก​ที่​อยู่​ใต้ taxonomy ทั้ง​อัน: หา​ทาง​ที่​ง่าย​ที่สุด​ก่อน

หัวข้อ​ที่​มีชื่อ​ว่า “หลัก​ที่​อยู่​ใต้ taxonomy ทั้ง​อัน: หา​ทาง​ที่​ง่าย​ที่สุด​ก่อน”

ก่อน​จะ​ไล่ pattern ทั้ง​ห้าในบทถัดๆ ไป ต้อง​ปักหลัก​คิด​ที่​รองรับ​ทั้ง taxonomy ไว้​ก่อน Anthropic รายงาน​สิ่ง​ที่​เขา​พบ​จาก​การ​ช่วย​หลาย​ทีม​สร้าง agent ตรงๆ — “Consistently, the most successful implementations weren’t using complex frameworks or specialized libraries. Instead, they were building with simple, composable patterns.” ระบบ​ที่​สำเร็จ​ที่สุด​ไม่​ได้​ใช้ framework ที่​ซับซ้อน แต่​ประกอบ​จาก pattern ง่ายๆ ที่​ต่อ​กัน​ได้

หลัก​ที่​ตาม​มา​คือ​แกน​กลาง​ของ​ทั้ง​คอร์ส — “When building applications with LLMs, we recommend finding the simplest solution possible, and only increasing complexity when needed.” หา​ทาง​ที่​ง่าย​ที่สุด​ก่อน แล้ว ค่อย เพิ่ม​ความ​ซับซ้อน เมื่อ​จำเป็น เท่านั้น ประโยค​นี้​คือ​มาตร​วัด​ที่​เรา​จะ​ใช้​ตัดสิน​ทุก pattern ใน​บท​ที่ 3–8: multi-actor structure ใน​บท​ที่ 4/5 ไม่ใช่ “อัปเกรด” ที่​เอื้อม​ไป​หยิบ แต่​เป็น ข้อ​ยกเว้น ที่​ต้อง​พิสูจน์​ว่า​คุ้ม

และ​ข้อ​สรุป​ที่​แหลม​ที่สุด​ของ​หลัก​นี้​คือ บางที​คำ​ตอบ​ที่​ถูก​คือ อย่า​สร้าง agent เลย“This might mean not building agentic systems at all. Agentic systems often trade latency and cost for better task performance, and you should consider when this trade-off makes sense.” agent แลก latency และ cost เพื่อ​ได้ task performance ที่​ยืดหยุ่น​ขึ้น การ​แลก​นี้​ต้อง​คุ้ม​ก่อน​ถึง​จะ​ทำ ไม่ใช่​ทำ​เพราะ​มัน​ฟัง​ดู​ล้ำ​กว่า

เส้น​เลือกตรงๆ ที่ Anthropic ให้​ไว้​คือ — “Workflows offer predictability and consistency for well-defined tasks, whereas agents are the better option when flexibility and model-driven decision-making are needed at scale.” งาน​ที่​นิยาม​ชัด เดิน​เส้น​เดิม​ทุก​ครั้ง → workflow (คาด​เดา​ได้ เทส​ได้) ส่วน​งาน​ที่​ต้องการ​ความ​ยืดหยุ่น​และ​ให้ model ตัดสิน​ใจ​เอง​ใน​สเกล​ใหญ่ → agent

ลอง​เอา flow เดียวกัน​จาก agent Order — “ออเดอร์​ล่าช้า​ไหม ถ้า​ล่าช้า​ให้​คืน​เงิน​แล้ว​แจ้ง​ลูกค้า” — มา​เขียน​ทั้ง​สอง​แบบ วาง​เทียบ​กัน​จะ​เห็น​เส้น​แบ่ง​ชัด​ที่สุด

แบบ workflow — ลำดับ getOrder → ตรวจ → ร่างข้อความ → issueRefund ถูก​เขียน​ตาย​ไว้​ใน code C# model ถูก​เรียก หนึ่ง​ครั้ง ใน​จุด​เดียว​ที่​เรา​วาง​ไว้ (ร่าง​ข้อความ) ส่วน​การ​ตัดสิน​ใจ​ว่า ล่าช้า​ไหม และ สั่ง​คืน​เงิน​เมื่อไร เป็น if กับ​การ​เรียก method ธรรมดา ไม่ใช่ model:

// WORKFLOW — เส้นทางถูกกำหนดล่วงหน้าใน code; "เรา" คุมลำดับ model เป็นแค่ขั้นตอนหนึ่ง
async Task<string> HandleLateOrder(string orderId, CancellationToken ct) {
Order order = await GetOrder(orderId); // 1. code ตัดสินว่าเรียกอะไรก่อน ไม่ใช่ model
if (!order.IsLate) return "ออเดอร์ยังอยู่ในกำหนด"; // 2. gate: แตกแขนงด้วย if ธรรมดา
ChatResponse note = await client.GetResponseAsync( // 3. เรียก model "หนึ่งครั้ง" เพื่อร่างข้อความ
$"ร่างข้อความแจ้งลูกค้าว่าออเดอร์ {orderId} ล่าช้าและกำลังคืนเงิน", cancellationToken: ct);
await IssueRefund(orderId, order.Total); // 4. code สั่ง write action เอง ไม่ใช่ model
return note.Text; // ลำดับ 1→2→3→4 ตายตัว รันกี่ครั้งก็เดินเส้นเดิม
}

แบบ agent — คือ middleware loop จาก​บท​ที่ 1 ที่​เรา​ไม่​ได้​เขียนลำดับใดๆ เลย เรา​แค่​ยื่น tool ทั้ง​สาม​ให้​แล้ว​ปล่อย​ให้ model วางแผน​เอง​ว่า​จะ​เรียก​อะไร​ก่อน กี่​ครั้ง แล้ว​จึง​หยุด:

// AGENT — model กำหนดลำดับของตัวเองผ่าน tool ใน loop
IChatClient agent = anthropic.AsIChatClient("claude-opus-4-8") // bare id, ตัวอย่าง ณ 2026-07 — ไม่ต่อ suffix วันที่
.AsBuilder().UseFunctionInvocation().Build();
ChatResponse resp = await agent.GetResponseAsync(
"ออเดอร์ A-1002 อยู่ไหน ถ้าส่งช้าให้คืนเงิน", options, ct);
// เราไม่ได้เขียนว่า getOrder ก่อนหรือ getDeliveryStatus ก่อน — model ตัดสินลำดับนั้นเอง แล้ว loop หยุดเมื่อไม่มี tool call

code สอง​ก้อน​นี้​ทำงาน​เดียวกัน​บน​เคสง่ายๆ แต่​ราคา​ต่าง​กัน​คนละ​เรื่อง แบบ workflow ให้ ความ​คาด​เดา​ได้​และ​ความ​สม่ำเสมอ — ทุก​ครั้ง​ที่​ล่าช้า​จริง​จะ​เดิน getOrder → refund → แจ้ง เป๊ะ เทส​ได้​ตรง​ไป​ตรง​มา และ​รู้​ต้นทุน​ล่วงหน้า (เรียก model หนึ่ง​ครั้ง) ส่วน​แบบ agent ยืดหยุ่น​กว่า — รับคำ​ถาม​พลิกแพลง​ได้​โดย​ไม่​ต้อง​แก้ code — แต่​แลก​มา​ด้วย​จำนวน​รอบ​ที่ คาด​เดา​ยาก (จึง​ต้อง​มี stop policy) และ​ต้นทุน token ที่​โต​ขึ้น สำหรับ Order flow ที่​นิยาม​ชัด​แบบ​นี้ workflow มัก​เป็น​คำ​ตอบ​ที่​ถูก และ​คุณ​เก็บ agent ไว้​ให้​กับ​งาน​ที่​เส้น​ทางพยากรณ์ไม่ได้จริงๆ

flowchart TB
  subgraph WF["Workflow — code กำหนดเส้นทาง"]
    direction TB
    A1["getOrder"] --> A2{"ล่าช้าไหม<br/>code ตัดสินด้วย if"}
    A2 -->|"ไม่"| A3["แจ้งยังไม่ถึงกำหนด"]
    A2 -->|"ใช่"| A4["ร่างข้อความ<br/>เรียก model 1 ครั้ง"]
    A4 --> A5["issueRefund<br/>code สั่งเอง"]
  end
  subgraph AG["Agent — model กำหนดเส้นทาง"]
    direction TB
    B1["model วางแผนใน loop"] --> B2{"เรียก tool ไหนต่อ<br/>model ตัดสิน"}
    B2 -->|"ยังไม่จบ"| B3["dispatch tool<br/>ผนวกผลกลับ"]
    B3 --> B1
    B2 -->|"ไม่มี tool call"| B4["ตอบ แล้วจบ"]
  end
  classDef model fill:#b91c1c,stroke:#7f1d1d,color:#f8fafc;
  class B1,B2 model;

คำ​บรรยาย​ภาพ: flow เดียวกัน​สอง​รูปทรง ฝั่ง​ซ้าย (workflow) การ​แตก​แขนง​และ​ลำดับ​อยู่​ใน code — if เป็น​คน​ตัดสิน​ว่า​ล่าช้า​ไหม code เป็น​คน​สั่ง issueRefund model ถูก​เรียก​แค่​จุด​เดียว ฝั่ง​ขวา (agent) ช่อง​สี​แดง​คือ​จุด​ที่ model เป็น​ผู้​ตัดสิน​ลำดับ​เอง — เลือก tool ถัด​ไป​ใน loop จนกว่า​จะ​ไม่มี tool call แล้ว​จึง​หยุด เส้น​แบ่ง​คือ “ใคร​กำหนด​ลำดับ” ไม่ใช่ “งาน​ยาก​แค่​ไหน”

ก่อน​ตัดสิน​ใจ​สร้าง agent ให้​เดิน​ผ่าน​ด่าน​สี่​คำถาม​นี้ — ถ้า​ตอบ “ไม่” ข้อ​ใด​ข้อ​หนึ่ง ให้​ถอย​ไป​ทำ workflow:

  1. ความ​ซับซ้อน (complexity) — เส้นทาง​พยากรณ์​ล่วงหน้า​ไม่​ได้​จริง​ไหม? ถ้า​เส้นทาง​เป็น decision tree ที่​คุณ​เขียน​ออก​มา​เป็น if/switch ได้​ครบ นั่น​คือ workflow อย่า​ใส่ loop
  2. มูลค่า (value) — ความ​ยืดหยุ่น​ที่​ได้​จาก agent คุ้ม​กับ latency และ cost ที่​แลก​ไป​ไหม? งาน​ปริมาณ​มาก​ที่​มาร์จิน​บาง​อาจ​กิน​ราคา agent ไม่​ไหว
  3. ความ​เป็น​ไป​ได้ (viability) — model ทำงาน​นี้​ใน loop ได้​เชื่อถือ​พอ​ไหม หรือ error จะ​สะสม​จน​พัง? (บท​ที่ 8 จะ​ให้​ตัวเลข​ว่า​ทำไม error ยิ่ง​หลาย​รอบ​ยิ่ง​ทบ)
  4. ต้นทุน​ของ​ความ​ผิด (cost of error) — ถ้า agent ตัดสิน​ผิดกลาง loop (เช่น​สั่ง issueRefund เกิน) ความ​เสียหาย​รับ​ได้​ไหม หรือ​ต้อง​มี checkpoint คุม? write action ที่​มี​ผล​ข้าง​เคียง​ยก​ระดับ​ต้นทุน​ข้อ​นี้​ทันที

ด่าน​นี้​ไม่​ได้​บอกว่า agent ไม่​ดี — มัน​บอกว่า agent มี ราคา และ​ราคา​นั้น​ต้อง​มี​คน​จ่าย​ด้วย​มูลค่า​ที่​ได้​กลับ​มา นี่​คือ​หลัก “เพิ่ม​ความ​ซับซ้อน​เมื่อ​จำเป็น​เท่านั้น” ที่​ลงมือ​ทำได้​จริง

บันได​ของ​บท​ที่​เหลือ — ทุก​ขั้น​คือ​จุด​บน​เส้น​เดียวกัน

หัวข้อ​ที่​มีชื่อ​ว่า “บันได​ของ​บท​ที่​เหลือ — ทุก​ขั้น​คือ​จุด​บน​เส้น​เดียวกัน”

pattern ทั้งหมด​ใน​คอร์ส​นี้​เรียง​อยู่​บน​บันได​ความ​ง่าย-ก่อน-ซับซ้อน​เส้น​เดียว ไล่​จาก​ล่าง​ขึ้น​บน:

  • บท​ที่ 3 — prompt chainingPrompt Chainingworkflow ตาม BEA: 'decomposes a task into a sequence of steps, where each LLM call processes the output of the previous one' — หั่น​งาน​เป็น​ลำดับ​ตายตัว แต่ละ call ประมวล​ผล output ของ call ก่อนหน้า คั่น​ด้วย gate (ตรวจ​ระหว่าง​ขั้น​แล้ว bail/escalate ได้) เหมาะ​เมื่อ​งาน​หั่น​เป็น subtask ตายตัว​ได้​อย่าง​สะอาดProcess & routing (workflow): ต่อ​การ​เรียก model เป็น​ลำดับ​ตายตัว​พร้อม gate และ​จัด​เส้นทาง​ด้วย​การ classify — เส้น​ทางใน code ยัง​ไม่ใช่ agent
  • บท​ที่ 4 — parallelization (workflow): แตก​งาน​อิสระ​ออก​วิ่ง​ขนาน — เฉพาะ​เมื่อ subtask อิสระ​ต่อ​กัน​จริง
  • บท​ที่ 5 — orchestrator-workers (workflow ที่​ก้ำกึ่ง): model นำ​แตก​งาน​เอง — pattern ที่​แพง​ที่สุด ต้อง​พิสูจน์​ว่า​คุ้ม
  • บท​ที่ 6 — evaluator-optimizer: สร้าง → ประเมิน → ปรับ ใน loop และ เมื่อไร​ไม่​ควร reflect
  • บท​ที่ 7 — ความ​ทนทาน: tool-error recovery, retry, timeout, idempotency
  • บท​ที่ 8 — 🔁 autonomous-agent capstone: ประกอบ​ทุก​อย่าง​เป็น agent จริง​ที่​มี compound stop policy — และ​ปิด​คอร์ส​ด้วย​ความ​ซื่อสัตย์​ว่า agent แพง​กว่า ใช้​สิ่ง​ที่​ง่าย​ที่สุด​ที่​ได้​ผล

ทุก pattern ใน​บท​ที่ 3–6 ยัง​เป็น workflow — เส้นทาง​อยู่​ใน code ของ​คุณ agent เต็ม​ตัว​ที่ model คุม​ลำดับ​เอง​รอ​ไว้​ที่​บท​ที่ 8 ที่​เดียว นั่น​คือ​ลำดับ​ที่​ตั้งใจ: เรา​ไต่​ความ​ซับซ้อน​ขึ้น​ที​ละ​ขั้น ไม่​กระโดด​ไป​หา autonomous loop ตั้งแต่​แรก

ตอน Anthropic สรุป taxonomy เขา​ทิ้ง​หลัก​ไว้​สาม​ข้อ​ที่​กำกับ​ทุก​บท​ลงมือ​ของ​คอร์ส​นี้:

  • “Maintain simplicity in your agent’s design.” — รักษา​ความ​เรียบ​ง่าย​ของ design ไว้ (บท​ที่ 4/5/8 หมุน​รอบ​ข้อ​นี้)
  • “Prioritize transparency by explicitly showing the agent’s planning steps.” — ให้​เห็น​ขั้น​การ​วางแผน​ของ agent อย่าง​โปร่งใส (บท​ที่ 8 พิมพ์ trace ทุก tool call ก็​มา​จาก​ข้อ​นี้)
  • “Carefully craft your agent-computer interface (ACI) through thorough tool documentation and testing.” — ประณีต​กับ agent-computer interface ผ่าน​การ​เขียน doc ของ tool และ​การ​เท​สอ​ย่าง​จริงจัง

ข้อ​สุดท้าย​มี​กฎ​นิ้ว​หัว​แม่​มือ​ที่​คุ้ม​ค่า​จำ — “think about how much effort goes into human-computer interfaces (HCI), and plan to invest just as much effort in creating good agent-computer interfaces (ACI).” ทุ่ม​แรง​กับ interface ที่ tool คุย​กับ model เท่ากับ​ที่​คุณ​ทุ่ม​ให้ interface ที่​คน​คุย​กับ​เครื่อง — บท​ที่ 7 เรื่อง​ความ​ทนทาน​คือ ACI ที่​ทำ​จริง

เส้น​แบ่ง​ของ​บท​นี้​มี​แกน​เดียว: ใคร​กำหนด​ลำดับ — code ของ​คุณ (workflow) หรือ​ตัว model เอง (agent) harness กับ loop จาก​บท​ที่ 1 คือ​สิ่ง​ที่​ทำให้​ของ​กลาย​เป็น agent แต่​หลัก​ที่​อยู่​ใต้​ทั้ง taxonomy คือ หา​ทาง​ที่​ง่าย​ที่สุด​ก่อน แล้ว​ค่อย​เพิ่ม​ความ​ซับซ้อน​เมื่อ​จำเป็น — และ​บางที​คำ​ตอบ​ที่​ถูก​คือ​อย่า​สร้าง agent เลย งาน​ที่​นิยาม​ชัด​อย่าง Order flow ส่วน​ใหญ่​คือ workflow ที่​คาด​เดา​ได้​และ​เทส​ได้ บท​หน้า​เรา​ลงมือ workflow pattern แรก — prompt chaining ที่​ต่อ​การ​เรียก model เป็น​ลำดับ​พร้อม gate และ routing ที่ classify แล้ว​จัด​เส้นทาง


🔗 อ้างอิง​ต้นทาง​ของ​บท​นี้

บท​นี้​อิง​ต้นทาง​ที่​ลง​วัน​ที่​กำกับ อ่าน​ต่อ​ได้​โดยตรง:

  • Anthropic, “Building Effective Agents” (2024-12-19) — เส้น​แบ่ง workflow (“orchestrated through predefined code paths”) กับ agent (“dynamically direct their own processes and tool usage”), หลัก “finding the simplest solution possible, and only increasing complexity when needed”, คำ​เตือน “not building agentic systems at all”, เส้น​เลือก workflow-vs-agent และ​หลัก​ปิด​ท้าย​สาม​ข้อ (simplicity / transparency / ACI)

เช็กความเข้าใจ — บทที่ 2

ข้อ 1 / 3

ตามเส้นแบ่งของ Anthropic อะไรคือความต่างเชิงโครงสร้างระหว่าง workflow กับ agent?