spinny:~/writing $ less agentic-infrastructure-stack.md
12เรามักจะพูดถึงเฟรมเวิร์กเอเจนต์ LangGraph, CrewAI, AutoGen, SDK ต่างๆ, ลูป, การเรียกใช้เครื่องมือ, หน่วยความจำ, ผู้วางแผน, นักวิจารณ์, หัวหน้างาน ถ้อยคำที่เป็นประโยชน์ทั้งสิ้นเพื่อความดี แต่ยิ่งฉันดูตัวแทนที่ใช้งานจริงมากเท่าไร สำหรับฉันก็ยิ่งดูเหมือนว่าส่วนที่น่าสนใจได้เคลื่อนไปต่ำกว่าระดับเฟรมเวิร์กมากขึ้นเท่านั้น34คำถามไม่ได้เป็นเพียงอีกต่อไป: ฉันต้องใช้ไลบรารีใดเพื่อทำให้โมเดลขั้นตอนคิด?56คำถามที่แท้จริงคือ: ตัวแทนรายนี้จะอาศัยอยู่ที่ไหนเมื่อเขาหยุดเป็นบัญชีทดลอง?78เนื่องจากเอเจนต์ที่จริงจังไม่ใช่ฟังก์ชันที่เรียกใช้โมเดลและส่งคืนข้อความ เป็นระบบกระจายขนาดเล็ก โดยจะต้องอ่านบริบท ใช้เครื่องมือ รันโค้ด ไฟล์สัมผัส จดจำการตัดสินใจ ขออนุญาต ล้มเหลว รีสตาร์ท ทิ้งบันทึก ไม่เปลืองงบประมาณ และไม่กลายเป็นรถปราบดินภายในพื้นที่เก็บข้อมูลการผลิต910โครงเป็นพวงมาลัย โครงสร้างพื้นฐานได้แก่ ถนน เบรก ที่จอดรถ ประกันภัย และบุคคลที่รู้ว่ากุญแจอยู่ที่ไหน1112## เพราะตอนนี้มีคนพูดถึงกันเยอะมาก1314ในปี 2023 และ 2024 การสนทนาเน้นโมเดลเป็นหลัก LLM ใด? มีบริบทมากแค่ไหน? มีค่าใช้จ่ายเท่าไร? เขาเก่งการเขียนโปรแกรมแค่ไหน?1516ในปี 2568 และ 2569 การสนทนาได้เปลี่ยนไป โมเดลต่างๆ นั้นดีพอที่จะทำงานจริงได้ แต่นั่นเป็นเหตุผลว่าทำไมบิตที่น่าเบื่อจึงมองเห็นได้: รันไทม์ ความปลอดภัย ตัวเชื่อมต่อ ข้อมูลระบุตัวตน ความสามารถในการสังเกต การเรียกใช้โค้ด การปรับใช้ การย้อนกลับ1718เป็นการเปลี่ยนแปลงตามธรรมชาติจากเวทมนตร์ไปสู่วิศวกรรม1920เมื่อตัวแทนเพียงต้องการสร้างการตอบกลับ การแชทก็เพียงพอแล้ว เมื่อคุณต้องการเปิดคำขอดึง สืบค้นฐานข้อมูล เรียก CRM เริ่มงาน นำทางไซต์ อ่าน Slack คอมไพล์โค้ด และอัปเดตเอกสาร คุณต้องมีระบบปฏิบัติการล้อมรอบ2122ไม่ใช่ในความหมายที่แท้จริง ในแง่องค์กร2324## ชิ้นแรก: รันไทม์ที่ตัวแทนสามารถคงอยู่ได้2526ตัวแทนมักจะทำงานเป็นขั้นตอน ดูสถานะ เลือกการกระทำ ใช้เครื่องมือ สังเกตผลลัพธ์ ปรับปรุงแผน ทำซ้ำ2728หากการวนซ้ำนี้อยู่ในคำขอ HTTP เดียว คุณจะประสบปัญหาทันที การกระทำบางอย่างช้า บางส่วนกำลังรอข้อมูลจากมนุษย์ บางอย่างล้มเหลวและต้องลองอีกครั้ง บางส่วนต้องคงอยู่หลังจากการปรับใช้หรือการหมดเวลา2930นี่คือจุดที่เวิร์กโฟลว์ คิว พื้นหลังงาน และสถานะแมชชีนที่คงทนเข้ามามีบทบาท พวกเขาไม่ได้มีเสน่ห์ แต่เป็นความแตกต่างระหว่างตัวแทนที่ดูฉลาดในการสาธิตกับตัวแทนที่คุณสามารถออกจากงานไปดื่มกาแฟได้3132สำหรับฉันรันไทม์แบบตัวแทนต้องตอบคำถามที่เป็นรูปธรรมมาก:3334- ฉันจะบันทึกสถานะระหว่างขั้นตอนหนึ่งไปอีกขั้นได้ที่ไหน35- จะเกิดอะไรขึ้นหากกระบวนการนี้หยุดทำงานกลางคัน?36- ฉันสามารถหยุดและขออนุมัติได้หรือไม่?37- ฉันสามารถเล่นซ้ำการวิ่งเพื่อทำความเข้าใจว่าทำไมเขาถึงเลือกเช่นนั้นได้หรือไม่38- ฉันสามารถจำกัดระยะเวลา หน่วยความจำ เครื่องมือ และค่าใช้จ่ายได้หรือไม่3940Vercel ผลักดันอย่างหนักในด้านนี้ด้วย AI SDK, ฟังก์ชัน, เวิร์กโฟลว์ และเครื่องมือสำหรับการสร้างตัวแทนภายในเว็บแอปพลิเคชัน แต่ประเด็นไม่ใช่แค่ Vercel เท่านั้น ประเด็นก็คือตัวแทนจำเป็นต้องมีบ้านที่ปฏิบัติงาน ไม่ใช่จุดสิ้นสุดจุดเดียว4142## ชิ้นที่สอง: กระบะทราย เพราะตัวแทนจะต้องสามารถสกปรกได้โดยไม่แตกหัก4344ทันทีที่ตัวแทนเขียนโค้ดหรือดำเนินการคำสั่ง จำเป็นต้องมีแซนด์บ็อกซ์4546ดูเหมือนเป็นคำศัพท์เชิงเทคนิค แต่แนวคิดนี้เป็นแนวคิดภายในประเทศ คุณให้โต๊ะทำงานแก่เขา สามารถเปิดไฟล์ ติดตั้งการขึ้นต่อกัน รันการทดสอบ ทำการทดลอง สร้างเอาต์พุต ถ้าเขาทำผิด คุณก็ควบคุมความเสียหายได้ หากได้ผลให้ส่งเสริมผลลัพธ์4748แซนด์บ็อกซ์แบบตัวแทนควรมีคุณสมบัติบางประการ:4950- ระบบไฟล์แบบแยกส่วน51- CPU หน่วยความจำ และการจำกัดเวลา52- เครือข่ายควบคุม53- ความลับจะถูกติดตั้งเมื่อจำเป็นเท่านั้น54- บันทึกที่สมบูรณ์55- ความเป็นไปได้ในการส่งออกสิ่งประดิษฐ์56- ล้างการรีเซ็ตระหว่างการรันเมื่อจำเป็น5758Vercel Sandbox ดำเนินไปในทิศทางนี้ทุกประการ: สภาพแวดล้อมที่แยกออกมาเพื่อรันโค้ด ติดตั้งการขึ้นต่อกัน ทำงานกับไฟล์ และสร้างอาร์ติแฟกต์โดยไม่ต้องรันทุกอย่างในรันไทม์ของแอปพลิเคชันหลัก5960สิ่งนี้สำคัญกว่าที่คิด ต้นแบบเอเจนต์จำนวนมากกระโดดจากแบบจำลองไปยังระบบจริงโดยตรง โมเดลสามารถเรียกเครื่องมือได้ เครื่องมือสามารถทำสิ่งต่างๆได้ ทุกอย่างดูสวยงามจนกระทั่งคำสั่งแรกผิด การขึ้นต่อกันครั้งแรกติดตั้งผิดที่ โทเค็นแรกที่จบลงในบันทึก6162แซนด์บ็อกซ์เป็นวิธีสำหรับผู้ใหญ่ในการพูดว่า: เอาเลย แต่อยู่ตรงนี้6364## ชิ้นที่สาม: ปัญหา MCP และตัวเชื่อมต่อ6566Model Context Protocol ได้กลายเป็นหนึ่งในส่วนที่น่าสนใจที่สุดของระบบนิเวศ เนื่องจากพยายามสร้างมาตรฐานให้กับบางสิ่งที่ไม่สามารถจัดการได้อย่างรวดเร็ว: วิธีที่โมเดลค้นพบและใช้เครื่องมือภายนอก6768หากไม่มีมาตรฐาน แต่ละการบูรณาการก็เป็นเพียงเกาะเล็กๆ ตัวเชื่อมต่อสำหรับ GitHub ทำได้อย่างหนึ่ง อย่างหนึ่งสำหรับ Slack อีกอย่างหนึ่ง อย่างหนึ่งสำหรับฐานข้อมูลที่มีความหมายต่างกัน อีกอย่างหนึ่งสำหรับเบราว์เซอร์อัตโนมัติที่ดูเหมือนไม่มีอะไรเลย6970MCP เสนอภาษากลางระหว่างไคลเอนต์และเซิร์ฟเวอร์: เครื่องมือ ทรัพยากร ข้อความแจ้ง การอนุญาต การขนส่ง การค้นพบ มันไม่ได้แก้ปัญหาการกำกับดูแลและความปลอดภัยอย่างน่าอัศจรรย์ แต่ให้ไวยากรณ์7172และเรื่องไวยากรณ์ เมื่อตัวแทนสามารถเชื่อมต่อกับเครื่องมือมากมายได้ คำถามไม่ใช่แค่ "เขาทำได้ไหม" ปัญหาคือ “เขาเข้าใจไหมว่าเขาทำอะไรได้บ้าง มีขอบเขตอะไร ในนามของใคร และทิ้งร่องรอยอะไรเอาไว้”7374สำหรับฉัน MCP ไม่ใช่โฆษณาเกินจริงเพราะมัน "ทำการเรียกเครื่องมือ" เราทำอย่างนั้นแล้ว เป็นเรื่องฮือฮาเพราะมันเปลี่ยนจุดศูนย์ถ่วงจากการบูรณาการแบบเดี่ยวไปสู่แค็ตตาล็อกการปฏิบัติงานของเครื่องมือ7576ในสถาปัตยกรรมเอเจนต์ที่ดี MCP จะกลายเป็นแผงแพทช์:7778- GitHub สำหรับโค้ดและประเด็นต่างๆ79- หย่อนบริบทการสนทนา80- เชิงเส้นหรือจิราสำหรับงานตามแผน81- ฐานข้อมูลแบบอ่านอย่างเดียวสำหรับการวิเคราะห์82- เบราว์เซอร์หรือมีดโกนควบคุมสำหรับไซต์ภายนอก83- การจัดเก็บเอกสาร84- สภาพแวดล้อมการดำเนินการแบบแยกส่วน85- ระบบภายในถูกเปิดเผยด้วยสิทธิ์ที่เข้มงวด8687ส่วนที่ยุ่งยากก็คือแค็ตตาล็อกเครื่องมือที่ไม่มีนโยบายเป็นเพียงวิธีที่หรูหรากว่าในการสร้างความสับสนวุ่นวาย8889## ชิ้นที่สี่: ข้อมูลประจำตัวและการอนุญาต9091นี่คือพื้นที่ที่การสาธิตจำนวนมากเมินเฉย9293ตัวแทนกระทำการในนามของบุคคลอื่น ดังนั้นจึงต้องชัดเจนว่าใครเป็นเป้าหมายของการดำเนินการ9495มันใช้สิทธิ์ของผู้ใช้หรือไม่? ของบัญชีบริการ? ของพื้นที่ทำงาน? คุณมีสิทธิ์เข้าถึงชั่วคราวหรือถาวรหรือไม่? คุณสามารถอ่านทุกอย่างหรือเพียงแหล่งข้อมูลบางส่วนได้หรือไม่? คุณเขียนได้ไหม? ยกเลิกได้ไหม? เขาส่งข้อความหาคนจริงๆ ได้ไหม?9697หากคุณตอบคำถามเหล่านี้ได้ไม่ดี ไม่ช้าก็เร็ว คุณจะสร้างผู้ช่วยที่มีกุญแจบ้านและไม่มีความทรงจำว่าใครเป็นคนมอบกุญแจให้เขา9899กฎทั่วไปที่ฉันชอบคือ: เจ้าหน้าที่ต้องสามารถทำงานได้น้อยกว่ามนุษย์ ไม่เกินมนุษย์ และเมื่อเขาต้องทำอะไรที่เสี่ยงกว่านั้นเขาก็ต้องหยุดถาม100101ซึ่งหมายความว่า OAuth, ขอบเขตโทเค็น, การจัดการข้อมูลลับ, บันทึกการตรวจสอบ, นโยบายเครื่องมือ, รายการที่อนุญาต, ขั้นตอนการอนุมัติ ไม่ค่อยโรแมนติกเท่าไหร่ สิ่งที่จำเป็น102103## ชิ้นที่ห้า: ความทรงจำและบริบท แต่ไม่สะสมขยะ104105เจ้าหน้าที่จำเป็นต้องมีความทรงจำ แต่ความทรงจำนั้นอันตรายเมื่อมันกลายเป็นห้องใต้หลังคา106107หน่วยความจำมีอย่างน้อยสามประเภท:108109- เรียกใช้หน่วยความจำ: เกิดอะไรขึ้นในการดำเนินการนี้110- หน่วยความจำโครงการ: แบบแผน การตัดสินใจ ข้อจำกัด111- หน่วยความจำส่วนบุคคลหรือทีม: การตั้งค่า น้ำเสียง พิธีกรรม กระบวนการ112113การใส่ทุกอย่างลงในพรอมต์คือทางลัด มันทำงานจนไม่ทำงานอีกต่อไป หน่วยความจำที่เป็นประโยชน์จะต้องได้รับการดูแล: จัดทำดัชนี อัปเดต หมดอายุ ตรวจสอบแล้ว ทำให้สามารถอ้างอิงได้114115ตัวแทนที่จำไม่ดี แย่กว่าตัวแทนที่จำไม่ได้ เพราะเขาพูดด้วยความมั่นใจ116117ดังนั้นโครงสร้างพื้นฐานจึงต้องรวมถึงการดึงข้อมูล ไฟล์คำสั่ง ฐานความรู้ การฝังเมื่อจำเป็น แต่ยังรวมถึงการทำความสะอาดด้วย เราต้องการวัฒนธรรมแห่งความทรงจำ อะไรเข้ามา ใครเห็นชอบ เมื่อมันเสื่อมสลายไป ฉันจะแก้ไขมันได้อย่างไร118119## ชิ้นที่หก: การสังเกต การประเมิน และการเล่นซ้ำ120121หากตัวแทนทำผิดพลาด บันทึก "ที่เรียกว่าโมเดล" ยังไม่เพียงพอ122123คุณต้องการดูเส้นทาง เขาได้รับบริบทอะไร? มีเครื่องมืออะไรบ้าง? คุณเลือกเครื่องมือใด ด้วยข้อโต้แย้งอะไร? คุณได้รับคำตอบอะไร? ค่าใช้จ่ายเท่าไหร่? มันติดตรงไหน? มนุษย์ยอมรับสิ่งใดหรือไม่? โมเดลข้อผิดพลาด เครื่องมือ พรอมต์ ข้อมูลหรือการอนุญาตมีข้อผิดพลาดหรือไม่124125ในที่นี้ตัวแทนเป็นเหมือนระบบแบบกระจายมากกว่าแชทบอท126127คุณต้องมีการติดตามที่อ่านได้ ไม่ใช่แค่บันทึกข้อความ คุณต้องสามารถเล่นซ้ำการวิ่งได้ จำเป็นต้องเปรียบเทียบเอเจนต์เดียวกันสองเวอร์ชันกับงานที่ทราบ เราจำเป็นต้องวัดการถดถอย ไม่เพียงแต่ "ตอบได้ดีขึ้น" เท่านั้น แต่ยัง "ปิดตั๋วที่ถูกต้องโดยไม่ต้องสัมผัสไฟล์ที่ไม่พึงประสงค์"128129การประเมินแบบตัวแทนนั้นยากกว่าการประเมินแบบข้อความ เนื่องจากมีการดำเนินการด้วย การเปรียบเทียบสตริงที่คาดหวังนั้นไม่เพียงพอ คุณต้องดูลำดับ ผลข้างเคียง คุณภาพของสิ่งประดิษฐ์ เวลา ต้นทุน จำนวนการแทรกแซงของมนุษย์130131สิ่งที่ตลกคือเรามักจะกลับมาที่นั่นเสมอ: วิศวกรรมซอฟต์แวร์ การทดสอบ สภาพแวดล้อม การติดตาม การย้อนกลับ ยกเว้นว่าตอนนี้โค้ดยังตัดสินใจว่าจะทำอะไรต่อไป132133## ชิ้นที่เจ็ด: ส่วนต่อประสานของมนุษย์134135ตัวแทนไม่จำเป็นต้องอยู่แค่ในแชทเท่านั้น136137ตัวแทนบางคนจำเป็นต้องมีบอร์ด เพจอื่นๆ ที่มีสถานะและบันทึก อื่นๆ ของปุ่ม "อนุมัติ" More inline comments. ยังมี CLI อื่นๆ อีก138139UI เปลี่ยนพฤติกรรม หากวิธีเดียวที่จะควบคุมตัวแทนคือการเขียนข้อความยาว ผู้ใช้จะให้คำแนะนำที่คลุมเครือแก่ตัวแทน อย่างไรก็ตาม หากเขาเห็นแผน ความแตกต่าง แหล่งที่มา ความเสี่ยง และการดำเนินการต่อไป เขาก็จะสามารถแทรกแซงได้อย่างแม่นยำ140141โครงสร้างพื้นฐานของเอเจนต์ที่เหมาะสมประกอบด้วยพื้นผิวการควบคุม:142143- สถานะปัจจุบัน144- แผนแก้ไขได้145- ผลิตสิ่งประดิษฐ์146- ความแตกต่าง;147- คำขออนุมัติ148- ลำดับเหตุการณ์;149- ปุ่มหยุด;150- ปุ่มลองอีกครั้ง;151- สิทธิ์ที่มองเห็นได้152153It seems trivial, but it isn't. ความแตกต่างระหว่าง "AI ที่น่าขนลุก" และ "ผู้ช่วยที่เชื่อถือได้" มักจะเป็นเพียงส่วนหลังที่แสดงให้คุณเห็นว่ามันอยู่ในมือตรงไหน154155## กองจิต156157ถ้าผมจะวาดมันวันนี้ จำนวนตัวแทนขั้นต่ำจะเป็นดังนี้:1581591. โมเดล: การใช้เหตุผล การสร้าง การเรียกใช้เครื่องมือ ต่อเนื่องหลายรูปแบบ หากจำเป็น1602. การเรียบเรียง: วนซ้ำ ขั้นตอน ผู้วางแผน นโยบาย มนุษย์ในวง1613. รันไทม์ที่คงทน: เวิร์กโฟลว์ คิว ลองใหม่ หยุดชั่วคราว ดำเนินการต่อ1624. Sandbox: code execution, isolated file system, limitations, artifacts.1635. เลเยอร์เครื่องมือ: MCP, API ภายใน, เบราว์เซอร์, ฐานข้อมูล, พื้นที่เก็บข้อมูล1646. ชั้นข้อมูลประจำตัว: OAuth ขอบเขต ความลับ การตรวจสอบ นโยบาย1657. ชั้นหน่วยความจำ: บริบทของโปรเจ็กต์ การดึงข้อมูล คำแนะนำ การหมดอายุ1668. ความสามารถในการสังเกต: ติดตาม เล่นซ้ำ ประเมิน ต้นทุน และตัวชี้วัดคุณภาพ1679. พื้นผิวของผลิตภัณฑ์: แชทเมื่อเพียงพอ แดชบอร์ดเมื่อจำเป็น ตรวจสอบเมื่อมีความสำคัญ168169Agentic Framework ครอบคลุมจุดที่ 2 และจุดที่ 1 เป็นหลัก ส่วนที่เหลือเป็นงานจริง170171## สิ่งที่ผมจะทำในทางปฏิบัติ172173หากทีมบอกฉันว่า “เราต้องการตัวแทนในการผลิต” ฉันจะไม่เริ่มต้นด้วยตัวแทนสิบคน174175ฉันจะเริ่มต้นด้วยขั้นตอนการทำงานเล็กๆ ซ้ำๆ และสังเกตได้ ตัวอย่างเช่น: ประชาสัมพันธ์การบำรุงรักษาแบบเปิด อัปเดตเอกสารจากปัญหาที่ปิดไปแล้ว เตรียมการตรวจสอบรายสัปดาห์ คัดแยกข้อบกพร่องที่ซ้ำกัน สร้างการทดสอบสำหรับไฟล์ที่ได้รับผลกระทบ176177จากนั้นฉันจะกำหนดขอบเขตที่ชัดเจนมาก:178179- ห้ามเขียนโดยไม่มีสาขาหรือแซนด์บ็อกซ์180- ไม่มีความลับในพรอมต์;181- เครื่องมือในรายการที่อนุญาต182- การอนุมัติของมนุษย์สำหรับการกระทำภายนอก183- บันทึกและการติดตามที่จำเป็น184- งบประมาณต่อการวิ่ง;185- สามารถตรวจสอบเอาต์พุตได้เสมอ186187เมื่อนั้นฉันก็จะขยาย188189เจ้าหน้าที่ไม่ได้ล้มเหลวเพียงเพราะโมเดลเข้าใจผิด พวกเขาล้มเหลวเพราะเราวางมันไว้ในสภาพแวดล้อมที่คลุมเครือ พร้อมด้วยสิทธิ์ที่ทำให้เกิดความสับสนและความคาดหวังในการแสดงละคร190191## การอ่านของฉัน192193โครงสร้างพื้นฐานเอเจนต์น่าเบื่อในวิธีที่ดีที่สุด194195ไม่ใช่ส่วนที่ทำให้คุณปรบมือในการสาธิต เป็นส่วนที่ให้คุณใช้การสาธิตในเช้าวันจันทร์กับคนจริง ข้อมูลจริง และผลลัพธ์ที่แท้จริง196197อนาคตของตัวแทนไม่ได้ถูกกำหนดโดยใครมีแบบอย่างที่ดีที่สุดเท่านั้น ใครก็ตามที่สร้างสถานที่ที่ดีที่สุดเพื่อให้เขาทำงานจะถูกตัดสินใจ โดยโดดเดี่ยวเมื่อเขาทำการทดลอง เชื่อมต่อเมื่อจำเป็น สังเกตได้เสมอ ได้รับอนุญาตตามหลักเกณฑ์ และถ่อมตัวพอที่จะหยุดเมื่อเขาไม่รู้198199นั่นคือสิ่งที่ตัวแทนเลิกเป็นของเล่นและกลายเป็นโครงสร้างพื้นฐาน200201## แหล่งที่มา202203- [Vercel: วิธีสร้างตัวแทน AI ด้วย Vercel และ AI SDK](https://vercel.com/kb/guide/how-to-build-ai-agents-with-vercel-and-the-ai-sdk)204- [เอกสาร Vercel: แซนด์บ็อกซ์](https://vercel.com/docs/sandbox)205- [Vercel Docs: การทำงานกับ Sandbox](https://vercel.com/docs/sandbox/working-with-sandbox)206- [เอกสาร Vercel: MCP](https://vercel.com/docs/mcp)207- [Model Context Protocol: ข้อมูลจำเพาะ](https://modelcontextprotocol.io/speciation)208- [OpenAI: เครื่องมือใหม่สำหรับตัวแทนการสร้าง](https://openai.com/index/new-tools-for-building-agents/)209- [บล็อก Cloudflare: ตัวแทนบน Cloudflare](https://blog.cloudflare.com/agents-on-cloudflare/)210
:โครงสร้างพื้นฐานเอเจนต์และแบ็กเอนด์ใหม่lines 1-210 (END) — press q to close