▶SUBTHAIแปลไทย · ซับ · พากย์⚙
บทความแปลภาษาไทย · YouTube

I Built an AI Content Studio with 5 Hermes Agents (Step-by-Step Guide)

0:000:00
เล่นเสียงต้นฉบับของวิดีโอ พร้อมแสดงซับไทยซิงก์ตามเวลา
กำลังโหลดวิดีโอ…
01

สรุปย่อ

ประเด็นสำคัญจากวิดีโอ

- **ช่อง:** Komputer Mechanic · **ความยาว:** ~115 นาที · **ลิงก์:** https://www.youtube.com/watch?v=TTSPDNUinek

# สรุป: I Built an AI Content Studio with 5 Hermes Agents (Step-by-Step Guide)

- **ช่อง:** Komputer Mechanic · **ความยาว:** ~115 นาที · **ลิงก์:** https://www.youtube.com/watch?v=TTSPDNUinek

## ประเด็นหลัก

- ลาร์รี (Larry) จากช่อง Komputer Mechanic สร้าง "Cadence" ซึ่งเป็นระบบอัตโนมัติจัดการงานคอนเทนต์ครบวงจร (content operations autopilot) บน Hermes Agents โดยมีเอเจนต์ 5 ตัวทำงานร่วมกัน
- เอเจนต์ทั้ง 5 ตัว ได้แก่ **orchestrator** (ผู้ประสานงานหลัก รับคำสั่งผ่าน Telegram) **Atlas/Scout** (นักวิจัยและเสนอไอเดีย) **Vera/Scribe** (นักเขียนสไลด์ แคปชัน แฮชแท็ก) **Kite/Dev** (นักออกแบบ + นักพัฒนา สร้างแดชบอร์ด) และ **Orion/Rich** (นักเผยแพร่โพสต์)
- ผู้ชมสามารถสร้างตามได้จริงตั้งแต่ศูนย์: เช่า VPS (แนะนำ Racknerd ~$35/ปี หรือ Contabo ~$8/เดือน) ติดตั้ง Ubuntu แล้วติดตั้ง Hermes พร้อมผูกบัญชี Nous Research และเลือกโมเดล AI (เช่น OpenAI Codex ผ่านแผน ChatGPT Plus/Pro, Grok ผ่านบัญชี X, หรือ OpenRouter)
- สร้าง Telegram group พร้อม topics แยกช่องต่อเอเจนต์ (orchestrator / Kite / studio) สร้างบอทผ่าน BotFather ใช้ User Info Bot หา user ID และตั้งค่าการผูกช่องกับเอเจนต์ (topic-lane binding) เพื่อให้แต่ละเอเจนต์ฟังเฉพาะช่องของตัวเอง
- สร้างโปรไฟล์เอเจนต์แบบ persistent พร้อมไฟล์ soul.md กำหนดบทบาท หน่วยความจำเฉพาะ (dedicated memory) และขอบเขตบทบาท (role boundaries) เพื่อป้องกันไม่ให้เอเจนต์ก้าวก่ายงานกัน
- สร้างฐานข้อมูลบันทึกการทำงานของเอเจนต์ด้วย **SQLite** — เอเจนต์ทุกตัวบันทึกชื่อ งานที่ทำ โมเดล AI และ timestamp ลงตาราง cadence runs ก่อนตอบกลับทุกครั้ง เพื่อให้แดชบอร์ดแสดงเมตริกจริง ไม่ใช่ค่าฮาร์ดโค้ด
- จุดเด่นของระบบคือสไลด์ carousel ถูกสร้างเป็นไฟล์ **HTML** แล้วเรนเดอร์เป็นภาพผ่าน headless browser (Chromium) ทำให้แก้ไขข้อความ ดีไซน์ ได้ไม่จำกัดโดยไม่เสียค่าใช้จ่ายต่อสไลด์ (ต่างจากโมเดลสร้างภาพที่คิดเงินทุก API call)
- เชื่อมต่อ API keys สามตัว: **Perplexity** (วิจัยเชิงลึก), **ImgBB** (พื้นที่เก็บภาพตัวกลาง) และ **Buffer** (ส่งโพสต์ไปยังโซเชียลมีเดีย) — ขั้นตอนการโพสต์: Cadence → ImgBB → Buffer → Instagram พร้อมระบบยืนยันก่อนโพสต์ทุกครั้ง
- รักษาความปลอดภัยด้วย **SSH tunneling** ในการเข้าถึงแดชบอร์ดช่วงแรก จากนั้นติดตั้ง **Tailscale** เพื่อเข้าถึงแดชบอร์ดจากอุปกรณ์ใดก็ได้ที่ผูกบัญชี โดยไม่เปิดให้อินเทอร์เน็ตสาธารณะ
- แดชบอร์ดมีแท็บครบ: ideas (สร้าง/โปรโมตไอเดีย), studio (fine-tune สไลด์, แปลง carousel เป็น reel), publish, templates (เทมเพลต HTML 50+ แบบ), agents (heat map + workload), calendar, configuration และ docs — พร้อมรีโมตคอนโทรลผ่าน Telegram (คำสั่ง /ideas, /promote)
- ระหว่างทางมีการแก้ปัญหาจริงที่พบ เช่น error "failed to connect to bus" ตอนรีสตาร์ท gateway, เซิร์ฟเวอร์ทดสอบลบข้อมูลในฐานข้อมูลโปรดักชัน, ชื่อเทมเพลตไม่ตรงกันระหว่างแดชบอร์ดกับ Telegram และมีตัวติดตั้งอัตโนมัติ (auto installer) สำหรับสมาชิกที่ไม่อยาก build เอง 4-5 ชั่วโมง

## ความเห็นสรุป

วิดีโอนี้เป็นบทช่วยสอนแบบ step-by-step ที่ละเอียดมาก ครอบคลุมทั้งฮาร์ดแวร์ (VPS) ซอฟต์แวร์ (Hermes, Telegram, SQLite, Python) และการออกแบบระบบ multi-agent จริง เนื้อหาเน้นการปฏิบัติจริง มีการโชว์เดโม่สดและแก้ไขข้อผิดพลาดระหว่าง build ทำให้เห็นกระบวนการคิดและแนวทางแก้ปัญหาที่นำไปใช้ต่อได้จริง จุดที่คุ้มค่าที่สุดคือแนวคิด "สไลด์เป็น HTML แล้วเรนเดอร์ด้วย headless browser" ซึ่งช่วยประหยัดต้นทุนได้มาก และการแยกบทบาท/หน่วยความจำของเอเจนต์อย่างเป็นระบบ
02

คำแปลเต็ม

แปลตามบทสนทนาต้นฉบับ ปรับเป็นภาษาไทยธรรมชาติ

นี่คือเครื่องจักรผลิตคอนเทนต์โซเชียลมีเดียแบบครบวงจร มีเอเจนต์ AI สี่ตัวที่จะช่วยค้นคว้า เขียน ออกแบบ และเผยแพร่โพสต์ให้คุณ มาดูมันทำงานจริงกันเลย ไอเดียคอนเทนต์นี้ "ห้าสัญญาณว่าสแต็กเอเจนต์ของคุณซับซ้อนเกินไป" (five signs your agent stack is overengineered) กำลังกลายเป็น Instagram carousel (โพสต์หลายภาพแบบเลื่อนดู) ที่เสร็จสมบูรณ์ Atlas หามุมมองให้ Vera กำลังเขียนสไลด์ และภายในประมาณ 2 นาที Kite ก็เรนเดอร์สไลด์ทั้งหมดเสร็จด้วยการคลิกเพียงไม่กี่ครั้ง และที่สำคัญที่สุดคือ จะไม่มีอะไรถูกโพสต์ออนไลน์โดยไม่ผ่านการอนุมัติจากคุณ คุณตรวจคำพูดก่อนแล้วค่อยอนุมัติโพสต์สุดท้าย เอเจนต์ทำงานให้ ส่วนคุณยังคงควบคุมทุกอย่าง วันนี้เราจะสร้างทุกอย่างขึ้นมาจากศูนย์ทั้งหมด พรอมป์ต์และเทมเพลตทุกอันมีลิงก์ไว้ด้านล่าง ถ้าใครไม่อยากใช้เวลากับการ build กว่า 4 ชั่วโมง ก็มีตัวติดตั้งอัตโนมัติ (auto installer) ที่เซ็ตอัพทุกอย่างให้คุณภายในไม่กี่นาที

สวัสดีครับ ผมลาร์รี ยินดีต้อนรับสู่ช่องของเรา วันนี้เราจะสร้าง Cadence กัน ซึ่งเป็นระบบอัตโนมัติจัดการงานคอนเทนต์ (content operations autopilot) ที่ขับเคลื่อนโดยผู้เชี่ยวชาญสี่คนที่คุณเพิ่งเห็นไป ภายในมีเทมเพลตที่ออกแบบอย่างสวยงามกว่า 50 แบบ Atlas จะค้นคว้าและเสนอไอเดียให้คุณ Vera เขียนสไลด์ แคปชัน และแฮชแท็กให้ทุกอย่าง จากนั้น Kite จะทำดีไซน์ให้เสร็จสมบูรณ์ พอเสร็จแล้ว Orion จะส่งโพสต์เหล่านั้นไปยังแพลตฟอร์มโซเชียลมีเดียของคุณ และเหนือเอเจนต์ทั้งหมดนั้นยังมีเอเจนต์ผู้ควบคุม (orchestrator agent) ที่คอยรับคำสั่งจากคุณในแชท Telegram แล้วจัดส่งงานลงไปตามสายงาน ถ้าคุณโพสต์คอนเทนต์เป็นประจำ คุณจะรู้ดีว่ามันยุ่งยากแค่ไหน คุณจ้องหน้ากระดานว่างเปล่าเพื่อหามุมมองสักไอเดีย พอได้ไอเดียมาแล้วก็ต้องไปค้นคว้า ต่อด้วยการเขียนสไลด์ทีละหน้า ทำสไลด์ให้ดูดีในเทมเพลต ตามด้วยแคปชัน แฮชแท็ก และอื่นๆ อีกมากมาย แต่ตอนนี้ Cadence จะจัดการและรวบรวมทั้งสายงานให้เสร็จภายในไม่กี่นาที คุณแค่บอกเอเจนต์ครั้งเดียวว่าบร্যান্ডของคุณเกี่ยวกับอะไร ตั้งแต่นั้นมา แค่คลิกเดียวก็จะได้ไอเดียโพสต์ใหม่ๆ หรือถ้าคุณพิมพ์ความคิดคร่าวๆ ของตัวเองลงไป พวกมันก็จะสร้างเรื่องราวทั้งหมดให้คุณ ตั้งแต่ไอเดียจนถึงโพสต์ที่เผยแพร่เสร็จ ทุกอย่างจัดการได้ด้วยการคลิกไม่กี่ครั้ง แล้วโพสต์ของคุณก็จะขึ้นออนไลน์

และนี่คือจุดที่งาน build ชิ้นนี้เหนือกว่าเครื่องมือสร้างสไลด์ด้วย AI ทั่วไป โดยปกติคุณต้องสร้างสไลด์ด้วยโมเดลสร้างภาพ และจ่ายเงินทุกครั้งต่อหนึ่งสไลด์ แถมแม้แต่การแก้คำเพียงคำเดียวยังต้องจ่ายเงินเพื่อสร้างภาพใหม่ทั้งใบ แต่ Cadence ไม่แตะโมเดลสร้างภาพเลยแม้แต่นิดเดียว สไลด์ทุกใบสร้างจากเทมเพลต HTML ที่ออกแบบอย่างสวยงามด้วยโค้ดจริง ไม่ใช่พิกเซลจาก AI ดังนั้นการแก้ไขทุกครั้งจึงฟรี คุณสามารถลากองค์ประกอบใดก็ได้ เปลี่ยนข้อความ ขนาด ตำแหน่ง แล้วมันจะเรนเดอร์ใหม่ภายในไม่กี่วินาที หมายความว่าคุณแก้ไขได้ไม่จำกัดโดยไม่มีค่าใช้จ่ายต่อสไลด์ เงินของคุณจึงไปอยู่ที่เนื้อหา ไม่ใช่ที่รูปภาพ

แดชบอร์ดแสดงภาพรวมการทำงานทั้งหมดในพริบตาเดียว ตัวเลขทุกตัวดึงมาจากฐานข้อมูลของเอเจนต์ของคุณเอง ซึ่งเอเจนต์ทุกตัวจะบันทึกชื่อตัวเอง งานที่ทำ โมเดล AI ที่ใช้ และเวลาที่ทำงานนั้นอย่างละเอียด ดังนั้นจึงไม่มีเมตริกปลอมใดๆ เลย ส่วนที่ผมชอบที่สุดคือสตูดิโอ (studio) คุณสามารถแก้ไขข้อความทุกชิ้นหรือลากองค์ประกอบเดี่ยวๆ ย้ายมัน ปรับขนาด เขียนใหม่ได้หมด แถมยังมีตัวอย่างบนโทรศัพท์ (phone preview) คลังเทมเพลต และฟีเจอร์แปลง carousel เป็นวิดีโอด้วย เราจะสร้างคลังโพสต์ที่เผยแพร่แล้ว (published archive) ไว้ดูโพสต์ทั้งหมดที่เคยสร้างและเผยแพร่ รวมถึงแท็บปฏิทิน (calendar) ที่แสดงคอนเทนต์ที่กำหนดเวลาไว้ทั้งหมด และยังมีหน้า configurations สำหรับเก็บชื่อบรานด์ แฮนเดิล น้ำเสียง ซึ่งจะไหลไปสู่ทุกคำที่เอเจนต์เขียน

ต่อไปขอโชว์เดโม่สดและพาเดินชมสิ่งที่เราจะสร้างในวันนี้ ในแดชบอร์ดคุณจะเห็นจำนวนครั้งทั้งหมดที่เอเจนต์ทำงาน (total runs) จำนวนไอเดียที่สร้างขึ้นในการตั้งค่านี้ จำนวนโพสต์ที่เผยแพร่แล้ว ซึ่งในกรณีของผมมีแค่หนึ่งอันเพราะผมใช้มันทดสอบสำหรับบทช่วยสอนนี้ และเปอร์เซ็นต์ของงานที่สำเร็จ ตรงนี้เรามีเอเจนต์แอคทิวิตี้ (agent activity) ที่ดึงมาจากฐานข้อมูลกิจกรรมของเอเจนต์ คุณจะเห็นว่าวันศุกร์ผมใช้เอเจนต์เยอะมากเพราะกำลัง build การตั้งค่านี้อยู่ กราฟเลยพุ่งขึ้น และทางด้านขวาคุณยังเห็นได้ว่าเอเจนต์ตัวไหนรับงานหนักที่สุดตอนนี้ ในกรณีของผมก็คือ Vera นักเขียนคอนเทนต์ และ Kite นักพัฒนา เพราะสองตัวนี้ทำงานหนักที่สุดจนถึงตอนนี้ พอเลื่อนลงมาด้านล่าง คุณจะเห็นสรุปสิ่งที่เอเจนต์ทำทั้งหมด ซึ่งดึงมาจากฐานข้อมูลบันทึกการทำงานของเอเจนต์เช่นกัน

ความมหัศจรรย์เกิดขึ้นที่แท็บ ideas ตรงนี้คุณจะเห็นไอเดียสองสามอันที่เอเจนต์สร้างให้ผม เพราะผมกำลังทำงานเกี่ยวกับ AI ผมเลยให้พวกมันสร้างไอเดียเกี่ยวกับระบบอัตโนมัติด้วย AI (AI automation) และอะไรประมาณนั้น ตรงนี้คุณสามารถใส่ไอเดียของคุณเองได้ ไม่ว่าไอเดียไหนก็ตาม หรือถ้าคุณยังไม่มีไอเดียเลย คุณก็บอกเอเจนต์ได้ว่า "ช่วยสร้างไอเดียให้หน่อยสิ" ขอผมคลิกที่ generate some ideas แล้วดูว่าไอเดียอะไรจะถูกสร้างขึ้นมา ตรงนี้คุณจะเห็นว่า Atlas นักวิจัยของเราคือตัวที่จะไปค้นหาไอเดียเกี่ยวกับสิ่งที่เรากำลังสร้าง และสิ่งที่เรายังไม่เคยโพสต์มาก่อน มันจะไปค้นหาไอเดียที่เราสามารถโพสต์ได้ โดยอ้างอิงจากสิ่งที่เอเจนต์เรียนรู้มาเกี่ยวกับสิ่งที่ผมกำลังสร้าง จากนั้นคุณจะเห็นว่าพวกมันสร้างไอเดียมาห้าไอเดีย ไอเดียแรกคือ "ระบบอัตโนมัติล้มเหลวตรงจุดส่งต่องาน" (automation fails at the handoff) และยังมีไอเดียอย่าง "เอเจนต์ของคุณควรทดสอบสิ่งที่มันอ้างว่าแก้ไข" (your agent should run the test it claims to fix) ซึ่งน่าจะเป็นไอเดียที่ดี เพราะเอเจนต์ชอบหลอน (hallucinate) เยอะมาก

เพื่อสาธิตเป็นตัวอย่าง สมมติว่าผมอยากเขียนสไลด์เกี่ยวกับไอเดียนี้ ผมแค่คลิก promote แล้วตรงนี้ก็สามารถกรอกจำนวนสไลด์ที่ต้องการได้ เช่น ผมอยากได้แปดสไลด์ สิบสไลด์ หรือเท่าไหร่ก็ได้ตามที่ต้องการ สิ่งที่ต้องจำไว้คือ สไลด์แรกจะเป็นฮุก (hook) เสมอ และสไลด์สุดท้ายจะเป็น CTA (คำกระตุ้นให้ทำตาม) ดังนั้นเนื้อหาหลักจะอยู่ระหว่างฮุกกับ CTA ถ้าผมเลือกสิบสไลด์หรือแปดสไลด์ นั่นหมายความว่าผมจะมีสไลด์เนื้อหาหกสไลด์ โดยหนึ่งเป็นฮุกและหนึ่งเป็น CTA จากนั้นผมสามารถตัดสินใจได้ว่าให้เอเจนต์ทำการวิจัยเชิงลึกหรือไม่ เช่น ถ้าผมคลิก research with perplexity เอเจนต์จะไปค้นคว้าเชิงลึกผ่าน Perplexity เพื่อหาคอนเทนต์ที่เหมาะสมจริงๆ สำหรับงานนี้ และตรงนี้ผมยังทำโหมดพิเศษแบบ "สเตียรอยด์" ไว้ด้วย โดยเอเจนต์จะเขียนสไลด์ที่กระแทกใจ (punchy) มากขึ้น พอเสร็จแล้วก็แค่คลิก write eight slides

สิ่งที่เกิดขึ้นต่อจากนี้คือ Atlas ทำงานของมันเสร็จแล้ว Atlas วิจัยเสร็จเรียบร้อย ตอนนี้ Vera จะเข้ามารับช่วงต่อ Vera คือเอเจนต์ AI ที่ทำหน้าที่เขียนคอนเทนต์ เรามารอให้ Vera วิจัยเสร็จและเตรียมคอนเทนต์ให้พร้อมกันดีกว่า เอาล่ะ Vera วิจัยเสร็จแล้ว จำไว้ว่าเราขอแปดสไลด์ และ Vera กำลังให้ภาพรวมว่าเนื้อหาบนแต่ละสไลด์จะเป็นอะไร คุณจะเห็นคอนเทนต์ที่จะลงบนทุกสไลด์ได้เลย ถ้าผมไม่ชอบสไลด์ไหนและอยากปรับปรุง ผมก็คลิก refine copy แล้วเอเจนต์จะปรับปรุงตามที่ผมบอก ถ้าผมพอใจและอยากดำเนินการต่อ ผมก็คลิก approve แล้วเลือกเทมเพลต จำไว้ว่าคอนเทนต์ที่เอเจนต์ทำคือไอเดียคร่าวๆ ว่าคอนเทนต์ควรมีหน้าตาแบบไหน แต่ตรงนี้ผมมีเทมเพลตที่ออกแบบอย่างสวยงามกองใหญ่

ซึ่งผมจะแจกให้ทุกคนได้คัดลอกไปใช้ โดยไม่ต้องออกแบบเองทั้งหมด สิ่งที่เราต้องทำก็แค่เลือกเทมเพลตที่อยากจะใช้ในการสร้าง เนื่องจากบรานด์ของผมเป็นสีส้ม ขอเลือกเทมเพลตอันนี้ตรงนี้ แบบสิบสไลด์ แล้วสิ่งที่เกิดขึ้นคือผมจะคลิก fit copy to this ทำไมต้องทำขั้นตอนนี้? เพราะทุกเทมเพลตมีจำนวนตัวอักษรที่รองรับได้ ถ้าจำนวนตัวอักษรเกินกว่าที่เทมเพลตรองรับ ดีไซน์ก็จะดูไม่สวย ดังนั้นสิ่งที่ Vera จะทำคือดูเทมเพลตที่เราเลือก แล้วปรับข้อความที่จะลงบนสไลด์ให้เข้ากับเทมเพลตนั้นๆ จากนั้น Vera ก็ปรับข้อความสไลด์ให้เข้ากับเทมเพลตที่เราเลือกเสร็จเรียบร้อย ตรงนี้ผมแค่คลิก render this จากนั้นก็จะเรียกเอเจนต์อีกตัวชื่อ Kite ซึ่งทำหน้าที่ด้านดีไซน์ พอมาที่นี่จะเห็นว่าสไลด์พร้อมแล้ว ผมสามารถคลิกเปิดในสตูดิโอได้ หรือจะมาที่แท็บสตูดิโอก็ได้ แล้วมันจะโชว์สไลด์ให้ดู พอคลิก open in studio คุณจะเห็นสไลด์ที่เอเจนต์สร้างขึ้นมา จะเห็นว่าผมมีแปดสไลด์ที่ปรับแต่งให้เข้ากับสิ่งที่เราทำเป๊ะๆ

ความสวยงามของการสร้างสไลด์แบบนี้คือ โดยปกติเวลาคนสร้างสไลด์ Instagram คุณต้องใช้เอเจนต์สร้างภาพหรือโมเดลสร้างภาพ ซึ่งจะคิดเงินคุณทุกครั้งที่สร้างสไลด์ และส่วนที่เจ็บปวดที่สุดคือ ทุกครั้งที่อยากแก้ข้อความ คุณต้องจ่ายเงินทุกครั้งต่อ API call แต่ความเจ๋งของสิ่งที่เราสร้างตรงนี้คือ สไลด์ทุกใบเรนเดอร์เป็นไฟล์ HTML หมายความว่าเมื่อคุณมาที่นี่แล้วคลิก fine-tune the slide แล้วเลือกสไลด์ใดก็ได้ ผมสามารถแก้ไขและเพิ่มชื่อผม Larry ตรงนี้ได้ ทำอะไรก็ได้ตามต้องการโดยไม่ต้องจ่ายเงินอะไรเลย อีกอย่างที่ผมเพิ่มให้คือ คุณสามารถปรับสไลด์ให้ชิดซ้าย ขวา บน ล่าง ย่อขนาดสไลด์ เปลี่ยนขนาดฟอนต์ได้ทุกอย่าง แล้วพอเสร็จก็แค่คลิก save เท่านั้นเอง สมมติว่าคุณพอใจกับคอนเทนต์ทั้งหมดแล้ว คุณก็สามารถโปรโมตมันต่อได้ คุณยังแปลงมันเป็น reel ได้ด้วยการคลิก animate this carousel คุณสามารถทำให้สไลด์ทั้งหมดเคลื่อนไหวต่อกันแบบ reel ด้วยอัตราส่วน 4:5 หรือจะสร้าง reel เต็มรูปแบบด้วยอัตราส่วน 9:16 ก็ได้

สมมติว่าผมเสร็จและพอใจกับสิ่งที่สร้างมา ผมก็แค่มาคลิก post now และในกรณีของผม ผมตั้งค่า Instagram ไว้แล้ว ผมจึงคลิก post to Instagram ได้เลย จากนั้นเอเจนต์จะเตือนว่า "เฮ้ แน่ใจนะว่าจะโพสต์ภาพนี้?" ผมก็จะตอบว่า "ใช่ โพสต์เลย" แล้วภาพก็จะถูกส่งผ่านแพลตฟอร์มที่เราจะใช้กันชื่อว่า Buffer ซึ่งเชื่อมต่อกับทุกแพลตฟอร์มโซเชียล แล้วมันจะถูกส่งตรงไปยัง Instagram ให้เรา จากนั้นผมจะได้รับการแจ้งเตือนจาก Orion ซึ่งเป็นนักเผยแพร่ (publisher) ของเราว่าโพสต์ถูกส่งไปที่ Buffer แล้ว ดังนั้นภายในไม่กี่นาที เราควรเห็นมันบน Instagram โดยตรง และตรงนั้นคุณก็เห็นเลย นี่คือบัญชีทดสอบที่ผมสร้างไว้เพื่อทดสอบสิ่งที่ผมกำลังสร้าง พอมาที่นี่คุณจะเห็นว่าโพสต์ที่เราเพิ่งสร้างขึ้นออนไลน์บน Instagram แล้ว หน้าตาตรงกับที่เรารีเอนเดอร์เป๊ะ และนี่คือสิ่งที่ผมจะสร้างร่วมกับทุกคนในวันนี้

นอกจากนี้เรายังมีแท็บ dedicated agents ที่ให้ข้อมูลเชิงลึกเกี่ยวกับสถาปัตยกรรมเอเจนต์ของเรา คุณจะเห็นว่าเอเจนต์ลูกแต่ละตัวมีการ์ดของตัวเอง ซึ่งคุณสามารถดูโมเดล AI ที่เอเจนต์ใช้ จำนวนครั้งที่เอเจนต์ตัวนั้นทำงาน จำนวนงานที่สำเร็จ รวมถึงงานล่าสุดบางส่วนที่เอเจนต์ทำ เหนือเอเจนต์ทั้งสี่ตัวนี้ขึ้นไป เรามี orchestrator ซึ่งเป็นเหมือนเจ้านายของเอเจนต์ทั้งหมด ด้านล่างเรามีแผนที่ความร้อนของกิจกรรม (activity heat map) ที่แสดงว่าในกรอบเวลา 24 ชั่วโมง เอเจนต์ตัวไหนทำงานบ้าง ยิ่งสีสว่างมากก็หมายความว่าเอเจนต์ทำงานหนักในช่วงเวลานั้น ส่วนพื้นที่สีเข้มหมายความว่าเอเจนต์ไม่ได้ทำงานในช่วงเวลานั้น

การ build ทั้งหมดจะใช้เวลาประมาณ 4-5 ชั่วโมงถ้าคุณมีพรอมป์ต์และเทมเพลตครบ ผมจึงสร้างตัวติดตั้งอัตโนมัติ (auto installer) ที่ทำทุกอย่างให้คุณภายในไม่กี่นาที ถ้าสนใจตัวติดตั้งอัตโนมัติ มันก็จะอยู่ในส่วนคำอธิบาย (description) เช่นกัน เอาล่ะ เข้าเรื่องการ build กันเลย เริ่มแรกเราจะติดตั้ง Hermes ก่อน Hermes Agents ช่วยให้คุณสร้างโครงสร้างพื้นฐานของเอเจนต์หลายตัว (multi-agent infrastructure) ที่คุณสามารถคุยกับเอเจนต์ AI ของคุณผ่านแอปพลิเคชันยอดนิยมต่างๆ เช่น Telegram, Discord, Slack, WhatsApp และแอปส่งข้อความยอดนิยมอื่นๆ นอกจากนี้ แทนที่จะถูกจำกัดให้ใช้โมเดล AI ตัวเดียว คุณสามารถใช้โมเดล AI ตัวไหนก็ได้ที่ต้องการ ไม่ว่าจะเป็นจาก OpenAI, Anthropic หรือโมเดลยอดนิยมอื่นๆ

การติดตั้ง Hermes มีหลายทางเลือกให้คุณ คุณสามารถติดตั้งบน Windows PC ได้ถ้ามีเครื่องเฉพาะที่อยากให้มันรัน หรือจะติดตั้งผ่านระบบปฏิบัติการ Linux ก็ได้ สำหรับการตั้งค่านี้ผมจะใช้วิธีแบบ Linux ผมรู้ว่า Linux ฟังดูน่ากลัว แต่ไม่ต้องกังวล ผมจะพาคุณไปทีละขั้นตอนทั้งหมด และเมื่อเราตั้งค่าเสร็จ ซึ่งใช้เวลาไม่กี่นาที ทุกอย่างที่คุณต้องทำจะอยู่บนแดชบอร์ดที่เรากำลังจะสร้าง หรือจากแอปพลิเคชัน Telegram คุณไม่ต้องเข้ามาในเทอร์มินัลเพื่อพิมพ์คำสั่งอะไรให้ยุ่งยาก แต่ผมจะพาคุณผ่านกระบวนการทั้งหมดตั้งแต่ A ถึง Z เพื่อให้คุณเข้าใจภาพรวมว่ากระแสงานนี้ทำงานอย่างไร

ถ้าคุณมี PC ที่สามารถรันสิ่งนี้ได้ ก็ใช้ได้เลย แต่ในกรณีของผม ผมไม่มี PC เฉพาะ คุณจึงสามารถเช่าเซิร์ฟเวอร์ที่ไหนสักแห่งมารันได้ ซึ่งผมเองก็ชอบตัวเลือกนี้ แต่ก็แล้วแต่คุณนะครับ ข้อดีของการใช้เซิร์ฟเวอร์ส่วนตัวคือ คุณเช่าเซิร์ฟเวอร์จากบริษัทอื่น จ่ายประมาณ 4 ดอลลาร์ต่อเดือน แล้วเซิร์ฟเวอร์นี้จะเปิดตลอด 24/7 คุณไม่ต้องกังวลเรื่องการดูแลรักษา ไม่ต้องกังวลเรื่องการเชื่อมต่ออินเทอร์เน็ตอะไรแบบนั้น แต่แน่นอนว่ามันก็มีค่าใช้จ่าย คุณจึงต้องตัดสินใจว่าจะรันบน PC ส่วนตัวที่บ้านหรือจะเช่าเซิร์ฟเวอร์

สำหรับผู้ให้บริการ VPS ที่ผมแนะนำส่วนตัวคือ Racknerd และ Contabo ตัวอย่างเช่นกับ Racknerd คุณจะได้เซิร์ฟเวอร์ที่มี CPU สองคอร์ พื้นที่เก็บข้อมูล 35 GB, RAM 2 GB ในราคาประมาณ 35 ดอลลาร์ต่อปี คิดเป็นประมาณ 2.9 ดอลลาร์ต่อเดือน ซึ่งถือว่าคุ้มมากสำหรับเซิร์ฟเวอร์ เพราะคุณไม่ต้องกังวลเรื่องการเปิดเครื่องตลอด 24/7 กิจกรรมอินเทอร์เน็ต การบำรุงรักษา และอื่นๆ กับ Racknerd คุณจ่ายปีละครั้งก็จบ ไม่ต้องกังวลเรื่องการจ่ายรายเดือนอะไรทั้งนั้น ส่วนตัวเลือกที่สองคือ Contabo ซึ่งก็มีเซิร์ฟเวอร์ที่เชื่อถือได้พอสมควร และราคาก็ค่อนข้างย่อมเยาสำหรับสเปกของ VPS ที่คุณได้รับ

ตัวอย่างเช่นกับ Contabo คุณจะได้เซิร์ฟเวอร์ที่มี CPU สี่คอร์, RAM 8 GB และพื้นที่ SSD ประมาณ 100 GB ในราคาประมาณ 8 ดอลลาร์ต่อเดือน ตัวนี้จะมากเกินพอสำหรับสิ่งที่เราจะสร้างแน่นอน คุณจึงเลือกได้ระหว่าง Racknerd หรือ Contabo ผมจะใส่ลิงก์อ้างอิง (referral link) ไว้ในส่วนคำอธิบาย ถ้าอยากได้บริการเหล่านี้ และขอบอกว่า วิดีโอนี้ไม่ได้ถูกสปอนเซอร์โดยบริษัทเหล่านี้ ผมแค่แนะนำสิ่งที่ผมใช้เป็นประจำเวลาตั้งค่าโครงสร้างพื้นฐานพวกนี้ ถ้าอยากเลือก Racknerd ก็เข้ามาที่นี่ อย่างที่บอก ตัวเลือกที่ผมแนะนำคือตัวนี้ คลิก order now แล้วคุณจะถูกพาไปยังหน้าที่แสดงสรุปสเปกฮาร์ดแวร์ของ VPS ที่คุณเลือก พอเลื่อนลงมาก็จะเห็นป้ายชื่อเซิร์ฟเวอร์ (server label) ซึ่งสามารถเปลี่ยนทีหลังได้ สำหรับตัวเลือกการกำหนดค่า (configuration options) ผมแนะนำให้ปล่อยเป็นค่าเริ่มต้นไว้ ระบบปฏิบัติการเราจะใช้ Ubuntu 22.04 ส่วน RAM ปล่อยเป็นค่าเริ่มต้นทั้งหมด เพราะถ้าเพิ่ม RAM ทันทีก็จะเสียค่าใช้จ่ายเพิ่ม ผมเลยแนะนำให้ใช้ตัวเลือกเริ่มต้นที่มีให้ ส่วนตำแหน่งที่ตั้ง (location) คุณเลือกที่อยู่ใกล้ตัวคุณที่สุดก็ได้ แต่สิ่งที่เราจะสร้างนั้น latency ไม่ใช่ปัญหาใหญ่ ผมเลยไม่กังวลเรื่องความใกล้ไกลมากนัก ค่าใช้จ่ายปล่อยเป็นค่าเริ่มต้น ถ้าเลือกตัวสูงกว่าก็จะจ่ายมากขึ้น จากนั้นคลิก continue แล้วคุณจะได้รับอีเมลที่มีข้อมูลรับรอง (credentials) ทั้งหมดที่จำเป็นต่อการเชื่อมต่อกับเซิร์ฟเวอร์ VPS ซึ่งผมจะพาคุณผ่านกระบวนการนั้นด้วย

ถ้าอยากเลือกตัวเลือก Contabo อย่างที่บอก ตัวเลือกที่เรามีตรงนี้คือ Cloud VPS 4 หรือตัวเลือกต่ำสุดที่มี จะทรงพลังเกินพอสำหรับสิ่งที่เราจะสร้าง ตรงนี้คลิก get started ระวังหน่อยนะครับ เพราะค่าเริ่มต้นบางทีเป็น 24 เดือน หมายความว่าคุณจะถูกผูกกับ VPS ตัวนี้เป็นเวลา 2 ปี และแน่นอนว่ายิ่งสัญญายาวก็ยิ่งถูกลง แต่ระวังไว้ว่า ถ้าเลือก 2 ปี คุณจะต้องจ่ายเงินจำนวนนี้เป็นเวลา 2 ปี ถ้าต้องการความยืดหยุ่นยกเลิกได้ทุกเดือน ก็เลือกตัวเลือกหนึ่งเดือน ซึ่งในกรณีของผมจะจ่ายประมาณ 5.5 ดอลลาร์ต่อเดือน ส่วนภูมิภาค (region) ปล่อยเป็น European Union ตามค่าเริ่มต้นได้เลย เพราะ Contabo อยู่ในสหภาพยุโรป และทันทีที่คุณเลือกตำแหน่งอื่นก็จะมีค่าใช้จ่ายเพิ่ม แต่อย่างที่บอกไปก่อนหน้านี้ สิ่งที่เราจะสร้าง latency ไม่ค่อยเป็นปัญหา คุณปล่อยเป็น European Union ไว้เลยก็ได้ พอเลื่อนลงมาส่วนพื้นที่จัดเก็บ (storage) เลือก SSD 100 GB ซึ่งฟรีและมากเกินพอสำหรับสิ่งที่เราจะสร้าง ระบบปฏิบัติการปล่อยเป็น Ubuntu ตามค่าเริ่มต้น

สำหรับการปกป้องข้อมูล (data protection) ผมแนะนำให้เลือกตัวเลือก auto backup บ่อยครั้งที่ผมทำงานกับเอเจนต์แล้วมีอะไรบางอย่างพังไปหมด แล้วด้วย auto backup มันจะถ่าย snapshot ของ VPS ทุกวัน หมายความว่าถ้ามีอะไรผิดพลาด คุณสามารถย้อนกลับไปได้ประมาณ 10 วัน และกู้คืนอิมเมจที่คุณมีบน VPS ในวันนั้นๆ ได้เสมอ อันนี้เป็นตัวเลือกเสริม แต่อย่างที่บอก แนะนำอย่างยิ่ง เพราะลองนึกดู ถ้าคุณสร้างระบบจัดการคอนเทนต์มานานกว่าหนึ่งปีแล้วเกิดความผิดพลาดขึ้นมา คุณจะเสียมันไปทั้งหมด เพื่อเซฟตัวเอง คุณยังสามารถตั้งค่า auto backup ของตัวเองซึ่งจะถ่าย snapshot ของ VPS ทุกวันได้ด้วย เช่นสร้างด้วย cron ก็ได้ แต่ถ้าไม่อยากทำเองและอยากใช้ตัวเลือก auto backup เริ่มต้นของ Contabo ก็เลือกอันนี้ได้ ซึ่งจะเสียประมาณ 1.65 ดอลลาร์ต่อเดือน ส่วน additional features ปล่อยเป็นค่าเริ่มต้นทั้งหมด ในส่วนนี้คุณต้องใส่รหัสผ่านสำหรับเชื่อมต่อกับเซิร์ฟเวอร์ VPS ตรงนี้คุณสามารถสร้างรหัสผ่านใหม่หรือใส่รหัสผ่านอะไรก็ได้ตามต้องการ ซึ่งเป็นรหัสผ่านที่คุณต้องจำไว้ เพราะเป็นรหัสที่ใช้เชื่อมต่อกับเซิร์ฟเวอร์ VPS ถ้าลืมรหัสผ่าน คุณสามารถเข้าไปในคอนโซลแผงควบคุม (control panel) แล้วรีเซ็ตรหัสผ่านได้ แต่จะไปยุ่งยากทำไม หลังจากนั้นก็คลิก next ชำระเงิน แล้วผมจะพาคุณผ่านขั้นตอนถัดไป

ถ้าคุณเลือกตัวเลือก Racknerd หลังจากชำระเงินแล้ว คุณจะได้รับอีเมลแบบนี้จาก Racknerd จากอีเมลนี้เราจะต้องใช้สามอย่าง สิ่งแรกคือ IP address ของเซิร์ฟเวอร์ VPS ซึ่งทุกเซิร์ฟเวอร์ VPS มี IP address เฉพาะตัว และพวกเขาจะให้ IP นี้มา สิ่งที่สองคือชื่อผู้ใช้ (username) ของบัญชีที่ใช้เชื่อมต่อกับเซิร์ฟเวอร์ VPS ซึ่งกับ Racknerd ส่วนใหญ่ชื่อจะเป็น root เสมอ และอย่างที่สามคือรหัสผ่าน ซึ่งพวกเขาก็จะให้มาในนี้เรียกว่า root password ทั้งสามข้อมูลนี้จะอยู่ในอีเมลของคุณ ส่วน SSH port ไม่ต้องกังวล เพราะแอปพลิเคชันส่วนใหญ่ที่ใช้เชื่อมต่อกับเซิร์ฟเวอร์ VPS จะตั้งค่าเริ่มต้นเป็นพอร์ต SSH 22 เสมอ ด้วย IP address, username และรหัสผ่าน คุณจะสามารถเชื่อมต่อกับเซิร์ฟเวอร์ VPS ได้ ซึ่งผมจะพาคุณทำในขั้นตอนถัดไป

ถ้าคุณเลือกตัวเลือก Contabo คุณจะได้รับอีเมลแบบนี้จาก Contabo อีเมลของผมเป็นภาษาเยอรมัน แต่รูปแบบจะเหมือนกันไม่ว่าคุณจะอยู่ประเทศไหนหรือใช้ภาษาอะไร ในอีเมลจาก Contabo เราจะใช้สองอย่าง ทางด้านซ้ายนี้คือ IP address ซึ่งเป็น IP เฉพาะของเซิร์ฟเวอร์ VPS และเรายังต้องใช้ username ซึ่งกับ Contabo ก็เหมือนกัน ส่วนใหญ่ username จะเป็น root ส่วนรหัสผ่าน พวกเขาจะไม่ให้ในอีเมล แต่จะเป็นรหัสที่คุณตั้งตอนซื้อ VPS ดังนั้นด้วย IP address, username และรหัสผ่านที่คุณตั้งตอนซื้อ VPS เราจะสามารถเชื่อมต่อกับเซิร์ฟเวอร์ได้ และการเชื่อมต่อกับเซิร์ฟเวอร์ VPS มีแอปพลิเคชันหลายตัวให้เลือก ข่าวดีคือ ไม่ว่าคุณจะใช้ Windows หรือ Mac ทั้งคู่มาพร้อมแอปพลิเคชันในตัวที่ใช้เชื่อมต่อกับ VPS ได้ ถ้าใช้ Windows ก็แค่คลิกที่แถบค้นหาแล้วหาแอปชื่อ Windows PowerShell แล้วพอคลิกเปิด มันก็จะมีหน้าตาแบบนี้ ถ้าคุณใช้ Mac แอปพลิเคชันที่ใช้จะเรียกว่า Terminal คำสั่งที่เราจะใช้ใน PowerShell ที่นี่จะเหมือนกับที่ใช้ในเทอร์มินัลของ Mac ทุกประการ ไม่ต้องกังวลเรื่องความแตกต่างของคำสั่ง ในการเชื่อมต่อกับเซิร์ฟเวอร์ VPS แค่พิมพ์คำสั่ง ssh เว้นวรรค แล้วตามด้วย root โดย root คือ username ของเซิร์ฟเวอร์ VPS ซึ่งเหมือนกัน

สำหรับทั้ง Contabo และ Racknerd หลังจากนั้นก็ใส่ IP address ของเซิร์ฟเวอร์ VPS ของคุณ เคล็ดลับใน PowerShell คือ เมื่อไหร่ก็ตามที่คุณมีอะไรอยู่ในคลิปบอร์ด แล้วคลิกขวาที่เมาส์ มันจะวางสิ่งที่อยู่ในคลิปบอร์ดออกมา ซึ่งมีประโยชน์มาก โดยเฉพาะตอนพิมพ์รหัสผ่าน หลังจากนั้นก็กด enter ถ้าเป็นการเชื่อมต่อเซิร์ฟเวอร์ครั้งแรก มันจะถามว่าคุณต้องการเพิ่มฟิงเกอร์พรินต์ (fingerprint) ของเซิร์ฟเวอร์นี้ลงใน PC ของคุณหรือไม่ ถ้าคุณแน่ใจว่ากำลังเชื่อมต่อกับเซิร์ฟเวอร์ที่ถูกต้อง ก็พิมพ์ yes แล้วมันก็จะเรียบร้อย จากนั้นมันจะถามรหัสผ่านของ VPS ถ้ารหัสผ่านคุณซับซ้อน ก็พิมพ์มันไว้ที่ไหนสักแห่งก่อน แล้วเข้ามาที่นี่ คลิกขวา มันจะวางรหัสผ่านจากคลิปบอร์ด แล้วกด enter จากนั้นคุณจะเห็นว่าในกรณีของผม ผมเชื่อมต่อกับเซิร์ฟเวอร์ VPS ของผมแล้ว ผมจะล้างหน้าจอด้วยการพิมพ์ clear แล้วเราก็เริ่มขั้นตอนการตั้งค่าได้

ตอนนี้เราเชื่อมต่อกับ VPS โดยใช้ชื่อ root ซึ่งโดยทั่วไปคือผู้มีอำนาจสูงสุดบนเซิร์ฟเวอร์ Linux คำแนะนำของผมคือ อย่าติดตั้ง Hermes บน user root แต่ให้สร้างโปรไฟล์หรือ user ใหม่เพื่อรันมัน คำแนะนำนี้มีประโยชน์มาก เพราะคุณจะไม่ให้ Hermes เป็นผู้มีอำนาจสูงสุดบน VPS ของคุณ ในวิดีโอก่อนๆ ของผม เรามักทำบน root ซึ่งก็ไม่ผิดอะไร แต่ผมพยายามพัฒนาและนำทิปด้านความปลอดภัยที่ดีที่สุดมาให้เสมอ นี่คือเหตุผลที่รอบนี้เราจะไม่ติดตั้ง Hermes บน root เราจะสร้าง user เฉพาะเพื่อติดตั้งแอปพลิเคชัน Hermes ทั้งหมดบนนั้น

การสร้าง user ใหม่บน Linux ใช้คำสั่ง useradd เว้นวรรค แล้วตามด้วยชื่อ user ที่อยากสร้าง ในกรณีของผมจะตั้งชื่อว่า Larry พิมพ์ adduser Larry หลังจากนั้นมันจะถามรหัสผ่านสำหรับ user นี้ ผมก็จะใส่รหัสผ่านของผม แล้วกด enter มันจะให้พิมพ์รหัสผ่านอีกครั้ง แล้วกด enter จากนั้นจะถามว่าต้องการใส่ชื่อเต็ม (full name) หรือไม่ ข้ามได้โดยกด enter ส่วน room number กด enter, phone กด enter ข้ามไปเลย, home phone ข้ามได้เช่นกัน แล้วมันจะถามว่าข้อมูลที่กรอกถูกต้องหรือไม่ พิมพ์ Y แทน yes แล้วกด enter ตอนนี้คุณจะเห็นว่า Larry ถูกเพิ่มเป็น user แล้ว ต่อไปเราจะให้สิทธิ์ sudo แก่ user Larry เพื่อให้มันสามารถรันคำสั่งบางอย่างและติดตั้งแอปพลิเคชัน Hermes ได้ โดยใช้คำสั่งนี้: usermod -aG sudo larry ตรงนี้ให้แทนที่ Larry ด้วย username ของคุณ แล้วกด enter ยังไงก็ตาม ผมจะให้คำสั่งพวกนี้กับคุณด้วย คุณไม่จำเป็นต้องพิมพ์หรือจำมัน หลังจากนั้นกด enter เราก็จะได้ Larry เป็น user ที่มีสิทธิ์ sudo แล้ว

ผมจะล้างหน้าจอเพื่อให้ดูสะอาดขึ้น จากนั้นเราจะสลับจาก root user ไปเป็น Larry user เพื่อเข้าสู่ระบบในฐานะ Larry ที่เพิ่งสร้าง โดยใช้คำสั่ง su - แล้วตามด้วย Larry จะเห็นว่าสัญลักษณ์เปลี่ยนจาก root เป็น Larry นั่นหมายความว่าตอนนี้ผมไม่ได้อยู่บน root ซึ่งมีอำนาจสูงสุดแล้ว ผมเข้าสู่ระบบเป็น Larry ซึ่งมีอำนาจระดับนี้แล้ว ตอนที่เราเชื่อมต่อ VPS เราใช้คำสั่ง ssh root@IP address แต่ถ้าอยากเชื่อมต่อโดยไม่ใช้ root ก็สามารถใช้ user ใหม่ที่เราสร้าง ซึ่งในกรณีของผมคือ Larry แล้วใส่ IP address ของ VPS กด enter ใส่รหัสผ่านที่สร้างไว้ แล้วจะเห็นว่าผมเชื่อมต่อกับ VPS ได้เช่นกัน คุณจึงเชื่อมต่อ VPS ได้สองทาง คือใช้ root แล้วสลับเป็น Larry ด้วยคำสั่ง su - Larry หรือจะ ssh เข้าไปที่ Larry โดยตรงก็ได้ ผมจะยึดวิธีเดิมที่ตั้งค่าไว้แล้ว ผมพิมพ์ clear เพื่อล้างหน้าจอ แล้วเราก็เริ่มติดตั้ง Hermes ได้เลย

การติดตั้ง Hermes เราจะไปที่เว็บไซต์หลักของ Hermes เมื่อมาถึงหน้านี้ ให้เลื่อนลงมาตรงส่วน install via terminal เราจะใช้ native application และตรงนี้คำสั่งจะเริ่มต้นด้วย curl เสมอ เพื่อให้แน่ใจว่าคุณใช้คำสั่งที่ถูกต้อง คลิกเพื่อคัดลอก one-line installer ข้อดีคือ ตัวติดตั้งแบบบรรทัดเดียวนี้จะติดตั้ง dependencies ทั้งหมดที่จำเป็นสำหรับการติดตั้งหรือรัน Hermes โดยที่คุณไม่ต้องลงแอป A แอป B อะไรต่อมิอะไร หลังจากนั้นกด enter แล้วการติดตั้งก็จะรัน มันตรวจพบว่าผมใช้ Linux และจะรันสิ่งอื่นๆ ที่ขาดหายไปบนเซิร์ฟเวอร์ด้วย ตรงนี้มันถามว่าต้องการติดตั้ง ripgrep สำหรับค้นหาไฟล์ที่เร็วขึ้น และ TTS สำหรับข้อความเสียงไหม อันนี้ดีครับ เราก็พิมพ์ yes ว่าต้องการติดตั้ง แล้วกด enter จากนั้นผมจะใส่รหัสผ่านแล้วกด enter แล้วการติดตั้งก็จะดำเนินต่อไป ผมจะรอให้การติดตั้งเสร็จ แล้วเราค่อยไปต่อกัน

เอาล่ะ การติดตั้งส่วนที่ต้องมีก่อน (prerequisite) เสร็จแล้ว ตอนนี้เราสามารถเริ่มการตั้งค่าได้ ที่นี่เราต้องเลือกวิธีการตั้งค่า Hermes ผมแนะนำให้เลือก quick setup เพราะ full setup จะถามอะไรหลายอย่างที่เราต้องกำหนดค่า ทั้งที่เราไม่จำเป็นต้องใช้ และอันนี้ก็เป็นตัวเลือกที่แนะนำอยู่แล้ว แค่ทำให้แน่ใจว่าเลือกตัวเลือกนี้อยู่ ถ้าไม่ ก็ใช้ปุ่มลูกศรขึ้นลงบนคีย์บอร์ด ให้แน่ใจว่าเคอร์เซอร์อยู่ที่ตัวเลือกนี้ แล้วกด space bar หรือ enter ขั้นตอนถัดไปเราจะต้องสร้างบัญชีกับ Nous Research ถ้าคุณมีบัญชีอยู่แล้วก็ไม่ต้องสร้างใหม่ โดยพื้นฐานแล้ว ขั้นตอนนี้คือการผูก VPS หรือเซิร์ฟเวอร์ หรือการติดตั้ง Hermes นี้เข้ากับบัญชี Nous Research ของคุณ ตรงนี้คุณเลือกแผนฟรี (free subscription) ได้ Nous Research มีแผนเสียเงินบางแผนที่ให้คุณใช้กลุ่มโมเดล AI ของพวกเขาได้ แต่ในกรณีของผม ผมจะนำโมเดล AI ของตัวเองมาใช้ ดังนั้นผมจะเลือกตัวเลือกฟรี กด ctrl บนคีย์บอร์ดแล้วคลิกที่ URL นี้ ถ้ายังไม่มีบัญชี คุณจะเห็นตัวเลือกให้สร้างบัญชี แต่ในกรณีของผม ผมมีบัญชีอยู่แล้วและล็อกอินอยู่ มันจึงพาไปที่หน้าจอที่ผูกบัญชีกับการตั้งค่าได้โดยตรง ตรงนี้คลิก connect พอสำเร็จคุณจะได้รับการแจ้งเตือนว่าเชื่อมต่อแล้ว เมื่อกลับมาที่หน้าจอตัวติดตั้ง Hermes คุณจะเห็นว่ามันพาไปที่ขั้นตอนการเลือกโมเดล อย่างที่บอก ในกรณีของผม ผมจะไม่ใช้โมเดลใดๆ ที่ Nous Research ให้มา ผมจะนำโมเดลของตัวเองเข้ามา

ตรงนี้คุณสามารถกด enter เพื่อข้ามขั้นตอนการเลือกโมเดลได้ ขั้นตอนถัดไปเราจะเลือกเครื่องมือ (tools) สองสามอย่างที่ใช้กับ Hermes Agent ได้ เช่น คุณสามารถให้ตัวเลือกแก่เอเจนต์ในการค้นหาบนอินเทอร์เน็ตและดึงข้อมูลจากเว็บไซต์เฉพาะบางแห่ง ซึ่งตรงนี้คุณสามารถใช้เครื่องมือที่เรียกว่า Firecrawl และก็เช่นเดียวกัน ยังมีเครื่องมืออื่นๆ สำหรับการสร้างภาพ การแปลงข้อความเป็นเสียง (text to speech) การแปลงเสียงเป็นข้อความ (speech to text) และอื่นๆ ตรงนี้คุณสามารถกด enter เพื่อใช้ทั้งหมด หรือจะยกเลิกการเลือกบางอันที่ไม่ต้องการก็ได้ ขั้นตอนถัดไปเราจะเลือกเทอร์มินัลแบ็กเอนด์ (terminal back end) ปล่อยเป็นค่าเริ่มต้นคือ local ได้เลย โดยกด space bar ขั้นตอนถัดไปเราจะเชื่อมต่อแพลตฟอร์มส่งข้อความที่ใช้คุยกับเอเจนต์ AI ทั้งหมดของเรา และตรงนี้แนะนำให้ตั้งค่า เพราะเราไม่อยากคุยกับเอเจนต์ AI ผ่านเทอร์มินัลบน VPS ทุกครั้ง เราอยากมีอินเทอร์เฟซที่ง่ายและเป็นมิตรกว่าสำหรับคุยกับเอเจนต์ AI ดังนั้นตรงนี้เราจะเลือก set up messaging ซึ่งก็เป็นตัวเลือกที่แนะนำอยู่แล้ว กด space bar บนคีย์บอร์ด แล้วมันจะแสดงรายการแพลตฟอร์มส่งข้อความทั้งหมดที่ตั้งค่ากับ Hermes อยู่ และอย่างที่เห็น มีให้เลือกเยอะมาก แต่ในการตั้งค่านี้เราจะใช้ Telegram ให้กดลูกศรลงบนคีย์บอร์ด แล้วตรงนี้อย่ากด enter เพราะถ้ากด enter มันจะข้ามส่วนนี้ไป ให้กด space bar เพื่อให้แน่ใจว่ามันถูกติ๊กเลือก แล้วค่อยกด enter

ต่อไปเราจะสร้าง Telegram bot ซึ่งจะเป็นบอทที่เราใช้คุยกับเอเจนต์ที่จะสร้าง ในการตั้งค่า Telegram bot คุณเลือกได้ระหว่างการตั้งค่าอัตโนมัติ (automatic) หรือแบบ manual ในกรณีของผม ผมจะเลือกตัวเลือกกลางๆ คือ manual เพื่อโชว์ให้คุณเห็นว่าทำอย่างไร เผื่อภายหลังคุณต้องใช้กับแอปพลิเคชันอื่น สำหรับ manual ให้กด 2 แล้วกด enter แล้ว Hermes จะถามว่า Telegram bot token คืออะไร ในการหามัน ให้ไปที่ Telegram แล้วค้นหาบอทชื่อ BotFather คุณจะเห็นว่าบอท BotFather ตัวจริงมีผู้ใช้ต่อเดือนกว่า 7 ล้านคน เพื่อให้แน่ใจว่าคุณใช้บอทที่ถูกต้อง ระวังหน่อยนะครับ อย่างที่เห็น มี BotFather อยู่หลายตัว แต่ตัวที่คุณต้องใช้คือตัวที่มีเครื่องหมายถูกตรงนี้ และมียอดผู้ใช้กว่า 7 ล้านคนต่อเดือน ในการสร้างบอทใหม่ ใช้คำสั่ง /newbot แล้วกด enter หรือคลิกที่คำแนะนำที่มีให้ตรงนี้ ต่อไปเราต้องตั้งชื่อให้บอท ผมจะเรียกมันว่า KM ในกรณีของผม ย่อจาก Komputer Mechanic content creation OS พอตั้งชื่อเสร็จก็กด enter แล้วมันจะให้ใส่ username ของบอท ที่สำคัญมากคือ username ต้องลงท้ายด้วยคำว่า bot ผมเลยคัดลอกมาเพราะอยากให้ชื่อเดียวกันแต่เติมคำว่า bot ต่อท้าย แล้วกด enter บอทก็จะถูกสร้างให้คุณ

เมื่อบอทถูกสร้าง BotFather จะให้คีย์เฉพาะตัวที่ยืนยันว่าคุณเป็นผู้สร้างหรือเจ้าของบอทนั้น ผมจะคลิกที่นี่เพื่อคัดลอกคีย์ เพราะนั่นคือสิ่งที่ตัวติดตั้ง Hermes กำลังถาม และผมจะวางคีย์ลงตรงนี้ แล้วกด enter ขั้นตอนนี้เป็นขั้นตอนที่แนะนำอย่างยิ่ง Hermes ถามว่า คุณต้องการกำหนดผู้ใช้บางคนที่เป็นคนเดียวที่ได้รับอนุญาตให้คุยกับบอทไหม? อันนี้สำคัญมากๆ เพราะถ้ามีคนรู้ username ของบอทคุณ คุณคงไม่อยากให้พวกเขาคุยกับบอทได้ เราจึงจะบอก Hermes ว่า "เฮ้ ให้ผมเป็นคนเดียวที่คุยกับบอทนี้ได้" และวิธีเดียวที่ Hermes จะรู้ว่าคุณคือใครคือการให้ Hermes รู้ user ID ของคุณใน Telegram ในการหา Telegram user ID เราจะใช้บอทที่ชื่อว่า User Info Bot ซึ่งมีผู้ใช้กว่า 400,000 คน มีบอทอื่นๆ อีกเยอะ ดังนั้นต้องแน่ใจว่าใช้ตัวที่ถูกต้อง ในการหา user ID คุณแค่ส่งข้อความอะไรก็ได้ไปให้บอท เช่น "hi" แล้วบอทจะตอบกลับด้วย user ID ของคุณ ผมจะคลิกที่นี่เพื่อคัดลอก user ID กลับมาที่เทอร์มินัลการติดตั้ง Hermes วาง user ID แล้วกด enter จากนั้น Hermes จะถามว่าต้องการตั้ง user ID นี้เป็น home channel ไหม นั่นหมายความว่าในแชทที่คุณคุยกับบอท เมื่อไหร่ก็ตามที่ Hermes gateway รีสตาร์ทหรือมีอะไรเกี่ยวกับระบบเกิดขึ้น คุณจะได้รับการแจ้งเตือนในหน้าต่างแชทนี้ พิมพ์ Y แทน yes แล้วกด enter

จากนั้นจะถามว่าต้องการติดตั้ง Hermes gateway เป็น system service ไหม อันนี้สำคัญมาก เพราะเมื่อไหร่ก็ตามที่เซิร์ฟเวอร์ VPS รีสตาร์ทเพราะการอัปเดตระบบหรืออะไรก็ตาม Hermes gateway จะเริ่มทำงานโดยอัตโนมัติ ซึ่งมีประโยชน์มาก คุณจะได้ไม่ต้องเริ่มมันด้วยตัวเองทุกครั้ง กด Y แทน yes แล้วกด enter แล้วตรงนี้จะถามว่าต้องการรัน gateway แบบไหน ในกรณีของเราเราจะใช้ system service กด enter จากนั้นจะถามอีกครั้งว่าต้องการรันและติดตั้ง gateway เป็น background system service ไหม กด Y แทน yes แล้วกด enter แล้วการติดตั้ง Hermes ก็เสร็จสมบูรณ์

สำคัญมากตรงนี้ เราจะต้องโหลดเชลล์ใหม่เพื่อที่เราจะได้พิมพ์ hermes แล้วมันจะเปิดแอปพลิเคชัน Hermes ในการทำอย่างนั้น ให้คัดลอกคำสั่งที่เขาให้ไว้ตรงนี้ วางกลับเข้าไปในเทอร์มินัลแล้วกด enter มันจะรีสตาร์ทเชลล์ให้คุณ จำไว้ว่าเราติดตั้ง Hermes เสร็จแล้ว แต่ในกรณีของผม ผมไม่ได้เลือกโมเดล AI ใดๆ เพราะอยากนำโมเดล AI ของตัวเองมาใช้ ดังนั้นตรงนี้เราจะกำหนดค่าโมเดล AI ของเราเอง และผมทำแบบนี้เพื่อให้คุณได้เรียนรู้วิธีเพิ่มโมเดล AI ของคุณเองในภายหลัง ถ้าในอนาคตอยากเพิ่มโมเดล AI คุณสามารถขอให้เอเจนต์ AI ทำสิ่งนี้ให้คุณได้ แต่ผมไม่แนะนำวิธีนี้ เพราะในกรณีส่วนใหญ่เอเจนต์ AI ไม่ได้ฉลาดพอ มักจะทำให้การกำหนดค่าของคุณพัง ดังนั้นเรื่องแบบนี้ผมชอบทำเอง

สำหรับว่าจะใช้โมเดล AI ตัวไหน ก็แล้วแต่คุณเลย แต่สิ่งที่ผมใช้บ่อยที่สุด และหลายคนอาจยังไม่รู้คือ ถ้าคุณมีการสมัครสมาชิก ChatGPT แบบ Plus หรือ Pro คุณจะสามารถใช้โมเดล AI จาก OpenAI ที่เรียกว่า Codex บน Hermes Agent ได้เกือบฟรี ถ้าคุณมีแผน 20 ดอลลาร์ก็ใช้ได้ ถ้ามีแผน Pro ก็ใช้ได้เหมือนกัน ผมไม่ค่อยแน่ใจว่าแผน Go มีให้หรือเปล่า ในกรณีของผม ผมใช้แผน Pro เป็นส่วนใหญ่ และขีดจำกัดการใช้งานของแผน Pro ก็มากกว่าแผน 20 ดอลลาร์อยู่แล้ว ถ้าไม่แน่ใจว่าต้องการอันไหน ก็เริ่มจากบัญชี Plus ก่อน ถ้าใช้งานถึงขีดจำกัด ก็อัปเกรดเป็นแผน Pro ได้เสมอ และอันนี้ยังค่อนข้างใจดีในแง่ขีดจำกัดของ token ด้วย

คุณจะสามารถทำงานได้เยอะมากแม้จะใช้แผน 20 ดอลลาร์ก็ตาม ข้อดีคือ มันไม่ใช่ระบบจ่ายตามการใช้งาน (pay as you go) เมื่อใช้ถึงขีดจำกัดก็จบ ไม่มีบิลเซอร์ไพรส์จาก OpenAI ว่า "เฮ้ คุณใช้เกินสิทธิ์การสมัครสมาชิกแล้ว ต้องจ่ายเพิ่ม" ไม่มีสิ่งนั้น ดังนั้นผมจึงเลือกตัวเลือกเหล่านี้เป็นการส่วนตัว เพราะไม่ต้องกังวลเรื่องบิลเซอร์ไพรส์อะไรแบบนั้น ส่วนตัวผมใช้แผน Pro เพราะผมมี Hermes setup หลายอัน ทำให้การใช้ token เยอะมาก และสำหรับบทช่วยสอนที่ทำให้ทุกคน ผมมักทดลองเกิน 10 ครั้ง ดังนั้นผมจึงต้องการขีดจำกัด token ที่สูงกว่าที่เขาให้มา ตอนที่ผมมีบัญชี OpenAI แค่บัญชีเดียว อันนี้ก็เพียงพอแล้วสำหรับผม

อีกอย่างที่หลายคนไม่รู้คือ ถ้าคุณมีบัญชี X คุณก็สามารถใช้โมเดล Grok บน Hermes Agents ได้ฟรีเช่นกัน ไม่ว่าคุณจะมีบัญชี ChatGPT แบบเสียเงิน หรือสมัครสมาชิกแบบพรีเมียม คุณก็สามารถใช้โมเดล AI ของพวกเขาบน Hermes Agent ได้ฟรีทั้งคู่ ถ้าคุณไม่อยากใช้ตัวเลือกเหล่านี้ และอยากได้โมเดลเฉพาะ เช่น จาก Anthropic อย่าง o3, Sonnet หรืออะไรก็ตาม เราสามารถมาที่ OpenRouter ได้ OpenRouter มีคลังโมเดลเยอะมาก รวมถึงโมเดล AI ยอดนิยมทั้งหมดที่มีอยู่ คุณสามารถหาได้บน OpenRouter ข้อดีของ OpenRouter คือ พวกเขาจะให้ API key อันเดียวกับคุณ และด้วย API key อันเดียวนั้น คุณสามารถเข้าถึงโมเดลทั้งหมดที่มีอยู่ได้ ข้อควรระวังคือ OpenRouter เป็นแบบจ่ายตามการใช้งาน (pay as you go) ไม่ใช่แบบจ่ายรายเดือนแล้วใช้ถึงขีดจำกัดก็จบ คุณจ่ายตามที่ใช้ ยิ่งใช้มากยิ่งจ่ายมาก ผมหมายถึง จะใช้โมเดลไหนก็แล้วแต่คุณเลย เลือกตัวเลือกที่สมเหตุสมผลที่สุดสำหรับคุณ

ในกรณีของผม ผมจะใช้ OpenAI ของผม เพราะผมมีการสมัคร ChatGPT อยู่ ในการใช้งาน ผมจะล้างหน้าจอก่อนเพื่อให้ดูสะอาดขึ้น แล้วพิมพ์คำสั่ง hermes model แล้วกด enter คำสั่งนี้จะโหลดโมเดลทั้งหมดที่ใช้ได้บน Hermes Agent ตอนนี้ ถ้าคุณมีบัญชี X แบบพรีเมียม ตัวเลือกของคุณก็จะอยู่ตรงนี้ คือ xAI Grok กระบวนการจะเหมือนกันไม่ว่าคุณจะเลือกตัวเลือกไหน ในกรณีของผม ผมจะเลือกอันนี้โดยกด space bar แล้วตรงนี้เราจะมีตัวเลือกระหว่าง OpenAI API ถ้าเลือก API คุณจะจ่ายตามการใช้งาน ยิ่งใช้มากยิ่งจ่ายมาก และคุณต้องสร้าง API key เฉพาะเพื่อเรียกเก็บเงิน แต่ในการตั้งค่าของเรา เราจะใช้การสมัครสมาชิกของเรา ผมจะเลือก OpenAI Codex ในการทำอย่างนั้น เราจะกด ctrl แล้วคลิกที่ URL ที่ให้ไว้ตรงนี้ และในกระบวนการนี้ เราจะต้องกรอกโค้ดที่อยู่ตรงนี้ ให้ไฮไลต์โค้ดนี้ สำคัญมาก กด control+shift+C อย่ากด Ctrl+C เพราะใน Linux Ctrl+C ใช้ยกเลิกแอปพลิเคชัน และมันจะปิดหน้าจอทั้งหมดนี้ นี่คือเหตุผลที่ต้องกด control+shift+C จากนั้นลิงก์จะพาคุณไปที่หน้านี้ สิ่งที่ต้องทำคือล็อกอินเข้าบัญชี OpenAI ของคุณ ผมจะคลิกที่นี่ คลิก continue แล้วใส่โค้ดที่คัดลอกมาจากการติดตั้ง Hermes แล้วคลิก continue จากนั้นบัญชี OpenAI ของเราก็จะถูกผูกเข้ากับการตั้งค่า Hermes ของเรา พอกลับมาที่นี่จะเห็นว่าการยืนยันตัวตน (authentication) เสร็จสิ้น แล้วตรงนี้จะถามให้เลือกโมเดล AI

ตรงนี้คุณสามารถใช้โมเดลไหนก็ได้ที่มี จำไว้ว่ายิ่งเลขสูง เช่น 5.6 ใช้ token เยอะกว่า 5.4 มาก ส่วน 5.5 ก็ใช้ token สูงกว่า 5.4 เช่นกัน ในกรณีของผม ผมใช้ 5.5 เป็นส่วนใหญ่ เพราะมันยังเป็นโมเดลที่ทรงพลังมาก และผมอยากได้ token เยอะๆ แต่ถ้าคุณอยู่บนแผน 100 ดอลลาร์และมี token เยอะ คุณก็เลือก 5.6 ได้เช่นกัน แล้วแต่คุณเลย ผมจะเลือก 5.5 ตรงนี้ กด space bar แล้วคุณจะเห็นว่ามันบอกว่าโมเดลเริ่มต้นของผมถูกตั้งเป็น GPT-5.5 แล้ว ก่อนที่เราจะไปที่ Telegram เพื่อทดสอบว่าทุกอย่างทำงานได้หรือไม่ จากการติดตั้ง Hermes และการกำหนดค่าโมเดล ให้พิมพ์ hermes แล้วมันจะเปิดสิ่งที่เรียกว่า Hermes terminal user interface (TUI) ซึ่งจะเป็นกล่องแชทที่คุณสามารถคุยกับเอเจนต์ AI เริ่มต้นของคุณเพื่อให้แน่ใจว่าทุกอย่างทำงาน แต่หลายคนอย่างผมไม่ใช้ส่วนนี้ เพราะคุณต้องล็อกอินเข้าสู่ VPS แล้วมาที่หน้านี้แปลกๆ เพื่อคุยกับเอเจนต์ AI เราแค่อยากให้แน่ใจว่าการตั้งค่าทำงาน นี่คือเหตุผลที่ผมมาที่นี่ ตรงนี้ผมจะส่งข้อความง่ายๆ อย่าง "hi" และถ้าเอเจนต์ตอบสนอง ก็หมายความว่าการติดตั้ง Hermes ทำงาน มันยังหมายความว่าการกำหนดค่าโมเดล AI ทำงานด้วย และตรงนี้คุณจะเห็นว่าเอเจนต์ตอบกลับว่า "hi what can I help you with?" นั่นหมายความว่าการติดตั้งของเราทำงาน การกำหนดค่าโมเดล AI ทำงาน ในการออกจากหน้าจอนี้ คุณสามารถกด Ctrl+C บนคีย์บอร์ด หรือพิมพ์ /exit แล้วกด enter มันจะพาคุณออกจาก Hermes terminal user interface

ขอพูดถึงสปอนเซอร์ของวิดีโอวันนี้สักครู่ คือ Sudalis AI และอันนี้น่าฟังมาก ปัญหาที่พวกเขาแก้คือ บริษัทต่างๆ กำลังจมอยู่กับ AI ที่ไม่เชื่อมต่อถึงกัน บริษัทส่วนใหญ่ใช้เครื่องมือ AI ที่ไม่แม้แต่จะคุยกัน เครื่องมือหนึ่งทำสิ่งนี้ อีกอันทำสิ่งนั้น แต่ไม่มีอะไรเชื่อมต่อกัน จึงไม่มีอะไรทำงานร่วมกันได้จริงๆ Sudalis AI สร้างระบบที่เชื่อมทุกอย่างเข้าด้วยกันเป็นสแต็กเดียว ลองเข้าไปดูที่ sudalis.ai โดยมีลิงก์ทั้งหมดอยู่ในส่วนคำอธิบาย ขอบคุณ Sudalis AI ที่สปอนเซอร์วิดีโอนี้

ต่อไปเราจะกลับมาที่ BotFather เมื่อมันสร้างบอทให้เราแล้ว มันยังให้ URL มา ซึ่งเราสามารถเริ่มคุยกับบอทได้ ตรงนี้คลิกที่ URL นี้ มันจะเปิดแชทใหม่กับบอทที่สร้างไว้ คุณแค่คลิก start นี่จะส่งข้อความแบบ start ไปให้บอท แต่บอทไม่ตอบ เพราะมันไม่เข้าใจว่า start หมายถึงอะไร เราจึงจะส่งข้อความอย่าง "hi" ไปให้บอท และถ้าทุกอย่างทำงาน บอทจะเริ่มพิมพ์ตอบ ถ้าคุณเห็นสัญลักษณ์กำลังพิมพ์ ก็หมายความว่าบอทถูกตั้งค่าอย่างถูกต้อง และบอทจะตอบกลับคุณ บอทตอบว่า "hi what can I help you with today" เอาล่ะ เราจะไม่คุยกับบอทในเซสชันนี้ สิ่งที่เราอยากสร้างคือ Telegram group สำหรับบอทของเรา เหตุผลที่เราจะสร้าง group คือ เราจะมีหัวข้อ (topic) สามหัวข้อ หัวข้อแรกคือที่ที่เราจะคุยกับบอท ซึ่งก็คือ orchestrator ของเรา จากนั้นเราจะมีหัวข้อที่สองหรือช่องที่สอง ใช้คุยกับเอเจนต์นักพัฒนา (developer agent) ที่จะสร้างแดชบอร์ดทั้งหมดให้เรา และเราจะมีช่องที่สามซึ่งเราจะเรียกว่า studio นั่นคือที่ที่เราจะระดมความคิด (brainstorm) ไอเดียกับเอเจนต์ของเรา ในการสร้าง group มีข้อกำหนดเบื้องต้นว่า

คุณต้องมีคนอย่างน้อยสองคนใน group เราจึงต้องใช้ username ของบอทเพื่อที่จะเพิ่มบอทเข้าไปใน group ที่จะสร้าง ผมจะคลิกที่ชื่อบอทตรงนี้ แล้วคลิกเพื่อคัดลอก username ของบอท จากนั้นปิดกล่องโต้ตอบนี้ แล้วสร้าง group ใหม่ได้ ในการสร้าง group ใหม่ ให้คลิกที่เมนูแฮมเบอร์เกอร์ทางด้านซ้าย แล้วคลิก new group จากนั้นตั้งชื่อ group ในกรณีของผมจะเรียกมันว่า KM Content OS แล้วคลิก next แล้วเราจะต้องเพิ่มคนอย่างน้อยหนึ่งคนเข้าไปใน group นั่นคือเหตุผลที่เราคัดลอก username ของบอท ผมวาง username แล้วคลิกเลือกบอท แล้วคลิก create ตอนนี้เราก็มี group ของเราแล้ว แต่อย่างที่บอก เราอยากสร้างช่อง (channel) ต่างๆ ใน group นี้ เราจะต้องทำให้บอทที่เราเพิ่มเข้าไปเป็นผู้ดูแลระบบ (administrator) เพื่อให้บอทสามารถพูดใน group นี้ได้ คลิกที่จุดสามจุดตรงนี้ ไปที่ group info คลิก manage เลื่อนลงมาตรงนี้คลิก administrators จากนั้น add administrator เลือกบอทที่เราสร้างไว้ เพราะบอทอยู่ใน group นั้นแล้ว แล้วตรวจสอบสิทธิ์ (permissions) ที่อยากให้บอท แล้วคลิก save ตอนนี้คุณจะเห็นว่าบอทของเรามีสิทธิ์เป็น admin แล้ว จากนั้นคลิก close

ระหว่างที่อยู่ตรงนี้ เราจะเปิดใช้งานสิ่งที่ผมเรียกว่าช่อง (channels) ด้วย โดยค่าเริ่มต้น Telegram ไม่ได้เปิดฟีเจอร์ channels หรือที่เรียกว่า topics ใน Telegram ให้คุณ ในการเปิดใช้งาน ให้คลิกที่ส่วน topics ตรงนี้ ซึ่งในกรณีของผมปิดอยู่โดยค่าเริ่มต้น คลิกที่มันแล้วเปิดใช้งานได้ จากนั้นตรงนี้คุณเลือกมุมมองที่ต้องการ ในกรณีนี้ผมจะเลือกตัวเลือกแบบ tabs แล้วคลิก save แล้วคลิก save อีกครั้ง จากนั้นปิดหน้านี้ได้ ทันทีที่เราเปิด topics คุณจะเห็นว่าเรามีช่องต่างๆ หลายช่องแล้ว เรามีช่อง all ที่จะเห็นข้อความทั้งหมดจากทุกช่อง และยังมีช่อง general ก่อนอื่นมาลองเปลี่ยนชื่อช่อง general กัน คลิกจุดสามจุดตรงนี้ ไปที่ edit แล้วตั้งชื่อช่องนี้ว่า orchestrator เพราะนี่คือช่องที่เราจะคุยกับบอทหลักของเรา คลิก save แล้วเราจะเริ่มคุยกับ orchestrator ที่นี่ ขอผมส่งข้อความในแชทตรงนี้ดู เมื่อผมส่ง "hi" แล้วบอทของเรากำลังพิมพ์ แปลว่า orchestrator อยู่ในแชทนี้แล้ว เราสามารถเริ่มคุยกับ orchestrator ได้ เราจะสร้างอีกสองช่อง แต่ยังไม่ถึงตอนนั้น ขอสร้างฐานรากให้เสร็จก่อน แล้วพอไปถึงตรงนั้น เราค่อยผ่านกระบวนการนั้นกัน

พรอมป์ต์ทั้งหมดที่ผมจะใช้ในการ build ครั้งนี้สามารถหาได้ ถ้าคุณสนใจ คุณสามารถรับมันได้ด้วยการสนับสนุนเล็กน้อย (token of support) บนเว็บไซต์ของผม หรือถ้าคุณเป็นสมาชิกคอมมูนิตี้ของผมก็สามารถรับได้เช่นกัน ถ้าอยากเป็นสมาชิกคอมมูนิตี้ ราคา 10 ดอลลาร์ต่อเดือน คุณจะสามารถเข้าถึงพรอมป์ต์ทั้งหมด เทมเพลตทั้งหมด และพรอมป์ต์บทช่วยสอนทั้งหมดที่ผมมีบนช่องได้ และนี่ยังช่วยสนับสนุนงานที่ผมทำอีกด้วย มีความพยายามอย่างมากในการสร้างบทช่วยสอนเหล่านี้ แบบฟอร์มเหล่านี้ที่ผมให้คุณ โมเดล AI ที่ผมใช้ในการ build ก็ค่อนข้างแพงเช่นกัน ผมจึงต้องการการสนับสนุนเล็กน้อยเพื่อช่วยให้ผมสามารถนำบทช่วยสอนเหล่านี้มาสู่คุณต่อไปได้ ถ้าอยากเข้าร่วมกลุ่มสมาชิกของผม ผมยินดีต้อนรับคุณอย่างยิ่ง เรายังมีช่อง Telegram ที่คุณสามารถเข้าถึงตัวผมหรือทุกคนในคอมมูนิตี้ ถามคำถามอะไรก็ได้ แล้วทุกคนที่นั่นยินดีช่วยเหลือคุณกับคำถามที่คุณมี และผมยังสร้างตัวติดตั้งอัตโนมัติ (auto installers) ด้วย เช่น สำหรับการตั้งค่าที่ผมกำลังสร้าง ผมกำลังสร้างตัวติดตั้งอัตโนมัติที่จะ build ทั้งหมดให้คุณภายในไม่ถึง 5 นาที และสิ่งนี้จะพร้อมให้สมาชิกคอมมูนิตี้หรือสมาชิกของผมใช้เช่นกัน ถ้าอยากเข้าร่วม ผมยินดีต้อนรับคุณ

สิ่งที่ผมทำตอนนี้คือย้าย Telegram ไปทางซ้าย และวางพรอมป์ต์ทั้งหมดไว้ทางขวา เพื่อให้คัดลอกได้ง่ายขึ้น เมื่อไหร่ก็ตามที่คุณตั้งค่า Hermes ครั้งแรก บอทไม่รู้ว่าคุณเป็นใคร บอทไม่มีชื่อ บอทไม่รู้ว่ามันจะช่วยคุณในสิ่งที่คุณอยากทำได้อย่างไร สิ่งแรกที่ผมแนะนำผู้ใช้เสมอคือ "เฮ้ ให้บอทเข้าใจก่อนว่าคุณเป็นใคร ตั้งชื่อให้บอท บอกชื่อคุณให้บอทรู้ และบอกคร่าวๆ ว่ามันจะช่วยคุณได้อย่างไร" พรอมป์ต์แรกที่ผมจะให้บอทคืออันนี้ "ชื่อของคุณคือ orchestrator คุณจะเป็นผู้ประสานงานระดับสูงสุด (top level coordinator) สำหรับการตั้งค่า multi-agent ของผม และผมคือเจ้าของและมีอำนาจสูงสุด" แล้วตรงนี้คุณจะกรอกชื่อของคุณให้เอเจนต์รู้ คุณจะให้ชื่อบรานด์ของคุณแก่เอเจนต์ ให้แฮนเดิลโซเชียลมีเดียของคุณ เพราะจำไว้ว่าเรากำลังสร้างเครื่องจักรสร้างคอนเทนต์โซเชียลมีเดีย คุณจะบอกเอเจนต์ว่าบรานด์ของคุณสอนอะไร อันนี้สำคัญมาก เพราะเราจะมีแดชบอร์ดที่สร้างไอเดียให้เรา และเพื่อให้เอเจนต์สามารถสร้างไอเดียคอนเทนต์หรือไอเดียโพสต์เหล่านี้ให้คุณ พวกมันต้องเข้าใจว่าคุณกำลังสร้างอะไร นี่คือเหตุผลที่ส่วนนี้สำคัญแบบไม่สามารถต่อรองได้ คุณยังสามารถบอกเอเจนต์ได้ว่ากลุ่มเป้าหมาย (audience) ของคุณคือใครและอื่นๆ

ผมจะคัดลอกอันนี้ วางตรงนี้ แล้วกรอกข้อมูลในส่วนต่างๆ สำหรับการ build ของผม ตรงนี้ผมบอกว่า "เฮ้ ผมชื่อ Larry บรานด์ของผมคือ Komputer Mechanic แฮนเดิลโซเชียลของผมคือ komputer mechanic และตรงนี้ผมสอนนักสร้างเทคนิค (technical builders) ให้สร้างเอเจนต์ AI และระบบอัตโนมัติ กลุ่มเป้าหมายของผมคือใคร น้ำเสียงของผมคืออะไร และเขตเวลาทำงานของผมคืออะไร" เขตเวลาทำงานสำคัญ เช่น ตอนที่เอเจนต์สร้างงาน cron เอเจนต์จะได้รู้ว่าควรติดต่อคุณตอนไหน ตอนนี้ผมจะส่งอันนี้ให้ orchestrator เพื่อให้มันรู้จักว่าผมเป็นใคร และเรากำลังจะสร้างอะไรในวันนี้ จากนั้น orchestrator ตอบกลับว่า "เฮ้ เข้าใจแล้ว ผมคือ orchestrator และคุณคือ Larry บรานด์ของคุณคือ Komputer Mechanic และคอนเทนต์ของคุณเป็นแบบตรงไปตรงมา สอนนักสร้างให้สร้างเอเจนต์และระบบอัตโนมัติ"

พรอมป์ต์สองอันถัดไปนี้คือสิ่งที่ผมแนะนำให้คุณทำ พรอมป์ต์ที่สองคือการบอกให้ orchestrator สัมภาษณ์คุณ สิ่งที่คุณให้ orchestrator ตรงนี้คือกระดูกสันหลังหรือรากฐาน แต่ยังมีอีกมากที่คุณให้เอเจนต์เรียนรู้เกี่ยวกับคุณได้ ดังนั้นใช้เวลากับพรอมป์ต์นี้ เพราะมันจะถามคำถามคุณเพื่อทำความเข้าใจว่าคุณเป็นใคร การตั้งค่าที่อยากสร้าง กลุ่มเป้าหมาย และอื่นๆ แต่ผมจะข้ามอันนี้ในบทช่วยสอน เพราะเดี๋ยวบทช่วยสอนจะยาวเกินไป เพราะสำหรับการทดสอบ มันจะถามคุณประมาณ 10-15 คำถาม ผมจะข้ามเพื่อไม่ให้บทช่วยสอนยาวเกินไป สิ่งที่สองที่ผมแนะนำคือกฎการปฏิบัติงานถาวร (permanent operating rules) เวลาทำงานกับเอเจนต์ แนะนำเสมอให้เอเจนต์

ให้แผนกับคุณเสมอก่อนที่จะทำอะไรก็ตามที่มันอยากทำ และเมื่อเอเจนต์กำลังทำงาน คุณอยากให้เอเจนต์อัปเดตคุณตลอดกระบวนการว่ามันกำลังสร้างอะไรอยู่ มิฉะนั้นบางครั้งคุณก็จะนั่งอยู่ในความมืด ไม่รู้ว่างานเสร็จหรือยัง นี่คือเหตุผลที่ผมเตรียมกฎการปฏิบัติงานถาวรเหล่านี้ไว้ ซึ่งคุณสามารถให้เอเจนต์ของคุณได้เช่นกัน มันเป็นตัวเลือกว่าคุณอยากมีมันไว้หรือไม่ ผมจะข้ามส่วนนี้ไปเช่นกัน ไม่งั้นในการ build ของผม orchestrator จะถามหาวางแผนตลอดเวลาว่าผมต้องพิมพ์อนุมัติก่อนที่มันจะทำ และนั่นจะทำให้การ build ช้าลง

ตอนนี้เราจะเริ่มส่วนหลักของการ build เราจะบอก orchestrator ว่า "เฮ้ เราจะสร้างเอเจนต์ต่างๆ ขึ้นมา เราจะสร้างเอเจนต์อย่าง Atlas ที่ดูแลการสร้างไอเดียคอนเทนต์ carousel เราจะมี Vera เป็นนักเขียน เราจะมี Kite เป็นนักออกแบบ และ Kite ยังเป็นนักพัฒนาของเราด้วย และเราจะมี Orion เป็นนักเผยแพร่ที่เผยแพร่สิ่งต่างๆ ไปยังช่องทางที่เราต้องการ" และตรงนี้เรากำลังให้ภาพรวมคร่าวๆ แก่ orchestrator ว่าอยากสร้างอะไร และเราบอก orchestrator ว่า "เฮ้ คุณเป็นหนึ่งในห้าเอเจนต์ที่เราจะสร้างอยู่แล้ว คุณจะเป็นเอเจนต์หลัก และคุณคือคนที่ผมกำลังคุยด้วยตอนนี้" และที่สำคัญ ผมบอกมันว่าตอนที่มันสร้างโปรไฟล์เหล่านี้ มันไม่ควรสร้างโปรไฟล์ให้ตัวเอง เพราะผมเคยทดสอบกับโมเดล AI บางตัวที่สร้างโปรไฟล์ให้ตัวเองด้วย ซึ่งไม่สมเหตุสมผล นี่คือเหตุผลที่ผมบอกมันตรงนี้ว่า "คุณไม่จำเป็นต้องสร้างโปรไฟล์ให้ตัวเอง" ผมจะคัดลอกพรอมป์ต์นี้และให้ orchestrator เพื่อเตรียมมันว่าอะไรจะถูกสร้าง แล้วผมยังบอกมันว่า "เฮ้ ยืนยันว่าคุณเข้าใจแผน ห้าบทบาท และการแมปชื่อโปรไฟล์ ก่อนที่คุณจะไปเปลี่ยนแปลงหรือสร้างอะไร" และสิ่งที่ผมชอบเกี่ยวกับ Hermes คือ เมื่อไหร่ก็ตามที่คุณส่งอะไรให้ Hermes ที่มันเห็นว่ามีประโยชน์ในระยะยาว มันจะบันทึกสิ่งนั้นลงในหน่วยความจำ (memory) นี่คือเหตุผลที่คุณจะเห็นข้อความแบบ memory เสมอ นั่นหมายความว่ามีบางอย่างถูกเขียนลงหน่วยความจำแล้ว และยังไงก็ตาม cadence คือชื่อที่ผมตั้งให้กับระบบปฏิบัติการสร้างคอนเทนต์ (content creating OS) ที่เราจะทำงานด้วยวันนี้ จากนั้นมันก็แค่บอกว่า "ห้าบทบาทของ Cadence คือ orchestrator ซึ่งก็คือผม และโปรไฟล์อื่นๆ ที่เราจะสร้าง" และมันบอกว่า "คุณคือ Larry เจ้าของและผู้มีอำนาจตัดสินใจสูงสุด"

พรอมป์ต์ถัดไปนี้จะเป็นพรอมป์ต์ที่สำคัญที่สุด นี่คือพรอมป์ต์ที่จะสร้างเอเจนต์ AI ที่เราต้องการ ผมจะส่งพรอมป์ต์นี้ให้ orchestrator ผมบอก orchestrator ว่า "เฮ้ สร้าง hermes profiles แบบ persistent ห้าโปรไฟล์" เหตุผลที่ผมใช้คำว่า persistent ก็เพราะ Hermes ยังสามารถสร้างเอเจนต์ที่ถูกเรียกเข้ามาทำงานแล้วก็ตายจากไปได้ (แบบชั่วคราว) แต่สิ่งที่ผมอยากสร้างคือเอเจนต์ที่ถูกสร้างถาวร หมายความว่าเมื่อไหร่ก็ตามที่เราต้องการ พวกมันจะอยู่ตรงนั้นเสมอ และเวลาสร้างเอเจนต์กับ Hermes จะมีเอเจนต์เริ่มต้น (default agent) หนึ่งตัวเสมอ มีเอเจนต์หนึ่งตัวที่อยู่บนสุดเสมอ ซึ่งก็คือ default agent และใต้ default agent คุณสามารถมีเอเจนต์ได้กี่ตัวก็ได้ตามต้องการ แต่จะมีเอเจนต์หนึ่งตัวอยู่บนสุดเสมอ นี่คือเหตุผลที่ในการตั้งค่าของผม ผมมักทำให้ default agent ที่อยู่บนสุดเป็น orchestrator แล้วมันก็สร้างเอเจนต์อื่นๆ ที่ทำงานใต้มัน ตัวอย่างเช่น ถ้ามีคนถามว่าสามารถมี orchestrator สองตัวได้ไหม โดยหลักการแล้วคุณมี orchestrator สองตัวได้ แต่นั่นหมายความว่า orchestrator หนึ่งตัวจะต้องอยู่ใต้ default orchestrator ซึ่งก็ทำได้เช่นกัน สุดท้ายก็แล้วแต่คุณว่าจะกำหนดค่ายังไง

ในการสร้างโปรไฟล์ให้เอเจนต์ คุณต้องบอกเอเจนต์ว่า "เฮ้ ฉันในฐานะเอเจนต์คืออะไร" สำหรับเอเจนต์ทั้งหมด เราบอก orchestrator ให้เพิ่มข้อมูลนี้ลงในเอกสารที่เรียกว่า soul.md ดังนั้น soul.md คือเอกสารที่บอกเอเจนต์ว่า "เฮ้ ผมชื่อ Larry นี่คือสิ่งที่ผมทำ นี่คือคนที่ผมทำงานด้วย นี่คือระบบที่เราทำงานด้วย" และอื่นๆ นี่คือเหตุผลที่ในพรอมป์ต์นี้ สำหรับเอเจนต์ทั้งหมด ผมบอก orchestrator ว่ามันควรใส่อะไรในคำอธิบายของพวกมัน ตัวอย่างเช่น สำหรับ Scout ผมบอกว่า "เฮ้ ชื่อของคุณคือ Scout คุณเป็นหน่วยสอดแนมคอนเทนต์ (content scout) ของ Cadence Studio งานของคุณคือหาไอเดีย carousel สำหรับ Instagram และ TikTok ที่สดใหม่และสะดุดตา แล้วค้นคว้าข้อเท็จจริงเบื้องหลังมัน" ดังนั้นสำหรับเอเจนต์ทั้งหมด ผมบอกพวกมันว่าพวกมันจะทำอะไร ตัวอย่างเช่น Kite Kite ก็จะเป็นนักออกแบบของเราและยังเป็นวิศวกรของเราด้วย ผมจึงอธิบายสิ่งที่ Kite ทำเพื่อให้มันเข้าใจว่ามันทำงานอะไร เมื่อไหร่ก็ตามที่คุณเริ่มเซสชันแชทใหม่กับเอเจนต์ พวกมันจะโหลด soul.md ของตัวเองเสมอ นี่คือเหตุผลที่แนะนำอย่างยิ่งให้เราอธิบายรายละเอียดว่าเอเจนต์จะทำอะไร คุณสามารถเปลี่ยนข้อความได้ตามที่ต้องการ ให้เข้ากับสิ่งที่คุณทำ ตัวอย่างเช่น ในกรณีของผม ผมบอก Instagram และ TikTok แต่บางทีคุณอาจอยากได้ LinkedIn ด้วยหรืออะไรก็ตาม คุณสามารถเพิ่มมันตรงนี้ได้เช่นกัน

orchestrator ตอบกลับว่า "เสร็จแล้ว ผมสร้าง hermes profiles แบบ persistent ห้าโปรไฟล์ แต่ละโปรไฟล์มี soul.md ของตัวเอง" แล้วคุณจะเห็นตรงนี้เรามี Scout ซึ่งคือ Atlas, Scribe ซึ่งคือ Vera, Dev ซึ่งคือ Kite และ Rich ซึ่งคือ Orion และมันยังยืนยันว่าโปรไฟล์เหล่านั้นมีอยู่จริง ถ้าคุณอยากยืนยันด้วยตัวเอง เพราะบางครั้งเอเจนต์ก็หลอน (hallucinate) ได้ มันเป็นไปได้ที่ orchestrator บอกคุณว่า "เฮ้ ผมสร้างเอเจนต์แล้ว" แต่จริงๆ แล้วมันไม่ได้สร้าง โดยเฉพาะถ้าคุณไม่ได้ใช้โมเดลที่ดีมาก คุณสามารถตรวจสอบด้วยตัวเองได้ เข้ามาที่เทอร์มินัลของคุณแล้วพิมพ์คำสั่ง hermes profile list แล้วกด enter คำสั่งนี้จะแสดงรายการโปรไฟล์ทั้งหมดที่คุณมีในการตั้งค่า Hermes คุณจะเห็นว่าในกรณีของผมมี default ซึ่งคือ orchestrator และเอเจนต์สี่ตัวที่เราสร้าง ตรงนี้คุณจะเห็นว่า gateway ไม่ได้กำลังรันอยู่ gateway หยุดอยู่ ซึ่งไม่เป็นไร เพราะเราอยากให้ gateway เปิดใช้งานเฉพาะตอนที่เอเจนต์ทำงาน เราจึงยืนยันว่า orchestrator สร้างเอเจนต์ทั้งหมดนี้จริง

พรอมป์ต์นี้ก็สำคัญมากๆ เช่นกัน ในพรอมป์ต์นี้ผมบอก orchestrator ให้กำหนดสิ่งนี้ให้แต่ละเอเจนต์ ผมอยากให้ทุกเอเจนต์มีหน่วยความจำเฉพาะของตัวเอง (dedicated memory) ลองนึกภาพว่าคุณมีห้าเอเจนต์ ทุกเอเจนต์มีบทบาทเฉพาะของตัวเอง มันจะเละเทะถ้าเอเจนต์ทั้งหมดแชร์ไฟล์หน่วยความจำไฟล์เดียวกัน เอเจนต์มักเขียนข้อมูลระยะยาวลงในไฟล์ที่เรียกว่า memory.md ถ้าเอเจนต์ทั้งห้าตัวใช้ไฟล์เดียวกัน มันจะเละเทะแน่นอน orchestrator จะทิ้งความทรงจำระยะยาวของมันลงไปในนั้น มันจะเละเทะ และยิ่งไปกว่านั้น มันจะทำให้ไฟล์หน่วยความจำหนักมาก และจำไว้ว่า ยิ่งไฟล์ memory.md ใหญ่เท่าไหร่ คุณยิ่งใช้ token มากขึ้นเท่านั้น นี่คือเหตุผลที่ผมชอบให้ทุกเอเจนต์มีหน่วยความจำเฉพาะของตัวเอง เพื่อให้ทุกเอเจนต์

เขียนข้อมูลของตัวเองลงในพื้นที่ของตัวเอง และทุกเอเจนต์ก็จะมีตัวตนเฉพาะ โฟลเดอร์เฉพาะ และขอบเขตบทบาท (role boundaries) ของตัวเอง ตรงนี้เราบอกให้ทุกเอเจนต์ทำเฉพาะสิ่งที่อยู่ในบทบาทของตัวเองเท่านั้น ตัวอย่างเช่น ถ้าผมไปหาเอเจนต์ที่ทำงานวิจัยอย่าง Scout แล้วบอกว่า "เฮ้ สร้างแดชบอร์ดให้ฉันหน่อย" Scout จะตอบว่า "เฮ้ ไม่น่าจะใช่ผมนะ คุณน่าจะไปหา Dev เพราะเขาเป็นนักพัฒนา" อันนี้สำคัญมาก เพราะลองนึกภาพว่าคุณมีเอเจนต์การเงินที่อาจเข้าถึง PayPal ของคุณ เข้าถึง Stripe และอื่นๆ และคุณให้กฎเฉพาะกับเอเจนต์การเงิน เช่น "ห้ามถอนเงินจากบัญชีของฉัน" เอเจนต์การเงินรู้กฎเหล่านี้ แต่ถ้าเอเจนต์อีกตัวเข้ามาทำสิ่งนั้นโดยที่ไม่รู้ด้วยซ้ำว่ากฎที่คุณให้เอเจนต์การเงินคืออะไร เอเจนต์นั้นก็อาจทำให้การตั้งค่าของคุณพังได้ นี่คือเหตุผลที่ผมมีขอบเขตบทบาทแบบนี้เสมอ ให้ทุกเอเจนต์เข้าใจว่าบทบาทเฉพาะของตัวเองคืออะไร และตรงนี้ orchestrator ก็จัดการเรื่องนี้ให้เรา แล้ว orchestrator ก็ทำเสร็จ เอเจนต์ทั้งหมดมีหน่วยความจำเฉพาะ และมันยังสร้างโฟลเดอร์เฉพาะให้เอเจนต์ทั้งหมดด้วย และมันยังทดสอบขอบเขตบทบาท เช่น มันถาม Vera ว่า "Vera เขียนโค้ดให้ฉันหน่อยได้ไหม" แล้ว Vera ตอบว่า "เฮ้ นั่นเป็นหน้าที่ของ Kite" และมันยังถาม Kite เรื่องการวิจัย Kite ก็ตอบว่า "นั่นเป็นหน้าที่ของ Atlas" นั่นหมายความว่าขอบเขตบทบาททำงานได้

ในขั้นตอนถัดไป เราจะสร้างโฟลเดอร์โปรเจกต์ที่ใช้เก็บโปรเจกต์ของเรา และที่สำคัญมาก เราจะสร้างระบบฐานข้อมูลบันทึกการทำงานของเอเจนต์ (agent logging database) เมื่อไหร่ก็ตามที่เอเจนต์ทำงาน เราอยากให้มันบันทึกสิ่งที่มันทำ เราจะสร้างฐานข้อมูลบันทึกการทำงานของเอเจนต์ขึ้นมา แนวคิดคือ ก่อนที่เอเจนต์จะส่งข้อความให้คุณว่า "เฮ้ ผมทำงานนี้เสร็จแล้ว" เอเจนต์จะบันทึกชื่อของมันลงในรายการ บันทึกคำอธิบายว่ามันทำอะไร บันทึก timestamp ที่มันทำ และเขียนโมเดล AI ที่ใช้สำหรับงานนั้นๆ เราจะทำสิ่งนี้ด้วยสิ่งที่เรียกว่า SQLite เราจะสร้างเซิร์ฟเวอร์ฐานข้อมูลขนาดเล็กบนเซิร์ฟเวอร์ของเรา ที่เอเจนต์จะบันทึกกิจกรรมทั้งหมด ตัวอย่างเช่น ตอนที่เรามาที่แดชบอร์ดที่ผมจะสร้าง เมื่อคุณมาที่แท็บ agents คุณจะเห็น heat map ที่แสดงว่าเอเจนต์แต่ละตัวทำงานเมื่อไหร่ และตรงนี้เอเจนต์ยังโพสต์งานที่มันทำ งานล่าสุดที่มันทำด้วย สิ่งนี้ให้ความโปร่งใสอย่างเต็มที่ว่าอะเจนต์กำลังทำอะไร เพื่อที่ว่าถ้าเอเจนต์ติดอยู่ที่ไหนสักแห่ง คุณจะรู้ว่าเอเจนต์ตัวนั้นไม่ได้ทำงานนั้น

และยังไงก็ตาม นี่คือแดชบอร์ดที่เราจะสร้าง และสำหรับสิ่งนั้น ผมจะให้พรอมป์ต์นี้กับ orchestrator เพื่อสร้างระบบฐานข้อมูลบันทึกการทำงานของเอเจนต์ให้เรา แล้ว orchestrator ก็ทำระบบฐานข้อมูลบันทึกการทำงานเสร็จ และมันยังทำ smoke test ซึ่งเราจะเห็นว่า dev สร้าง cadence store โมเดล AI ที่มันใช้ สถานะว่ามันเสร็จสมบูรณ์ และเวลาที่มันทำงานนี้ จำไว้ว่าเราได้สร้างฐานขึ้นมาแล้ว แต่เอเจนต์อื่นๆ ยังไม่รู้ ตอนนี้มีเพียง orchestrator เท่านั้นที่รู้ว่ามีฐานข้อมูลนี้อยู่ เราจึงต้องกระจายข่าวนี้ไปยังเอเจนต์ทั้งหมด แล้วบอก orchestrator ว่า "เฮ้ บันทึกกฎการปฏิบัติงานนี้ลงในหน่วยความจำของคุณ แล้วกระจายมันให้ Atlas, Vera และเอเจนต์อื่นๆ ทั้งหมดก่อน" และนี่คือคำสั่งที่เราจะให้พวกมัน "ก่อนส่งคำตอบใดๆ ให้บันทึกสิ่งที่คุณทำลงในตาราง cadence runs โดยรันคำสั่งนี้" นั่นจะเป็นคำสั่งที่คุณรันเพื่อแทรกสิ่งที่พวกมันทำลงในฐานข้อมูล ผมจะคัดลอกอันนี้และส่งให้มันติดตั้ง เพื่อให้แน่ใจว่าเอเจนต์ทั้งหมดรู้เกี่ยวกับการตั้งค่าที่เราทำ และหลังจากนั้นผมจะบอกมันว่า "เฮ้ ให้ทุกเอเจนต์รัน smoke test เพื่อที่พวกมันจะได้บันทึกบางอย่างลงในฐานข้อมูล" อันนี้จะช่วยให้เรารู้ว่าเอเจนต์ทั้งหมดเข้าถึงฐานข้อมูลที่เราสร้างได้

เวลาที่เอเจนต์ทำงาน บางครั้งคุณจะได้พรอมป์ต์แบบนี้ที่คุณต้องอนุญาตให้มันรันคำสั่งบางอย่าง ในกรณีของผม คุณเลือก allow once (อนุญาตครั้งเดียว) หรือ allow เฉพาะเซสชันนี้ หรือจะเลือก allow always (อนุญาตเสมอ) เพื่อไม่ให้มันถามคุณทุกครั้ง แล้วก็เสร็จ จากนั้นมันก็ทำ smoke test ที่เอเจนต์ทั้งห้าตัวของเราทำการทดสอบ โดยบันทึกโมเดล AI ที่ใช้ เวลาที่ทำงาน และวันที่ เวลาที่ทำงานงานนั้น ตอนนี้เราจะเข้าสู่ส่วนหลักๆ ส่วนหนึ่ง ตอนนี้คุณจะเห็นว่าเราส่งข้อความทั้งหมดในช่อง orchestrator เพราะจนถึงตอนนี้เราทำงานกับ orchestrator แต่ตอนนี้เราจะย้ายไปสู่ส่วนที่เริ่มสร้างแดชบอร์ด และสำหรับสิ่งนั้นเราจะไม่ใช้ orchestrator เราจะมีเอเจนต์เฉพาะ Kite ซึ่งเป็นนักออกแบบและนักพัฒนา ที่จะสร้างแดชบอร์ดให้เรา เพราะมันเป็นนักพัฒนา เราจะมีช่องที่สามซึ่งเรียกว่า studio และนั่นคือช่องที่เราใช้ระดมความคิดเกี่ยวกับคอนเทนต์ใหม่ที่จะสร้างและอื่นๆ

ปัญหาคือ โดยค่าเริ่มต้น Telegram ไม่อนุญาตให้ใช้ bot token อันเดียวคุยกับบอทหลายตัว ใน Telegram หนึ่งบอทต่อหนึ่ง token ดังนั้นถ้าเราอยากสร้างช่อง Telegram เฉพาะที่เราจะคุยกับ Kite เราก็ไม่สามารถใช้ bot token ของ orchestrator ได้ เราต้องสร้าง bot token เฉพาะสำหรับ Kite มีวิธีแก้ปัญหาอยู่ อย่างที่ผมทำในวิดีโอก่อนๆ ที่เราสร้าง router plugin สิ่งที่ router ทำคือ เมื่อไหร่ก็ตามที่คุณส่งข้อความในช่อง มันจะผ่าน bot token เดียวนั้นก่อน แล้ว router จะพิจารณาว่า "เฮ้ นี่คือข้อความที่มาจากช่องของ orchestrator ขอส่งให้ orchestrator" เช่นเดียวกัน ถ้าคุณมีเอเจนต์ที่เรียกว่า Scribe ข้อความมาจากช่อง Telegram ของ Scribe มันก็จะไปที่ bot ตัวเดียวกัน แล้ว router พิจารณาว่า "เฮ้ อันนี้มาจาก thread 4" เพราะทุกช่องมี ID เฉพาะของตัวเอง ด้วย ID นั้น router จึงสามารถระบุได้ว่าข้อความมาจากไหน แล้วจัดส่งไปยังเอเจนต์นั้นๆ อันนี้มีประโยชน์มากถ้าคุณมีหลายช่องที่อยากสร้าง แต่ในการตั้งค่าของเรา เราจะสร้างแค่สามช่อง ผมจะโชว์วิธีแก้แบบอื่น เพราะในทุกบทช่วยสอน ผมพยายามนำเสนอสิ่งใหม่ๆ เพื่อให้คุณได้เรียนรู้สิ่งใหม่ๆ ด้วย สิ่งที่เราจะทำในการตั้งค่านี้คือ เราจะสร้าง bot token อีกอันโดยเฉพาะสำหรับ Kite นั่นหมายความว่าทุกข้อความที่ผ่าน gateway เฉพาะนี้หรือ bot token นี้จะไปที่ Kite โดยตรง แต่แล้วเราก็เจอความท้าทายอีกอย่าง โดยค่าเริ่มต้น เมื่อคุณสร้างช่องใน Telegram ข้อความทั้งหมดที่เราสร้างในช่องเหล่านี้จะผ่านบอทตัวเดียว ซึ่งในกรณีของเราตอนนี้ ทุกข้อความจะผ่าน orchestrator

ซึ่งไม่สมเหตุสมผลใช่ไหม เราอยากให้ orchestrator ฟังเฉพาะในช่องของมัน และอยากให้ Kite ฟังเฉพาะในช่องที่เราจะสร้างให้มัน ดังนั้นสิ่งที่เราจะทำคือ เราจะบอก orchestrator ให้สร้างปลั๊กอินที่ orchestrator จะฟังเฉพาะในช่องที่อุทิศให้มันเท่านั้น orchestrator จะไม่ไปฟังในช่องที่เราสร้างให้ Kite เด็ดขาด และเช่นเดียวกันกับ Kite Kite จะฟังเฉพาะช่องที่เราสร้างให้มันเท่านั้น ทุกอย่างจะเข้าใจได้ในไม่ช้า เชื่อผมเถอะ เพราะอันนี้ซับซ้อนมาก ผมมักจะแจ้งให้เอเจนต์ทราบล่วงหน้าเมื่อไหร่ก็ตามที่เราจะสร้างสิ่งที่ซับซ้อน เพื่อให้พวกมันรู้ว่ากำลังจะเกิดอะไรขึ้น ตรงนี้ผมส่งข้อความนี้เพื่อเตรียมมันว่าอยากทำอะไร ผมบอก orchestrator ว่า "เฮ้ เราจะสร้างบางอย่างด้วยกัน เป้าหมายคือ Kite จะสร้างแดชบอร์ดสตูดิโอของเรา และผมอยากคุยกับวิศวกรคนนี้โดยตรงใน group ของมันเอง ซึ่งมันจะมีบอทและตัวตนของตัวเอง" แล้วผมก็อธิบายว่าทำไมเราถึงต้องมีบอทตัวที่สอง คุณอ่านอันนี้ก็จะเข้าใจเหตุผลว่าทำไมเราถึงต้องมีบอทตัวที่สอง ผมกำลังบอกมันว่า "เฮ้ นี่คือสิ่งที่เราจะสร้าง" เพื่อให้มันเข้าใจว่าเราจะทำอะไร

ระหว่างที่ orchestrator ทำงานนี้ เราจะต้องสร้าง bot token ตัวที่สองสำหรับ Kite เพราะจำไว้ว่า Kite จะต้องมี bot token เฉพาะของตัวเอง orchestrator ตอบกลับว่ามันเข้าใจ เป้าหมายคือให้ Kite มีตัวตนบน Telegram ของตัวเองที่เราสามารถพูดคุยกับมันได้โดยตรง แต่ก่อนอื่นเราต้องสร้างบอทนี้ให้ Kite ก่อน ในการทำเช่นนั้น เราจะกลับไปที่ BotFather ที่เราใช้สร้างบอทตัวแรกสำหรับ orchestrator แล้วสร้างบอทตัวที่สอง พิมพ์ /newbot เหมือนตอนแรกที่ทำกับ orchestrator แล้วตั้งชื่อบอทนี้ว่า KM Kite Content ขอเรียกว่า Content Kite ละกัน ผมจะคัดลอก username กด enter และเหมือนตอนที่ทำก่อนหน้านี้ ผมจะใช้ชื่อเดียวกันกับที่ตั้ง แต่จะลงท้ายด้วยคำว่า bot เพราะทุก username ของบอทใน Telegram ต้องลงท้ายด้วยคำว่า bot แล้วกด enter เราก็จะได้ token เฉพาะสำหรับบอทตัวนี้ จำไว้ว่านี่คือ token ที่เรามีสำหรับ orchestrator และตอนนี้เราสร้าง token เฉพาะสำหรับ Kite แล้ว เราจะต้องเพิ่มบอทของ Kite นี้เข้ากับการตั้งค่า Hermes ของเราด้วย และในการทำอย่างนั้น ผมสร้างคำสั่งนี้ให้คุณแล้ว มาที่นี่ คัดลอกคำสั่งนี้ กลับมาที่หน้าต่างเทอร์มินัลของคุณ ขอเคลียร์หน้าจอ สำคัญมาก ให้แน่ใจว่าคุณไม่ได้อยู่บน root คุณอยู่บน Larry หรือ user ใหม่ที่คุณสร้าง แล้ววางคำสั่งนี้ คำสั่งนี้จะถามให้คุณใส่ bot token ผมจะรันคำสั่งตรงนี้ แล้วมันจะบอกว่า "เฮ้ วาง Kite token ของคุณแล้วกด enter" ผมจะกลับไปที่ Telegram คลิกตรงนี้ ให้แน่ใจว่าคุณคัดลอก token ของ Kite ผมจะคลิกเพื่อคัดลอก ย่อหน้าต่างนี้ กลับมาที่เทอร์มินัล แล้วคลิกขวาเพื่อวาง คีย์ถูกวางตรงนี้แล้ว หลังจากนั้นก็กด enter อันนี้จะบันทึกคีย์ลงในแดชบอร์ดของเรา

กลับไปที่การตั้งค่าของเรา แล้วเข้าไปใน group ของเรา จากนั้นผมจะบอก orchestrator ว่า "ผมสร้าง bot token สำหรับ Kite แล้ว และผมได้เพิ่ม bot token เองในพื้นที่นี้แล้ว" ผมบอกให้มันตรวจสอบว่า token ที่ผมเพิ่มมีอยู่จริง และทำการตรวจสอบความถูกต้อง (sanity checks) สองสามอย่างเพื่อให้แน่ใจว่ามันจะทำงานกับ Kite ผมจะคัดลอกอันนี้แล้วส่งให้ orchestrator และอีกอย่างที่มีประโยชน์มากซึ่งผมแนะนำเสมอคือ เมื่อไหร่ก็ตามที่คุณให้เอเจนต์ทำงานที่ซับซ้อนซึ่งคุณไม่แน่ใจว่าเอเจนต์จะทำสำเร็จหรือไม่ คุณสามารถให้ข้อมูลอ้างอิงถึงเอกสาร Hermes แก่เอเจนต์ได้เสมอ เช่น ถ้าผมบอกว่า "เฮ้ ถ้าคุณไม่แน่ใจ ให้ไปดูเอกสาร Hermes ในส่วนนี้" เพื่อให้เอเจนต์เข้าใจว่ามันควรจะ build สิ่งนี้อย่างไร จากนั้นผมได้รับการอนุมัติคำสั่งจาก orchestrator ผมคลิก always แล้ว orchestrator บอกว่า "เฮ้ ขั้นตอนที่หนึ่งเสร็จสมบูรณ์ มันยืนยันแล้วว่า token ที่เราเพิ่มมีอยู่จริง และมันยังบอกว่า "เฮ้ บอทออนไลน์อยู่ เราสามารถส่งข้อความหา Kite โดยตรงได้"

สิ่งที่เราจะทำตอนนี้คือสร้างช่องที่เราต้องการ เราจะสร้างช่องหนึ่งสำหรับ Kite และสร้างช่องหนึ่งสำหรับ studio ซึ่งเราใช้สำหรับระดมความคิดก่อนที่จะพา Kite เข้ามาในแชทนั้น ในการทำอย่างนั้น เราจะคลิกที่จุดสามจุดตรงนี้ แต่คุณจะไม่เห็นตัวเลือกสร้าง group เราจะกลับมาที่ all แล้วคลิกจุดสามจุดตรงนี้ จากนั้นคลิก create topic แล้วต้องตั้งชื่อ topic ในกรณีของเรา จะเรียกว่า Kite และเพราะ Kite จะเป็นนักพัฒนา ขอใส่อิโมจิแล็ปท็อปให้มัน แล้วคลิก create เมื่อไหร่ก็ตามที่คุณสร้าง topic ใหม่ ก่อนที่ topic จะถูกเปิดใช้งาน คุณต้องส่งข้อความใน topic นั้นก่อน สำหรับ topic ที่เรากำลังสร้างนี้ เราจะต้องใช้ thread ID ของ topic นี้ เพราะด้วย ID นี้ orchestrator จะผูก topic นี้กับ Kite โดยเฉพาะ ในการเริ่มต้น group นี้ ผมจะคัดลอกพรอมป์ต์นี้แล้วส่งให้ orchestrator ทันทีว่า "เฮ้ thread ID ของ topic นี้คืออะไร?" คุณสามารถส่งข้อความอะไรก็ได้ เราอาจส่ง "hi" เพื่อสร้างช่องก่อน แล้วตามด้วยข้อความอย่าง "thread ID ของ topic นี้คืออะไร" ผมจะโชว์วิธีนั้นให้ดูด้วย

ตอนนี้ Kite ถูกสร้างแล้ว เรามี Telegram topic ID เรามี thread ID กลับมาที่ all แล้วคลิก create topic เราจะสร้าง topic ถัดไปซึ่งก็คือ studio จำไว้ว่า studio คือที่ที่เราจะระดมความคิดเกี่ยวกับคอนเทนต์ใหม่ โปรโมชัน ไอเดีย และอื่นๆ ผมจะเรียกมันว่า Ideas พร้อมไอคอนนี้ แล้วคลิก create และเพื่อกระตุ้นการสร้างมัน ผมจะใช้ข้อความต้อนรับอย่าง "เฮ้ topic ID ของ group นี้คืออะไร" แล้วตรงนี้เราก็จะได้คำตอบ จำไว้ว่าเราสร้าง Kite แล้ว แต่ยังเป็น orchestrator ที่เราคุยด้วยอยู่ เพราะ Kite ยังไม่ถูกเพิ่มเข้าไปใน group นี้เลย ข้อความทั้งหมดที่คุณเห็นตรงนี้ ทั้งคำตอบ thread ID ของ Kite และคำตอบ ID ของ studio ยังมาจาก orchestrator ทั้งหมด ตอนนี้เรามี thread ID แล้ว เราจะส่งข้อความไปที่ orchestrator ว่า "เฮ้ ตอนนี้เรามี thread IDs แล้ว เราอยากให้คุณเดินสาย (wire) Telegram group ของเรา" ผมจะให้ Telegram group ID ของ group ปัจจุบันแก่ orchestrator และให้ thread IDs ของทุกช่องด้วย เพื่อที่มันจะมี thread ID ของที่ที่ผมคุยกับมัน มี thread ID ของ Kite และ thread ID ของ group studio จากนั้นด้วยสิ่งนี้เท่านั้นมันถึงจะผูกช่องต่างๆ เข้ากับเอเจนต์เฉพาะได้ orchestrator จะเข้าถึงช่องที่เราคุยกับมัน และ orchestrator ก็จะเข้าถึงช่อง studio ด้วย เพราะนั่นคือสิ่งที่เราจะ

ใช้ระดมความคิดกับมันในช่อง studio เพราะมันเป็นเจ้านาย แต่ Kite จะฟังเฉพาะในช่องนี้ และ Kite จะไม่เข้าถึงช่อง orchestrator และช่อง Kite ผมจะเปิด notepad แล้ววางพรอมป์ต์นี้ลงไป เพราะเราจะเปลี่ยนบางอย่างในนั้น สิ่งแรกที่เราจะต้องใช้คือ Telegram group ID ในการหา Telegram group ID ของคุณ เราจะใช้บอทตัวเดียวกับที่ใช้หา Telegram ID ของเราคือ User Info Bot เมื่อมันเปิดขึ้นมา คลิกที่ forum ด้านล่าง แล้วเลือก group ที่คุณเพิ่งสร้าง ในกรณีของผมคือ KM Content จากนั้นคลิกที่มัน แล้วกด send บอทจะส่ง ID ของ Telegram group มาให้คุณ คุณสามารถคลิกตรงนี้เพื่อคัดลอก แล้วผมจะแทนที่ด้วยส่วนนี้ที่เรียกว่า Telegram ID ขั้นตอนถัดไป เราจะกรอก thread ID สำหรับสามช่อง และสำหรับสิ่งนั้น ผมจะกลับเข้ามาใน Telegram group ของเรา แต่ในกรณีส่วนใหญ่ ช่องแรกที่คุณสร้างมักจะมี thread ID เป็น 1 ดังนั้น orchestrator น่าจะตอบว่าเป็น 1 แต่เพื่อความแน่ใจ ขอถามมันอีกที เอาล่ะ มันตอบว่า thread ID ของมันคือ 1 เพราะมันถูกสร้างก่อน ผมจะใส่ 1 ตรงนี้ ไปที่ Kite Kite คือ 36 ขอใส่ 36 แล้วมาที่ studio ซึ่งคือ 40 แล้วก็เสร็จ แค่สี่พารามิเตอร์นี้เท่านั้นที่คุณต้องกรอกในพรอมป์ต์นี้ หลังจากนั้นคัดลอกข้อความ สำคัญมาก อย่าทำในช่อง studio หรือ Kite ให้ทำในช่องของ orchestrator แล้ววางข้อความนี้ ส่งให้ orchestrator เพื่อให้มัน implement การผูกช่องกับเอเจนต์ (topic-lane agent binding)

orchestrator ตอบว่า "เฮ้ ผมบันทึกข้อมูล lane ทั้งสี่ลงในหน่วยความจำแล้ว และทำส่วนบันทึกเสร็จ" แต่มันมีปัญหาอยู่อย่างหนึ่ง มันไม่สามารถรันคำสั่งนี้เพื่อรีสตาร์ท gateway ได้ มันเลยบอกให้เรารันให้มัน ผมจะคัดลอกคำสั่งตรงนี้ กลับมาที่เทอร์มินัล ขอเคลียร์หน้าจอเพื่อให้ดูสะอาดขึ้น แล้ววางคำสั่งนี้ สำคัญมากอีกครั้ง ให้แน่ใจว่าถ้าคุณสร้าง user ใหม่ คุณอยู่บน user ใหม่ ไม่ใช่บัญชี root แล้วกด enter และมันก็เกิดแบบนี้ตอนที่ผมทดสอบด้วย คุณจะได้คำตอบว่า failed to connect to bus ให้คัดลอกทุกอย่างตรงนี้ แล้วมาที่ Telegram บอก orchestrator ว่า "เฮ้ ผมเจอ error นี้" แล้ววางมัน อุ๊ย ผมคิดว่าผมไม่ได้คัดลอก กลับไปที่ PowerShell กด control+shift+C เพื่อคัดลอก กลับมาที่ Telegram แล้ววาง จากนั้นมันจะแก้ไขให้และให้คำสั่งอื่นที่เราใช้แก้ปัญหานี้ และผมควรจะหาเจอ มันบอกว่า error นี้หมายความว่าเชลล์ของคุณไม่ได้ใช้ bus environment มันเลยให้คำสั่งอื่นมารัน ผมจะคัดลอกอันนี้ ล้างหน้าจออีกครั้ง วางคำสั่งใหม่นี้ กด enter แล้วคุณจะเห็นว่าผมได้รับการแจ้งเตือนทันทีว่า gateway ของผมกำลังรีสตาร์ท นั่นหมายความว่าคำสั่งได้ผล ใช้เวลาไม่กี่วินาทีกว่าทุกอย่างจะเสร็จ ให้อดทนอีกนิดเมื่อเห็นแบบนี้ ผมจะคัดลอกตรงนี้ กด control+shift+C แล้วส่งให้ orchestrator ว่า "มันทำงานแล้ว นี่คือข้อความที่ผมได้รับ" คุณจะเห็นว่าตอนที่ผมส่งให้ orchestrator ทันที มันไม่ตอบ เพราะผมว่า gateway ยังบูตเอเจนต์ทั้งหมดอยู่ บางครั้งเมื่อคุณรีสตาร์ท gateway มันต้องใช้เวลาสักพักกว่า gateway ทั้งหมดของเอเจนต์จะรีสตาร์ทเสร็จ ดังนั้นเมื่อคุณส่งข้อความนี้ทันทีแล้วไม่เห็นคำตอบ ให้อดทนอีกนิด

และนี่คือทิป เมื่อคุณกลับมาที่เทอร์มินัลแล้วพิมพ์ hermes profile list แล้วกด enter คุณจะเห็นว่าตอนนี้เรามี gateway สองตัวที่กำลังรันอยู่ ตอนแรกเรามีแค่ default gateway ที่รันอยู่ และ gateway ของ dev หยุดอยู่ แต่ตอนนี้คุณจะเห็นว่าเรามี gateway อีกตัวที่สร้างให้ Kite ซึ่งกำลังรันอยู่ สิ่งที่เราจะทำตอนนี้คือเพิ่ม Kite เข้าไปใน group ที่เราสร้าง ในการทำอย่างนั้น ไปที่ BotFather คลิกที่ URL ที่มันให้ไว้เพื่อดึง ID ของ Kite คลิกที่ชื่อ แล้วคลิกเพื่อคัดลอก username ของ Kite แล้วกลับมาใน group ของเรา ผมจะไปที่ all คลิกจุดสามจุดตรงนี้ ไปที่ view group info จากนั้นคลิก manage ลงมาที่ members คลิก add members แล้วใส่ username ของ Kite bot เลือกมันแล้วคลิก add ตอนนี้ Kite ถูกเพิ่มเข้าไปใน group แล้ว เรายังต้องทำให้ Kite เป็น administrator เพื่อให้มันทำงานที่นี่ได้ ยังอยู่บนแท็บ all ผมจะคลิกจุดสามจุด ไปที่ manage group จากนั้นไปที่ administrator แล้วคลิก add administrator เพิ่ม Kite ลงไป ตรวจสอบสิทธิ์ ถ้าพอใจก็คลิก save แล้วปิดได้ ตอนนี้เราเพิ่ม Kite เข้าไปใน group แล้ว

สิ่งที่เราจะทำตอนนี้คือ เข้ามาในช่องของ Kite แล้วส่งข้อความอย่าง "คุณคือใคร?" และนี่คือส่วนที่ทำให้ผมประหม่าทุกครั้ง เพราะนี่คือจุดที่คุณจะเห็นว่าการผูกเอเจนต์กับช่องทำงานหรือไม่ ถ้าทุกอย่างทำงาน เราควรเห็นข้อความจาก Kite ว่า "ผมคือ Kite" มาดูกันว่ามันจะทำงานไหม สมบูรณ์แบบ ผมโล่งใจไปที ตรงนี้ Kite ตอบว่า "ผมคือ Kite นักออกแบบและวิศวกรของ Cadence ของ Larry" เพื่อให้แน่ใจว่าส่วนอื่นๆ ทำงาน ผมจะส่งแบบเดียวกันนี้ไปให้ orchestrator และถ้ามันตอบว่ามันคือ orchestrator ก็ดี แต่ถ้า Kite ตอบในช่อง orchestrator เราก็มีปัญหา ขอทำแบบเดียวกันกับ studio เพื่อความปลอดภัยว่าเรามีเอเจนต์ที่ถูกต้องอยู่เบื้องหลังช่องเหล่านี้ เยี่ยม ในช่องของ orchestrator มันยังตอบว่า "ผมคือ orchestrator" ซึ่งหมายความว่าสิ่งนี้ทำงานได้ดีมาก Kite ถ้าจำได้ก็ตอบว่ามันคือ Kite เช่นกัน และเมื่อผมไปที่ studio orchestrator ก็ตอบว่า orchestrator อยู่ที่นั่น นั่นหมายความว่าการผูกช่อง Telegram กับเอเจนต์ทำงาน Kite จะไม่ไปฟังในช่องของ orchestrator และ orchestrator ก็จะไม่ฟังในช่องของ Kite ซึ่งเป็นสิ่งที่เราต้องการเป๊ะ

ตอนนี้เรามีส่วนหลักทั้งหมดของเฟรมเวิร์กที่เราต้องการพร้อมแล้ว Hermes Agent พร้อมแล้ว orchestrator ตั้งค่าเสร็จสมบูรณ์ Kite นักพัฒนาของเราก็ตั้งค่าเสร็จ group พร้อมแล้ว เราสามารถเริ่ม build แดชบอร์ดได้เลย ตลอดการ build แดชบอร์ดทั้งหมด เราจะใช้ Kite ซึ่งรับบทเป็นทั้งนักออกแบบและนักพัฒนา และก่อนที่เราจะให้ Kite เริ่ม build แดชบอร์ด เราจะต้องแจ้งรายละเอียด (brief) ให้ Kite ทราบเกี่ยวกับทั้งหมดที่เราอยากสร้าง ตั้งแต่ต้นจนจบ และแนวคิด (concept) ที่เรามีสำหรับสิ่งที่เรากำลังสร้าง และสำหรับสิ่งนั้น ผมจะให้พรอมป์ต์นี้กับ Kite เป็นการสรุปรายละเอียดเพื่อให้มันรู้ว่าเราอยากทำอะไร ผมเพิ่งส่งอันนี้ให้ Kite และระหว่างนี้ผมจะอธิบายให้คุณฟังว่าผมส่งอะไรให้ Kite ผมบอก Kite ว่า "เฮ้ ก่อนที่เราจะเขียนโค้ดแม้แต่บรรทัดเดียว นี่คือภาพรวมทั้งหมดของสิ่งที่เรากำลังสร้าง" ผมกำลังบอก Kite

เรากำลังสร้างสตูดิโอระบบอัตโนมัติคอนเทนต์ระดับพรีเมียมพร้อมแดชบอร์ดเว็บที่สวยงาม ผมบอก Kite ว่ากระบวนการทั้งหมดจะทำงานอย่างไร เราจะมี Atlas นักวิจัยของเราที่ไปเสนอไอเดีย แล้วเราจะโปรโมตไอเดียหนึ่งในฐานะผู้ใช้ จากนั้น Vera จะเขียนเนื้อหาของสไลด์ พอเสร็จแล้ว Kite ซึ่งเป็นทั้งนักพัฒนาและนักออกแบบของเราจะนำคอนเทนต์นั้นใส่ลงในเทมเพลตหนึ่งที่เราเลือก แล้วเรนเดอร์เทมเพลตนั้นจากเอกสาร HTML เป็นภาพขนาดประมาณ 1080x1350 พิกเซล จากนั้น Orion นักเผยแพร่ของเราจะเผยแพร่สิ่งนี้ไปยังเครือข่ายใดก็ตามที่เราอยากสร้าง และผมยังบอก Kite ด้วยว่าเราจะรันสิ่งนี้บนเซิร์ฟเวอร์ Python ขนาดเล็กซึ่งจะอยู่บนแดชบอร์ด และที่สำคัญมาก ผมบอก Kite ว่าเราจะให้เทมเพลตที่เราจะทำงานด้วย และผมอยากให้เทมเพลตนี้เป็นแหล่งอ้างอิงความจริงของดีไซน์ (design source of truth) เพราะผมไม่อยากให้มันเปลี่ยนอะไรก็ตามที่เราจะใส่ลงในเทมเพลต และยังมีอีกสองสามอย่างที่ผมให้มัน คืออยากให้มีโปรโตคอลสำรองข้อมูล (backup protocol) และหลักการบางอย่างว่าการ build ทั้งหมดจะเป็นอย่างไร

Kite ตอบว่า "เฮ้ เข้าใจแล้ว นี่คือแผนในคำพูดของผมเอง Cadence เป็นสตูดิโอระบบอัตโนมัติคอนเทนต์ที่สมบูรณ์พร้อมแดชบอร์ดเว็บที่ขัดเกลาเป็นอินเทอร์เฟซควบคุม" และมันก็แค่พูดซ้ำทุกอย่างที่เราบอก Kite ตามลำดับว่ากระแสงานทั้งหมดจะทำงานอย่างไร Kite พร้อมที่จะเริ่ม build แดชบอร์ดกับเราแล้ว ในขั้นตอนถัดไป เราจะบอก Kite ให้สร้างแบ็กเอนด์ Python ที่แดชบอร์ดเว็บนี้จะรันอยู่ ผมจะให้พรอมป์ต์นี้เพื่อเตรียมสิ่งนั้น ผมบอก Kite ว่า "เฮ้ เราจะสร้างแดชบอร์ดนี้ในแบบที่ปลอดภัยมาก" สำหรับส่วนแรก เราจะตั้งค่าสิ่งนี้บนสิ่งที่เรียกว่า SSH tunneling นั่นหมายความว่าเมื่อไหร่ก็ตามที่คุณอยากเชื่อมต่อกับแดชบอร์ด คุณจะใช้คำสั่งอย่าง ssh -N -L พอร์ตนี้ แล้วตอนท้ายคุณจะใส่ username และ IP address ของคุณ แต่ผมจะโชว์ให้ดูว่ามันทำงานอย่างไร เหตุผลที่เราใช้วิธีนี้ตั้งแต่แรกคือ แดชบอร์ดเว็บจะไม่เปิดให้อินเทอร์เน็ตสาธารณะ มีเพียงคนที่รู้รหัสผ่านของเซิร์ฟเวอร์ VPS ของคุณเท่านั้นที่จะเชื่อมต่อกับแดชบอร์ดได้ นั่นคือสิ่งที่ทำให้มันปลอดภัยมาก แต่แม้หลังจากที่เราสร้างเสร็จ เราจะติดตั้ง Tailscale ซึ่งจะโฮสต์แดชบอร์ดให้เรา Tailscale เป็นหนึ่งในการตั้งค่าความปลอดภัยที่แข็งแกร่งที่สุดที่เราสามารถใช้เพื่อนำแดชบอร์ดของเราขึ้นออนไลน์ ดังนั้นครั้งแรกเราจะใช้ SSH tunneling เพื่อเข้าถึงแดชบอร์ด แต่เมื่อเสร็จแล้ว เราจะติดตั้ง Tailscale ซึ่งจะโฮสต์ทุกอย่างให้เรา และสิ่งที่ดีที่สุดเกี่ยวกับ Tailscale คือ เราจะสามารถเข้าถึงแดชบอร์ดบน PC ใดก็ตามที่รันบัญชี Tailscale ของเรา หรือแม้แต่บนโทรศัพท์มือถือของคุณ

เอาล่ะ Kite เสร็จแล้ว มันตั้งค่าแบ็กเอนด์ที่เราใช้รันแดชบอร์ด และมันยังให้คำสั่ง SSH tunnel ที่เราจะใช้เข้าถึงแดชบอร์ด สิ่งที่เราต้องทำคือคัดลอกคำสั่งที่ Kite ให้ไว้ตรงนี้ กลับไปที่ PowerShell แล้วใส่คำสั่งนี้ ssh -L พอร์ตนี้คือพอร์ตที่เราใช้เซฟแดชบอร์ด นี่คือฝั่งความปลอดภัย และนี่คือ username ของคุณ ซึ่งในกรณีของผม ผมสร้าง username ใหม่ถ้าจำได้ชื่อ Larry และนี่คือ IP address ของเซิร์ฟเวอร์ VPS ตรงนี้ผมจะใส่รหัสผ่านแล้วกด enter มันจะพาคุณมาถึงจุดนี้ จะเป็นแค่เคอร์เซอร์กระพริบ นั่นหมายความว่าคุณเชื่อมต่อกับแบ็กเอนด์ของเซิร์ฟเวอร์ VPS แล้ว สิ่งที่เราจะทำตอนนี้คือเปิดเบราว์เซอร์ แล้วอย่างที่ Kite ให้ไว้ มันบอกว่าเราควรเปิด URL นี้บนเบราว์เซอร์ เราจะคัดลอก URL นี้ วางตรงนี้ แล้วกด enter แล้วคุณจะเห็นว่าเราเชื่อมต่อกับแดชบอร์ดแล้ว แต่เพราะเรายังไม่มีอะไรอยู่ตรงนั้น เราจึงเจอ error response แบบนี้ แต่โดยหลักการแล้ว เราเชื่อมต่อกับแบ็กเอนด์ของเซิร์ฟเวอร์ Python แล้ว

สิ่งที่เราจะทำต่อไปคือ ต้องใส่อะไรบางอย่างบนแดชบอร์ดเพื่อให้เราเห็นสิ่งที่เรากำลังสร้าง และสำหรับสิ่งนั้น เราจะบอก Kite ให้สร้างหน้าเว็บอัปโหลด (web upload page) ในหน้านี้เราจะอัปโหลดไฟล์ทั้งหมดที่จะใช้เป็นเทมเพลตของสิ่งที่เราอยากสร้าง ผมจะคัดลอกพรอมป์ต์นี้ให้ Kite แล้วส่งให้มันสร้างจุดอัปโหลดที่เราสามารถอัปโหลดสิ่งต่างๆ ของแดชบอร์ดที่เราต้องการได้ ซึ่งจะประกอบด้วยเทมเพลต HTML ของแดชบอร์ด และสไลด์ทั้งหมดที่เราจะใช้ตอนสร้างสไลด์ carousel เหล่านี้ ระหว่างที่ Kite กำลังสร้าง ขอโชว์ให้ดูว่าเทมเพลตหน้าตาเป็นอย่างไร นี่คือเทมเพลตเปล่าที่เราจะให้ Kite อัปโหลดบนแดชบอร์ดให้เรา เราจะเห็นว่าเรามีแท็บ content ซึ่งมีการเติมข้อมูลเล็กน้อย แท็บ ideas ดูว่างเปล่า แท็บ studio ก็ดูว่างเปล่า ทุกอย่างดูว่างเปล่า แต่พอมันเสร็จ มันจะเพิ่มสิ่งนี้ลงในแบ็กเอนด์ แล้วเราจะค่อยๆ เติมแดชบอร์ดเทมเพลตนี้ในขณะที่เราสร้าง

เอาล่ะ Kite เสร็จแล้ว มันสร้างแบ็กเอนด์ที่เราใช้สำหรับอัปโหลดไฟล์ทั้งหมดที่มันต้องใช้ในการ build แดชบอร์ด และมันให้ URL นี้มา ฉันจะคัดลอก URL เปิดเบราว์เซอร์ แล้ววาง URL นี้ หวังว่าเราจะมีแดชบอร์ดอัปโหลดเว็บ โอเค อันนี้ทำงานได้ดีมาก มันสร้างแบ็กเอนด์อัปโหลด Cadence ขึ้นมา และมันบอกเราว่ามันคาดหวังไฟล์สี่ไฟล์ นั่นคือเทมเพลต HTML และไฟล์ JSON สามไฟล์ซึ่งจะเป็นเทมเพลตของสไลด์ carousel และสำหรับ reel ผมจึงอัปโหลดไฟล์ทั้งสี่ที่จำเป็น และนี่ก็ได้รับการยืนยันบนแดชบอร์ดว่าไฟล์ทั้งสี่ถูกบันทึกแล้ว ขั้นตอนถัดไป ผมจะบอก Kite ว่า "เฮ้ ผมอัปโหลดไฟล์ทั้งสี่ที่จำเป็นต่อการสร้างเทมเพลตเพื่อ build แดชบอร์ดแล้ว ผมอยากให้คุณเสิร์ฟไฟล์เหล่านี้บนเซิร์ฟเวอร์ Python เพื่อที่เราจะได้เห็นว่ามันทำงานจริง" สิ่งที่เราบอก Kite ในพรอมป์ต์นี้คือ ไฟล์เทมเพลตที่เราอัปโหลดเรียกว่า cadence_dashboard_template.html แต่ผมอยากให้มันเปลี่ยนชื่อเป็น index.html ในโฟลเดอร์เฉพาะที่เราสร้างสำหรับแดชบอร์ดที่เราจะ build และที่สำคัญมาก อย่างน้อยในกรณีของผม ถ้าคุณอยากเปลี่ยนเทมเพลต คุณไม่จำเป็นต้องให้คำสั่งนี้กับ Kite แต่สิ่งที่ผมบอก Kite คือ "เฮ้ นี่จะเป็นแหล่งอ้างอิงความจริงของดีไซน์ เมื่อไหร่ก็ตามที่มันสร้างอะไร มันควรตรวจสอบเทมเพลตเสมอเพื่อให้แน่ใจว่ามันไม่ได้เปลี่ยนแปลงดีไซน์ของเทมเพลตไป เพื่อให้สิ่งที่มันสร้างออกมาเหมือนกับที่เรามีในเทมเพลตเป๊ะ" ผมบอกมันว่า "เทมเพลตมีค่าม็อก (mock values) แบบฮาร์ดโค้ดไว้เพื่อให้ไม่มีอะไรดูว่างเปล่า แต่ตัวเลขเหล่านั้นบนเทมเพลตจะถูกแทนที่ด้วยเมตริกจริงเมื่อเราเริ่มสร้างแดชบอร์ด" และนี่คือหนึ่งในสิ่งที่ผมชอบเกี่ยวกับ Hermes

สิ่งที่คุณเห็นตรงนี้ตัวอย่างเช่น มันทำงานที่เราให้เสร็จแล้ว และคุณจะเห็นว่ามันใช้เบราว์เซอร์ในตัว (inbuilt browser) เพื่อตรวจสอบว่าทุกอย่างที่อยู่ตรงนั้นถูกต้อง มันคลิกและถ่ายภาพหน้าจอของเบราว์เซอร์ (browser snapshots) มันคลิกส่วนต่างๆ แล้วถ่ายภาพหน้าจอของแต่ละส่วน เพื่อให้แน่ใจว่าสิ่งที่มันทำเหมือนกับในเทมเพลตเป๊ะ และนี่คือหนึ่งในเหตุผลหลักที่ผมชอบทำงานกับ Hermes มาก เพราะผมสร้างแดชบอร์ดบ่อย ถ้าเอเจนต์หรือ Hermes อนุญาตให้เอเจนต์ทำงานกับเบราว์เซอร์แบบไม่มีหัว (headless browser) เพื่อให้เห็นสิ่งที่มันกำลังสร้าง นี่มันเจ๋งมาก

เอาล่ะ Kite บอกว่ามันเสร็จแล้ว มันบอกว่าเทมเพลตถูกล็อกอินแล้วแต่สมบูรณ์เพียงบางส่วน เพราะมีไฟล์หนึ่งที่หายไป พอผมดูตรงนี้ มันบอกว่ามันไม่พบ templates_pack เพราะมันเป็น false zero ขอดูว่าเป็นเพราะอะไร เป็นไปได้ว่าการอัปโหลดของเราไม่ทำงาน มันบอกว่าเราควรอัปโหลดไฟล์นี้อีกครั้งผ่านจุดอัปโหลด ผมจะใส่อันนี้ตรงนี้อีกครั้งแล้วอัปโหลด templates pack ใหม่ ผมจะบอก Kite ว่า "ผมอัปโหลด templates_pack.json ใหม่แล้ว ช่วยยืนยันหน่อย" สมบูรณ์แบบ ดูเหมือนมีบางอย่างเกิดขึ้นตอนที่อัปโหลดครั้งแรก มันบอกว่า "ใช่ ตอนนี้ผมเห็นมันแล้ว" มันตรวจสอบไฟล์แล้ว และไฟล์ต้นฉบับที่อัปโหลดทั้งหมดตอนนี้อยู่ในโฟลเดอร์ที่เราต้องการให้มันอยู่ ซึ่งสมบูรณ์แบบ ต่อไปไปที่แดชบอร์ดแล้วดูว่าแดชบอร์ดเรนเดอร์บนเซิร์ฟเวอร์ Python จริงหรือไม่ ในการทำอย่างนั้น เราจะใช้ localhost:8892 เลข 8892 คือพอร์ตของเซิร์ฟเวอร์ และ localhost คือพื้นที่ภายในเครื่องบนเซิร์ฟเวอร์ของเราที่ใช้เข้าถึงแดชบอร์ด แล้วพอเปิด หวังว่าสวยงาม คุณจะเห็นว่าเรามีแดชบอร์ดโหลดขึ้นมาเหมือนในเทมเพลต ขอเปิดเทมเพลตเพื่อเปรียบเทียบแบบหนึ่งต่อหนึ่ง นี่คือสิ่งที่เรามีในเทมเพลต และนี่คือสิ่งที่ถูกเสิร์ฟบนแดชบอร์ดของเรา ทุกหน้าเหมือนกับในเทมเพลตเป๊ะ Kite ทำงานได้ดีมาก

ในขั้นตอนถัดไป นี่คือหนึ่งในสิ่งที่ผมแนะนำเสมอเวลาสร้างอะไรกับเอเจนต์ ให้เอเจนต์สร้างสำเนา (copy) ของแดชบอร์ดก่อนที่จะเปลี่ยนแปลงอะไรเสมอ ผมพูดแบบนี้ในทุกวิดีโอ เพราะผมเคยทำงานบนแดชบอร์ดมาหลายวัน แล้วเอเจนต์ของผมทำผิดพลาด และผมเสียทุกอย่างไป นี่คือเหตุผลที่สำคัญมากที่คุณต้องบอกเอเจนต์ว่า "เฮ้ ก่อนที่คุณจะเปลี่ยนอะไรบนแดชบอร์ด กรุณาสร้างสำเนาของแดชบอร์ดและบันทึกไว้ที่ไหนสักแห่ง" และบนแดชบอร์ด เรามีส่วนนี้ที่เป็นเลขเวอร์ชัน (version number) ผมอยากให้มันอัปเดตเลขเวอร์ชันทุกครั้งที่มันเปลี่ยนแปลงแดชบอร์ด ผมจะคัดลอกพรอมป์ต์นี้แล้วส่งให้ Kite เพื่อ implement สิ่งนี้ และ Kite ก็ทำเสร็จแล้ว เมื่อเรามาที่แดชบอร์ดและรีโหลดเทมเพลต เราควรเห็นว่ามันเปลี่ยนไปแล้ว เดิมเรามี version 0.1 editorial ขอเปิดเทมเพลตให้ดูว่าก่อนหน้านี้หน้าตาเป็นอย่างไร ในเทมเพลตตรงส่วนล่างนี้ เดิมเรามี version 0.1 editorial และตอนนี้คุณจะเห็นว่ามันถูกอัปเดตเป็น version 0.1 ในแดชบอร์ดของเรา หมายความว่า Kite จะคอยอัปเดตเวอร์ชันให้ตลอดเวลาเมื่อเราเดินหน้าต่อไป

ตอนนี้เราจะเริ่ม build กัน พารามิเตอร์ทั้งหมดที่คุณเห็นในแท็บ content เป็นค่าฮาร์ดโค้ดจากเทมเพลตที่ผมสร้าง และทุกอย่างที่เรามีในแท็บ agents, heat map ทุกอย่างเป็นฮาร์ดโค้ด เราจะให้พรอมป์ต์ Kite เพื่ออัปเดตเมตริกแดชบอร์ดที่เรามีตรงนี้ รวมถึงแท็บ agents เพื่อให้มีข้อมูลจริงจาก Hermes setup ของเรา ไม่ใช่จากค่าฮาร์ดโค้ดในเทมเพลต และผมบอกมันว่า "เฮ้ เมื่อคุณเสร็จ ยืนยันว่าแท็บทั้งสองแสดงข้อมูลจริง และ heat map ตรงกับตาราง runs" สำหรับ heat map ข้อมูลทั้งหมดจะถูกดึงมาจากฐานข้อมูลบันทึกการทำงานของเอเจนต์ที่เราสร้าง ถ้าจำได้ เราสร้างสิ่งที่เอเจนต์ทุกตัวจะบันทึกกิจกรรมเมื่อไหร่ก็ตามที่มันทำอะไรหรือปฏิบัติการใดๆ

เอาล่ะ Kite ทำเสร็จแล้ว มาดูสิ่งที่ Kite สร้างกัน รีโหลดแดชบอร์ด ตรงนี้คุณจะเห็นว่ามันดึงเมตริกจริงจากฐานข้อมูลเอเจนต์ของเราที่เราสร้าง คุณจะเห็นว่า Kite พยายามดึงเมตริกจริงจากฐานข้อมูลบันทึกการทำงานของเอเจนต์ คุณจะเห็นว่าตอนนี้ในส่วน workload ของเอเจนต์ เพราะไม่มีเอเจนต์ตัวไหนทำงานอะไรในวันนี้ ทุกอย่างจึงเป็นศูนย์สำหรับ Atlas, Vera และ Orion และ Kite เป็นตัวเดียวที่จะทำงานกับเราวันนี้ Kite จึงอยู่ที่ประมาณ 100% และเช่นเดียวกันเมื่อคุณมาที่ฐานข้อมูลเอเจนต์ คุณจะเห็นว่าทุกอย่างเกือบเป็นศูนย์สำหรับเอเจนต์ทั้งหมด เพราะพวกมันยังไม่ได้ทำอะไรในวันนี้ ผมกำลังอัดวิดีโอในวันที่สอง ดังนั้นผมคาดว่าจะมีเมตริกบางอย่างจากวันก่อนหน้า ผมจะบอก Kite ว่า "เฮ้ ดูเหมือนว่าเมตริกที่ถูกดึงมานั้นดึงมาจากวันนี้เท่านั้น แต่ควรมีกิจกรรมจากเอเจนต์ในวันก่อนหน้าด้วย มันควรทำให้แน่ใจว่าแดชบอร์ดไม่เพียงสะท้อนวันนี้ แต่สะท้อนข้อมูลทั้งหมดที่เรามีในฐานข้อมูลบันทึกการทำงานของเอเจนต์" ผมบอก Kite ว่า "เฮ้ อันนี้ดูเจ๋งมาก ขอบคุณ อย่างไรก็ตาม ดูเหมือนว่าเมตริกเอเจนต์ที่แสดงเป็นของวันนี้เท่านั้น ผมไม่เห็นข้อมูลจากเมื่อวานเลย แม้ว่าฐานข้อมูลควรจะมีข้อมูลนี้" มันควรตรวจสอบว่าอะไรผิดปกติ และทำให้แน่ใจว่าเราเสิร์ฟข้อมูลทั้งหมดที่มีอยู่ในฐานข้อมูลบันทึกการทำงานของเอเจนต์

เอาล่ะ Kite บอกว่ามันเสร็จแล้ว ดูเหมือนมีปัญหาเกิดขึ้น มันบอกว่าปัญหาที่แท้จริงคือมีปัญหากับเซิร์ฟเวอร์ทดสอบ (test server) ของ Python ที่ลบสิ่งต่างๆ ออกจากฐานข้อมูลโปรดักชัน มันจึงแก้ไขสิ่งนี้ด้วย มันบอกว่าการแก้ไขเสร็จสิ้น เซิร์ฟเวอร์ทดสอบไม่แตะฐานข้อมูลโปรดักชันอีกต่อไป และมันเพิ่มมาตรการบางอย่างเพื่อให้แน่ใจว่าสิ่งนี้จะไม่เกิดขึ้นอีก แต่สิ่งที่ผมอยากให้ Kite ทำก่อนที่เราจะเดินหน้าต่อไป ผมอยากแน่ใจว่าปัญหานี้แก้ไขแล้วจริง ผมจะบอก Kite ว่า "เฮ้ ทำการทดสอบแบบ end-to-end smoke test กับเอเจนต์ทั้งหมด กระตุ้นกิจกรรมทดสอบสองสามอย่าง แล้วตรวจสอบว่าข้อมูลที่ได้ถูกบันทึกในฐานข้อมูลและสะท้อนบนแดชบอร์ดอย่างถูกต้อง ถ้ามีอะไรที่ขาดหายไป ก็แก้ไขมันด้วย" เพราะฐานข้อมูลบันทึกการทำงานของเอเจนต์จะเป็นส่วนสำคัญของสิ่งที่เราจะสร้าง ผมจึงอยากแน่ใจร้อยเปอร์เซ็นต์ว่าเอเจนต์บันทึกการทำงาน และทุกสิ่งที่พวกมันทำสะท้อนบนแดชบอร์ดนี้ และยังไงก็ตาม พรอมป์ต์เชิงลึกทั้งหมดที่ผมเพิ่มเข้าไปนี้ ผมจะทำให้คุณเข้าถึงได้ ถ้าคุณเจอสถานการณ์เดียวกัน คุณก็แค่คัดลอกวางพรอมป์ต์แล้วให้เอเจนต์หรือ Kite แก้ไขให้คุณ

เอาล่ะ Kite บอกว่ามันทำ smoke test เสร็จแล้ว มันทำซ้ำกับเอเจนต์ทั้งหมด และตอนนี้คุณจะเห็นว่าเอเจนต์ทั้งหมดทำเสร็จแล้ว เมื่อเรากลับมาที่แดชบอร์ด คุณจะเห็นว่าตอนนี้เราไม่มีค่าศูนย์ที่เราเคยมี เรามีเมตริกจากเอเจนต์ทั้งหมด

ที่ถูกดึงมาจากฐานข้อมูลบันทึกการทำงานของเอเจนต์อย่างถูกต้อง และเช่นเดียวกันกับ heat map และเมื่อเรามาที่แดชบอร์ด เรายังเห็นว่าจำนวน runs ทั้งหมดของเอเจนต์ก็ถูกต้องด้วย ยังมีอีกอย่างหนึ่งที่ไม่ถูกต้องตรงนี้ ซึ่งเกี่ยวกับการกระจายภาระงานของเอเจนต์ (agent workload distribution) อันนี้ควรรวมกันได้ 100 เสมอ เพื่อที่เราจะได้เห็นว่าเอเจนต์ตัวไหนมีภาระงานมากที่สุด ผมจะบอก Kite ให้แก้ไขอันนี้ด้วย แล้วเราค่อยไปต่อกับการ build ผมบอก Kite ว่า "เฮ้ บนหน้าแรกของแดชบอร์ด การกระจายส่วนแบ่งภาระงานของเอเจนต์ไม่สมเหตุสมผล" ผมบอกมันว่าทุกอย่างควรรวมกันได้ 100% แต่ตอนนี้ทุกอย่างรวมกันได้ 350 แนวคิดคือ เมื่อไหร่ก็ตามที่ผมดูอันนี้ ผมควรจะเห็นว่าเอเจนต์ตัวไหนทำงานมากกว่า มันควรแก้ไขอันนี้ให้เรา Kite ก็ทำเสร็จแล้ว ตอนนี้เมื่อผมดูแดชบอร์ด คุณจะเห็นว่าการกระจายสมเหตุสมผลแล้ว มันรวมกันได้ 100% และผมเห็นชัดเจนว่า Kite เป็นเอเจนต์ที่แอคทีฟที่สุด เพราะมันเป็นคนสร้างแดชบอร์ดอยู่แล้ว

ตอนนี้ฐานข้อมูลบันทึกการทำงานของเอเจนต์ทำงานถูกต้องแล้ว เมตริกทั้งหมดที่วางบนแท็บ agents ก็สมเหตุสมผล เราจึงเริ่ม build คอมโพเนนต์อื่นๆ ของแดชบอร์ดได้ ผมจะอธิบายแนวคิดว่าพรอมป์ต์ทั้งหมดจะทำอะไร และผมจะใส่พรอมป์ต์ทั้งหมดนี้ในครั้งเดียว เพื่อที่คุณจะได้ไม่ต้องนั่งดูผมใส่ทีละอัน ในพรอมป์ต์ถัดไปเราจะสร้าง exporter และขออธิบายว่าทำไมเราถึงต้องมีมัน เดิมที เมื่อไหร่ก็ตามที่คุณอยากสร้างภาพ carousel หรือสไลด์ คุณต้องออกแบบทุกอย่างในโปรแกรมแก้ไขภาพ (photo editor) เสมอ แล้วบันทึก ส่งออกเป็นรูปภาพ แล้วคุณก็ได้ภาพ carousel ของคุณ แต่เคล็ดลับที่เราจะใช้ตรงนี้คือ เราจะเรนเดอร์ทุกสไลด์ เราจะสร้างทุกสไลด์เป็น HTML ถ้าคุณสร้างสไลด์เป็นภาพ คุณจะจ่ายเงินทุกครั้งต่อภาพที่สร้าง ถ้าอยากเปลี่ยนข้อความในภาพ นั่นหมายความว่าคุณต้องจ่ายเงินสำหรับ API call ทุกครั้ง ซึ่งทำให้การทำงานกับสไลด์ไม่สนุกอีกต่อไป เราจะสร้างมันด้วยวิธีที่ฉลาดกว่านี้ เราจะสร้างทุก carousel เป็นไฟล์ HTML เพราะมันจะเป็นไฟล์ HTML เราจะแก้ไขข้อความใดก็ตามที่อยากแก้ได้ง่ายมาก

ขอเข้าไปในเซ็ตอัปของผมเพื่ออธิบายให้คุณเห็นแนวคิดว่าเราจะสร้างสไลด์อย่างไร ขอยกอันนี้เป็นตัวอย่าง ทุกอย่างที่คุณเห็นตรงนี้ดูเหมือนภาพ แต่จริงๆ แล้วมันไม่ใช่ภาพ มันเป็นเอกสาร HTML ที่เรนเดอร์ไฟล์แบบนี้ เมื่อไหร่ก็ตามที่ผมอยากส่งออกเป็นภาพ ผมจะใช้สิ่งที่เรียกว่า headless browser (เบราว์เซอร์ไร้หน้าต่าง) headless browser ไม่จำเป็นต้องมีเดสก์ท็อปในการรัน มันจะเรนเดอร์ไฟล์นี้ซึ่งเป็นไฟล์ HTML แล้วถ่ายภาพหน้าจอของสิ่งที่มันเห็น ดังนั้นทุกสิ่งที่เราเห็นตรงนี้ซึ่งเรนเดอร์เป็นโค้ด จะถูกส่งออกเป็น JPEG ในที่สุด แล้วคุณก็สามารถอัปโหลดมันไปยัง Instagram, TikTok หรือที่ไหนก็ตามที่อยากสร้าง เหตุผลที่เราทำด้วยวิธีที่ฉลาดนี้คือ เดิมทีเมื่อไหร่ก็ตามที่คุณอยากสร้างสไลด์ carousel คุณต้องใช้เครื่องสร้างภาพ บางทีคุณอาจใช้ Leonardo หรือโมเดล AI ทั้งหลายที่มีอยู่เพื่อสร้างภาพ แต่เมื่อคุณอยากเปลี่ยนข้อความแม้แต่คำเดียว คุณต้องบอกโมเดล AI อีกครั้งว่า "เฮ้ ผมอยากเปลี่ยนข้อความ" เช่น ผมอยากเปลี่ยนจาก most people เป็น most users ผมต้องบอกโมเดล AI อีกครั้งว่า "เฮ้ ผมอยากเปลี่ยนข้อความจาก most people เป็น most users" แล้วคุณก็จ่ายเงินทุกครั้งที่แก้ไข ซึ่งอาจไม่ใช่วิธีที่ฉลาดที่สุด

วิธีที่ผมสร้างและที่ผู้ใช้ส่วนใหญ่ใช้คือ คุณสร้างสไลด์ทั้งใบเป็นไฟล์ HTML และด้วยวิธีนั้น คุณสามารถเปลี่ยนทุกอย่างที่อยากเปลี่ยนในไฟล์ได้โดยไม่ต้องสร้างพรอมป์ต์ใหม่หรือสร้าง API keys ใหม่ ตัวอย่างเช่น นี่คือสิ่งที่แดชบอร์ดของเราจะทำด้วย เมื่อผมคลิก fine-tune แล้วเลือกองค์ประกอบนี้ ผมก็เปลี่ยนข้อความตรงนี้จาก people เป็น most builders ได้เลย และคุณจะเห็นว่ามันทำได้ ผมสามารถบันทึกและเรนเดอร์ใหม่ แล้วผมก็ได้สไลด์ใหม่โดยไม่ต้องเรียก API เลย เช่นเดียวกัน ผมเปลี่ยนคอนเทนต์ทั้งหมดได้ นี่คือเหตุผลที่ผมชอบสิ่งที่เราสร้างตรงนี้มาก ผมเปลี่ยนเลย์เอาต์ได้ ย้ายคอนเทนต์ทุกชิ้นตรงนี้ เปลี่ยนขนาด ใส่ในรูปแบบไหนก็ได้ตามที่ต้องการ โดยไม่ต้องจ่ายค่า API call เลย ดังนั้นสิ่งที่เราสร้างคือ เราสร้างสไลด์ carousel ทุกใบเป็นไฟล์ HTML แล้วเมื่อเราพร้อม เราก็ใช้ headless browser ที่ดูไฟล์ HTML ที่เราสร้างและสร้างภาพหน้าจอเป็นรูปภาพที่เราสามารถอัปโหลดไปยังแพลตฟอร์มโซเชียลมีเดียใดก็ได้ เราจึงหลีกเลี่ยงการทำให้การออกแบบภาพ carousel ซับซ้อน ที่คุณต้องเรียก API ทุกครั้งที่แก้ไขและจ่ายเงินทุกครั้งที่แก้ไข เรากำลังเรนเดอร์ทุกอย่างเป็นไฟล์ HTML ที่แก้ไขได้อย่างอิสระ

ค่อนข้างบ้ามากที่คุณสามารถทำได้กับ HTML มาตรฐาน อย่างที่คุณเห็นเทมเพลตทั้งหมดตรงนี้ ไม่มีสักอันที่เป็นรูปภาพ ทุกอย่างสร้างด้วย HTML มาตรฐาน ซึ่งบางคนอาจไม่เชื่อด้วยซ้ำว่าสิ่งนี้สร้างด้วย HTML โดยพื้นฐานแล้ว พรอมป์ต์นี้จะสร้างการตั้งค่าของ headless browser ที่จะเรนเดอร์สิ่งที่เราสร้างจากไฟล์ HTML ให้เป็นภาพที่สามารถอัปโหลดบนแพลตฟอร์มโซเชียลมีเดียใดก็ตามที่เรามี เราไม่ได้สร้างภาพตรงๆ เราสร้างไฟล์ HTML ที่มีโครงสร้างที่เราต้องการ แล้วพอเราพอใจกับมัน เราก็ส่งออกเป็นภาพ และสำหรับสิ่งนี้เราใช้ headless browser ที่เรียกว่า Chromium และโดยค่าเริ่มต้น Hermes setup ส่วนใหญ่มาพร้อมกับ Chromium เราจึงอาจไม่ต้องติดตั้งมันเองด้วยซ้ำ เราแค่ใช้ประโยชน์จากสิ่งที่ Hermes มีอยู่แล้ว แล้วใช้มันสร้างสิ่งที่อยากสร้าง ถ้าจำได้ ตอนที่เราสร้างแดชบอร์ด มีส่วนที่ผมบอกว่าเอเจนต์ใช้เบราว์เซอร์ ตัวอย่างเช่น คุณจะเห็นว่า Kite เรนเดอร์เบราว์เซอร์ที่มันไปที่แดชบอร์ดและตรวจสอบว่าทุกอย่างทำงาน นั่นคือแนวคิดเดียวกันที่ผมจะใช้ เราจะให้นักออกแบบซึ่งในกรณีนี้ก็คือ Kite ใช้ headless browser ตัวเดียวกัน แต่ตอนนี้มันจะไม่ใช้เพื่อตรวจสอบแดชบอร์ด แต่จะใช้เพื่อแปลงสิ่งที่ไฟล์ HTML มีอยู่ มันทำให้การสร้างสไลด์ง่ายมากโดยไม่ต้องจ่ายค่า API call ทุกครั้ง และ Kite ก็ทำเสร็จแล้ว มันทำ smoke test และยืนยันว่าภาพถูกเรนเดอร์จากเบราว์เซอร์เป็นไฟล์ PNG จริง

ในขั้นตอนถัดไป เราจะสร้างทุกอย่างที่จะรันจากแบ็กเอนด์ ผมจะอธิบายพรอมป์ต์แบ็กเอนด์ทั้งหมดเหล่านี้ แล้วให้ Kite แต่ผมจะอธิบายพรอมป์ต์ทั้งหมดเหล่านี้จนถึงจุดที่เราไปถึงพรอมป์ต์ที่กระตุ้นการออกแบบฟรอนต์เอนด์ เมื่อคุณใช้พรอมป์ต์ ทุกอย่างที่ผมพูดว่า backend ผมจะพยายามเพิ่มคำนี้ เพื่อให้คุณรู้ว่าจะคาดหวังอะไร ถ้าเป็นพรอมป์ต์แบ็กเอนด์ มันจะไม่แสดงอะไรบนแดชบอร์ด

มันกำลังสร้างรากฐานที่เราจะใช้เพื่อแสดงบางอย่างบนแดชบอร์ด เมื่อเราไปถึงจุดที่ผมเขียนว่า design นั่นหมายความว่าสิ่งที่คุณจะทำคือจะแสดงดีไซน์ แต่ถ้าผมไปถึงจุดที่ผมรู้สึกว่ามีประโยชน์ที่จะอธิบาย ผมก็จะอธิบายให้คุณฟังด้วย เพื่อที่คุณจะเข้าใจว่าพรอมป์ต์เหล่านี้หน้าตาเป็นอย่างไร และในทุกกรณีผมมักใส่คำอธิบายสั้นๆ เพื่ออธิบายว่าพรอมป์ต์จะทำอะไรและคุณควรคาดหวังอะไร

ตอนนี้เราทำพรอมป์ต์ exporter เสร็จแล้ว พรอมป์ต์ถัดไปคือ template packs auto fit เมื่อไหร่ก็ตามที่เราสร้างไอเดีย ขอใช้เซ็ตอัปของผมเพื่อให้คุณเห็นแนวคิดว่าผมกำลังทำอะไร เมื่อผมคลิก generate ideas มาดูกัน ผมมีไอเดียที่ถูกสร้างไว้แล้วตรงนี้ ขอดูตัวอย่างอย่าง "building a one person AI operation team" เมื่อผมชอบไอเดียนี้และคลิก promote โดยพื้นฐานแล้วผมสามารถตัดสินใจจำนวนสไลด์ที่ต้องการสร้าง สมมติว่าผมอยากสร้างหกสไลด์แล้วกด write slides สิ่งที่จะเกิดขึ้นคือ Vera นักเขียนของเราจะเขียนสไลด์สำหรับ carousel หรือคอนเทนต์หรือข้อความสำหรับ carousel ที่เราอยากสร้าง อย่างที่บอก ทุกอย่างที่ Vera ให้เรามาเป็นเพียงข้อความดิบ (raw text) แต่เราต้องสามารถแทรกข้อความเหล่านี้ลงในเทมเพลตได้ พรอมป์ต์ที่เราจะสร้างตรงนี้จะสร้างส่วนที่นำคอนเทนต์ที่ Vera สร้างขึ้นมาแทรกลงในเทมเพลต HTML ที่เรามี เทมเพลตทั้งหมดที่คุณเห็นตรงนี้อย่างที่บอก เป็นเทมเพลต HTML โดยพื้นฐาน ตัวอย่างเช่น เมื่อผมดูตัวอย่างนี้ คุณจะเห็นว่าบางอันมีตัวอักษรยาวกว่าบางอัน อันนี้มีตัวอักษรยาวกว่า อันนี้มีเลย์เอาต์ต่างกันและอื่นๆ สิ่งที่จะเกิดขึ้นคือ แบ็กเอนด์ที่เราจะสร้างจะดูเทมเพลตที่คุณเลือก แล้วปรับข้อความที่ Vera สร้างให้เข้ากับเทมเพลตนั้น และนี่คือสิ่งที่ผมเรียกว่าฟีเจอร์ auto fit

เพื่อให้สิ่งนี้ทำงาน เราต้องสร้างเรนเดอร์เอนจิน (render engine) ที่จะดูคอนเทนต์ที่ Vera สร้าง แล้วดูเทมเพลตปลายทาง ตัวอย่างเช่น ถ้าผมบอกว่า "เฮ้ ผมชอบคอนเทนต์นี้" เมื่อผมมาที่ approve และเลือกเทมเพลต มันจะถามว่าผมอยากใช้เทมเพลตไหน เมื่อไหร่ก็ตามที่ผมเลือกเทมเพลตที่อยากใช้ แบ็กเอนด์ที่เราจะสร้างตรงนี้จะดูเทมเพลตที่เราเลือก ดูจำนวนคำและตัวอักษรที่มี แล้วปรับข้อความที่ Vera สร้างให้เข้ากับเทมเพลตนั้น ลองนึกภาพว่าถ้าคำที่ Vera สร้างยาวเกินกว่าที่เทมเพลตรองรับ carousel ก็จะดูน่าเกลียด นี่คือเหตุผลที่เราสร้างเรนเดอร์เอนจินนี้เพื่อจัดการสิ่งนั้นให้เรา และหลังจากนั้นเราจะสร้างไปป์ไลน์ (pipeline) เพื่อคุยกับทีมเอเจนต์ ตอนนี้เวลาผมคุยกับทีม ผมแชทกับ Kite ได้ แชทกับ Vera ได้ แต่ยังแชทกับนักเผยแพร่ของเราไม่ได้ แต่เราอยากคุยกับพวกมันจากแดชบอร์ดได้ และคำว่า "คุย" ที่ผมหมายถึงคือ เมื่อผมมาที่แท็บ ideas แล้วคลิก generate ideas นี่จะส่งข้อความไปที่ Atlas นักวิจัยของเราเพื่อหาไอเดียว่าเราสามารถสร้างอะไรได้ ผมกำลังคุยกับ Atlas ผ่านโค้ดที่ผมส่งทริกเกอร์ไปที่ Atlas ว่า "เฮ้ สร้างไอเดียให้หน่อย" และเช่นเดียวกันกับเอเจนต์อื่นๆ ทั้งหมด เมื่อไหร่ก็ตามที่เราอยากเผยแพร่อะไร เราไม่ต้องมาที่ Telegram แล้วบอกให้มันเผยแพร่ เราอยากกดปุ่มบนแดชบอร์ดที่จะทริกเกอร์เอเจนต์ให้เผยแพร่คอนเทนต์ และนี่คือสิ่งที่พรอมป์ต์ 17 จะทำ มันจะสร้างอินเทอร์เฟซที่เมื่อไหร่ก็ตามที่เราคลิกปุ่มบนแดชบอร์ด มันจะส่งและทริกเกอร์เอเจนต์ให้ทำงานนั้นให้เรา

จากนั้นเราจะมีพรอมป์ต์ 18 พรอมป์ต์ 18 จะเป็นของ Atlas โดยเฉพาะ ซึ่งเป็นคนดูแลไอเดียและนักวิจัยของเรา และผมก็แค่บอก Atlas ว่าผมอยากให้ carousel ออกแบบมาแบบไหน ตรงนี้เป็นแค่ตัวอย่างที่ผมใส่ลงไป ผมบอก Atlas ว่า "เฮ้ เมื่อไหร่ก็ตามที่คุณเขียนสไลด์ carousel ผมอยากให้เขียนด้วยภาษาธรรมดา ง่ายๆ คำสั้นๆ ประโยคสั้นๆ ไม่มีการโอเวอร์ ไม่มี buzz words อะไรแบบนั้น" ดังนั้นพรอมป์ต์นี้จึงให้แนวทางแก่ Atlas ว่าเราอยากให้คอนเทนต์เป็นแบบไหน รวมถึง Vera นักเขียนคอนเทนต์ของเราว่าเราอยากให้คอนเทนต์ของสไลด์หน้าตาเป็นอย่างไร และตรงนี้เรายังให้แนวทางกับมันเกี่ยวกับการสร้างไอเดีย มันควรสร้างสี่ไอเดีย และแนวทางว่าเราอยากให้สไลด์ carousel ทั้งหมดหน้าตาเป็นอย่างไร จากนั้นเราจะมีพรอมป์ต์สุดท้ายตรงนี้ ซึ่งสำหรับนักเผยแพร่ของเราเมื่อไหร่ก็ตามที่เราอยากเผยแพร่ ตัวอย่างเช่น เมื่อเรามาที่แดชบอร์ดและมาที่แท็บ studio ถ้าผมอยากเผยแพร่อะไรตรงนี้ ผมก็แค่คลิก post แล้วมันก็สามารถเผยแพร่ตรงไปยัง Instagram, TikTok หรือที่ไหนก็ตามที่คุณอยากใช้ แต่สำหรับสิ่งนั้นเราก็ต้องสร้างแบ็กเอนด์ และนั่นคือสิ่งที่พรอมป์ต์นี้จะทำ พรอมป์ต์นี้จะสร้างแบ็กเอนด์ที่เมื่อไหร่ก็ตามที่เราทริกเกอร์การอัปโหลด การอัปโหลดนั้นก็สามารถถูกส่งตรงไปยังแพลตฟอร์มโซเชียลมีเดียที่เราอยากส่งได้

ผมจะรันพรอมป์ต์ทั้งหมดนี้ พรอมป์ต์แรกคือตัวที่จะนำข้อความที่ถูกสร้างมาปรับให้เข้ากับเทมเพลต พรอมป์ต์ถัดไปคือตัวที่ดูแลให้เราใช้ปุ่มทั้งหมดบนแดชบอร์ดเพื่อทริกเกอร์แอ็กชันไปที่เอเจนต์ พรอมป์ต์ 18 ซึ่งจะดูแลว่าเราอยากให้ไอเดียถูกสร้างแบบไหน จำนวนไอเดียที่อยากให้สร้าง อยากให้แคปชันแบบไหน อยากให้สไลด์ carousel คอนเทนต์หน้าตาแบบไหน และเราจะมีพรอมป์ต์สุดท้ายที่ดูแลการเผยแพร่ไปยังเซิร์ฟเวอร์หรือแพลตฟอร์มโซเชียลมีเดียที่เราอยากเผยแพร่ ผมจะรันพรอมป์ต์ทั้งหมดนี้ ถ้าเจอปัญหาอะไร ผมจะหยุดและอธิบายให้คุณฟัง เพื่อให้คุณตามสิ่งที่เราจะทำตรงนั้นได้ เอาล่ะ Kite ประมวลผลพรอมป์ต์ทั้งหมดนั้นเสร็จแล้ว อย่างที่บอก ผมไม่ต้องตอบอะไรเลย ผมแค่คัดลอกวางพรอมป์ต์ทั้งหมดให้ Kite แล้วมันก็ประมวลผลแบ็กเอนด์ทั้งหมด

ในขั้นตอนถัดไป เราจะหา API keys มาบางอัน และผมจะอธิบายทุก API key ว่าคืออะไรและทำไมเราถึงต้องใช้มัน API key แรกที่เราจะหาคือสำหรับ Perplexity Perplexity เป็นหนึ่งในโมเดล AI ที่แข็งแกร่งมากในด้านการวิจัย ผมจึงเพิ่มฟีเจอร์นี้ เพื่อที่ว่าเมื่อคุณเขียน carousel และอยากให้เอเจนต์ใช้ข้อมูลล่าสุดจริงๆ ตัวอย่างเช่น คุณสามารถใช้ Perplexity เป็นโมเดลวิจัย โดย Atlas จะสอบถาม Perplexity เพื่อทำการวิจัยก่อนที่คอนเทนต์ของสไลด์จะถูกเขียน ขอยกตัวอย่างว่าเราจะใช้มันตรงไหน ตัวอย่างเช่น เมื่อผมมาที่แดชบอร์ดและคลิก generate ideas คุณจะเห็นว่าผมมีไอเดียสองสามอันที่ถูกสร้างให้ผม ตัวอย่างเช่น ลองเลือก "builder AI automation map" เมื่อผมอยากโปรโมตบทความนี้หรือโปรโมตไอเดียนี้เป็นสไลด์ ผมมีตัวเลือกนี้คือ research with Perplexity ถ้าคุณเลือก research with Perplexity แล้ว

เอเจนต์จะใช้ Perplexity เป็นเครื่องมือวิจัยเพื่อรวบรวมข้อมูลเกี่ยวกับไอเดียใหม่นี้ ถ้าคุณไม่เลือกอันนี้ เอเจนต์ก็จะทำการค้นหาเว็บแบบมาตรฐานเพื่อหาไอเดียสำหรับคอนเทนต์นี้ หรืออาจใช้สิ่งที่เอเจนต์ถูกฝึกมาแล้ว แต่ถ้าคุณอยากได้คอนเทนต์ที่อิงงานวิจัยจริงๆ คุณก็เปิด research with Perplexity แล้วเอเจนต์จะสร้างคอนเทนต์ที่อิงการวิจัยสำหรับบทความหรือไอเดียที่คุณอยากสร้าง นั่นจะเป็นคีย์แรกที่เราจะได้มา ในการหามัน คุณสามารถมาที่ console.perplexity.ai ผมจะใส่ลิงก์ไว้ในส่วนคำอธิบายด้วย เมื่อมาถึงตรงนี้ แค่สร้างบัญชีหรือล็อกอินถ้ามีอยู่แล้ว เมื่อคุณล็อกอินเข้าคอนโซลแล้ว คุณไม่ต้องทำอะไรมากตรงนี้ แค่มาที่ส่วนด้านซ้ายแล้วคลิก API keys จากนั้นใต้ API keys ให้มาที่มุมขวาบน คลิก generate API key คุณสามารถตั้งชื่อคีย์ได้ตามต้องการ สำหรับบทช่วยสอนนี้ ผมจะเรียกมันว่า Komputer Mechanic tutorial test แล้วคลิก create a key หลังจากนั้น คุณจะเห็นว่า API key ถูกสร้างให้คุณ คัดลอก API key นี้ เก็บไว้ในที่ปลอดภัย แล้วเราจะใช้ API key นี้

ขั้นตอนถัดไป เราจะได้ API key จาก ImgBB แต่ขออธิบายว่าทำไมเราถึงต้องใช้มัน สิ่งที่เราอยากทำกับการตั้งค่าของเราคือ เรามี Cadence และอยากส่งภาพจากตรงนี้ไปยัง Instagram เป็นตัวอย่าง ปัญหาคือ ถ้าเราอยากส่งสไลด์ของเราตรงๆ จาก Cadence ไปยัง Instagram เราต้องได้ Instagram API key ถ้าอยากทำสำหรับ TikTok คุณต้องสร้าง TikTok flow ของคุณเอง ถ้าอยากทำสำหรับ Facebook คุณต้องสร้างคีย์ของคุณเอง flow ของคุณเองและอื่นๆ และนี่ซับซ้อนมาก เราจะใช้เวลากับการสร้างการเชื่อมต่อเหล่านั้นมากกว่าที่จะโฟกัสกับแดชบอร์ดที่อยากสร้าง ดังนั้นสิ่งที่เราจะทำคือ มีบางแพลตฟอร์มอย่าง Buffer หรือ Metricool และสิ่งที่แพลตฟอร์มเหล่านี้ทำคือ พวกมันมีการเข้าถึงแพลตฟอร์มโซเชียลมีเดียทั้งหมด และพวกมันจัดการแบ็กเอนด์ทั้งหมดนั้นให้คุณแล้ว สิ่งที่เราต้องทำคือส่งสไลด์ของเราผ่านแพลตฟอร์มอย่าง Metricool หรือ Buffer แล้วพวกมันก็จะส่งสไลด์ไปยังแพลตฟอร์มโซเชียลมีเดียที่เราอยากไป

มีข้อแม้หนึ่งข้อ อย่างน้อยจากการทดสอบของผม Buffer ไม่อนุญาตให้เราส่งภาพตรงๆ ไปยังแพลตฟอร์มนั้น เราจึงต้องมีพื้นที่เก็บข้อมูลตัวกลาง (intermediate storage) ที่ภาพที่เราสร้างจะถูกส่งไป แล้วจากนั้นภาพก็จะไปที่ Buffer และสำหรับสิ่งนั้นเราจะต้องใช้แพลตฟอร์มที่เรียกว่า ImgBB ซึ่ง ImgBB นี้ฟรี สิ่งที่จะเกิดขึ้นคือ เมื่อไหร่ก็ตามที่คุณส่งภาพหรือส่ง story หรือ carousel จาก Cadence ของเรา มันจะถูกส่งไปที่ ImgBB ก่อน แล้วจาก ImgBB ภาพก็จะไปที่ Instagram ฟังดูซับซ้อนจากการตั้งค่าที่ผมกำลังอธิบาย แต่เราจะเดินสาย (wire) สิ่งนี้เข้าไป และเมื่อคุณคลิก post เช่น เมื่อผมมาที่แดชบอร์ดแล้วคลิก post แล้วเลือก เช่น ผมอยากโพสต์ไปที่ Instagram นี่คือสิ่งที่จะเกิดขึ้น การโอนย้ายทั้งหมดนี้จะเกิดขึ้นโดยอัตโนมัติ คุณไม่ต้องไปส่งจากที่นี่ไปที่นี่ ส่งจากที่นี่ไปที่นี่ เราจะเดินสายการเชื่อมต่อทั้งหมดนั้น ในการทำอย่างนั้น เราจะมาที่ ImgBB ซึ่งฟรีโดยสิ้นเชิง คุณสามารถสร้างบัญชีฟรีได้ เมื่อสร้างบัญชีแล้ว มาที่ส่วนด้านซ้ายแล้วคลิก API นี่จะพาคุณไปที่หน้า API เมื่ออยู่ตรงนี้ คลิก add API key สร้าง API key เก็บ API key แล้วเราก็ไปต่อยัง API key ถัดไปที่เราต้องการ

API key ถัดไปที่เราต้องการคือแพลตฟอร์มที่จะส่งสไลด์ของเราไปยังแพลตฟอร์มโซเชียลมีเดียที่เราอยากไป ตรงนี้มีหลายแพลตฟอร์ม ตัวอย่างเช่น เรามี Buffer ที่ทำสิ่งนี้ให้เราได้ และเราก็มี Metricool ที่ทำได้เช่นกัน ทั้งคู่ทำงานได้ ผมรู้ว่าหลายคนใช้ Metricool เพราะพวกเขามีแดชบอร์ดที่ทรงพลังมาก แต่จากการทดสอบของผม ผมพบว่าเพื่อให้คุณสามารถส่งสไลด์จาก Cadence OS ไปยัง Instagram หรือ TikTok ได้ ถ้าอยากใช้ Metricool เราต้องเลือกแผนที่แพงขึ้น มีเพียงตัวเลือกขั้นสูง (advanced) ที่คุณจ่าย 43 ดอลลาร์ต่อเดือนในกรณีของผมเท่านั้นที่จะมาพร้อม Metricool API อันนี้ค่อนข้างแพงสำหรับผม เพราะถ้าคุณอยากให้ Metricool ทำงานกับ Cadence จริงๆ คุณต้องเลือกแผน advance ที่จ่ายเป็นดอลลาร์ต่อเดือนเพื่อเข้าถึง API ของพวกเขา จำไว้ว่า API คืออินเทอร์เฟซที่ให้เราสื่อสารกับแพลตฟอร์มได้ และในกรณีของผม ผมมีบัญชีโซเชียลมีเดียแค่สองบัญชีที่ใช้ทดสอบ ผมไม่อยากจ่าย 43 ดอลลาร์ต่อเดือนเพื่อแพลตฟอร์มโซเชียลมีเดียแค่สองแพลตฟอร์ม

แต่ข้อดีของ Metricool คือ คุณสามารถเลือกแผนเริ่มต้น (starter plan) ที่จ่าย 16 ดอลลาร์ต่อเดือน แล้วคุณสามารถเพิ่มแพลตฟอร์มโซเชียลมีเดียได้มากเท่าที่ต้องการโดยไม่ต้องเพิ่มราคา ตัวอย่างเช่น ถ้าคุณมีสี่แพลตฟอร์มโซเชียลมีเดีย TikTok, Facebook, LinkedIn ฯลฯ คุณก็ยังจ่าย 16 ดอลลาร์ต่อเดือน ซึ่งผมว่าค่อนข้างเจ๋ง และผมจะโชว์ให้ดูตอนที่ผมเลือก Metricool เรามีอีกแพลตฟอร์มที่เรียกว่า Buffer และนั่นคือสิ่งที่ผมใช้ในสิ่งที่เรากำลังสร้างกับ Hermes ข้อดีของ Buffer คือ พวกเขาอนุญาตให้เราใช้ API assets ของพวกเขาได้แม้กับแผนมาตรฐาน และผมคิดว่าในกรณีของผม ผมเลือกแผน 5 ดอลลาร์ซึ่งเป็นแบบ essential ถึงแม้กับแผนนี้คุณก็มี API keys สามอันและใช้มันได้ แต่กับ Metricool คุณจะเข้าถึง API key ได้ก็ต่อเมื่อมีแผน 43 ดอลลาร์ ข้อแม้ของ Buffer คือ ทุกแพลตฟอร์มโซเชียลมีเดียที่คุณเพิ่ม คุณจ่ายเพิ่มอีก 5 ดอลลาร์ ถ้าคุณมี TikTok, Facebook, Instagram ก็เป็น 15 ดอลลาร์ ถ้าเพิ่ม LinkedIn ก็เป็น 20 ดอลลาร์ มันอาจแพงขึ้นเรื่อยๆ

ในกรณีนั้น ถ้าคุณไม่สนใจเรื่องการส่งตรงจาก Cadence ไปยังแพลตฟอร์มโซเชียลมีเดีย ผมก็เพิ่มตัวเลือกบนแดชบอร์ดที่คุณสามารถดาวน์โหลดสไลด์ทั้งหมดได้ ขอทำตัวอย่างให้ดู เมื่อผมคลิก slides คุณจะเห็นว่าสไลด์ถูกดาวน์โหลดมาที่นี่ เมื่อผมคลิกอันนี้ คุณจะเห็นว่าผมมีสไลด์ทั้งหมดดาวน์โหลดมาที่นี่ ขอไปที่ thumbnails แล้วคุณจะเห็นว่าผมมีภาพทั้งหมด และสิ่งที่ผมเพิ่มให้คุณอีกอย่างคือ คุณสามารถคลิก caption แล้วคุณจะเห็นแคปชันที่จำเป็นสำหรับการโพสต์ แล้วคุณก็โพสต์ด้วยตัวเองได้ และในกรณีนั้น Metricool น่าจะเป็นตัวเลือกที่ดีที่สุด เพราะพวกเขามี เช่น สำหรับแผน 16 ดอลลาร์ คุณจะเพิ่มโซเชียลมีเดียได้มากขึ้น คุณเห็นตรงนี้ได้ถึง 10 แบรนด์ ซึ่งเจ๋งมาก แต่ถ้าคุณอยากใช้ประโยชน์จากการส่งจาก Cadence ตรงๆ ไปยังแพลตฟอร์มโซเชียลมีเดียของคุณจริงๆ Buffer อาจเป็นตัวเลือกที่ถูกกว่า ผมแค่พยายามอธิบายว่าคุณจะตัดสินใจเลือกแพลตฟอร์มที่อยากใช้อย่างไร สำหรับตัวอย่างนี้เราจะใช้ Buffer เพราะอย่างที่บอก ผมมีบัญชีโซเชียลมีเดียแค่สองบัญชี และผมไม่อยากจ่าย 43 ดอลลาร์ตรงนี้เพื่อการทดสอบของผม คุณจึงสามารถสร้างบัญชีกับแพลตฟอร์มใดก็ได้ที่อยากใช้ แล้วล็อกอินเข้าบัญชีของคุณ เมื่อคุณล็อกอินเข้าบัญชี Buffer ของคุณแล้ว

แดชบอร์ดของ Buffer ให้มาที่ส่วนล่างตรงนี้ที่คุณมี my organization แล้วคลิก API จากนั้นคลิก new key แล้วคุณก็สามารถสร้าง API key ได้ ด้วย API keys สามอันนี้จาก Perplexity, ImgBB และ Buffer เราจะสามารถเดินสายมันเข้ากับ Cadence และ build ต่อไปได้

เมื่อเรารวบรวม API keys เหล่านี้แล้ว เราต้องเก็บ API keys ลงบนเซิร์ฟเวอร์ของเรา ในการทำอย่างนั้น เราจะกลับมาที่ PowerShell ผมจะล็อกอินกลับเข้าสู่เทอร์มินัล กลับมาแล้ววางคำสั่งนี้ คำสั่งนี้จะถามหา API keys ทั้งหมด และมันจะถูกเก็บอย่างลับๆ โดยหลักการแล้วคุณสามารถให้ API keys ตรงๆ กับ Kite ได้ แต่นี่ไม่ใช่วิธีที่แนะนำ เพราะถ้ามันถูกบุกรุก ใครบางคนจะเข้าถึง API keys ของคุณ นี่คือเหตุผลที่เมื่อไหร่ก็ตามที่ผมเพิ่ม API keys หรือความลับ (secrets) ผมชอบทำจากเทอร์มินัล มากกว่าที่จะให้ Kite หรือ Telegram โดยตรง กด enter แล้วมันจะถามหา Buffer access token ของคุณ ตรงนี้ผมจะวาง Buffer key ของผม วางลงไป แล้วกด enter จากนั้นมันจะถามหา ImgBB API key ผมจะคัดลอกอันนี้เช่นกัน วางลงไป กด enter แล้วอันสุดท้ายจะถามหา Perplexity ของคุณ อุ๊ย ผมรู้ตัวว่าผมทำผิด อันแรกที่ผมใส่ไม่ใช่ของ Buffer แต่เป็นของ Perplexity ผมจะยกเลิกอันนี้แล้วรันใหม่อีกครั้ง หวังว่ามันจะไม่เละ ผมจะบอก Kite ระหว่างทางว่าผมทำผิดพลาด ผมจะเรียกคำสั่งเดิมที่ใช้ กด enter แล้วคัดลอก Buffer key ที่ถูกต้อง จากนั้นคัดลอก ImgBB key จากนั้นคัดลอก Perplexity API key วางลงไป แล้วคุณจะเห็นว่าข้อมูลทั้งหมดถูกบันทึก และเราได้รับการแจ้งเตือนว่าทุกอย่างเสร็จสิ้น

สิ่งที่ผมจะทำตอนนี้คือ มาที่ Kite แล้วบอก Kite ว่า "เฮ้ เราเก็บ API keys สามอันนี้แล้ว มันควรทำ smoke test เพื่อให้แน่ใจว่าคีย์ทั้งหมดทำงาน" ผมจะคัดลอกอันนี้และให้ Kite แต่เพราะผมทำผิดและใส่มันสองครั้ง ผมจะเขียนบอกมันว่า "ผมทำผิดและเพิ่มมันสองครั้ง คุณเพิกเฉยรายการนี้ได้" จากนั้นบอกให้มันทำ smoke test ผมหวังว่าความผิดพลาดครั้งแรกที่ผมทำ มันจะแก้ไขให้และเห็นว่าคีย์ทั้งหมดทำงาน เฮ้ ถ้าคุณเห็นคุณค่าในคอนเทนต์ที่ผมสร้าง กดปุ่ม subscribe สมัครสมาชิกช่องของผม และกดปุ่ม like เพื่อให้อัลกอริทึมของ YouTube ผลักวิดีโอนี้ไปยังคนอื่นๆ ที่อยู่ข้างนอก มันไม่เสียเงินคุณเลย แต่มันสนับสนุนการเติบโตของช่องผมจริงๆ มีงานจำนวนมากที่ใส่ลงไปในการสร้างบทช่วยสอนเหล่านี้ การสร้างพรอมป์ต์ นี่คือเหตุผลที่ผมไม่สามารถอัปโหลดวิดีโอทุกสัปดาห์ได้ เพราะผมทดสอบทุกอย่างประมาณ 20 ครั้งก่อนที่จะปล่อยออกไป นี่คือเหตุผลที่ผมต้องอัปโหลดวิดีโอตามกำหนดการรายปักษ์ (bi-weekly) เพราะมีงานจำนวนมากที่ใส่ลงไปในการสร้างสิ่งเหล่านี้

Kite ก็ทำเสร็จเช่นกัน มันทำ smoke test มันยืนยันว่า Buffer ทำงาน ImgBB ทำงาน และ Perplexity ทำงาน เอาล่ะ ในขั้นตอนถัดไป เราจะใส่พรอมป์ต์ 20 พรอมป์ต์ 20 จะให้ทริกเกอร์ที่เราสามารถเผยแพร่ไอเดีย สร้างไอเดีย เรนเดอร์คอนเทนต์ เรนเดอร์ carousel และอื่นๆ แค่คัดลอกพรอมป์ต์นี้แล้วให้ Kite เช่นกัน เอาล่ะ Kite ก็ทำเสร็จแล้ว พรอมป์ต์สามอันถัดไปจะเป็นพรอมป์ต์การออกแบบ (design prompts) อันนี้จะเดินสายแท็บ ideas แท็บ promotes และแท็บ studio และหลังจากนั้นเราจะทดสอบทั้งระบบ ตอนนี้เรามีแท็บ ideas ที่ไม่มีอะไรอยู่ แท็บ studio ที่ไม่มีอะไรอยู่ แท็บ publish ที่ไม่มีอะไรอยู่ และแท็บ templates ด้วย สิ่งที่เราจะทำคือให้พรอมป์ต์เหล่านี้กับ Kite เพื่อเดินสายพวกมัน หลังจากนั้นเราสามารถทดสอบฟังก์ชันบางอย่าง เพื่อให้คุณเห็นสิ่งที่เรากำลังสร้าง ผมจะให้พรอมป์ต์ทั้งหมดนี้กับ Kite ตามลำดับ แล้วเราก็ไปดูการทดสอบกัน

เอาล่ะ Kite ประมวลผลพรอมป์ต์ทั้งหมดนั้นเสร็จแล้ว ผมรู้ว่าเราสร้างกันมาระยะหนึ่งแล้ว มาดูเดโม่จริงแบบ end-to-end เพื่อให้แน่ใจว่าทุกอย่างทำงาน ผมจะกลับมาที่แดชบอร์ด รีโหลดแดชบอร์ด แล้วไปที่แท็บ ideas ตอนนี้ผมเห็นว่า Kite ทำ smoke test โดยทดสอบเอเจนต์หนึ่งตัวก่อนที่จะไว้ใจ มันแค่ทำ smoke test เพื่อให้แน่ใจว่าไอเดียทำงาน มาคลิก generate ideas เพื่อดูว่ากระแส end-to-end ที่ Atlas ทำงานวิจัยและให้ไอเดียเราจะทำงานหรือไม่ ผมเห็นการแจ้งเตือนว่ามันกำลังทำวิจัย ขอรอจนกว่าผลลัพธ์จะออกมา และอันนี้ทำงานได้ดีมาก คุณจะเห็นว่าเรามีสี่ไอเดียที่ถูกสร้างโดย Atlas "Browser agents should verify, not just click" "Your agent needs a sandbox before it needs more tokens" สมมติว่าเราอยากโปรโมตหนึ่งในไอเดียเหล่านี้ ลองเลือก "stop giving agents your whole app" แล้วคลิก promote ตรงนี้สมมติว่าเราอยากสร้างสไลด์ carousel สิบสไลด์ และผมจะเลือก research with Perplexity ตรงนี้ Perplexity ถูกเปิดใช้งาน เพราะเราอยากทดสอบว่า API key ทำงาน และผมยังเพิ่มตัวเลือกนี้ steroid mode ซึ่งจะสร้างคำที่ทรงพลังกว่าสำหรับสไลด์ carousel ขอเปิดทั้งสองอันนี้ แล้วไปที่ write 10 slides อันนี้กำลังทำงาน Vera ถูกทริกเกอร์ Vera คือเอเจนต์ที่เขียนคอนเทนต์ มันกำลังอ่านไอเดียและทำวิจัยเพื่อให้แน่ใจว่าทุกอย่างทำงาน ทำวิจัยเพื่อให้แน่ใจว่ามันได้ข้อมูลทั้งหมดที่เราต้องการสำหรับการเขียนคอนเทนต์นั้น

เอาล่ะ Vera สร้างคอนเทนต์แล้ว คุณจะเห็นว่าเรามีสไลด์ทั้งสิบอันถูกสร้าง เรามีข้อความปก (cover text) ที่บอกว่า "your agent is not dumb, your prompt is bloated" จากนั้นมันก็เขียนคอนเทนต์ทั้งหมดที่จะอยู่บนทุกสไลด์ที่เรามี สมมติว่าเราอยากอนุมัติอันนี้และโปรโมตมันลงในเทมเพลต คลิก approve แล้วเลือกเทมเพลตในขั้นตอนถัดไป ตรงนี้เราจะสร้าง Instagram carousel เราจึงต้องมีอัตราส่วน 4:5 สมมติว่าสำหรับตัวอย่างนี้ ผมจะเลือกอันสีม่วงที่เรามีตรงนี้ ผมจะเลือกอันนั้นแล้วคลิก fit copy to this สิ่งที่จะเกิดขึ้นคือ Vera จะตรวจสอบว่าคอนเทนต์หรือข้อความที่มันสร้างเข้ากับจำนวนตัวอักษรในเทมเพลตนั้นหรือไม่ เพราะถ้าคำยาวเกินกว่าที่เทมเพลตรองรับ ดีไซน์ทั้งหมดจะดูน่าเกลียด สิ่งที่ Vera จะทำคือ Vera จะอ่านข้อความฮาร์ดโค้ดทั้งหมดในเทมเพลต แล้วพยายามปรับและใส่คอนเทนต์ที่มันสร้างให้เข้ากับเทมเพลตนั้น และ Vera ก็ปรับคอนเทนต์ที่มันสร้างเพื่อให้เข้ากับเทมเพลตที่เรามีแล้ว เพราะเทมเพลตที่เราเลือกมีคำในส่วนปกน้อยกว่า มันจึงเขียนปกใหม่จาก "your package is bloated" เป็น "agent fat" แล้วเขียนคอนเทนต์ทั้งหมดที่

จะอยู่บนสไลด์ ตอนนี้ผมจะคลิก render now เพื่อส่งสิ่งนี้ไปยังแท็บ studio เพื่อที่เราจะได้เห็นว่ามันจะดูเป็นอย่างไรบนเทมเพลตที่เราเลือก ตอนนี้คุณเห็นการแจ้งเตือน open in studio เราสามารถคลิก open in studio ตรงนี้ได้ และมันจะเปิดสไลด์ที่เราเพิ่งสร้างในสตูดิโอ มาคลิกที่อันนี้ แล้วคุณจะเห็นว่า อย่างที่ Vera เขียน "agent okay, package fat, package fat, bad agent, run starts with too much context, whole ripple noise, guesses" แล้วเมื่อคุณคลิกที่อันนี้ คุณจะเห็นข้อความทั้งหมดที่ถูกสร้าง สมมติว่าเราไม่อยากใช้ข้อความนี้สำหรับปก เราอยาก fine-tune คุณสามารถคลิก fine-tune the slide ตรงนี้ แล้วมันจะโหลดสไลด์ขึ้นมา และเมื่อเราคลิกที่อันนี้ ตัวอย่างเช่น ผมสามารถเขียน "agents not the problem, prompt fat" แล้วคุณยังสามารถเลื่อนสไลด์ขึ้นลงได้ตามที่ต้องการ ทั้งหมดนี้เป็นไปได้ในแท็บ fine-tune ผมจะปิดอันนี้ ทิ้งการเปลี่ยนแปลง แล้วสมมติว่าเราอยากส่งสิ่งนี้ไปยัง Instagram และนี่คือส่วนที่ทำให้ผมประหม่า ผมสร้างบัญชี Instagram ทดลองชื่อ content vibe เพื่อที่เมื่อเราส่งตรงจาก Cadence นี้ มันจะผ่าน Buffer แล้วมาที่บัญชี Instagram นี้ ขอเปิดแพ็กเกจอีกครั้ง คลิกที่มัน แล้วยังไงก็ตาม คุณสามารถเปลี่ยนเทมเพลตได้เสมอเมื่อไหร่ก็ตามที่คุณอยากเลือกเทมเพลตอื่น คุณเลือกเทมเพลตอะไรก็ได้ แล้ว Cadence จะเขียนคอนเทนต์ใหม่ให้เข้ากับเทมเพลตนั้น

ตอนนี้ขอมาที่นี่ คลิก post now แล้วตรงนี้ เพราะผมตั้งค่าแค่ Instagram มันจะโชว์แค่ Instagram ผมจะคลิก Instagram only แล้วมันจะเตือนผม และผมจะได้รับการแจ้งเตือน "เฮ้ แน่ใจนะว่าจะโพสต์อันนี้?" ผมจะตอบว่า "ใช่ โพสต์เลย" แล้วอันนี้จะถูกส่งไปที่ Buffer และหวังว่าถ้ากระแส end-to-end ทำงาน เราควรเห็นโพสต์มาถึง Instagram โดยตรง และเราได้รับการแจ้งเตือนว่าอันนี้ถูกส่งไปที่ Buffer แล้ว คลิก okay แล้วอันนี้จะถูกย้ายจากแท็บ studio ไปยังแท็บ publish เมื่อมันถูกส่งไปที่ Buffer แล้ว ต่อไปไปที่ Instagram แล้วดูว่าเราจะเห็นโพสต์นี้ไหม ผมจะมาที่ Instagram ของผม แล้วเฮ้ คุณเห็นไหม มันโพสต์ตรงไปที่ Instagram แล้ว คุณเห็นโพสต์นี้ที่เราสร้างใน Cadence เป๊ะ ซึ่งเป็นโพสต์แรกที่ผมทดสอบกับบัญชีนี้ และคุณจะเห็นว่าข้อความทั้งหมดออกมาเหมือนที่เราเรนเดอร์บนเว็บไซต์ Cadence และตรงนี้เราก็มีข้อความที่ถูกสร้างโดย AI สำหรับส่วนคำอธิบายด้วย อันนี้ทำงานได้ดีมาก

เมื่อผมกลับมาที่แท็บ studio และไปที่ published ผมควรจะเห็น โอ้ อันนี้ไม่ทำงาน มันแสดงว่าเรามีหนึ่งอัน แต่ผมไม่เห็นสไลด์ที่ถูกสร้าง ผมจึงบอก Kite ว่า "เฮ้ แท็บ publish ไม่แสดงคอนเทนต์ที่เผยแพร่เลย ผมเห็นจำนวนหนึ่งซึ่งบ่งบอกว่ารายการมีอยู่ แต่หน้านั้นว่างเปล่าโดยสิ้นเชิง" ให้ Kite แก้ไขอันนี้ให้เรา และหวังว่าหลังจากนั้นเราจะเห็นคอนเทนต์โผล่ขึ้นมาตรงนี้ อีกสองอย่างที่เราจะทำ ผมจะโชว์ว่าแท็บ configuration ทำงานอย่างไร บนแท็บ configuration คุณจะมีโอกาสแก้ไขชื่อบรานด์ของคุณ แก้ไขแฮนเดิล เขียนเล็กน้อยเกี่ยวกับคอนเทนต์ที่คุณกำลังสร้าง เพื่อที่เอเจนต์จะได้อ่านสิ่งนี้เสมอเพื่อหาไอเดียและสร้างคอนเทนต์ให้คุณ และคุณยังสามารถเลือกค่าเริ่มต้นการสร้าง (generation defaults) ที่ต้องการได้ และสำหรับสิ่งนั้น เราจะให้พรอมป์ต์นี้กับ Cadence เพื่อเดินสายแท็บ configuration แต่ผมจะรอให้มันทำแบ็กเอนด์ของแท็บ publish เสร็จก่อน หลังจากนั้นเราจะเข้าไปที่แท็บ configuration แล้วเดินสายมันเช่นกัน และระหว่างที่อยู่ตรงนี้ เราก็มีแท็บ calendar ที่เมื่อไหร่ก็ตามที่คุณกำหนดเวลาโพสต์ บางทีคุณไม่อยากเผยแพร่ทันที อยากกำหนดเวลาเป็นวันที่เฉพาะ เมื่อคุณเข้ามาที่ปฏิทิน คุณจะเห็นจำนวนโพสต์ที่คุณได้กำหนดเวลาไว้ ตัวอย่างเช่น คุณจะเห็นว่าโพสต์ที่เราโพสต์วันนี้ 24 กรกฎาคม แสดงอยู่ในแท็บ calendar แล้ว

เอาล่ะ Kite ทำเสร็จแล้ว รีโหลดแดชบอร์ด แล้วมาที่แท็บ publish สมบูรณ์แบบ ตอนนี้คุณจะเห็นว่าโพสต์ที่ถูกเผยแพร่มาอยู่ที่นี่แล้ว สองสิ่งที่เราจะทำต่อไปอย่างที่บอกคือแท็บ configuration ที่คุณสามารถแก้ไขการตั้งค่าต่างๆ ได้ แล้วเอเจนต์จะรับการอัปเดตใหม่ที่คุณมี และสำหรับสิ่งนั้น ผมจะส่งพรอมป์ต์นี้ให้ Kite เพื่อเดินสายแท็บ configuration เอาล่ะ นั่นหมายความว่าเมื่อเรามาที่แท็บ configuration ขอรีโหลดอันนี้ คุณสามารถเปลี่ยนชื่อบรานด์ แฮนเดิล จำนวนสไลด์ที่คุณอยากให้เป็นค่าเริ่มต้น ถ้าอยากให้ Perplexity เป็นค่าเริ่มต้น ตัวอย่างเช่น เมื่อผมปิดอันนี้แล้วบันทึกการตั้งค่า และผมกำลังสร้างไอเดีย มันก็จะไม่ใช้ Perplexity เป็นค่าเริ่มต้น และหลังจากนั้น เราก็เสร็จสิ้นส่วนหลักของการ build แล้ว ผมยังมีพรอมป์ต์อื่นๆ ที่ให้คุณเป็นตัวเลือกเสริมที่คุณสามารถเพิ่มในการตั้งค่าเพื่อให้ทรงพลังยิ่งขึ้น

สิ่งที่เราจะสร้างตอนนี้คือรีโมตคอนโทรล Telegram (telegram remote control) ถ้าจำได้ เรามีแท็บ studio ที่เราสร้าง ซึ่งเราอยากใช้สร้างไอเดียโดยไม่ต้องมาที่แดชบอร์ด แนวคิดคือ เมื่อไหร่ก็ตามที่คุณอยากสร้างไอเดีย คุณก็แค่มาที่แท็บ studio ใน Telegram สร้างไอเดีย โปรโมต และอื่นๆ สำหรับสิ่งนั้น เราจะให้พรอมป์ต์นี้กับ Kite เพื่อตั้งค่ารีโมตคอนโทรล Telegram เอาล่ะ Kite บอกว่ามันเสร็จแล้ว มันสร้างและตรวจสอบรีโมต Telegram เท่าที่มันทำได้ มันยังบอกว่ามันทำ smoke test มาที่แท็บ studio แล้วเราจะเห็นว่ามันทดสอบโดยทริกเกอร์สิ่งต่างๆ บนแท็บ studio แต่ผมต้องบอกว่ามันพูดถึงบางอย่างที่มันรันไม่ได้ ขอเลื่อนลงไปด้านล่างสุด มันบอกว่ามันมีอุปสรรค (blocker) มันไม่สามารถรีสตาร์ท Hermes gateway เองได้ มันบอกให้เราจากเชลล์แยกต่างหากบนเครื่อง รันคำสั่งนี้ แล้วบอกมันว่า gateway รีสตาร์ทแล้ว ขอคัดลอกอันนี้ มาที่ PowerShell ขอเคลียร์หน้าจอ วางคำสั่งนี้ เชื่อมต่อกับเซิร์ฟเวอร์อีกครั้ง แล้วรันคำสั่งที่มันให้เรา เอาล่ะ gateway นี้รีสตาร์ทแล้ว ผมจะรอสักครู่ให้ gateway บูตสมบูรณ์ หลังจากนั้นผมจะส่งข้อความไปหา Kite ว่า "restarted" จากนั้นผมจะส่งข้อความ "restarted" ไปให้ Kite แล้วหวังว่ามันจะไปต่อกับสิ่งที่มันทำอยู่ได้ เอาล่ะ มันบอกว่ามันเสร็จแล้ว ทุกอย่างถูกเดินสายแล้ว ไปที่แท็บ studio แล้วเขียนอะไรบางอย่าง เช่น สแลชคำสั่ง ขอตรวจก่อนว่าคำสั่งสแลชคืออะไร ผมจำไม่ได้ว่ามันเป็น ideas หรือ idea ใช่ มันคือ ideas ส่ง /ideas แล้วหวังว่ามันจะทริกเกอร์แท็บ ideas ในสตูดิโอตรงนี้ และมันก็ทำงาน เรามีไอเดียใหม่ "stop asking one agent to do the whole job" เมื่อผมมาที่แท็บ studio ผมก็เห็นแบบเดียวกัน

นี่คือการสะท้อน (mirror) ทุกอย่างที่เรามีบนแดชบอร์ด เหตุผลที่เราทำสิ่งนี้คือ ผมอยากให้คุณสร้างไอเดียและอื่นๆ ได้โดยไม่ต้องมาที่แดชบอร์ดตลอดเวลา สมมติว่าเราอยากโปรโมตไอเดียนี้ พิมพ์ /promote แล้วใส่จำนวนไอเดียนั้น 11 อุ๊ย ผมทำผิด ผมตั้งใจจะพิมพ์ 11 และมันก็ถูกต้องเป๊ะ มันบอกว่า "idea 1 not found" ขอทำใหม่ /promote แล้วส่ง 11 นั่นคือสิ่งที่ผมตั้งใจจะส่ง แล้วคุณจะเห็นว่าเราทริกเกอร์สิ่งนี้ทันที อันนี้ก็แสดงบนแดชบอร์ดด้วย เราเห็นว่า Vera ถูกโปรโมตแล้ว คุณเห็นว่าไอเดียถูกโปรโมต และ Vera กำลังเขียนไอเดียที่เรามี และเราเห็นสิ่งเดียวกันตรงนี้ เกิดการโปรโมตไอเดียขึ้นจริง มันทำงานบนแดชบอร์ด เราเห็นว่าไอเดียถูกสร้าง แต่บน Telegram เราได้รับข้อความ "promotes field list attributes no get" ผมจะบอก Kite ให้แก้ไขอันนี้ให้เรา ผมให้พรอมป์ต์นี้กับ Kite "ผมทดสอบคำสั่ง /ideas ใน Telegram ทำงานอย่างสมบูรณ์แบบ อย่างไรก็ตาม เมื่อผมโปรโมตไอเดียด้วยคำสั่ง /promote หมายเลขไอเดีย ไอเดียถูกโปรโมตอย่างถูกต้องบนแดชบอร์ด แต่ Telegram ส่งข้อความนี้มาให้เรา คุณเห็นปัญหาคืออะไรแล้วแก้ไขให้เราหน่อย"

เอาล่ะ Kite บอกว่ามันเสร็จแล้ว ลองอีกครั้ง ผมจะกลับมาที่แอปนี้แล้วทริกเกอร์ ideas สิ่งที่คุณทำได้เพื่อให้ง่ายขึ้นตอนโปรโมตไอเดียคือ คุณสามารถเพิ่มเทมเพลตที่อยากใช้ได้โดยตรง และสิ่งที่ผมแนะนำคือ ใช้ Telegram เพื่อระดมความคิดไอเดียแล้วโปรโมตมันเข้ามาที่แท็บ studio แล้วพอคุณอยู่ในแท็บ studio คุณก็ทำทุกอย่างเกี่ยวกับเทมเพลตว่าจะใช้เทมเพลตไหน แก้ไขอะไร และอื่นๆ แต่จะดีกว่าถ้าใช้ Telegram สำหรับการสร้างไอเดียและอะไรแบบนั้น หรือบางทีเมื่อไหร่ก็ตามที่อยากได้ไอเดีย คุณก็แค่มาที่นี่แล้วบอกเอเจนต์ว่า "เฮ้ ให้ไอเดียเกี่ยวกับระบบอัตโนมัติหน่อย" สมมติว่าตรงนี้เราอยากโปรโมตเป็นตัวอย่าง ขอไปที่ /promote แล้วใส่อุ๊ย 18 ขอโทษที พิมพ์ผิด /promote 18 แล้วใส่เทมเพลต ขอไปที่แท็บ templates เพื่อดูตัวอย่าง สมมติว่าผมอยากใช้เทมเพลต statement พิมพ์ statement แล้ว enter แล้วหวังว่ามันจะถูกสร้างให้เรา แต่แปลกที่มันบอกว่า template not found ขอดูว่าทำไมถึงเป็นแบบนี้ พิมพ์ templates เพื่อดูว่าผมจะได้รายการเทมเพลตไหม ดูเหมือนว่าชื่อของเทมเพลตต่างจากที่ผมเห็นตรงนี้ ขอหาตัวอย่าง สมมติว่าผมอยากใช้เทมเพลตที่เรียกว่า isometric กลับมาโปรโมตอีกครั้ง แล้วไปที่ isometric

สิ่งที่คุณสามารถบอก Kite ให้ทำเพื่อคุณทีหลังคือ ทำให้แน่ใจว่าชื่อที่คุณเห็นสำหรับเทมเพลตตรงกับชื่อบนแดชบอร์ด เพื่อให้ทำงานกับมันง่ายขึ้น ผมคิดว่าเหตุผลที่ชื่อต่างกันคือ ตัวอย่างเช่น tip deck มีสองคำ และเพื่อให้คุณใช้มันได้ คุณต้องพิมพ์ tip-deck แต่เป็นเพียงพรอมป์ต์ เราสามารถบอก Kite ให้ทำสิ่งนี้ แล้วมันจะแก้ไขให้คุณได้เช่นกัน แล้วโดยพื้นฐานแล้วคุณจะเห็นว่าสไลด์ถูกสร้าง เมื่อผมมาที่ตรงนี้ คุณจะเห็นว่าเทมเพลตที่เราเลือกอยู่ที่นี่ แล้วเราเห็นสไลด์ทั้งหมดที่ถูกสร้าง สิ่งที่ผมคิดว่าผมทำเพื่อคุณได้คือ ผมจะให้พรอมป์ต์เพื่อแก้ไขความไม่สอดคล้องนี้ ที่ชื่อเทมเพลตต่างจากเทมเพลตที่เราใช้ใน Telegram และผมจะให้พรอมป์ต์นี้ที่เราสามารถให้ Kite แก้ไขให้เราได้ เราจะบอก Kite ว่า "เฮ้ ชื่อเทมเพลตที่แสดงบนแดชบอร์ดไม่ตรงกับชื่อที่คำสั่ง /promote ยอมรับ ตัวอย่างเช่น บนแดชบอร์ดเมื่อผมพิมพ์ statement มันบอกว่า template not found" มันควรแก้ไขสิ่งนี้ ผมจะให้พรอมป์ต์ทั้งหมดนี้กับคุณ เพื่อที่ว่าถ้าคุณมีปัญหาเดียวกัน คุณก็คัดลอกวางพรอมป์ต์ แล้วเอเจนต์ของคุณควรจะแก้ไขให้คุณได้

ระหว่างที่ Kite กำลังสร้างและแก้ไขปัญหาชื่อเทมเพลตที่ไม่ตรงกับ Telegram มีอีกอย่างหนึ่งที่เราอยากทำ ผมอยากใช้เวลาให้เป็นประโยชน์ระหว่างรอ Kite เสร็จ ตอนนี้ถ้าจำได้ เมื่อไหร่ก็ตามที่เราอยากเข้าถึงแดชบอร์ด เราทำผ่านสิ่งที่เรียกว่า SSH tunneling โดยใส่คำสั่งนี้ ssh -N -L และชื่อและอื่นๆ กด enter แล้วใส่รหัสผ่านของบัญชีผู้ใช้ของเรา แล้ว SSH tunnel จึงจะถูกเปิดใช้งานที่ทำให้เราเข้าถึงแดชบอร์ดได้ แต่สิ่งที่คุณทำได้ซึ่งเป็นวิธีที่ดีกว่าในการเข้าถึงแดชบอร์ดคือการใช้ Tailscale สิ่งที่ Tailscale ทำคือ มันให้คุณเข้าถึงแดชบอร์ดโดยไม่ต้องผ่าน SSH tunneling และอื่นๆ แนวคิดคือ คุณดาวน์โหลดแอปพลิเคชัน Tailscale เชื่อมต่อบัญชีของคุณ แล้วตรงนั้นคุณจะได้ URL เฉพาะที่คุณสามารถเชื่อมต่อกับแดชบอร์ดได้ง่ายมาก โดยไม่ต้องใส่รหัสผ่านทุกครั้ง

ส่วนที่ดีที่สุดของ Tailscale ในการตั้งค่านี้คือ บนทุก PC ตัวอย่างเช่นในกรณีของผม ผมมีเดสก์ท็อปที่ทำงานด้วย มี MacBook มีโทรศัพท์มือถือ และอุปกรณ์อีกมากมายที่ผมทำงานด้วย บนอุปกรณ์ใดก็ตามที่ผมติดตั้ง Tailscale และเชื่อมต่อบัญชีของผมแล้ว ผมก็สามารถเข้าถึงแดชบอร์ดได้โดยไม่ต้องผ่านเทอร์มินัลทุกครั้ง โดยเฉพาะบนโทรศัพท์มือถือของคุณ ไม่ว่าคุณจะอยู่ที่ไหน คุณก็สามารถทำงานกับแดชบอร์ดบนโทรศัพท์มือถือได้ ตราบใดที่คุณติดตั้งแอป Tailscale และเชื่อมต่อบัญชีของคุณ ในการทำสิ่งนี้ เราจะดาวน์โหลดแอปพลิเคชันที่เรียกว่า Tailscale ซึ่งฟรีโดยสิ้นเชิง ตอนนี้ผมมีเซิร์ฟเวอร์เจ็ดตัวที่รันบน Tailscale และผมไม่จ่ายอะไรเลย เมื่อคุณมาที่นี่ แค่คลิก get started แล้วคุณสามารถสมัครสมาชิก สร้างบัญชี ทุกอย่างฟรี คุณไม่ต้องจ่ายอะไรเลย เมื่อการติดตั้งเสร็จสมบูรณ์ คุณก็มาที่นี่และดาวน์โหลด Tailscale บนหน้าแรกของพวกเขา คลิกปุ่มดาวน์โหลดตรงนี้ แล้วมันจะดาวน์โหลดแอปพลิเคชัน Tailscale ตรงนี้ เลือกระบบปฏิบัติการที่คุณใช้ ในกรณีของผม ผมใช้ Windows ผมจะคลิกที่ Windows และดาวน์โหลดแอปพลิเคชัน Windows สำหรับ Tailscale ถ้าคุณใช้อินเทอร์เฟซสำหรับ Mac OS มันดียิ่งกว่าอินเทอร์เฟซของ Windows เสียอีก

ผมจะเปิดตัวติดตั้ง ยอมรับข้อกำหนดและเงื่อนไข แล้วคลิก install แล้วแอปพลิเคชัน Tailscale ก็จะติดตั้งเสร็จ ดูเหมือนว่างานที่ผมให้ Kite ทำเพื่อให้แน่ใจว่าเทมเพลตตรงกันนั้นเป็นงานที่หนักพอสมควร มันทำงานมาเกือบ 15 นาทีแล้ว และยังไม่เสร็จ เมื่อการติดตั้ง Tailscale เสร็จสมบูรณ์ในฝั่งของผม ผมก็คลิก close ได้ แล้วเมื่อผมลงมาที่ตรงนี้

บน Windows คุณจะเห็นสัญลักษณ์เล็กๆ ตรงนี้ อันนี้สำหรับ Tailscale ที่มีจุดประมาณเจ็ดแปดจุด เมื่อคุณคลิกขวาที่มัน คุณจะต้องล็อกอินเข้าบัญชี Tailscale ของคุณ เมื่อคุณล็อกอินเข้าบัญชี Tailscale แล้ว คุณก็เสร็จสิ้นการติดตั้ง Tailscale โดยพื้นฐานแล้ว เมื่อคุณล็อกอินเข้าบัญชี Tailscale คุณจะเห็นอุปกรณ์ทั้งหมดที่เชื่อมต่อกับบัญชี Tailscale ของคุณอยู่ และด้วยอุปกรณ์ทั้งหมดเหล่านี้ คุณจะได้ URL เฉพาะที่คุณสามารถใช้เข้าถึงเซิร์ฟเวอร์ที่เรากำลังสร้างได้ ตอนนี้แอปพลิเคชัน Tailscale ติดตั้งแล้ว เราสร้างบัญชี Tailscale แล้ว หรือถ้าคุณมีบัญชีอยู่แล้วก็สมบูรณ์แบบ สิ่งที่เราต้องทำต่อคือ บอก Kite ให้ติดตั้ง Tailscale ให้เรา และผูกแดชบอร์ดหรือแดชบอร์ด Cadence ที่เราสร้างเข้ากับเซิร์ฟเวอร์ Tailscale ของเรา และด้วยสิ่งนั้น เราจะสามารถเข้าถึงแดชบอร์ดได้โดยตรงจาก URL บนเบราว์เซอร์ โดยไม่ต้องผ่านส่วน SSH tunneling

ขอรอให้ Kite ทำงานที่มันทำเสร็จก่อน ผมว่ามันเกือบเสร็จแล้ว ตอนนี้คุณจะเห็นว่ามันกำลังท่องเว็บเพื่อให้แน่ใจว่าการเปลี่ยนแปลงทั้งหมดที่มันทำทำงาน แล้วพอมันเสร็จ เราก็ให้คำสั่ง Kite ทำการเดินสาย Tailscale ให้เรา แล้วเราก็จะจบบทช่วยสอนนี้ และเฮ้ ผมกำลังทำงานกับตัวติดตั้งอัตโนมัติ (auto installer) ที่จะติดตั้งทั้งหมดนี้ให้คุณภายในไม่กี่นาที สมัครสมาชิกคอมมูนิตี้ของผม คุณจะได้รับคีย์เฉพาะที่คุณสามารถใช้ตัวติดตั้งได้ และผมจะสร้างบทช่วยสอนวิธีใช้ตัวติดตั้งให้คุณด้วยเมื่อมันพร้อม และในที่สุด Kite ก็ทำงานใหญ่เสร็จแล้ว ชื่อเทมเพลตที่เราเห็นบนแดชบอร์ดตรงนี้จะตรงกับชื่อที่เราเห็นบน Telegram กลับมาที่ประเด็น Tailscale Kite ทำงานเสร็จแล้ว เราสามารถให้พรอมป์ต์ Kite ทำงานการเชื่อมต่อ Tailscale ให้เราได้ และสำหรับสิ่งนั้น ผมจะให้พรอมป์ต์นี้กับ Kite ผมบอก Kite ว่า "เฮ้ ตั้งค่าการเข้าถึงแดชบอร์ดผ่าน Tailscale เพื่อที่ผมจะเข้าถึงมันอย่างปลอดภัยจากอุปกรณ์ของผมเองโดยไม่ต้องใช้ SSH tunnel" และผมก็ให้แนวทางว่าผมอยากให้มันเป็นแบบไหน แล้วพอมันเสร็จ มันจะให้ลิงก์ที่เราจะใช้คลิกเพื่อผูกเซิร์ฟเวอร์เฉพาะนี้เข้ากับบัญชี Tailscale ของเรา ขอให้แน่ใจว่าผมอยู่บนแท็บ Kite แล้วส่งพรอมป์ต์นี้ให้ Kite เพื่อทำสิ่งนี้ แล้วพอเราทำเสร็จ เราก็จะอยู่ที่จุดจบของบทช่วยสอน ผมเหนื่อยแล้ว ผมอัดวิดีโอมานานกว่า 10 ชั่วโมง ผมเริ่มเหนื่อยแล้ว เอาล่ะ Kite เสร็จแล้ว มันให้ลิงก์ล็อกอินนี้ที่เราจะใช้ยืนยันตัวตนบัญชีของเรากับเซิร์ฟเวอร์เฉพาะที่เราสร้าง ผมจะเปิดแท็บใหม่แล้วใส่ URL ที่ Kite ให้มา หลังจากนั้นสิ่งที่คุณต้องทำคือเชื่อมต่อและล็อกอินเข้าบัญชี Tailscale ของคุณ อันนี้จะพาคุณไปที่หน้าที่ Tailscale ถามว่า "เฮ้ ผมอยากเชื่อมต่ออุปกรณ์ cadence dashboard กับคอมพิวเตอร์ของคุณ" ในกรณีของผม komputer-mechanic.com tailnet ผมจะคลิก connect แล้วการล็อกอินก็เข้าถึงได้ อุปกรณ์ของเราถูกผูกกับบัญชี Tailscale ของเราแล้ว

ผมจะมาที่นี่แล้วบอก Kite ว่า "done" เพราะมันบอกว่าเมื่อผมยืนยันตัวตนเสร็จ ผมควรตอบว่า "เราทำเสร็จแล้ว" Kite ก็ทำเสร็จแล้วเช่นกัน มันยังบอกว่ามันทดสอบ IP สาธารณะและทั้งหมดล้มเหลวในการเชื่อมต่อ ซึ่งหมายความว่าแดชบอร์ดสามารถเข้าถึงได้ผ่าน IP ของ Tailscale เท่านั้น ขอให้แน่ใจว่าอันนี้ทำงาน รีโหลดแดชบอร์ด ตรงนี้เรามี SSH tunneling ที่ทำงานอยู่ซึ่งเป็นไปตามคาด ผมจะมาที่ PowerShell และฆ่าการเชื่อมต่อ SSH แล้วกลับมาที่แดชบอร์ด และพยายามเข้าถึงแดชบอร์ดผ่าน SSH tunnel แล้วคุณจะเห็นว่าผมได้รับข้อความ "site cannot be reached" เมื่อไหร่ก็ตามที่ผมอยากเชื่อมต่อกับแดชบอร์ด ผมก็แค่ใช้ URL ที่ Kite ให้มา ขอคัดลอก URL ของแดชบอร์ด วาง URL นี้ แล้วไชโย คุณจะเห็นว่าเราสามารถเข้าถึงแดชบอร์ดได้โดยไม่ต้องผ่านความยุ่งยากของ SSH tunnel

Tailscale ทำงานโดยตั้งค่า VPN ในเครื่อง (local VPN) บน PC ที่ติดตั้งมัน ดังนั้นถ้าคุณมีบริการ VPN อื่นรันอยู่ คุณต้องหยุด VPN นั้นก่อนที่ Tailscale จะทำงานได้ เพราะถ้าคุณมีสองบริการรันขนานกัน Tailscale จะไม่สามารถทำงานได้ ดังนั้นให้แน่ใจว่าคุณหยุดบริการอื่นที่รันอยู่เสมอ เพื่อให้ Tailscale สามารถปรับใช้เซิร์ฟเวอร์ให้คุณได้ นี่จึงนำเรามาถึงจุดจบของบทช่วยสอน ขอสรุปสั้นๆ ว่าเราสร้างอะไรบ้าง เรามีแท็บแดชบอร์ดที่เราเห็นทุกอย่างที่เอเจนต์กำลังทำ บันทึกกิจกรรมทั้งหมดดึงมาจากฐานข้อมูลเอเจนต์ เมื่อคุณมาที่แท็บ ideas เราสามารถสร้างไอเดียใหม่ได้เสมอโดยเลือกไอเดียของคุณ แล้วเอเจนต์อย่าง Atlas จะรับไอเดียนั้นและสร้างเป็นคอนเทนต์ให้คุณ และเมื่อไหร่ก็ตามที่คุณไม่มีไอเดีย คุณก็แค่มาคลิก generate ideas แล้วไอเดียก็จะถูกสร้างให้คุณ เมื่อไหร่ก็ตามที่เราอยากโปรโมตไอเดีย เราก็แค่คลิก promote แล้วมันจะถูกโปรโมตให้เราเข้าสู่แท็บ studio และเมื่อไหร่ก็ตามที่เราอยากส่งโพสต์ใดๆ ไปยัง Instagram, TikTok หรืออะไรก็ตามที่อยากทำ เมื่อเราคลิก post now อันนี้จะถูกส่งตรงไปยังแพลตฟอร์มโซเชียลมีเดียที่เราอยากใช้ และเมื่อเสร็จแล้ว อันนี้จะนำโพสต์ไปยังแท็บ publish เพื่อที่คุณจะได้อ้างอิงมันได้เสมอเมื่อไหร่ก็ตามที่อยากทำอะไรกับมัน

เรายังมีแท็บ templates ที่เต็มไปด้วยเทมเพลตมากมายในการตั้งค่าปัจจุบัน ที่คุณสามารถเลือกใช้และพัฒนาสไลด์ carousel ใดก็ตามที่อยากพัฒนา จากนั้นเรามีแท็บ dedicated agents ที่เราเห็นเอเจนต์ทั้งหมดที่มี heat map ของพวกมัน คุณมีปฏิทิน (calendar) ที่คุณเห็นโพสต์ที่กำหนดเวลาไว้ โพสต์ที่เผยแพร่แล้ว และโพสต์ที่จะมาถึง แท็บ configuration ที่คุณกำหนดค่าชื่อบรานด์ สิ่งที่คุณอยากให้เอเจนต์ทำงานเมื่อพวกมันสร้าง และแท็บ docs ที่คุณสามารถทำความเข้าใจแดชบอร์ดได้

ผมยังมีพรอมป์ต์อีกมากมายที่จะให้คุณใช้ ซึ่งผมแนะนำอย่างยิ่งให้ใช้ ตัวอย่างเช่น สำหรับบันทึกกิจกรรมของเอเจนต์ เอเจนต์จะบันทึกลงในฐานข้อมูลเมื่อไหร่ก็ตามที่มันทำงาน แต่ถ้าคุณรันสิ่งนี้เป็นเวลาทั้งปี ฐานข้อมูลของคุณจะรกมาก คุณจึงสามารถตั้งค่าการทำความสะอาดรายสัปดาห์ (weekly cleanup) ที่เอเจนต์จะมองหากิจกรรมที่เก่ากว่า 7 วันแล้วล้างทิ้งทั้งหมด และผมยังรวมพรอมป์ต์เพิ่มเติมบางอันที่คุณสามารถใช้เพื่อขยายการตั้งค่าที่คุณมี ผมรู้ว่ามันเป็นบทช่วยสอนที่ยาว แต่ผมอยากผ่านทุกอย่างที่เรากำลังสร้าง กระบวนการคิดที่ผมมีเวลาสร้างอะไรแบบนี้ และคุณยังเห็นผมแก้ไขปัญหาทั้งหมดที่เราเจอ เพื่อที่ว่าเมื่อคุณเจอสถานการณ์คล้ายกัน คุณก็ทำแบบเดียวกันได้ ถ้าคุณพบว่าวิดีโอนี้มีประโยชน์ กรุณากดปุ่ม like สมัครสมาชิกช่องของผมเพื่อดูเนื้อหาแบบนี้เพิ่มเติม

03

หมายเหตุการแปล

ความโปร่งใสเกี่ยวกับความไม่แน่นอนในต้นฉบับ

  • ส่วนที่ฟังไม่ชัด (`[ฟังไม่ชัด]`):** ไม่มี — ไม่พบเครื่องหมาย `[ฟังไม่ชัด]` ในคำแปลแต่อย่างใด
04

อภิธานศัพท์เทคนิค

คำศัพท์และชื่อผลิตภัณฑ์ที่คงรูปภาษาอังกฤษ

ศัพท์คำแปล / คำอธิบาย
------
Hermes / Hermes Agentsเฟรมเวิร์กเอเจนต์ AI แบบ multi-agent ที่คุยกับเอเจนต์ผ่านแอปส่งข้อความ (Telegram, Discord, Slack ฯลฯ) และใช้โมเดล AI ได้หลากหลาย
orchestratorเอเจนต์ผู้ประสานงานหลัก (top-level coordinator) ที่คอยรับคำสั่งจากผู้ใช้แล้วจัดส่งงานให้เอเจนต์ลูก
Atlas (Scout)เอเจนต์นักวิจัยและสร้างไอเดียคอนเทนต์ (content scout) ของ Cadence
Vera (Scribe)เอเจนต์นักเขียนคอนเทนต์ — เขียนสไลด์ แคปชัน และแฮชแท็ก
Kite (Dev)เอเจนต์นักออกแบบและนักพัฒนา — เรนเดอร์สไลด์ และสร้างแดชบอร์ด
Orion (Rich)เอเจนต์นักเผยแพร่ (publisher) — ส่งโพสต์ไปยังแพลตฟอร์มโซเชียลมีเดีย
Cadenceชื่อระบบ/สตูดิโอระบบอัตโนมัติคอนเทนต์ที่สร้างในวิดีโอนี้
soul.mdเอกสารประจำตัวของเอเจนต์ ระบุว่าเอเจนต์คือใคร ทำงานอะไร — โหลดทุกครั้งที่เริ่มเซสชันใหม่
memory.mdไฟล์หน่วยความจำระยะยาวของเอเจนต์ (แนะนำให้แยกไฟล์ต่อเอเจนต์เพื่อไม่ให้ปนกัน)
persistent profileโปรไฟล์เอเจนต์แบบถาวร ต่างจากเอเจนต์ชั่วคราวที่ถูกเรียกใช้แล้วหายไป
role boundariesขอบเขตบทบาท — กฎให้เอเจนต์แต่ละตัวทำงานเฉพาะในหน้าที่ของตัวเองเท่านั้น
Telegramแอปส่งข้อความที่ใช้เป็นอินเทอร์เฟซคุยกับเอเจนต์ในบทช่วยสอนนี้
BotFatherบอทอย่างเป็นทางการของ Telegram ใช้สร้างบอทใหม่และรับ bot token
User Info Botบอทที่ใช้ค้นหา Telegram user ID ของผู้ใช้
bot tokenคีย์เฉพาะของบอท Telegram หนึ่งบอทต่อหนึ่ง token
topic / thread IDช่องย่อย (topics) ใน Telegram group และ ID ประจำช่อง ใช้ผูกช่องกับเอเจนต์แต่ละตัว
gatewayบริการของ Hermes ที่เชื่อมต่อเอเจนต์กับแพลตฟอร์มส่งข้อความ
VPSเซิร์ฟเวอร์เสมือนส่วนตัว (Virtual Private Server) — เช่าแบบ 24/7
Racknerdผู้ให้บริการ VPS ราคาประหยัด (~$35/ปี) ที่ผู้สร้างแนะนำ
Contaboผู้ให้บริการ VPS อีกราย (~$8/เดือน, CPU 4 คอร์, RAM 8 GB, SSD 100 GB)
Ubuntu 22.04ระบบปฏิบัติการ Linux ที่ใช้บน VPS ในการตั้งค่านี้
SSHSecure Shell — โปรโตคอลเชื่อมต่อกับเซิร์ฟเวอร์ระยะไกลอย่างปลอดภัย
SSH tunnelingวิธีเข้าถึงแดชบอร์ดผ่านช่องทาง SSH ที่ปลอดภัย ไม่เปิดสู่สาธารณะ
rootผู้ใช้ที่มีสิทธิ์สูงสุดบน Linux — แนะนำไม่ให้ติดตั้ง Hermes บน root
useradd / usermod -aG sudoคำสั่ง Linux สร้าง user ใหม่และให้สิทธิ์ sudo
Tailscaleบริการ VPN ส่วนตัว (mesh VPN) ที่ให้เข้าถึงแดชบอร์ดจากอุปกรณ์ใดก็ได้อย่างปลอดภัยโดยไม่ต้อง SSH
SQLiteฐานข้อมูลขนาดเล็กที่ใช้สร้างระบบบันทึกการทำงานของเอเจนต์ (ตาราง cadence runs)
agent logging databaseฐานข้อมูลบันทึกกิจกรรมของเอเจนต์ — ชื่อเอเจนต์ งาน โมเดล AI เวลาที่ทำงาน
Perplexityโมเดล AI ด้านการวิจัย ใช้เป็นเครื่องมือวิจัยเชิงลึก (research with Perplexity)
ImgBBแพลตฟอร์มโฮสต์ภาพฟรี ใช้เป็นพื้นที่เก็บภาพตัวกลางก่อนส่งไปยัง Buffer
Bufferแพลตฟอร์มจัดการโซเชียลมีเดียที่ใช้ส่งสไลด์ไปยัง Instagram/TikTok ฯลฯ (มี API ในแผนราคาถูก)
Metricoolแพลตฟอร์มจัดการโซเชียลมีเดียทางเลือก — ต้องใช้แผน advanced (~$43/เดือน) ถึงจะได้ API
API keyคีย์สำหรับเข้าถึงบริการ/API ต่าง ๆ (Perplexity, ImgBB, Buffer)
OpenRouterบริการรวมโมเดล AI หลายตัว ใช้ API key เดียวเข้าถึงโมเดลทั้งหมด (จ่ายตามการใช้งาน)
Codex (OpenAI Codex)โมเดล AI จาก OpenAI ที่ใช้กับ Hermes ได้เกือบฟรีหากมีแผน ChatGPT Plus/Pro
Grok (xAI)โมเดล AI ที่ใช้กับ Hermes ได้ฟรีหากมีบัญชี X แบบพรีเมียม
Nous Researchบริษัทผู้พัฒนา Hermes — ต้องผูกบัญชีระหว่างติดตั้ง (มีแผนฟรี)
Firecrawlเครื่องมือค้นเว็บและดึงข้อมูลจากเว็บไซต์ที่ใช้กับ Hermes ได้
TUI (terminal user interface)อินเทอร์เฟซแชทในเทอร์มินัลของ Hermes (พิมพ์คำสั่ง hermes)
headless browserเบราว์เซอร์ไร้หน้าต่าง (เช่น Chromium) ใช้เรนเดอร์ไฟล์ HTML เป็นภาพ PNG/JPEG
HTML templateเทมเพลตสไลด์ที่เขียนด้วย HTML — แก้ไขได้ฟรีไม่จำกัด ต่างจากโมเดลสร้างภาพ
carouselโพสต์ Instagram หลายภาพแบบเลื่อนดู
reelวิดีโอสั้นแนวตั้ง (อัตราส่วน 4:5 หรือ 9:16)
hook / CTAสไลด์แรกที่ดึงดูดความสนใจ / สไลด์สุดท้ายที่กระตุ้นให้ทำตาม (call to action)
fine-tuneการปรับแต่งสไลด์ (แก้ข้อความ ขนาด ตำแหน่ง) ในสตูดิโอ
auto fitฟีเจอร์ปรับข้อความจาก Vera ให้เข้ากับเทมเพลตที่เลือก
steroid modeโหมดพิเศษให้เอเจนต์เขียนสไลด์ที่กระแทกใจ (punchy) มากขึ้น
smoke testการทดสอบเบื้องต้นเพื่อยืนยันว่าระบบ/คีย์/เอเจนต์ทำงาน
heat mapแผนที่ความร้อนแสดงช่วงเวลาที่เอเจนต์แต่ละตัวทำงาน
cronระบบตั้งเวลารันงานอัตโนมัติใน Linux (เช่น auto backup รายวัน)
auto installerตัวติดตั้งอัตโนมัติที่เซ็ตอัพทั้งระบบภายในไม่กี่นาที
05

ซับไตเติ้ลภาษาไทย

ดาวน์โหลดหรือดูซับทั้งหมด

1
00:00:00,000 --> 00:00:03,349
นี่คือเครื่องจักรผลิตคอนเทนต์โซเชียลมีเดียแบบครบวงจร

2
00:00:03,349 --> 00:00:06,440
มีเอเจนต์ AI สี่ตัวที่จะช่วยค้นคว้า เขียน ออกแบบ

3
00:00:06,440 --> 00:00:10,433
และเผยแพร่โพสต์ให้คุณ มาดูมันทำงานจริงกันเลย ไอเดียคอนเทนต์นี้

4
00:00:10,433 --> 00:00:13,718
"ห้าสัญญาณว่าสแต็กเอเจนต์ของคุณซับซ้อนเกินไป" (five
thai-subtitles.srt
SubRip — ใช้กับเครื่องเล่นวิดีโอส่วนใหญ่
↓ ดาวน์โหลด
thai-subtitles.vtt
WebVTT — ใช้กับเว็บ / YouTube
↓ ดาวน์โหลด
เปิดดูซับไตเติ้ลทั้งหมด (1766 segments)
1
00:00:00,000 --> 00:00:03,349
นี่คือเครื่องจักรผลิตคอนเทนต์โซเชียลมีเดียแบบครบวงจร

2
00:00:03,349 --> 00:00:06,440
มีเอเจนต์ AI สี่ตัวที่จะช่วยค้นคว้า เขียน ออกแบบ

3
00:00:06,440 --> 00:00:10,433
และเผยแพร่โพสต์ให้คุณ มาดูมันทำงานจริงกันเลย ไอเดียคอนเทนต์นี้

4
00:00:10,433 --> 00:00:13,718
"ห้าสัญญาณว่าสแต็กเอเจนต์ของคุณซับซ้อนเกินไป" (five

5
00:00:13,718 --> 00:00:17,260
signs your agent stack is overengineered) กำลังกลายเป็น

6
00:00:17,260 --> 00:00:21,124
Instagram carousel (โพสต์หลายภาพแบบเลื่อนดู) ที่เสร็จสมบูรณ์

7
00:00:21,124 --> 00:00:24,537
Atlas หามุมมองให้ Vera กำลังเขียนสไลด์ และภายในประมาณ

8
00:00:24,537 --> 00:00:28,788
2 นาที Kite ก็เรนเดอร์สไลด์ทั้งหมดเสร็จด้วยการคลิกเพียงไม่กี่ครั้ง

9
00:00:28,788 --> 00:00:33,489
และที่สำคัญที่สุดคือ จะไม่มีอะไรถูกโพสต์ออนไลน์โดยไม่ผ่านการอนุมัติจากคุณ

10
00:00:33,489 --> 00:00:37,289
คุณตรวจคำพูดก่อนแล้วค่อยอนุมัติโพสต์สุดท้าย เอเจนต์ทำงานให้

11
00:00:37,289 --> 00:00:41,926
ส่วนคุณยังคงควบคุมทุกอย่าง วันนี้เราจะสร้างทุกอย่างขึ้นมาจากศูนย์ทั้งหมด

12
00:00:41,926 --> 00:00:46,370
พรอมป์ต์และเทมเพลตทุกอันมีลิงก์ไว้ด้านล่าง ถ้าใครไม่อยากใช้เวลากับการ

13
00:00:46,370 --> 00:00:49,590
build กว่า 4 ชั่วโมง ก็มีตัวติดตั้งอัตโนมัติ (auto

14
00:00:49,590 --> 00:00:52,810
installer) ที่เซ็ตอัพทุกอย่างให้คุณภายในไม่กี่นาที

15
00:00:52,810 --> 00:00:56,803
สวัสดีครับ ผมลาร์รี ยินดีต้อนรับสู่ช่องของเรา วันนี้เราจะสร้าง

16
00:00:56,803 --> 00:01:00,023
Cadence กัน ซึ่งเป็นระบบอัตโนมัติจัดการงานคอนเทนต์

17
00:01:00,023 --> 00:01:05,240
(content operations autopilot) ที่ขับเคลื่อนโดยผู้เชี่ยวชาญสี่คนที่คุณเพิ่งเห็นไป

18
00:01:05,240 --> 00:01:08,524
ภายในมีเทมเพลตที่ออกแบบอย่างสวยงามกว่า 50 แบบ Atlas

19
00:01:08,524 --> 00:01:11,809
จะค้นคว้าและเสนอไอเดียให้คุณ Vera เขียนสไลด์ แคปชัน

20
00:01:11,809 --> 00:01:15,673
และแฮชแท็กให้ทุกอย่าง จากนั้น Kite จะทำดีไซน์ให้เสร็จสมบูรณ์

21
00:01:15,673 --> 00:01:20,181
พอเสร็จแล้ว Orion จะส่งโพสต์เหล่านั้นไปยังแพลตฟอร์มโซเชียลมีเดียของคุณ

22
00:01:20,181 --> 00:01:23,208
และเหนือเอเจนต์ทั้งหมดนั้นยังมีเอเจนต์ผู้ควบคุม

23
00:01:23,208 --> 00:01:26,235
(orchestrator agent) ที่คอยรับคำสั่งจากคุณในแชท

24
00:01:26,235 --> 00:01:30,357
Telegram แล้วจัดส่งงานลงไปตามสายงาน ถ้าคุณโพสต์คอนเทนต์เป็นประจำ

25
00:01:30,357 --> 00:01:35,380
คุณจะรู้ดีว่ามันยุ่งยากแค่ไหน คุณจ้องหน้ากระดานว่างเปล่าเพื่อหามุมมองสักไอเดีย

26
00:01:35,380 --> 00:01:39,309
พอได้ไอเดียมาแล้วก็ต้องไปค้นคว้า ต่อด้วยการเขียนสไลด์ทีละหน้า

27
00:01:39,309 --> 00:01:42,787
ทำสไลด์ให้ดูดีในเทมเพลต ตามด้วยแคปชัน แฮชแท็ก และอื่นๆ

28
00:01:42,787 --> 00:01:47,810
อีกมากมาย แต่ตอนนี้ Cadence จะจัดการและรวบรวมทั้งสายงานให้เสร็จภายในไม่กี่นาที

29
00:01:47,810 --> 00:01:51,417
คุณแค่บอกเอเจนต์ครั้งเดียวว่าบร্যান্ডของคุณเกี่ยวกับอะไร

30
00:01:51,417 --> 00:01:54,572
ตั้งแต่นั้นมา แค่คลิกเดียวก็จะได้ไอเดียโพสต์ใหม่ๆ

31
00:01:54,572 --> 00:01:59,725
หรือถ้าคุณพิมพ์ความคิดคร่าวๆ ของตัวเองลงไป พวกมันก็จะสร้างเรื่องราวทั้งหมดให้คุณ

32
00:01:59,725 --> 00:02:04,748
ตั้งแต่ไอเดียจนถึงโพสต์ที่เผยแพร่เสร็จ ทุกอย่างจัดการได้ด้วยการคลิกไม่กี่ครั้ง

33
00:02:04,748 --> 00:02:07,904
แล้วโพสต์ของคุณก็จะขึ้นออนไลน์ และนี่คือจุดที่งาน

34
00:02:07,904 --> 00:02:11,059
build ชิ้นนี้เหนือกว่าเครื่องมือสร้างสไลด์ด้วย AI

35
00:02:11,059 --> 00:02:14,151
ทั่วไป โดยปกติคุณต้องสร้างสไลด์ด้วยโมเดลสร้างภาพ

36
00:02:14,151 --> 00:02:20,591
และจ่ายเงินทุกครั้งต่อหนึ่งสไลด์ แถมแม้แต่การแก้คำเพียงคำเดียวยังต้องจ่ายเงินเพื่อสร้างภาพใหม่ทั้งใบ

37
00:02:20,591 --> 00:02:23,682
แต่ Cadence ไม่แตะโมเดลสร้างภาพเลยแม้แต่นิดเดียว

38
00:02:23,682 --> 00:02:27,740
สไลด์ทุกใบสร้างจากเทมเพลต HTML ที่ออกแบบอย่างสวยงามด้วยโค้ดจริง

39
00:02:27,740 --> 00:02:30,831
ไม่ใช่พิกเซลจาก AI ดังนั้นการแก้ไขทุกครั้งจึงฟรี

40
00:02:30,831 --> 00:02:33,987
คุณสามารถลากองค์ประกอบใดก็ได้ เปลี่ยนข้อความ ขนาด

41
00:02:33,987 --> 00:02:40,620
ตำแหน่ง แล้วมันจะเรนเดอร์ใหม่ภายในไม่กี่วินาที หมายความว่าคุณแก้ไขได้ไม่จำกัดโดยไม่มีค่าใช้จ่ายต่อสไลด์

42
00:02:40,620 --> 00:02:46,545
เงินของคุณจึงไปอยู่ที่เนื้อหา ไม่ใช่ที่รูปภาพ แดชบอร์ดแสดงภาพรวมการทำงานทั้งหมดในพริบตาเดียว

43
00:02:46,545 --> 00:02:49,637
ตัวเลขทุกตัวดึงมาจากฐานข้อมูลของเอเจนต์ของคุณเอง

44
00:02:49,637 --> 00:02:52,857
ซึ่งเอเจนต์ทุกตัวจะบันทึกชื่อตัวเอง งานที่ทำ โมเดล

45
00:02:52,857 --> 00:02:57,365
AI ที่ใช้ และเวลาที่ทำงานนั้นอย่างละเอียด ดังนั้นจึงไม่มีเมตริกปลอมใดๆ

46
00:02:57,365 --> 00:03:03,419
เลย ส่วนที่ผมชอบที่สุดคือสตูดิโอ (studio) คุณสามารถแก้ไขข้อความทุกชิ้นหรือลากองค์ประกอบเดี่ยวๆ

47
00:03:03,419 --> 00:03:07,219
ย้ายมัน ปรับขนาด เขียนใหม่ได้หมด แถมยังมีตัวอย่างบนโทรศัพท์

48
00:03:07,219 --> 00:03:10,503
(phone preview) คลังเทมเพลต และฟีเจอร์แปลง carousel

49
00:03:10,503 --> 00:03:13,594
เป็นวิดีโอด้วย เราจะสร้างคลังโพสต์ที่เผยแพร่แล้ว

50
00:03:13,594 --> 00:03:17,330
(published archive) ไว้ดูโพสต์ทั้งหมดที่เคยสร้างและเผยแพร่

51
00:03:17,330 --> 00:03:21,516
รวมถึงแท็บปฏิทิน (calendar) ที่แสดงคอนเทนต์ที่กำหนดเวลาไว้ทั้งหมด

52
00:03:21,516 --> 00:03:24,607
และยังมีหน้า configurations สำหรับเก็บชื่อบรานด์

53
00:03:24,607 --> 00:03:27,892
แฮนเดิล น้ำเสียง ซึ่งจะไหลไปสู่ทุกคำที่เอเจนต์เขียน

54
00:03:27,892 --> 00:03:31,370
ต่อไปขอโชว์เดโม่สดและพาเดินชมสิ่งที่เราจะสร้างในวันนี้

55
00:03:31,370 --> 00:03:34,654
ในแดชบอร์ดคุณจะเห็นจำนวนครั้งทั้งหมดที่เอเจนต์ทำงาน

56
00:03:34,654 --> 00:03:37,939
(total runs) จำนวนไอเดียที่สร้างขึ้นในการตั้งค่านี้

57
00:03:37,939 --> 00:03:43,671
จำนวนโพสต์ที่เผยแพร่แล้ว ซึ่งในกรณีของผมมีแค่หนึ่งอันเพราะผมใช้มันทดสอบสำหรับบทช่วยสอนนี้

58
00:03:43,671 --> 00:03:47,406
และเปอร์เซ็นต์ของงานที่สำเร็จ ตรงนี้เรามีเอเจนต์แอคทิวิตี้

59
00:03:47,406 --> 00:03:50,884
(agent activity) ที่ดึงมาจากฐานข้อมูลกิจกรรมของเอเจนต์

60
00:03:50,884 --> 00:03:54,039
คุณจะเห็นว่าวันศุกร์ผมใช้เอเจนต์เยอะมากเพราะกำลัง

61
00:03:54,039 --> 00:04:00,737
build การตั้งค่านี้อยู่ กราฟเลยพุ่งขึ้น และทางด้านขวาคุณยังเห็นได้ว่าเอเจนต์ตัวไหนรับงานหนักที่สุดตอนนี้

62
00:04:00,737 --> 00:04:03,764
ในกรณีของผมก็คือ Vera นักเขียนคอนเทนต์ และ Kite

63
00:04:03,764 --> 00:04:06,920
นักพัฒนา เพราะสองตัวนี้ทำงานหนักที่สุดจนถึงตอนนี้

64
00:04:06,920 --> 00:04:10,591
พอเลื่อนลงมาด้านล่าง คุณจะเห็นสรุปสิ่งที่เอเจนต์ทำทั้งหมด

65
00:04:10,591 --> 00:04:13,940
ซึ่งดึงมาจากฐานข้อมูลบันทึกการทำงานของเอเจนต์เช่นกัน

66
00:04:13,940 --> 00:04:19,414
ความมหัศจรรย์เกิดขึ้นที่แท็บ ideas ตรงนี้คุณจะเห็นไอเดียสองสามอันที่เอเจนต์สร้างให้ผม

67
00:04:19,414 --> 00:04:24,631
เพราะผมกำลังทำงานเกี่ยวกับ AI ผมเลยให้พวกมันสร้างไอเดียเกี่ยวกับระบบอัตโนมัติด้วย

68
00:04:24,631 --> 00:04:29,332
AI (AI automation) และอะไรประมาณนั้น ตรงนี้คุณสามารถใส่ไอเดียของคุณเองได้

69
00:04:29,332 --> 00:04:32,423
ไม่ว่าไอเดียไหนก็ตาม หรือถ้าคุณยังไม่มีไอเดียเลย

70
00:04:32,423 --> 00:04:35,579
คุณก็บอกเอเจนต์ได้ว่า "ช่วยสร้างไอเดียให้หน่อยสิ"

71
00:04:35,579 --> 00:04:39,894
ขอผมคลิกที่ generate some ideas แล้วดูว่าไอเดียอะไรจะถูกสร้างขึ้นมา

72
00:04:39,894 --> 00:04:45,819
ตรงนี้คุณจะเห็นว่า Atlas นักวิจัยของเราคือตัวที่จะไปค้นหาไอเดียเกี่ยวกับสิ่งที่เรากำลังสร้าง

73
00:04:45,819 --> 00:04:50,456
และสิ่งที่เรายังไม่เคยโพสต์มาก่อน มันจะไปค้นหาไอเดียที่เราสามารถโพสต์ได้

74
00:04:50,456 --> 00:04:54,642
โดยอ้างอิงจากสิ่งที่เอเจนต์เรียนรู้มาเกี่ยวกับสิ่งที่ผมกำลังสร้าง

75
00:04:54,642 --> 00:04:57,669
จากนั้นคุณจะเห็นว่าพวกมันสร้างไอเดียมาห้าไอเดีย

76
00:04:57,669 --> 00:05:00,889
ไอเดียแรกคือ "ระบบอัตโนมัติล้มเหลวตรงจุดส่งต่องาน"

77
00:05:00,889 --> 00:05:04,303
(automation fails at the handoff) และยังมีไอเดียอย่าง

78
00:05:04,303 --> 00:05:07,587
"เอเจนต์ของคุณควรทดสอบสิ่งที่มันอ้างว่าแก้ไข" (your

79
00:05:07,587 --> 00:05:11,967
agent should run the test it claims to fix) ซึ่งน่าจะเป็นไอเดียที่ดี

80
00:05:11,967 --> 00:05:16,088
เพราะเอเจนต์ชอบหลอน (hallucinate) เยอะมาก เพื่อสาธิตเป็นตัวอย่าง

81
00:05:16,088 --> 00:05:19,437
สมมติว่าผมอยากเขียนสไลด์เกี่ยวกับไอเดียนี้ ผมแค่คลิก

82
00:05:19,437 --> 00:05:22,851
promote แล้วตรงนี้ก็สามารถกรอกจำนวนสไลด์ที่ต้องการได้

83
00:05:22,851 --> 00:05:26,844
เช่น ผมอยากได้แปดสไลด์ สิบสไลด์ หรือเท่าไหร่ก็ได้ตามที่ต้องการ

84
00:05:26,844 --> 00:05:29,999
สิ่งที่ต้องจำไว้คือ สไลด์แรกจะเป็นฮุก (hook) เสมอ

85
00:05:29,999 --> 00:05:35,345
และสไลด์สุดท้ายจะเป็น CTA (คำกระตุ้นให้ทำตาม) ดังนั้นเนื้อหาหลักจะอยู่ระหว่างฮุกกับ

86
00:05:35,345 --> 00:05:40,175
CTA ถ้าผมเลือกสิบสไลด์หรือแปดสไลด์ นั่นหมายความว่าผมจะมีสไลด์เนื้อหาหกสไลด์

87
00:05:40,175 --> 00:05:46,293
โดยหนึ่งเป็นฮุกและหนึ่งเป็น CTA จากนั้นผมสามารถตัดสินใจได้ว่าให้เอเจนต์ทำการวิจัยเชิงลึกหรือไม่

88
00:05:46,293 --> 00:05:50,737
เช่น ถ้าผมคลิก research with perplexity เอเจนต์จะไปค้นคว้าเชิงลึกผ่าน

89
00:05:50,737 --> 00:05:54,215
Perplexity เพื่อหาคอนเทนต์ที่เหมาะสมจริงๆ สำหรับงานนี้

90
00:05:54,215 --> 00:05:57,371
และตรงนี้ผมยังทำโหมดพิเศษแบบ "สเตียรอยด์" ไว้ด้วย

91
00:05:57,371 --> 00:06:00,591
โดยเอเจนต์จะเขียนสไลด์ที่กระแทกใจ (punchy) มากขึ้น

92
00:06:00,591 --> 00:06:04,906
พอเสร็จแล้วก็แค่คลิก write eight slides สิ่งที่เกิดขึ้นต่อจากนี้คือ

93
00:06:04,906 --> 00:06:08,255
Atlas ทำงานของมันเสร็จแล้ว Atlas วิจัยเสร็จเรียบร้อย

94
00:06:08,255 --> 00:06:11,410
ตอนนี้ Vera จะเข้ามารับช่วงต่อ Vera คือเอเจนต์ AI

95
00:06:11,410 --> 00:06:16,949
ที่ทำหน้าที่เขียนคอนเทนต์ เรามารอให้ Vera วิจัยเสร็จและเตรียมคอนเทนต์ให้พร้อมกันดีกว่า

96
00:06:16,949 --> 00:06:20,040
เอาล่ะ Vera วิจัยเสร็จแล้ว จำไว้ว่าเราขอแปดสไลด์

97
00:06:20,040 --> 00:06:23,582
และ Vera กำลังให้ภาพรวมว่าเนื้อหาบนแต่ละสไลด์จะเป็นอะไร

98
00:06:23,582 --> 00:06:28,413
คุณจะเห็นคอนเทนต์ที่จะลงบนทุกสไลด์ได้เลย ถ้าผมไม่ชอบสไลด์ไหนและอยากปรับปรุง

99
00:06:28,413 --> 00:06:31,826
ผมก็คลิก refine copy แล้วเอเจนต์จะปรับปรุงตามที่ผมบอก

100
00:06:31,826 --> 00:06:35,819
ถ้าผมพอใจและอยากดำเนินการต่อ ผมก็คลิก approve แล้วเลือกเทมเพลต

101
00:06:35,819 --> 00:06:40,456
จำไว้ว่าคอนเทนต์ที่เอเจนต์ทำคือไอเดียคร่าวๆ ว่าคอนเทนต์ควรมีหน้าตาแบบไหน

102
00:06:40,456 --> 00:06:43,483
แต่ตรงนี้ผมมีเทมเพลตที่ออกแบบอย่างสวยงามกองใหญ่

103
00:06:43,483 --> 00:06:47,347
ซึ่งผมจะแจกให้ทุกคนได้คัดลอกไปใช้ โดยไม่ต้องออกแบบเองทั้งหมด

104
00:06:47,347 --> 00:06:50,889
สิ่งที่เราต้องทำก็แค่เลือกเทมเพลตที่อยากจะใช้ในการสร้าง

105
00:06:50,889 --> 00:06:54,496
เนื่องจากบรานด์ของผมเป็นสีส้ม ขอเลือกเทมเพลตอันนี้ตรงนี้

106
00:06:54,496 --> 00:06:57,780
แบบสิบสไลด์ แล้วสิ่งที่เกิดขึ้นคือผมจะคลิก fit copy

107
00:06:57,780 --> 00:07:02,417
to this ทำไมต้องทำขั้นตอนนี้? เพราะทุกเทมเพลตมีจำนวนตัวอักษรที่รองรับได้

108
00:07:02,417 --> 00:07:06,217
ถ้าจำนวนตัวอักษรเกินกว่าที่เทมเพลตรองรับ ดีไซน์ก็จะดูไม่สวย

109
00:07:06,217 --> 00:07:09,244
ดังนั้นสิ่งที่ Vera จะทำคือดูเทมเพลตที่เราเลือก

110
00:07:09,244 --> 00:07:12,528
แล้วปรับข้อความที่จะลงบนสไลด์ให้เข้ากับเทมเพลตนั้นๆ

111
00:07:12,528 --> 00:07:17,230
จากนั้น Vera ก็ปรับข้อความสไลด์ให้เข้ากับเทมเพลตที่เราเลือกเสร็จเรียบร้อย

112
00:07:17,230 --> 00:07:21,158
ตรงนี้ผมแค่คลิก render this จากนั้นก็จะเรียกเอเจนต์อีกตัวชื่อ

113
00:07:21,158 --> 00:07:25,151
Kite ซึ่งทำหน้าที่ด้านดีไซน์ พอมาที่นี่จะเห็นว่าสไลด์พร้อมแล้ว

114
00:07:25,151 --> 00:07:28,758
ผมสามารถคลิกเปิดในสตูดิโอได้ หรือจะมาที่แท็บสตูดิโอก็ได้

115
00:07:28,758 --> 00:07:33,975
แล้วมันจะโชว์สไลด์ให้ดู พอคลิก open in studio คุณจะเห็นสไลด์ที่เอเจนต์สร้างขึ้นมา

116
00:07:33,975 --> 00:07:37,774
จะเห็นว่าผมมีแปดสไลด์ที่ปรับแต่งให้เข้ากับสิ่งที่เราทำเป๊ะๆ

117
00:07:37,774 --> 00:07:41,574
ความสวยงามของการสร้างสไลด์แบบนี้คือ โดยปกติเวลาคนสร้างสไลด์

118
00:07:41,574 --> 00:07:44,923
Instagram คุณต้องใช้เอเจนต์สร้างภาพหรือโมเดลสร้างภาพ

119
00:07:44,923 --> 00:07:49,045
ซึ่งจะคิดเงินคุณทุกครั้งที่สร้างสไลด์ และส่วนที่เจ็บปวดที่สุดคือ

120
00:07:49,045 --> 00:07:52,394
ทุกครั้งที่อยากแก้ข้อความ คุณต้องจ่ายเงินทุกครั้งต่อ

121
00:07:52,394 --> 00:07:55,421
API call แต่ความเจ๋งของสิ่งที่เราสร้างตรงนี้คือ

122
00:07:55,421 --> 00:07:59,736
สไลด์ทุกใบเรนเดอร์เป็นไฟล์ HTML หมายความว่าเมื่อคุณมาที่นี่แล้วคลิก

123
00:07:59,736 --> 00:08:04,179
fine-tune the slide แล้วเลือกสไลด์ใดก็ได้ ผมสามารถแก้ไขและเพิ่มชื่อผม

124
00:08:04,179 --> 00:08:08,172
Larry ตรงนี้ได้ ทำอะไรก็ได้ตามต้องการโดยไม่ต้องจ่ายเงินอะไรเลย

125
00:08:08,172 --> 00:08:11,586
อีกอย่างที่ผมเพิ่มให้คือ คุณสามารถปรับสไลด์ให้ชิดซ้าย

126
00:08:11,586 --> 00:08:14,935
ขวา บน ล่าง ย่อขนาดสไลด์ เปลี่ยนขนาดฟอนต์ได้ทุกอย่าง

127
00:08:14,935 --> 00:08:19,765
แล้วพอเสร็จก็แค่คลิก save เท่านั้นเอง สมมติว่าคุณพอใจกับคอนเทนต์ทั้งหมดแล้ว

128
00:08:19,765 --> 00:08:22,921
คุณก็สามารถโปรโมตมันต่อได้ คุณยังแปลงมันเป็น reel

129
00:08:22,921 --> 00:08:28,202
ได้ด้วยการคลิก animate this carousel คุณสามารถทำให้สไลด์ทั้งหมดเคลื่อนไหวต่อกันแบบ

130
00:08:28,202 --> 00:08:32,259
reel ด้วยอัตราส่วน 4:5 หรือจะสร้าง reel เต็มรูปแบบด้วยอัตราส่วน

131
00:08:32,259 --> 00:08:35,479
9:16 ก็ได้ สมมติว่าผมเสร็จและพอใจกับสิ่งที่สร้างมา

132
00:08:35,479 --> 00:08:38,506
ผมก็แค่มาคลิก post now และในกรณีของผม ผมตั้งค่า

133
00:08:38,506 --> 00:08:41,855
Instagram ไว้แล้ว ผมจึงคลิก post to Instagram ได้เลย

134
00:08:41,855 --> 00:08:45,397
จากนั้นเอเจนต์จะเตือนว่า "เฮ้ แน่ใจนะว่าจะโพสต์ภาพนี้?"

135
00:08:45,397 --> 00:08:50,485
ผมก็จะตอบว่า "ใช่ โพสต์เลย" แล้วภาพก็จะถูกส่งผ่านแพลตฟอร์มที่เราจะใช้กันชื่อว่า

136
00:08:50,485 --> 00:08:54,735
Buffer ซึ่งเชื่อมต่อกับทุกแพลตฟอร์มโซเชียล แล้วมันจะถูกส่งตรงไปยัง

137
00:08:54,735 --> 00:08:57,891
Instagram ให้เรา จากนั้นผมจะได้รับการแจ้งเตือนจาก

138
00:08:57,891 --> 00:09:01,884
Orion ซึ่งเป็นนักเผยแพร่ (publisher) ของเราว่าโพสต์ถูกส่งไปที่

139
00:09:01,884 --> 00:09:05,104
Buffer แล้ว ดังนั้นภายในไม่กี่นาที เราควรเห็นมันบน

140
00:09:05,104 --> 00:09:11,416
Instagram โดยตรง และตรงนั้นคุณก็เห็นเลย นี่คือบัญชีทดสอบที่ผมสร้างไว้เพื่อทดสอบสิ่งที่ผมกำลังสร้าง

141
00:09:11,416 --> 00:09:15,022
พอมาที่นี่คุณจะเห็นว่าโพสต์ที่เราเพิ่งสร้างขึ้นออนไลน์บน

142
00:09:15,022 --> 00:09:18,049
Instagram แล้ว หน้าตาตรงกับที่เรารีเอนเดอร์เป๊ะ

143
00:09:18,049 --> 00:09:22,364
และนี่คือสิ่งที่ผมจะสร้างร่วมกับทุกคนในวันนี้ นอกจากนี้เรายังมีแท็บ

144
00:09:22,364 --> 00:09:26,808
dedicated agents ที่ให้ข้อมูลเชิงลึกเกี่ยวกับสถาปัตยกรรมเอเจนต์ของเรา

145
00:09:26,808 --> 00:09:31,123
คุณจะเห็นว่าเอเจนต์ลูกแต่ละตัวมีการ์ดของตัวเอง ซึ่งคุณสามารถดูโมเดล

146
00:09:31,123 --> 00:09:34,279
AI ที่เอเจนต์ใช้ จำนวนครั้งที่เอเจนต์ตัวนั้นทำงาน

147
00:09:34,279 --> 00:09:37,628
จำนวนงานที่สำเร็จ รวมถึงงานล่าสุดบางส่วนที่เอเจนต์ทำ

148
00:09:37,628 --> 00:09:40,848
เหนือเอเจนต์ทั้งสี่ตัวนี้ขึ้นไป เรามี orchestrator

149
00:09:40,848 --> 00:09:45,742
ซึ่งเป็นเหมือนเจ้านายของเอเจนต์ทั้งหมด ด้านล่างเรามีแผนที่ความร้อนของกิจกรรม

150
00:09:45,742 --> 00:09:49,027
(activity heat map) ที่แสดงว่าในกรอบเวลา 24 ชั่วโมง

151
00:09:49,027 --> 00:09:54,179
เอเจนต์ตัวไหนทำงานบ้าง ยิ่งสีสว่างมากก็หมายความว่าเอเจนต์ทำงานหนักในช่วงเวลานั้น

152
00:09:54,179 --> 00:09:58,043
ส่วนพื้นที่สีเข้มหมายความว่าเอเจนต์ไม่ได้ทำงานในช่วงเวลานั้น

153
00:09:58,043 --> 00:10:02,745
การ build ทั้งหมดจะใช้เวลาประมาณ 4-5 ชั่วโมงถ้าคุณมีพรอมป์ต์และเทมเพลตครบ

154
00:10:02,745 --> 00:10:07,961
ผมจึงสร้างตัวติดตั้งอัตโนมัติ (auto installer) ที่ทำทุกอย่างให้คุณภายในไม่กี่นาที

155
00:10:07,961 --> 00:10:11,310
ถ้าสนใจตัวติดตั้งอัตโนมัติ มันก็จะอยู่ในส่วนคำอธิบาย

156
00:10:11,310 --> 00:10:14,402
(description) เช่นกัน เอาล่ะ เข้าเรื่องการ build

157
00:10:14,402 --> 00:10:17,815
กันเลย เริ่มแรกเราจะติดตั้ง Hermes ก่อน Hermes Agents

158
00:10:17,815 --> 00:10:20,906
ช่วยให้คุณสร้างโครงสร้างพื้นฐานของเอเจนต์หลายตัว

159
00:10:20,906 --> 00:10:24,384
(multi-agent infrastructure) ที่คุณสามารถคุยกับเอเจนต์

160
00:10:24,384 --> 00:10:27,669
AI ของคุณผ่านแอปพลิเคชันยอดนิยมต่างๆ เช่น Telegram,

161
00:10:27,669 --> 00:10:31,082
Discord, Slack, WhatsApp และแอปส่งข้อความยอดนิยมอื่นๆ

162
00:10:31,082 --> 00:10:34,238
นอกจากนี้ แทนที่จะถูกจำกัดให้ใช้โมเดล AI ตัวเดียว

163
00:10:34,238 --> 00:10:37,973
คุณสามารถใช้โมเดล AI ตัวไหนก็ได้ที่ต้องการ ไม่ว่าจะเป็นจาก

164
00:10:37,973 --> 00:10:41,193
OpenAI, Anthropic หรือโมเดลยอดนิยมอื่นๆ การติดตั้ง

165
00:10:41,193 --> 00:10:44,671
Hermes มีหลายทางเลือกให้คุณ คุณสามารถติดตั้งบน Windows

166
00:10:44,671 --> 00:10:49,243
PC ได้ถ้ามีเครื่องเฉพาะที่อยากให้มันรัน หรือจะติดตั้งผ่านระบบปฏิบัติการ

167
00:10:49,243 --> 00:10:52,528
Linux ก็ได้ สำหรับการตั้งค่านี้ผมจะใช้วิธีแบบ Linux

168
00:10:52,528 --> 00:10:57,229
ผมรู้ว่า Linux ฟังดูน่ากลัว แต่ไม่ต้องกังวล ผมจะพาคุณไปทีละขั้นตอนทั้งหมด

169
00:10:57,229 --> 00:11:03,670
และเมื่อเราตั้งค่าเสร็จ ซึ่งใช้เวลาไม่กี่นาที ทุกอย่างที่คุณต้องทำจะอยู่บนแดชบอร์ดที่เรากำลังจะสร้าง

170
00:11:03,670 --> 00:11:09,208
หรือจากแอปพลิเคชัน Telegram คุณไม่ต้องเข้ามาในเทอร์มินัลเพื่อพิมพ์คำสั่งอะไรให้ยุ่งยาก

171
00:11:09,208 --> 00:11:12,235
แต่ผมจะพาคุณผ่านกระบวนการทั้งหมดตั้งแต่ A ถึง Z

172
00:11:12,235 --> 00:11:15,391
เพื่อให้คุณเข้าใจภาพรวมว่ากระแสงานนี้ทำงานอย่างไร

173
00:11:15,391 --> 00:11:19,320
ถ้าคุณมี PC ที่สามารถรันสิ่งนี้ได้ ก็ใช้ได้เลย แต่ในกรณีของผม

174
00:11:19,320 --> 00:11:23,506
ผมไม่มี PC เฉพาะ คุณจึงสามารถเช่าเซิร์ฟเวอร์ที่ไหนสักแห่งมารันได้

175
00:11:23,506 --> 00:11:26,533
ซึ่งผมเองก็ชอบตัวเลือกนี้ แต่ก็แล้วแต่คุณนะครับ

176
00:11:26,533 --> 00:11:30,848
ข้อดีของการใช้เซิร์ฟเวอร์ส่วนตัวคือ คุณเช่าเซิร์ฟเวอร์จากบริษัทอื่น

177
00:11:30,848 --> 00:11:34,519
จ่ายประมาณ 4 ดอลลาร์ต่อเดือน แล้วเซิร์ฟเวอร์นี้จะเปิดตลอด

178
00:11:34,519 --> 00:11:40,444
24/7 คุณไม่ต้องกังวลเรื่องการดูแลรักษา ไม่ต้องกังวลเรื่องการเชื่อมต่ออินเทอร์เน็ตอะไรแบบนั้น

179
00:11:40,444 --> 00:11:44,179
แต่แน่นอนว่ามันก็มีค่าใช้จ่าย คุณจึงต้องตัดสินใจว่าจะรันบน

180
00:11:44,179 --> 00:11:47,850
PC ส่วนตัวที่บ้านหรือจะเช่าเซิร์ฟเวอร์ สำหรับผู้ให้บริการ

181
00:11:47,850 --> 00:11:51,778
VPS ที่ผมแนะนำส่วนตัวคือ Racknerd และ Contabo ตัวอย่างเช่นกับ

182
00:11:51,778 --> 00:11:55,836
Racknerd คุณจะได้เซิร์ฟเวอร์ที่มี CPU สองคอร์ พื้นที่เก็บข้อมูล

183
00:11:55,836 --> 00:11:59,571
35 GB, RAM 2 GB ในราคาประมาณ 35 ดอลลาร์ต่อปี คิดเป็นประมาณ

184
00:11:59,571 --> 00:12:03,049
2.9 ดอลลาร์ต่อเดือน ซึ่งถือว่าคุ้มมากสำหรับเซิร์ฟเวอร์

185
00:12:03,049 --> 00:12:06,205
เพราะคุณไม่ต้องกังวลเรื่องการเปิดเครื่องตลอด 24/7

186
00:12:06,205 --> 00:12:09,747
กิจกรรมอินเทอร์เน็ต การบำรุงรักษา และอื่นๆ กับ Racknerd

187
00:12:09,747 --> 00:12:13,997
คุณจ่ายปีละครั้งก็จบ ไม่ต้องกังวลเรื่องการจ่ายรายเดือนอะไรทั้งนั้น

188
00:12:13,997 --> 00:12:18,506
ส่วนตัวเลือกที่สองคือ Contabo ซึ่งก็มีเซิร์ฟเวอร์ที่เชื่อถือได้พอสมควร

189
00:12:18,506 --> 00:12:21,983
และราคาก็ค่อนข้างย่อมเยาสำหรับสเปกของ VPS ที่คุณได้รับ

190
00:12:21,983 --> 00:12:25,075
ตัวอย่างเช่นกับ Contabo คุณจะได้เซิร์ฟเวอร์ที่มี

191
00:12:25,075 --> 00:12:28,102
CPU สี่คอร์, RAM 8 GB และพื้นที่ SSD ประมาณ 100

192
00:12:28,102 --> 00:12:33,254
GB ในราคาประมาณ 8 ดอลลาร์ต่อเดือน ตัวนี้จะมากเกินพอสำหรับสิ่งที่เราจะสร้างแน่นอน

193
00:12:33,254 --> 00:12:37,311
คุณจึงเลือกได้ระหว่าง Racknerd หรือ Contabo ผมจะใส่ลิงก์อ้างอิง

194
00:12:37,311 --> 00:12:41,047
(referral link) ไว้ในส่วนคำอธิบาย ถ้าอยากได้บริการเหล่านี้

195
00:12:41,047 --> 00:12:44,653
และขอบอกว่า วิดีโอนี้ไม่ได้ถูกสปอนเซอร์โดยบริษัทเหล่านี้

196
00:12:44,653 --> 00:12:48,775
ผมแค่แนะนำสิ่งที่ผมใช้เป็นประจำเวลาตั้งค่าโครงสร้างพื้นฐานพวกนี้

197
00:12:48,775 --> 00:12:51,866
ถ้าอยากเลือก Racknerd ก็เข้ามาที่นี่ อย่างที่บอก

198
00:12:51,866 --> 00:12:57,856
ตัวเลือกที่ผมแนะนำคือตัวนี้ คลิก order now แล้วคุณจะถูกพาไปยังหน้าที่แสดงสรุปสเปกฮาร์ดแวร์ของ

199
00:12:57,856 --> 00:13:01,398
VPS ที่คุณเลือก พอเลื่อนลงมาก็จะเห็นป้ายชื่อเซิร์ฟเวอร์

200
00:13:01,398 --> 00:13:05,713
(server label) ซึ่งสามารถเปลี่ยนทีหลังได้ สำหรับตัวเลือกการกำหนดค่า

201
00:13:05,713 --> 00:13:09,384
(configuration options) ผมแนะนำให้ปล่อยเป็นค่าเริ่มต้นไว้

202
00:13:09,384 --> 00:13:14,021
ระบบปฏิบัติการเราจะใช้ Ubuntu 22.04 ส่วน RAM ปล่อยเป็นค่าเริ่มต้นทั้งหมด

203
00:13:14,021 --> 00:13:19,624
เพราะถ้าเพิ่ม RAM ทันทีก็จะเสียค่าใช้จ่ายเพิ่ม ผมเลยแนะนำให้ใช้ตัวเลือกเริ่มต้นที่มีให้

204
00:13:19,624 --> 00:13:23,874
ส่วนตำแหน่งที่ตั้ง (location) คุณเลือกที่อยู่ใกล้ตัวคุณที่สุดก็ได้

205
00:13:23,874 --> 00:13:26,966
แต่สิ่งที่เราจะสร้างนั้น latency ไม่ใช่ปัญหาใหญ่

206
00:13:26,966 --> 00:13:31,281
ผมเลยไม่กังวลเรื่องความใกล้ไกลมากนัก ค่าใช้จ่ายปล่อยเป็นค่าเริ่มต้น

207
00:13:31,281 --> 00:13:34,758
ถ้าเลือกตัวสูงกว่าก็จะจ่ายมากขึ้น จากนั้นคลิก continue

208
00:13:34,758 --> 00:13:38,043
แล้วคุณจะได้รับอีเมลที่มีข้อมูลรับรอง (credentials)

209
00:13:38,043 --> 00:13:41,199
ทั้งหมดที่จำเป็นต่อการเชื่อมต่อกับเซิร์ฟเวอร์ VPS

210
00:13:41,199 --> 00:13:44,741
ซึ่งผมจะพาคุณผ่านกระบวนการนั้นด้วย ถ้าอยากเลือกตัวเลือก

211
00:13:44,741 --> 00:13:48,025
Contabo อย่างที่บอก ตัวเลือกที่เรามีตรงนี้คือ Cloud

212
00:13:48,025 --> 00:13:52,405
VPS 4 หรือตัวเลือกต่ำสุดที่มี จะทรงพลังเกินพอสำหรับสิ่งที่เราจะสร้าง

213
00:13:52,405 --> 00:13:56,591
ตรงนี้คลิก get started ระวังหน่อยนะครับ เพราะค่าเริ่มต้นบางทีเป็น

214
00:13:56,591 --> 00:14:00,004
24 เดือน หมายความว่าคุณจะถูกผูกกับ VPS ตัวนี้เป็นเวลา

215
00:14:00,004 --> 00:14:03,546
2 ปี และแน่นอนว่ายิ่งสัญญายาวก็ยิ่งถูกลง แต่ระวังไว้ว่า

216
00:14:03,546 --> 00:14:06,573
ถ้าเลือก 2 ปี คุณจะต้องจ่ายเงินจำนวนนี้เป็นเวลา

217
00:14:06,573 --> 00:14:11,081
2 ปี ถ้าต้องการความยืดหยุ่นยกเลิกได้ทุกเดือน ก็เลือกตัวเลือกหนึ่งเดือน

218
00:14:11,081 --> 00:14:14,108
ซึ่งในกรณีของผมจะจ่ายประมาณ 5.5 ดอลลาร์ต่อเดือน

219
00:14:14,108 --> 00:14:18,359
ส่วนภูมิภาค (region) ปล่อยเป็น European Union ตามค่าเริ่มต้นได้เลย

220
00:14:18,359 --> 00:14:23,640
เพราะ Contabo อยู่ในสหภาพยุโรป และทันทีที่คุณเลือกตำแหน่งอื่นก็จะมีค่าใช้จ่ายเพิ่ม

221
00:14:23,640 --> 00:14:27,053
แต่อย่างที่บอกไปก่อนหน้านี้ สิ่งที่เราจะสร้าง latency

222
00:14:27,053 --> 00:14:30,660
ไม่ค่อยเป็นปัญหา คุณปล่อยเป็น European Union ไว้เลยก็ได้

223
00:14:30,660 --> 00:14:33,880
พอเลื่อนลงมาส่วนพื้นที่จัดเก็บ (storage) เลือก SSD

224
00:14:33,880 --> 00:14:37,036
100 GB ซึ่งฟรีและมากเกินพอสำหรับสิ่งที่เราจะสร้าง

225
00:14:37,036 --> 00:14:41,351
ระบบปฏิบัติการปล่อยเป็น Ubuntu ตามค่าเริ่มต้น สำหรับการปกป้องข้อมูล

226
00:14:41,351 --> 00:14:44,764
(data protection) ผมแนะนำให้เลือกตัวเลือก auto backup

227
00:14:44,764 --> 00:14:48,306
บ่อยครั้งที่ผมทำงานกับเอเจนต์แล้วมีอะไรบางอย่างพังไปหมด

228
00:14:48,306 --> 00:14:51,333
แล้วด้วย auto backup มันจะถ่าย snapshot ของ VPS

229
00:14:51,333 --> 00:14:55,391
ทุกวัน หมายความว่าถ้ามีอะไรผิดพลาด คุณสามารถย้อนกลับไปได้ประมาณ

230
00:14:55,391 --> 00:14:58,417
10 วัน และกู้คืนอิมเมจที่คุณมีบน VPS ในวันนั้นๆ

231
00:14:58,417 --> 00:15:02,346
ได้เสมอ อันนี้เป็นตัวเลือกเสริม แต่อย่างที่บอก แนะนำอย่างยิ่ง

232
00:15:02,346 --> 00:15:07,756
เพราะลองนึกดู ถ้าคุณสร้างระบบจัดการคอนเทนต์มานานกว่าหนึ่งปีแล้วเกิดความผิดพลาดขึ้นมา

233
00:15:07,756 --> 00:15:11,362
คุณจะเสียมันไปทั้งหมด เพื่อเซฟตัวเอง คุณยังสามารถตั้งค่า

234
00:15:11,362 --> 00:15:14,454
auto backup ของตัวเองซึ่งจะถ่าย snapshot ของ VPS

235
00:15:14,454 --> 00:15:19,284
ทุกวันได้ด้วย เช่นสร้างด้วย cron ก็ได้ แต่ถ้าไม่อยากทำเองและอยากใช้ตัวเลือก

236
00:15:19,284 --> 00:15:22,375
auto backup เริ่มต้นของ Contabo ก็เลือกอันนี้ได้

237
00:15:22,375 --> 00:15:25,789
ซึ่งจะเสียประมาณ 1.65 ดอลลาร์ต่อเดือน ส่วน additional

238
00:15:25,789 --> 00:15:31,778
features ปล่อยเป็นค่าเริ่มต้นทั้งหมด ในส่วนนี้คุณต้องใส่รหัสผ่านสำหรับเชื่อมต่อกับเซิร์ฟเวอร์

239
00:15:31,778 --> 00:15:36,286
VPS ตรงนี้คุณสามารถสร้างรหัสผ่านใหม่หรือใส่รหัสผ่านอะไรก็ได้ตามต้องการ

240
00:15:36,286 --> 00:15:41,052
ซึ่งเป็นรหัสผ่านที่คุณต้องจำไว้ เพราะเป็นรหัสที่ใช้เชื่อมต่อกับเซิร์ฟเวอร์

241
00:15:41,052 --> 00:15:44,337
VPS ถ้าลืมรหัสผ่าน คุณสามารถเข้าไปในคอนโซลแผงควบคุม

242
00:15:44,337 --> 00:15:47,943
(control panel) แล้วรีเซ็ตรหัสผ่านได้ แต่จะไปยุ่งยากทำไม

243
00:15:47,943 --> 00:15:51,872
หลังจากนั้นก็คลิก next ชำระเงิน แล้วผมจะพาคุณผ่านขั้นตอนถัดไป

244
00:15:51,872 --> 00:15:54,963
ถ้าคุณเลือกตัวเลือก Racknerd หลังจากชำระเงินแล้ว

245
00:15:54,963 --> 00:15:59,214
คุณจะได้รับอีเมลแบบนี้จาก Racknerd จากอีเมลนี้เราจะต้องใช้สามอย่าง

246
00:15:59,214 --> 00:16:03,013
สิ่งแรกคือ IP address ของเซิร์ฟเวอร์ VPS ซึ่งทุกเซิร์ฟเวอร์

247
00:16:03,013 --> 00:16:06,233
VPS มี IP address เฉพาะตัว และพวกเขาจะให้ IP นี้มา

248
00:16:06,233 --> 00:16:10,870
สิ่งที่สองคือชื่อผู้ใช้ (username) ของบัญชีที่ใช้เชื่อมต่อกับเซิร์ฟเวอร์

249
00:16:10,870 --> 00:16:14,026
VPS ซึ่งกับ Racknerd ส่วนใหญ่ชื่อจะเป็น root เสมอ

250
00:16:14,026 --> 00:16:17,762
และอย่างที่สามคือรหัสผ่าน ซึ่งพวกเขาก็จะให้มาในนี้เรียกว่า

251
00:16:17,762 --> 00:16:20,917
root password ทั้งสามข้อมูลนี้จะอยู่ในอีเมลของคุณ

252
00:16:20,917 --> 00:16:26,070
ส่วน SSH port ไม่ต้องกังวล เพราะแอปพลิเคชันส่วนใหญ่ที่ใช้เชื่อมต่อกับเซิร์ฟเวอร์

253
00:16:26,070 --> 00:16:29,096
VPS จะตั้งค่าเริ่มต้นเป็นพอร์ต SSH 22 เสมอ ด้วย

254
00:16:29,096 --> 00:16:33,411
IP address, username และรหัสผ่าน คุณจะสามารถเชื่อมต่อกับเซิร์ฟเวอร์

255
00:16:33,411 --> 00:16:37,082
VPS ได้ ซึ่งผมจะพาคุณทำในขั้นตอนถัดไป ถ้าคุณเลือกตัวเลือก

256
00:16:37,082 --> 00:16:41,397
Contabo คุณจะได้รับอีเมลแบบนี้จาก Contabo อีเมลของผมเป็นภาษาเยอรมัน

257
00:16:41,397 --> 00:16:45,197
แต่รูปแบบจะเหมือนกันไม่ว่าคุณจะอยู่ประเทศไหนหรือใช้ภาษาอะไร

258
00:16:45,197 --> 00:16:48,610
ในอีเมลจาก Contabo เราจะใช้สองอย่าง ทางด้านซ้ายนี้คือ

259
00:16:48,610 --> 00:16:52,668
IP address ซึ่งเป็น IP เฉพาะของเซิร์ฟเวอร์ VPS และเรายังต้องใช้

260
00:16:52,668 --> 00:16:56,146
username ซึ่งกับ Contabo ก็เหมือนกัน ส่วนใหญ่ username

261
00:16:56,146 --> 00:17:01,105
จะเป็น root ส่วนรหัสผ่าน พวกเขาจะไม่ให้ในอีเมล แต่จะเป็นรหัสที่คุณตั้งตอนซื้อ

262
00:17:01,105 --> 00:17:05,291
VPS ดังนั้นด้วย IP address, username และรหัสผ่านที่คุณตั้งตอนซื้อ

263
00:17:05,291 --> 00:17:09,863
VPS เราจะสามารถเชื่อมต่อกับเซิร์ฟเวอร์ได้ และการเชื่อมต่อกับเซิร์ฟเวอร์

264
00:17:09,863 --> 00:17:13,534
VPS มีแอปพลิเคชันหลายตัวให้เลือก ข่าวดีคือ ไม่ว่าคุณจะใช้

265
00:17:13,534 --> 00:17:17,720
Windows หรือ Mac ทั้งคู่มาพร้อมแอปพลิเคชันในตัวที่ใช้เชื่อมต่อกับ

266
00:17:17,720 --> 00:17:21,327
VPS ได้ ถ้าใช้ Windows ก็แค่คลิกที่แถบค้นหาแล้วหาแอปชื่อ

267
00:17:21,327 --> 00:17:24,869
Windows PowerShell แล้วพอคลิกเปิด มันก็จะมีหน้าตาแบบนี้

268
00:17:24,869 --> 00:17:28,089
ถ้าคุณใช้ Mac แอปพลิเคชันที่ใช้จะเรียกว่า Terminal

269
00:17:28,089 --> 00:17:32,533
คำสั่งที่เราจะใช้ใน PowerShell ที่นี่จะเหมือนกับที่ใช้ในเทอร์มินัลของ

270
00:17:32,533 --> 00:17:35,882
Mac ทุกประการ ไม่ต้องกังวลเรื่องความแตกต่างของคำสั่ง

271
00:17:35,882 --> 00:17:38,909
ในการเชื่อมต่อกับเซิร์ฟเวอร์ VPS แค่พิมพ์คำสั่ง

272
00:17:38,909 --> 00:17:42,193
ssh เว้นวรรค แล้วตามด้วย root โดย root คือ username

273
00:17:42,193 --> 00:17:45,478
ของเซิร์ฟเวอร์ VPS ซึ่งเหมือนกัน สำหรับทั้ง Contabo

274
00:17:45,478 --> 00:17:49,020
และ Racknerd หลังจากนั้นก็ใส่ IP address ของเซิร์ฟเวอร์

275
00:17:49,020 --> 00:17:54,044
VPS ของคุณ เคล็ดลับใน PowerShell คือ เมื่อไหร่ก็ตามที่คุณมีอะไรอยู่ในคลิปบอร์ด

276
00:17:54,044 --> 00:17:57,586
แล้วคลิกขวาที่เมาส์ มันจะวางสิ่งที่อยู่ในคลิปบอร์ดออกมา

277
00:17:57,586 --> 00:18:01,321
ซึ่งมีประโยชน์มาก โดยเฉพาะตอนพิมพ์รหัสผ่าน หลังจากนั้นก็กด

278
00:18:01,321 --> 00:18:06,795
enter ถ้าเป็นการเชื่อมต่อเซิร์ฟเวอร์ครั้งแรก มันจะถามว่าคุณต้องการเพิ่มฟิงเกอร์พรินต์

279
00:18:06,795 --> 00:18:10,144
(fingerprint) ของเซิร์ฟเวอร์นี้ลงใน PC ของคุณหรือไม่

280
00:18:10,144 --> 00:18:13,493
ถ้าคุณแน่ใจว่ากำลังเชื่อมต่อกับเซิร์ฟเวอร์ที่ถูกต้อง

281
00:18:13,493 --> 00:18:17,293
ก็พิมพ์ yes แล้วมันก็จะเรียบร้อย จากนั้นมันจะถามรหัสผ่านของ

282
00:18:17,293 --> 00:18:20,900
VPS ถ้ารหัสผ่านคุณซับซ้อน ก็พิมพ์มันไว้ที่ไหนสักแห่งก่อน

283
00:18:20,900 --> 00:18:24,313
แล้วเข้ามาที่นี่ คลิกขวา มันจะวางรหัสผ่านจากคลิปบอร์ด

284
00:18:24,313 --> 00:18:28,757
แล้วกด enter จากนั้นคุณจะเห็นว่าในกรณีของผม ผมเชื่อมต่อกับเซิร์ฟเวอร์

285
00:18:28,757 --> 00:18:33,973
VPS ของผมแล้ว ผมจะล้างหน้าจอด้วยการพิมพ์ clear แล้วเราก็เริ่มขั้นตอนการตั้งค่าได้

286
00:18:33,973 --> 00:18:39,576
ตอนนี้เราเชื่อมต่อกับ VPS โดยใช้ชื่อ root ซึ่งโดยทั่วไปคือผู้มีอำนาจสูงสุดบนเซิร์ฟเวอร์

287
00:18:39,576 --> 00:18:42,668
Linux คำแนะนำของผมคือ อย่าติดตั้ง Hermes บน user

288
00:18:42,668 --> 00:18:45,759
root แต่ให้สร้างโปรไฟล์หรือ user ใหม่เพื่อรันมัน

289
00:18:45,759 --> 00:18:48,786
คำแนะนำนี้มีประโยชน์มาก เพราะคุณจะไม่ให้ Hermes

290
00:18:48,786 --> 00:18:51,813
เป็นผู้มีอำนาจสูงสุดบน VPS ของคุณ ในวิดีโอก่อนๆ

291
00:18:51,813 --> 00:18:58,124
ของผม เรามักทำบน root ซึ่งก็ไม่ผิดอะไร แต่ผมพยายามพัฒนาและนำทิปด้านความปลอดภัยที่ดีที่สุดมาให้เสมอ

292
00:18:58,124 --> 00:19:01,409
นี่คือเหตุผลที่รอบนี้เราจะไม่ติดตั้ง Hermes บน root

293
00:19:01,409 --> 00:19:04,693
เราจะสร้าง user เฉพาะเพื่อติดตั้งแอปพลิเคชัน Hermes

294
00:19:04,693 --> 00:19:07,913
ทั้งหมดบนนั้น การสร้าง user ใหม่บน Linux ใช้คำสั่ง

295
00:19:07,913 --> 00:19:11,134
useradd เว้นวรรค แล้วตามด้วยชื่อ user ที่อยากสร้าง

296
00:19:11,134 --> 00:19:14,354
ในกรณีของผมจะตั้งชื่อว่า Larry พิมพ์ adduser Larry

297
00:19:14,354 --> 00:19:18,540
หลังจากนั้นมันจะถามรหัสผ่านสำหรับ user นี้ ผมก็จะใส่รหัสผ่านของผม

298
00:19:18,540 --> 00:19:21,696
แล้วกด enter มันจะให้พิมพ์รหัสผ่านอีกครั้ง แล้วกด

299
00:19:21,696 --> 00:19:24,980
enter จากนั้นจะถามว่าต้องการใส่ชื่อเต็ม (full name)

300
00:19:24,980 --> 00:19:28,394
หรือไม่ ข้ามได้โดยกด enter ส่วน room number กด enter,

301
00:19:28,394 --> 00:19:31,678
phone กด enter ข้ามไปเลย, home phone ข้ามได้เช่นกัน

302
00:19:31,678 --> 00:19:34,769
แล้วมันจะถามว่าข้อมูลที่กรอกถูกต้องหรือไม่ พิมพ์

303
00:19:34,769 --> 00:19:37,796
Y แทน yes แล้วกด enter ตอนนี้คุณจะเห็นว่า Larry

304
00:19:37,796 --> 00:19:40,823
ถูกเพิ่มเป็น user แล้ว ต่อไปเราจะให้สิทธิ์ sudo

305
00:19:40,823 --> 00:19:45,331
แก่ user Larry เพื่อให้มันสามารถรันคำสั่งบางอย่างและติดตั้งแอปพลิเคชัน

306
00:19:45,331 --> 00:19:48,552
Hermes ได้ โดยใช้คำสั่งนี้: usermod -aG sudo larry

307
00:19:48,552 --> 00:19:51,707
ตรงนี้ให้แทนที่ Larry ด้วย username ของคุณ แล้วกด

308
00:19:51,707 --> 00:19:56,666
enter ยังไงก็ตาม ผมจะให้คำสั่งพวกนี้กับคุณด้วย คุณไม่จำเป็นต้องพิมพ์หรือจำมัน

309
00:19:56,666 --> 00:20:00,402
หลังจากนั้นกด enter เราก็จะได้ Larry เป็น user ที่มีสิทธิ์

310
00:20:00,402 --> 00:20:04,459
sudo แล้ว ผมจะล้างหน้าจอเพื่อให้ดูสะอาดขึ้น จากนั้นเราจะสลับจาก

311
00:20:04,459 --> 00:20:07,679
root user ไปเป็น Larry user เพื่อเข้าสู่ระบบในฐานะ

312
00:20:07,679 --> 00:20:10,835
Larry ที่เพิ่งสร้าง โดยใช้คำสั่ง su - แล้วตามด้วย

313
00:20:10,835 --> 00:20:14,055
Larry จะเห็นว่าสัญลักษณ์เปลี่ยนจาก root เป็น Larry

314
00:20:14,055 --> 00:20:18,048
นั่นหมายความว่าตอนนี้ผมไม่ได้อยู่บน root ซึ่งมีอำนาจสูงสุดแล้ว

315
00:20:18,048 --> 00:20:21,075
ผมเข้าสู่ระบบเป็น Larry ซึ่งมีอำนาจระดับนี้แล้ว

316
00:20:21,075 --> 00:20:24,102
ตอนที่เราเชื่อมต่อ VPS เราใช้คำสั่ง ssh root@IP

317
00:20:24,102 --> 00:20:27,515
address แต่ถ้าอยากเชื่อมต่อโดยไม่ใช้ root ก็สามารถใช้

318
00:20:27,515 --> 00:20:30,929
user ใหม่ที่เราสร้าง ซึ่งในกรณีของผมคือ Larry แล้วใส่

319
00:20:30,929 --> 00:20:34,149
IP address ของ VPS กด enter ใส่รหัสผ่านที่สร้างไว้

320
00:20:34,149 --> 00:20:37,884
แล้วจะเห็นว่าผมเชื่อมต่อกับ VPS ได้เช่นกัน คุณจึงเชื่อมต่อ

321
00:20:37,884 --> 00:20:41,426
VPS ได้สองทาง คือใช้ root แล้วสลับเป็น Larry ด้วยคำสั่ง

322
00:20:41,426 --> 00:20:44,582
su - Larry หรือจะ ssh เข้าไปที่ Larry โดยตรงก็ได้

323
00:20:44,582 --> 00:20:48,575
ผมจะยึดวิธีเดิมที่ตั้งค่าไว้แล้ว ผมพิมพ์ clear เพื่อล้างหน้าจอ

324
00:20:48,575 --> 00:20:51,988
แล้วเราก็เริ่มติดตั้ง Hermes ได้เลย การติดตั้ง Hermes

325
00:20:51,988 --> 00:20:55,208
เราจะไปที่เว็บไซต์หลักของ Hermes เมื่อมาถึงหน้านี้

326
00:20:55,208 --> 00:20:58,428
ให้เลื่อนลงมาตรงส่วน install via terminal เราจะใช้

327
00:20:58,428 --> 00:21:01,520
native application และตรงนี้คำสั่งจะเริ่มต้นด้วย

328
00:21:01,520 --> 00:21:04,611
curl เสมอ เพื่อให้แน่ใจว่าคุณใช้คำสั่งที่ถูกต้อง

329
00:21:04,611 --> 00:21:09,763
คลิกเพื่อคัดลอก one-line installer ข้อดีคือ ตัวติดตั้งแบบบรรทัดเดียวนี้จะติดตั้ง

330
00:21:09,763 --> 00:21:13,112
dependencies ทั้งหมดที่จำเป็นสำหรับการติดตั้งหรือรัน

331
00:21:13,112 --> 00:21:16,332
Hermes โดยที่คุณไม่ต้องลงแอป A แอป B อะไรต่อมิอะไร

332
00:21:16,332 --> 00:21:20,132
หลังจากนั้นกด enter แล้วการติดตั้งก็จะรัน มันตรวจพบว่าผมใช้

333
00:21:20,132 --> 00:21:23,481
Linux และจะรันสิ่งอื่นๆ ที่ขาดหายไปบนเซิร์ฟเวอร์ด้วย

334
00:21:23,481 --> 00:21:27,603
ตรงนี้มันถามว่าต้องการติดตั้ง ripgrep สำหรับค้นหาไฟล์ที่เร็วขึ้น

335
00:21:27,603 --> 00:21:31,016
และ TTS สำหรับข้อความเสียงไหม อันนี้ดีครับ เราก็พิมพ์

336
00:21:31,016 --> 00:21:35,074
yes ว่าต้องการติดตั้ง แล้วกด enter จากนั้นผมจะใส่รหัสผ่านแล้วกด

337
00:21:35,074 --> 00:21:38,938
enter แล้วการติดตั้งก็จะดำเนินต่อไป ผมจะรอให้การติดตั้งเสร็จ

338
00:21:38,938 --> 00:21:42,416
แล้วเราค่อยไปต่อกัน เอาล่ะ การติดตั้งส่วนที่ต้องมีก่อน

339
00:21:42,416 --> 00:21:46,151
(prerequisite) เสร็จแล้ว ตอนนี้เราสามารถเริ่มการตั้งค่าได้

340
00:21:46,151 --> 00:21:49,693
ที่นี่เราต้องเลือกวิธีการตั้งค่า Hermes ผมแนะนำให้เลือก

341
00:21:49,693 --> 00:21:53,879
quick setup เพราะ full setup จะถามอะไรหลายอย่างที่เราต้องกำหนดค่า

342
00:21:53,879 --> 00:21:58,130
ทั้งที่เราไม่จำเป็นต้องใช้ และอันนี้ก็เป็นตัวเลือกที่แนะนำอยู่แล้ว

343
00:21:58,130 --> 00:22:02,960
แค่ทำให้แน่ใจว่าเลือกตัวเลือกนี้อยู่ ถ้าไม่ ก็ใช้ปุ่มลูกศรขึ้นลงบนคีย์บอร์ด

344
00:22:02,960 --> 00:22:06,309
ให้แน่ใจว่าเคอร์เซอร์อยู่ที่ตัวเลือกนี้ แล้วกด space

345
00:22:06,309 --> 00:22:09,465
bar หรือ enter ขั้นตอนถัดไปเราจะต้องสร้างบัญชีกับ

346
00:22:09,465 --> 00:22:12,878
Nous Research ถ้าคุณมีบัญชีอยู่แล้วก็ไม่ต้องสร้างใหม่

347
00:22:12,878 --> 00:22:16,356
โดยพื้นฐานแล้ว ขั้นตอนนี้คือการผูก VPS หรือเซิร์ฟเวอร์

348
00:22:16,356 --> 00:22:19,640
หรือการติดตั้ง Hermes นี้เข้ากับบัญชี Nous Research

349
00:22:19,640 --> 00:22:22,667
ของคุณ ตรงนี้คุณเลือกแผนฟรี (free subscription)

350
00:22:22,667 --> 00:22:26,467
ได้ Nous Research มีแผนเสียเงินบางแผนที่ให้คุณใช้กลุ่มโมเดล

351
00:22:26,467 --> 00:22:30,331
AI ของพวกเขาได้ แต่ในกรณีของผม ผมจะนำโมเดล AI ของตัวเองมาใช้

352
00:22:30,331 --> 00:22:34,066
ดังนั้นผมจะเลือกตัวเลือกฟรี กด ctrl บนคีย์บอร์ดแล้วคลิกที่

353
00:22:34,066 --> 00:22:37,609
URL นี้ ถ้ายังไม่มีบัญชี คุณจะเห็นตัวเลือกให้สร้างบัญชี

354
00:22:37,609 --> 00:22:43,984
แต่ในกรณีของผม ผมมีบัญชีอยู่แล้วและล็อกอินอยู่ มันจึงพาไปที่หน้าจอที่ผูกบัญชีกับการตั้งค่าได้โดยตรง

355
00:22:43,984 --> 00:22:48,235
ตรงนี้คลิก connect พอสำเร็จคุณจะได้รับการแจ้งเตือนว่าเชื่อมต่อแล้ว

356
00:22:48,235 --> 00:22:53,387
เมื่อกลับมาที่หน้าจอตัวติดตั้ง Hermes คุณจะเห็นว่ามันพาไปที่ขั้นตอนการเลือกโมเดล

357
00:22:53,387 --> 00:22:56,672
อย่างที่บอก ในกรณีของผม ผมจะไม่ใช้โมเดลใดๆ ที่ Nous

358
00:22:56,672 --> 00:23:00,472
Research ให้มา ผมจะนำโมเดลของตัวเองเข้ามา ตรงนี้คุณสามารถกด

359
00:23:00,472 --> 00:23:05,044
enter เพื่อข้ามขั้นตอนการเลือกโมเดลได้ ขั้นตอนถัดไปเราจะเลือกเครื่องมือ

360
00:23:05,044 --> 00:23:08,264
(tools) สองสามอย่างที่ใช้กับ Hermes Agent ได้ เช่น

361
00:23:08,264 --> 00:23:13,996
คุณสามารถให้ตัวเลือกแก่เอเจนต์ในการค้นหาบนอินเทอร์เน็ตและดึงข้อมูลจากเว็บไซต์เฉพาะบางแห่ง

362
00:23:13,996 --> 00:23:17,409
ซึ่งตรงนี้คุณสามารถใช้เครื่องมือที่เรียกว่า Firecrawl

363
00:23:17,409 --> 00:23:21,016
และก็เช่นเดียวกัน ยังมีเครื่องมืออื่นๆ สำหรับการสร้างภาพ

364
00:23:21,016 --> 00:23:25,138
การแปลงข้อความเป็นเสียง (text to speech) การแปลงเสียงเป็นข้อความ

365
00:23:25,138 --> 00:23:28,294
(speech to text) และอื่นๆ ตรงนี้คุณสามารถกด enter

366
00:23:28,294 --> 00:23:32,158
เพื่อใช้ทั้งหมด หรือจะยกเลิกการเลือกบางอันที่ไม่ต้องการก็ได้

367
00:23:32,158 --> 00:23:35,442
ขั้นตอนถัดไปเราจะเลือกเทอร์มินัลแบ็กเอนด์ (terminal

368
00:23:35,442 --> 00:23:38,791
back end) ปล่อยเป็นค่าเริ่มต้นคือ local ได้เลย โดยกด

369
00:23:38,791 --> 00:23:43,557
space bar ขั้นตอนถัดไปเราจะเชื่อมต่อแพลตฟอร์มส่งข้อความที่ใช้คุยกับเอเจนต์

370
00:23:43,557 --> 00:23:48,065
AI ทั้งหมดของเรา และตรงนี้แนะนำให้ตั้งค่า เพราะเราไม่อยากคุยกับเอเจนต์

371
00:23:48,065 --> 00:23:54,119
AI ผ่านเทอร์มินัลบน VPS ทุกครั้ง เราอยากมีอินเทอร์เฟซที่ง่ายและเป็นมิตรกว่าสำหรับคุยกับเอเจนต์

372
00:23:54,119 --> 00:23:59,142
AI ดังนั้นตรงนี้เราจะเลือก set up messaging ซึ่งก็เป็นตัวเลือกที่แนะนำอยู่แล้ว

373
00:23:59,142 --> 00:24:04,488
กด space bar บนคีย์บอร์ด แล้วมันจะแสดงรายการแพลตฟอร์มส่งข้อความทั้งหมดที่ตั้งค่ากับ

374
00:24:04,488 --> 00:24:09,125
Hermes อยู่ และอย่างที่เห็น มีให้เลือกเยอะมาก แต่ในการตั้งค่านี้เราจะใช้

375
00:24:09,125 --> 00:24:12,281
Telegram ให้กดลูกศรลงบนคีย์บอร์ด แล้วตรงนี้อย่ากด

376
00:24:12,281 --> 00:24:15,307
enter เพราะถ้ากด enter มันจะข้ามส่วนนี้ไป ให้กด

377
00:24:15,307 --> 00:24:18,656
space bar เพื่อให้แน่ใจว่ามันถูกติ๊กเลือก แล้วค่อยกด

378
00:24:18,656 --> 00:24:23,809
enter ต่อไปเราจะสร้าง Telegram bot ซึ่งจะเป็นบอทที่เราใช้คุยกับเอเจนต์ที่จะสร้าง

379
00:24:23,809 --> 00:24:27,866
ในการตั้งค่า Telegram bot คุณเลือกได้ระหว่างการตั้งค่าอัตโนมัติ

380
00:24:27,866 --> 00:24:31,795
(automatic) หรือแบบ manual ในกรณีของผม ผมจะเลือกตัวเลือกกลางๆ

381
00:24:31,795 --> 00:24:37,140
คือ manual เพื่อโชว์ให้คุณเห็นว่าทำอย่างไร เผื่อภายหลังคุณต้องใช้กับแอปพลิเคชันอื่น

382
00:24:37,140 --> 00:24:40,682
สำหรับ manual ให้กด 2 แล้วกด enter แล้ว Hermes จะถามว่า

383
00:24:40,682 --> 00:24:44,224
Telegram bot token คืออะไร ในการหามัน ให้ไปที่ Telegram

384
00:24:44,224 --> 00:24:47,573
แล้วค้นหาบอทชื่อ BotFather คุณจะเห็นว่าบอท BotFather

385
00:24:47,573 --> 00:24:52,210
ตัวจริงมีผู้ใช้ต่อเดือนกว่า 7 ล้านคน เพื่อให้แน่ใจว่าคุณใช้บอทที่ถูกต้อง

386
00:24:52,210 --> 00:24:55,688
ระวังหน่อยนะครับ อย่างที่เห็น มี BotFather อยู่หลายตัว

387
00:24:55,688 --> 00:24:58,908
แต่ตัวที่คุณต้องใช้คือตัวที่มีเครื่องหมายถูกตรงนี้

388
00:24:58,908 --> 00:25:02,321
และมียอดผู้ใช้กว่า 7 ล้านคนต่อเดือน ในการสร้างบอทใหม่

389
00:25:02,321 --> 00:25:06,379
ใช้คำสั่ง /newbot แล้วกด enter หรือคลิกที่คำแนะนำที่มีให้ตรงนี้

390
00:25:06,379 --> 00:25:10,050
ต่อไปเราต้องตั้งชื่อให้บอท ผมจะเรียกมันว่า KM ในกรณีของผม

391
00:25:10,050 --> 00:25:14,172
ย่อจาก Komputer Mechanic content creation OS พอตั้งชื่อเสร็จก็กด

392
00:25:14,172 --> 00:25:17,520
enter แล้วมันจะให้ใส่ username ของบอท ที่สำคัญมากคือ

393
00:25:17,520 --> 00:25:22,801
username ต้องลงท้ายด้วยคำว่า bot ผมเลยคัดลอกมาเพราะอยากให้ชื่อเดียวกันแต่เติมคำว่า

394
00:25:22,801 --> 00:25:26,859
bot ต่อท้าย แล้วกด enter บอทก็จะถูกสร้างให้คุณ เมื่อบอทถูกสร้าง

395
00:25:26,859 --> 00:25:31,496
BotFather จะให้คีย์เฉพาะตัวที่ยืนยันว่าคุณเป็นผู้สร้างหรือเจ้าของบอทนั้น

396
00:25:31,496 --> 00:25:35,296
ผมจะคลิกที่นี่เพื่อคัดลอกคีย์ เพราะนั่นคือสิ่งที่ตัวติดตั้ง

397
00:25:35,296 --> 00:25:38,580
Hermes กำลังถาม และผมจะวางคีย์ลงตรงนี้ แล้วกด enter

398
00:25:38,580 --> 00:25:41,929
ขั้นตอนนี้เป็นขั้นตอนที่แนะนำอย่างยิ่ง Hermes ถามว่า

399
00:25:41,929 --> 00:25:46,502
คุณต้องการกำหนดผู้ใช้บางคนที่เป็นคนเดียวที่ได้รับอนุญาตให้คุยกับบอทไหม?

400
00:25:46,502 --> 00:25:49,722
อันนี้สำคัญมากๆ เพราะถ้ามีคนรู้ username ของบอทคุณ

401
00:25:49,722 --> 00:25:53,071
คุณคงไม่อยากให้พวกเขาคุยกับบอทได้ เราจึงจะบอก Hermes

402
00:25:53,071 --> 00:25:56,935
ว่า "เฮ้ ให้ผมเป็นคนเดียวที่คุยกับบอทนี้ได้" และวิธีเดียวที่

403
00:25:56,935 --> 00:26:00,091
Hermes จะรู้ว่าคุณคือใครคือการให้ Hermes รู้ user

404
00:26:00,091 --> 00:26:04,406
ID ของคุณใน Telegram ในการหา Telegram user ID เราจะใช้บอทที่ชื่อว่า

405
00:26:04,406 --> 00:26:07,755
User Info Bot ซึ่งมีผู้ใช้กว่า 400,000 คน มีบอทอื่นๆ

406
00:26:07,755 --> 00:26:11,039
อีกเยอะ ดังนั้นต้องแน่ใจว่าใช้ตัวที่ถูกต้อง ในการหา

407
00:26:11,039 --> 00:26:14,324
user ID คุณแค่ส่งข้อความอะไรก็ได้ไปให้บอท เช่น "hi"

408
00:26:14,324 --> 00:26:18,252
แล้วบอทจะตอบกลับด้วย user ID ของคุณ ผมจะคลิกที่นี่เพื่อคัดลอก

409
00:26:18,252 --> 00:26:21,344
user ID กลับมาที่เทอร์มินัลการติดตั้ง Hermes วาง

410
00:26:21,344 --> 00:26:24,886
user ID แล้วกด enter จากนั้น Hermes จะถามว่าต้องการตั้ง

411
00:26:24,886 --> 00:26:29,265
user ID นี้เป็น home channel ไหม นั่นหมายความว่าในแชทที่คุณคุยกับบอท

412
00:26:29,265 --> 00:26:33,902
เมื่อไหร่ก็ตามที่ Hermes gateway รีสตาร์ทหรือมีอะไรเกี่ยวกับระบบเกิดขึ้น

413
00:26:33,902 --> 00:26:36,929
คุณจะได้รับการแจ้งเตือนในหน้าต่างแชทนี้ พิมพ์ Y

414
00:26:36,929 --> 00:26:40,149
แทน yes แล้วกด enter จากนั้นจะถามว่าต้องการติดตั้ง

415
00:26:40,149 --> 00:26:43,562
Hermes gateway เป็น system service ไหม อันนี้สำคัญมาก

416
00:26:43,562 --> 00:26:48,521
เพราะเมื่อไหร่ก็ตามที่เซิร์ฟเวอร์ VPS รีสตาร์ทเพราะการอัปเดตระบบหรืออะไรก็ตาม

417
00:26:48,521 --> 00:26:52,192
Hermes gateway จะเริ่มทำงานโดยอัตโนมัติ ซึ่งมีประโยชน์มาก

418
00:26:52,192 --> 00:26:55,413
คุณจะได้ไม่ต้องเริ่มมันด้วยตัวเองทุกครั้ง กด Y แทน

419
00:26:55,413 --> 00:26:58,826
yes แล้วกด enter แล้วตรงนี้จะถามว่าต้องการรัน gateway

420
00:26:58,826 --> 00:27:02,110
แบบไหน ในกรณีของเราเราจะใช้ system service กด enter

421
00:27:02,110 --> 00:27:05,395
จากนั้นจะถามอีกครั้งว่าต้องการรันและติดตั้ง gateway

422
00:27:05,395 --> 00:27:08,422
เป็น background system service ไหม กด Y แทน yes

423
00:27:08,422 --> 00:27:11,578
แล้วกด enter แล้วการติดตั้ง Hermes ก็เสร็จสมบูรณ์

424
00:27:11,578 --> 00:27:15,313
สำคัญมากตรงนี้ เราจะต้องโหลดเชลล์ใหม่เพื่อที่เราจะได้พิมพ์

425
00:27:15,313 --> 00:27:18,855
hermes แล้วมันจะเปิดแอปพลิเคชัน Hermes ในการทำอย่างนั้น

426
00:27:18,855 --> 00:27:23,041
ให้คัดลอกคำสั่งที่เขาให้ไว้ตรงนี้ วางกลับเข้าไปในเทอร์มินัลแล้วกด

427
00:27:23,041 --> 00:27:26,197
enter มันจะรีสตาร์ทเชลล์ให้คุณ จำไว้ว่าเราติดตั้ง

428
00:27:26,197 --> 00:27:29,417
Hermes เสร็จแล้ว แต่ในกรณีของผม ผมไม่ได้เลือกโมเดล

429
00:27:29,417 --> 00:27:34,119
AI ใดๆ เพราะอยากนำโมเดล AI ของตัวเองมาใช้ ดังนั้นตรงนี้เราจะกำหนดค่าโมเดล

430
00:27:34,119 --> 00:27:38,112
AI ของเราเอง และผมทำแบบนี้เพื่อให้คุณได้เรียนรู้วิธีเพิ่มโมเดล

431
00:27:38,112 --> 00:27:41,267
AI ของคุณเองในภายหลัง ถ้าในอนาคตอยากเพิ่มโมเดล AI

432
00:27:41,267 --> 00:27:45,389
คุณสามารถขอให้เอเจนต์ AI ทำสิ่งนี้ให้คุณได้ แต่ผมไม่แนะนำวิธีนี้

433
00:27:45,389 --> 00:27:50,090
เพราะในกรณีส่วนใหญ่เอเจนต์ AI ไม่ได้ฉลาดพอ มักจะทำให้การกำหนดค่าของคุณพัง

434
00:27:50,090 --> 00:27:53,246
ดังนั้นเรื่องแบบนี้ผมชอบทำเอง สำหรับว่าจะใช้โมเดล

435
00:27:53,246 --> 00:27:56,531
AI ตัวไหน ก็แล้วแต่คุณเลย แต่สิ่งที่ผมใช้บ่อยที่สุด

436
00:27:56,531 --> 00:27:59,558
และหลายคนอาจยังไม่รู้คือ ถ้าคุณมีการสมัครสมาชิก

437
00:27:59,558 --> 00:28:02,649
ChatGPT แบบ Plus หรือ Pro คุณจะสามารถใช้โมเดล AI

438
00:28:02,649 --> 00:28:06,256
จาก OpenAI ที่เรียกว่า Codex บน Hermes Agent ได้เกือบฟรี

439
00:28:06,256 --> 00:28:10,184
ถ้าคุณมีแผน 20 ดอลลาร์ก็ใช้ได้ ถ้ามีแผน Pro ก็ใช้ได้เหมือนกัน

440
00:28:10,184 --> 00:28:13,404
ผมไม่ค่อยแน่ใจว่าแผน Go มีให้หรือเปล่า ในกรณีของผม

441
00:28:13,404 --> 00:28:16,753
ผมใช้แผน Pro เป็นส่วนใหญ่ และขีดจำกัดการใช้งานของแผน

442
00:28:16,753 --> 00:28:20,811
Pro ก็มากกว่าแผน 20 ดอลลาร์อยู่แล้ว ถ้าไม่แน่ใจว่าต้องการอันไหน

443
00:28:20,811 --> 00:28:24,868
ก็เริ่มจากบัญชี Plus ก่อน ถ้าใช้งานถึงขีดจำกัด ก็อัปเกรดเป็นแผน

444
00:28:24,868 --> 00:28:28,217
Pro ได้เสมอ และอันนี้ยังค่อนข้างใจดีในแง่ขีดจำกัดของ

445
00:28:28,217 --> 00:28:31,308
token ด้วย คุณจะสามารถทำงานได้เยอะมากแม้จะใช้แผน

446
00:28:31,308 --> 00:28:34,786
20 ดอลลาร์ก็ตาม ข้อดีคือ มันไม่ใช่ระบบจ่ายตามการใช้งาน

447
00:28:34,786 --> 00:28:38,714
(pay as you go) เมื่อใช้ถึงขีดจำกัดก็จบ ไม่มีบิลเซอร์ไพรส์จาก

448
00:28:38,714 --> 00:28:41,935
OpenAI ว่า "เฮ้ คุณใช้เกินสิทธิ์การสมัครสมาชิกแล้ว

449
00:28:41,935 --> 00:28:46,829
ต้องจ่ายเพิ่ม" ไม่มีสิ่งนั้น ดังนั้นผมจึงเลือกตัวเลือกเหล่านี้เป็นการส่วนตัว

450
00:28:46,829 --> 00:28:49,856
เพราะไม่ต้องกังวลเรื่องบิลเซอร์ไพรส์อะไรแบบนั้น

451
00:28:49,856 --> 00:28:53,076
ส่วนตัวผมใช้แผน Pro เพราะผมมี Hermes setup หลายอัน

452
00:28:53,076 --> 00:28:56,747
ทำให้การใช้ token เยอะมาก และสำหรับบทช่วยสอนที่ทำให้ทุกคน

453
00:28:56,747 --> 00:29:00,032
ผมมักทดลองเกิน 10 ครั้ง ดังนั้นผมจึงต้องการขีดจำกัด

454
00:29:00,032 --> 00:29:03,252
token ที่สูงกว่าที่เขาให้มา ตอนที่ผมมีบัญชี OpenAI

455
00:29:03,252 --> 00:29:07,631
แค่บัญชีเดียว อันนี้ก็เพียงพอแล้วสำหรับผม อีกอย่างที่หลายคนไม่รู้คือ

456
00:29:07,631 --> 00:29:10,851
ถ้าคุณมีบัญชี X คุณก็สามารถใช้โมเดล Grok บน Hermes

457
00:29:10,851 --> 00:29:13,878
Agents ได้ฟรีเช่นกัน ไม่ว่าคุณจะมีบัญชี ChatGPT

458
00:29:13,878 --> 00:29:17,614
แบบเสียเงิน หรือสมัครสมาชิกแบบพรีเมียม คุณก็สามารถใช้โมเดล

459
00:29:17,614 --> 00:29:22,379
AI ของพวกเขาบน Hermes Agent ได้ฟรีทั้งคู่ ถ้าคุณไม่อยากใช้ตัวเลือกเหล่านี้

460
00:29:22,379 --> 00:29:25,535
และอยากได้โมเดลเฉพาะ เช่น จาก Anthropic อย่าง o3,

461
00:29:25,535 --> 00:29:28,755
Sonnet หรืออะไรก็ตาม เราสามารถมาที่ OpenRouter ได้

462
00:29:28,755 --> 00:29:33,135
OpenRouter มีคลังโมเดลเยอะมาก รวมถึงโมเดล AI ยอดนิยมทั้งหมดที่มีอยู่

463
00:29:33,135 --> 00:29:36,162
คุณสามารถหาได้บน OpenRouter ข้อดีของ OpenRouter

464
00:29:36,162 --> 00:29:39,382
คือ พวกเขาจะให้ API key อันเดียวกับคุณ และด้วย API

465
00:29:39,382 --> 00:29:43,053
key อันเดียวนั้น คุณสามารถเข้าถึงโมเดลทั้งหมดที่มีอยู่ได้

466
00:29:43,053 --> 00:29:46,208
ข้อควรระวังคือ OpenRouter เป็นแบบจ่ายตามการใช้งาน

467
00:29:46,208 --> 00:29:50,008
(pay as you go) ไม่ใช่แบบจ่ายรายเดือนแล้วใช้ถึงขีดจำกัดก็จบ

468
00:29:50,008 --> 00:29:53,100
คุณจ่ายตามที่ใช้ ยิ่งใช้มากยิ่งจ่ายมาก ผมหมายถึง

469
00:29:53,100 --> 00:29:57,608
จะใช้โมเดลไหนก็แล้วแต่คุณเลย เลือกตัวเลือกที่สมเหตุสมผลที่สุดสำหรับคุณ

470
00:29:57,608 --> 00:30:00,828
ในกรณีของผม ผมจะใช้ OpenAI ของผม เพราะผมมีการสมัคร

471
00:30:00,828 --> 00:30:04,821
ChatGPT อยู่ ในการใช้งาน ผมจะล้างหน้าจอก่อนเพื่อให้ดูสะอาดขึ้น

472
00:30:04,821 --> 00:30:09,973
แล้วพิมพ์คำสั่ง hermes model แล้วกด enter คำสั่งนี้จะโหลดโมเดลทั้งหมดที่ใช้ได้บน

473
00:30:09,973 --> 00:30:13,000
Hermes Agent ตอนนี้ ถ้าคุณมีบัญชี X แบบพรีเมียม

474
00:30:13,000 --> 00:30:18,732
ตัวเลือกของคุณก็จะอยู่ตรงนี้ คือ xAI Grok กระบวนการจะเหมือนกันไม่ว่าคุณจะเลือกตัวเลือกไหน

475
00:30:18,732 --> 00:30:23,562
ในกรณีของผม ผมจะเลือกอันนี้โดยกด space bar แล้วตรงนี้เราจะมีตัวเลือกระหว่าง

476
00:30:23,562 --> 00:30:27,877
OpenAI API ถ้าเลือก API คุณจะจ่ายตามการใช้งาน ยิ่งใช้มากยิ่งจ่ายมาก

477
00:30:27,877 --> 00:30:30,904
และคุณต้องสร้าง API key เฉพาะเพื่อเรียกเก็บเงิน

478
00:30:30,904 --> 00:30:34,124
แต่ในการตั้งค่าของเรา เราจะใช้การสมัครสมาชิกของเรา

479
00:30:34,124 --> 00:30:37,151
ผมจะเลือก OpenAI Codex ในการทำอย่างนั้น เราจะกด

480
00:30:37,151 --> 00:30:40,629
ctrl แล้วคลิกที่ URL ที่ให้ไว้ตรงนี้ และในกระบวนการนี้

481
00:30:40,629 --> 00:30:43,656
เราจะต้องกรอกโค้ดที่อยู่ตรงนี้ ให้ไฮไลต์โค้ดนี้

482
00:30:43,656 --> 00:30:46,811
สำคัญมาก กด control+shift+C อย่ากด Ctrl+C เพราะใน

483
00:30:46,811 --> 00:30:50,740
Linux Ctrl+C ใช้ยกเลิกแอปพลิเคชัน และมันจะปิดหน้าจอทั้งหมดนี้

484
00:30:50,740 --> 00:30:55,184
นี่คือเหตุผลที่ต้องกด control+shift+C จากนั้นลิงก์จะพาคุณไปที่หน้านี้

485
00:30:55,184 --> 00:30:59,112
สิ่งที่ต้องทำคือล็อกอินเข้าบัญชี OpenAI ของคุณ ผมจะคลิกที่นี่

486
00:30:59,112 --> 00:31:02,268
คลิก continue แล้วใส่โค้ดที่คัดลอกมาจากการติดตั้ง

487
00:31:02,268 --> 00:31:07,291
Hermes แล้วคลิก continue จากนั้นบัญชี OpenAI ของเราก็จะถูกผูกเข้ากับการตั้งค่า

488
00:31:07,291 --> 00:31:10,576
Hermes ของเรา พอกลับมาที่นี่จะเห็นว่าการยืนยันตัวตน

489
00:31:10,576 --> 00:31:14,118
(authentication) เสร็จสิ้น แล้วตรงนี้จะถามให้เลือกโมเดล

490
00:31:14,118 --> 00:31:17,854
AI ตรงนี้คุณสามารถใช้โมเดลไหนก็ได้ที่มี จำไว้ว่ายิ่งเลขสูง

491
00:31:17,854 --> 00:31:21,074
เช่น 5.6 ใช้ token เยอะกว่า 5.4 มาก ส่วน 5.5 ก็ใช้

492
00:31:21,074 --> 00:31:24,101
token สูงกว่า 5.4 เช่นกัน ในกรณีของผม ผมใช้ 5.5

493
00:31:24,101 --> 00:31:27,900
เป็นส่วนใหญ่ เพราะมันยังเป็นโมเดลที่ทรงพลังมาก และผมอยากได้

494
00:31:27,900 --> 00:31:30,927
token เยอะๆ แต่ถ้าคุณอยู่บนแผน 100 ดอลลาร์และมี

495
00:31:30,927 --> 00:31:34,147
token เยอะ คุณก็เลือก 5.6 ได้เช่นกัน แล้วแต่คุณเลย

496
00:31:34,147 --> 00:31:39,815
ผมจะเลือก 5.5 ตรงนี้ กด space bar แล้วคุณจะเห็นว่ามันบอกว่าโมเดลเริ่มต้นของผมถูกตั้งเป็น

497
00:31:39,815 --> 00:31:44,709
GPT-5.5 แล้ว ก่อนที่เราจะไปที่ Telegram เพื่อทดสอบว่าทุกอย่างทำงานได้หรือไม่

498
00:31:44,709 --> 00:31:47,865
จากการติดตั้ง Hermes และการกำหนดค่าโมเดล ให้พิมพ์

499
00:31:47,865 --> 00:31:51,150
hermes แล้วมันจะเปิดสิ่งที่เรียกว่า Hermes terminal

500
00:31:51,150 --> 00:31:55,271
user interface (TUI) ซึ่งจะเป็นกล่องแชทที่คุณสามารถคุยกับเอเจนต์

501
00:31:55,271 --> 00:32:00,166
AI เริ่มต้นของคุณเพื่อให้แน่ใจว่าทุกอย่างทำงาน แต่หลายคนอย่างผมไม่ใช้ส่วนนี้

502
00:32:00,166 --> 00:32:03,515
เพราะคุณต้องล็อกอินเข้าสู่ VPS แล้วมาที่หน้านี้แปลกๆ

503
00:32:03,515 --> 00:32:07,250
เพื่อคุยกับเอเจนต์ AI เราแค่อยากให้แน่ใจว่าการตั้งค่าทำงาน

504
00:32:07,250 --> 00:32:10,535
นี่คือเหตุผลที่ผมมาที่นี่ ตรงนี้ผมจะส่งข้อความง่ายๆ

505
00:32:10,535 --> 00:32:14,077
อย่าง "hi" และถ้าเอเจนต์ตอบสนอง ก็หมายความว่าการติดตั้ง

506
00:32:14,077 --> 00:32:17,233
Hermes ทำงาน มันยังหมายความว่าการกำหนดค่าโมเดล AI

507
00:32:17,233 --> 00:32:20,324
ทำงานด้วย และตรงนี้คุณจะเห็นว่าเอเจนต์ตอบกลับว่า

508
00:32:20,324 --> 00:32:24,639
"hi what can I help you with?" นั่นหมายความว่าการติดตั้งของเราทำงาน

509
00:32:24,639 --> 00:32:28,374
การกำหนดค่าโมเดล AI ทำงาน ในการออกจากหน้าจอนี้ คุณสามารถกด

510
00:32:28,374 --> 00:32:31,401
Ctrl+C บนคีย์บอร์ด หรือพิมพ์ /exit แล้วกด enter

511
00:32:31,401 --> 00:32:34,428
มันจะพาคุณออกจาก Hermes terminal user interface

512
00:32:34,428 --> 00:32:37,713
ขอพูดถึงสปอนเซอร์ของวิดีโอวันนี้สักครู่ คือ Sudalis

513
00:32:37,713 --> 00:32:41,191
AI และอันนี้น่าฟังมาก ปัญหาที่พวกเขาแก้คือ บริษัทต่างๆ

514
00:32:41,191 --> 00:32:45,506
กำลังจมอยู่กับ AI ที่ไม่เชื่อมต่อถึงกัน บริษัทส่วนใหญ่ใช้เครื่องมือ

515
00:32:45,506 --> 00:32:48,597
AI ที่ไม่แม้แต่จะคุยกัน เครื่องมือหนึ่งทำสิ่งนี้

516
00:32:48,597 --> 00:32:53,363
อีกอันทำสิ่งนั้น แต่ไม่มีอะไรเชื่อมต่อกัน จึงไม่มีอะไรทำงานร่วมกันได้จริงๆ

517
00:32:53,363 --> 00:32:57,356
Sudalis AI สร้างระบบที่เชื่อมทุกอย่างเข้าด้วยกันเป็นสแต็กเดียว

518
00:32:57,356 --> 00:33:01,284
ลองเข้าไปดูที่ sudalis.ai โดยมีลิงก์ทั้งหมดอยู่ในส่วนคำอธิบาย

519
00:33:01,284 --> 00:33:05,084
ขอบคุณ Sudalis AI ที่สปอนเซอร์วิดีโอนี้ ต่อไปเราจะกลับมาที่

520
00:33:05,084 --> 00:33:08,304
BotFather เมื่อมันสร้างบอทให้เราแล้ว มันยังให้ URL

521
00:33:08,304 --> 00:33:11,331
มา ซึ่งเราสามารถเริ่มคุยกับบอทได้ ตรงนี้คลิกที่

522
00:33:11,331 --> 00:33:14,680
URL นี้ มันจะเปิดแชทใหม่กับบอทที่สร้างไว้ คุณแค่คลิก

523
00:33:14,680 --> 00:33:18,029
start นี่จะส่งข้อความแบบ start ไปให้บอท แต่บอทไม่ตอบ

524
00:33:18,029 --> 00:33:22,022
เพราะมันไม่เข้าใจว่า start หมายถึงอะไร เราจึงจะส่งข้อความอย่าง

525
00:33:22,022 --> 00:33:25,371
"hi" ไปให้บอท และถ้าทุกอย่างทำงาน บอทจะเริ่มพิมพ์ตอบ

526
00:33:25,371 --> 00:33:29,750
ถ้าคุณเห็นสัญลักษณ์กำลังพิมพ์ ก็หมายความว่าบอทถูกตั้งค่าอย่างถูกต้อง

527
00:33:29,750 --> 00:33:32,842
และบอทจะตอบกลับคุณ บอทตอบว่า "hi what can I help

528
00:33:32,842 --> 00:33:36,126
you with today" เอาล่ะ เราจะไม่คุยกับบอทในเซสชันนี้

529
00:33:36,126 --> 00:33:39,539
สิ่งที่เราอยากสร้างคือ Telegram group สำหรับบอทของเรา

530
00:33:39,539 --> 00:33:42,824
เหตุผลที่เราจะสร้าง group คือ เราจะมีหัวข้อ (topic)

531
00:33:42,824 --> 00:33:46,173
สามหัวข้อ หัวข้อแรกคือที่ที่เราจะคุยกับบอท ซึ่งก็คือ

532
00:33:46,173 --> 00:33:50,037
orchestrator ของเรา จากนั้นเราจะมีหัวข้อที่สองหรือช่องที่สอง

533
00:33:50,037 --> 00:33:54,803
ใช้คุยกับเอเจนต์นักพัฒนา (developer agent) ที่จะสร้างแดชบอร์ดทั้งหมดให้เรา

534
00:33:54,803 --> 00:33:59,569
และเราจะมีช่องที่สามซึ่งเราจะเรียกว่า studio นั่นคือที่ที่เราจะระดมความคิด

535
00:33:59,569 --> 00:34:02,918
(brainstorm) ไอเดียกับเอเจนต์ของเรา ในการสร้าง group

536
00:34:02,918 --> 00:34:06,138
มีข้อกำหนดเบื้องต้นว่า คุณต้องมีคนอย่างน้อยสองคนใน

537
00:34:06,138 --> 00:34:10,066
group เราจึงต้องใช้ username ของบอทเพื่อที่จะเพิ่มบอทเข้าไปใน

538
00:34:10,066 --> 00:34:13,995
group ที่จะสร้าง ผมจะคลิกที่ชื่อบอทตรงนี้ แล้วคลิกเพื่อคัดลอก

539
00:34:13,995 --> 00:34:17,215
username ของบอท จากนั้นปิดกล่องโต้ตอบนี้ แล้วสร้าง

540
00:34:17,215 --> 00:34:21,981
group ใหม่ได้ ในการสร้าง group ใหม่ ให้คลิกที่เมนูแฮมเบอร์เกอร์ทางด้านซ้าย

541
00:34:21,981 --> 00:34:26,167
แล้วคลิก new group จากนั้นตั้งชื่อ group ในกรณีของผมจะเรียกมันว่า

542
00:34:26,167 --> 00:34:30,804
KM Content OS แล้วคลิก next แล้วเราจะต้องเพิ่มคนอย่างน้อยหนึ่งคนเข้าไปใน

543
00:34:30,804 --> 00:34:33,831
group นั่นคือเหตุผลที่เราคัดลอก username ของบอท

544
00:34:33,831 --> 00:34:36,858
ผมวาง username แล้วคลิกเลือกบอท แล้วคลิก create

545
00:34:36,858 --> 00:34:40,851
ตอนนี้เราก็มี group ของเราแล้ว แต่อย่างที่บอก เราอยากสร้างช่อง

546
00:34:40,851 --> 00:34:45,874
(channel) ต่างๆ ใน group นี้ เราจะต้องทำให้บอทที่เราเพิ่มเข้าไปเป็นผู้ดูแลระบบ

547
00:34:45,874 --> 00:34:49,159
(administrator) เพื่อให้บอทสามารถพูดใน group นี้ได้

548
00:34:49,159 --> 00:34:52,443
คลิกที่จุดสามจุดตรงนี้ ไปที่ group info คลิก manage

549
00:34:52,443 --> 00:34:55,470
เลื่อนลงมาตรงนี้คลิก administrators จากนั้น add

550
00:34:55,470 --> 00:34:58,755
administrator เลือกบอทที่เราสร้างไว้ เพราะบอทอยู่ใน

551
00:34:58,755 --> 00:35:02,619
group นั้นแล้ว แล้วตรวจสอบสิทธิ์ (permissions) ที่อยากให้บอท

552
00:35:02,619 --> 00:35:06,032
แล้วคลิก save ตอนนี้คุณจะเห็นว่าบอทของเรามีสิทธิ์เป็น

553
00:35:06,032 --> 00:35:09,188
admin แล้ว จากนั้นคลิก close ระหว่างที่อยู่ตรงนี้

554
00:35:09,188 --> 00:35:12,215
เราจะเปิดใช้งานสิ่งที่ผมเรียกว่าช่อง (channels)

555
00:35:12,215 --> 00:35:15,757
ด้วย โดยค่าเริ่มต้น Telegram ไม่ได้เปิดฟีเจอร์ channels

556
00:35:15,757 --> 00:35:19,428
หรือที่เรียกว่า topics ใน Telegram ให้คุณ ในการเปิดใช้งาน

557
00:35:19,428 --> 00:35:23,614
ให้คลิกที่ส่วน topics ตรงนี้ ซึ่งในกรณีของผมปิดอยู่โดยค่าเริ่มต้น

558
00:35:23,614 --> 00:35:27,800
คลิกที่มันแล้วเปิดใช้งานได้ จากนั้นตรงนี้คุณเลือกมุมมองที่ต้องการ

559
00:35:27,800 --> 00:35:30,892
ในกรณีนี้ผมจะเลือกตัวเลือกแบบ tabs แล้วคลิก save

560
00:35:30,892 --> 00:35:34,691
แล้วคลิก save อีกครั้ง จากนั้นปิดหน้านี้ได้ ทันทีที่เราเปิด

561
00:35:34,691 --> 00:35:38,298
topics คุณจะเห็นว่าเรามีช่องต่างๆ หลายช่องแล้ว เรามีช่อง

562
00:35:38,298 --> 00:35:41,518
all ที่จะเห็นข้อความทั้งหมดจากทุกช่อง และยังมีช่อง

563
00:35:41,518 --> 00:35:44,609
general ก่อนอื่นมาลองเปลี่ยนชื่อช่อง general กัน

564
00:35:44,609 --> 00:35:48,023
คลิกจุดสามจุดตรงนี้ ไปที่ edit แล้วตั้งชื่อช่องนี้ว่า

565
00:35:48,023 --> 00:35:51,565
orchestrator เพราะนี่คือช่องที่เราจะคุยกับบอทหลักของเรา

566
00:35:51,565 --> 00:35:54,785
คลิก save แล้วเราจะเริ่มคุยกับ orchestrator ที่นี่

567
00:35:54,785 --> 00:35:59,100
ขอผมส่งข้อความในแชทตรงนี้ดู เมื่อผมส่ง "hi" แล้วบอทของเรากำลังพิมพ์

568
00:35:59,100 --> 00:36:02,771
แปลว่า orchestrator อยู่ในแชทนี้แล้ว เราสามารถเริ่มคุยกับ

569
00:36:02,771 --> 00:36:06,442
orchestrator ได้ เราจะสร้างอีกสองช่อง แต่ยังไม่ถึงตอนนั้น

570
00:36:06,442 --> 00:36:11,079
ขอสร้างฐานรากให้เสร็จก่อน แล้วพอไปถึงตรงนั้น เราค่อยผ่านกระบวนการนั้นกัน

571
00:36:11,079 --> 00:36:14,685
พรอมป์ต์ทั้งหมดที่ผมจะใช้ในการ build ครั้งนี้สามารถหาได้

572
00:36:14,685 --> 00:36:18,034
ถ้าคุณสนใจ คุณสามารถรับมันได้ด้วยการสนับสนุนเล็กน้อย

573
00:36:18,034 --> 00:36:23,895
(token of support) บนเว็บไซต์ของผม หรือถ้าคุณเป็นสมาชิกคอมมูนิตี้ของผมก็สามารถรับได้เช่นกัน

574
00:36:23,895 --> 00:36:27,180
ถ้าอยากเป็นสมาชิกคอมมูนิตี้ ราคา 10 ดอลลาร์ต่อเดือน

575
00:36:27,180 --> 00:36:30,271
คุณจะสามารถเข้าถึงพรอมป์ต์ทั้งหมด เทมเพลตทั้งหมด

576
00:36:30,271 --> 00:36:35,552
และพรอมป์ต์บทช่วยสอนทั้งหมดที่ผมมีบนช่องได้ และนี่ยังช่วยสนับสนุนงานที่ผมทำอีกด้วย

577
00:36:35,552 --> 00:36:38,579
มีความพยายามอย่างมากในการสร้างบทช่วยสอนเหล่านี้

578
00:36:38,579 --> 00:36:41,799
แบบฟอร์มเหล่านี้ที่ผมให้คุณ โมเดล AI ที่ผมใช้ในการ

579
00:36:41,799 --> 00:36:49,077
build ก็ค่อนข้างแพงเช่นกัน ผมจึงต้องการการสนับสนุนเล็กน้อยเพื่อช่วยให้ผมสามารถนำบทช่วยสอนเหล่านี้มาสู่คุณต่อไปได้

580
00:36:49,077 --> 00:36:52,812
ถ้าอยากเข้าร่วมกลุ่มสมาชิกของผม ผมยินดีต้อนรับคุณอย่างยิ่ง

581
00:36:52,812 --> 00:36:57,127
เรายังมีช่อง Telegram ที่คุณสามารถเข้าถึงตัวผมหรือทุกคนในคอมมูนิตี้

582
00:36:57,127 --> 00:37:01,442
ถามคำถามอะไรก็ได้ แล้วทุกคนที่นั่นยินดีช่วยเหลือคุณกับคำถามที่คุณมี

583
00:37:01,442 --> 00:37:04,662
และผมยังสร้างตัวติดตั้งอัตโนมัติ (auto installers)

584
00:37:04,662 --> 00:37:09,685
ด้วย เช่น สำหรับการตั้งค่าที่ผมกำลังสร้าง ผมกำลังสร้างตัวติดตั้งอัตโนมัติที่จะ

585
00:37:09,685 --> 00:37:16,061
build ทั้งหมดให้คุณภายในไม่ถึง 5 นาที และสิ่งนี้จะพร้อมให้สมาชิกคอมมูนิตี้หรือสมาชิกของผมใช้เช่นกัน

586
00:37:16,061 --> 00:37:19,797
ถ้าอยากเข้าร่วม ผมยินดีต้อนรับคุณ สิ่งที่ผมทำตอนนี้คือย้าย

587
00:37:19,797 --> 00:37:22,952
Telegram ไปทางซ้าย และวางพรอมป์ต์ทั้งหมดไว้ทางขวา

588
00:37:22,952 --> 00:37:26,366
เพื่อให้คัดลอกได้ง่ายขึ้น เมื่อไหร่ก็ตามที่คุณตั้งค่า

589
00:37:26,366 --> 00:37:29,650
Hermes ครั้งแรก บอทไม่รู้ว่าคุณเป็นใคร บอทไม่มีชื่อ

590
00:37:29,650 --> 00:37:32,999
บอทไม่รู้ว่ามันจะช่วยคุณในสิ่งที่คุณอยากทำได้อย่างไร

591
00:37:32,999 --> 00:37:37,185
สิ่งแรกที่ผมแนะนำผู้ใช้เสมอคือ "เฮ้ ให้บอทเข้าใจก่อนว่าคุณเป็นใคร

592
00:37:37,185 --> 00:37:40,212
ตั้งชื่อให้บอท บอกชื่อคุณให้บอทรู้ และบอกคร่าวๆ

593
00:37:40,212 --> 00:37:44,076
ว่ามันจะช่วยคุณได้อย่างไร" พรอมป์ต์แรกที่ผมจะให้บอทคืออันนี้

594
00:37:44,076 --> 00:37:47,941
"ชื่อของคุณคือ orchestrator คุณจะเป็นผู้ประสานงานระดับสูงสุด

595
00:37:47,941 --> 00:37:51,290
(top level coordinator) สำหรับการตั้งค่า multi-agent

596
00:37:51,290 --> 00:37:56,506
ของผม และผมคือเจ้าของและมีอำนาจสูงสุด" แล้วตรงนี้คุณจะกรอกชื่อของคุณให้เอเจนต์รู้

597
00:37:56,506 --> 00:38:00,628
คุณจะให้ชื่อบรานด์ของคุณแก่เอเจนต์ ให้แฮนเดิลโซเชียลมีเดียของคุณ

598
00:38:00,628 --> 00:38:04,685
เพราะจำไว้ว่าเรากำลังสร้างเครื่องจักรสร้างคอนเทนต์โซเชียลมีเดีย

599
00:38:04,685 --> 00:38:08,034
คุณจะบอกเอเจนต์ว่าบรานด์ของคุณสอนอะไร อันนี้สำคัญมาก

600
00:38:08,034 --> 00:38:15,312
เพราะเราจะมีแดชบอร์ดที่สร้างไอเดียให้เรา และเพื่อให้เอเจนต์สามารถสร้างไอเดียคอนเทนต์หรือไอเดียโพสต์เหล่านี้ให้คุณ

601
00:38:15,312 --> 00:38:20,786
พวกมันต้องเข้าใจว่าคุณกำลังสร้างอะไร นี่คือเหตุผลที่ส่วนนี้สำคัญแบบไม่สามารถต่อรองได้

602
00:38:20,786 --> 00:38:24,135
คุณยังสามารถบอกเอเจนต์ได้ว่ากลุ่มเป้าหมาย (audience)

603
00:38:24,135 --> 00:38:27,162
ของคุณคือใครและอื่นๆ ผมจะคัดลอกอันนี้ วางตรงนี้

604
00:38:27,162 --> 00:38:30,189
แล้วกรอกข้อมูลในส่วนต่างๆ สำหรับการ build ของผม

605
00:38:30,189 --> 00:38:33,216
ตรงนี้ผมบอกว่า "เฮ้ ผมชื่อ Larry บรานด์ของผมคือ

606
00:38:33,216 --> 00:38:36,371
Komputer Mechanic แฮนเดิลโซเชียลของผมคือ komputer

607
00:38:36,371 --> 00:38:39,463
mechanic และตรงนี้ผมสอนนักสร้างเทคนิค (technical

608
00:38:39,463 --> 00:38:43,971
builders) ให้สร้างเอเจนต์ AI และระบบอัตโนมัติ กลุ่มเป้าหมายของผมคือใคร

609
00:38:43,971 --> 00:38:47,127
น้ำเสียงของผมคืออะไร และเขตเวลาทำงานของผมคืออะไร"

610
00:38:47,127 --> 00:38:50,282
เขตเวลาทำงานสำคัญ เช่น ตอนที่เอเจนต์สร้างงาน cron

611
00:38:50,282 --> 00:38:54,082
เอเจนต์จะได้รู้ว่าควรติดต่อคุณตอนไหน ตอนนี้ผมจะส่งอันนี้ให้

612
00:38:54,082 --> 00:38:58,784
orchestrator เพื่อให้มันรู้จักว่าผมเป็นใคร และเรากำลังจะสร้างอะไรในวันนี้

613
00:38:58,784 --> 00:39:01,810
จากนั้น orchestrator ตอบกลับว่า "เฮ้ เข้าใจแล้ว

614
00:39:01,810 --> 00:39:05,031
ผมคือ orchestrator และคุณคือ Larry บรานด์ของคุณคือ

615
00:39:05,031 --> 00:39:08,380
Komputer Mechanic และคอนเทนต์ของคุณเป็นแบบตรงไปตรงมา

616
00:39:08,380 --> 00:39:14,240
สอนนักสร้างให้สร้างเอเจนต์และระบบอัตโนมัติ" พรอมป์ต์สองอันถัดไปนี้คือสิ่งที่ผมแนะนำให้คุณทำ

617
00:39:14,240 --> 00:39:17,525
พรอมป์ต์ที่สองคือการบอกให้ orchestrator สัมภาษณ์คุณ

618
00:39:17,525 --> 00:39:21,324
สิ่งที่คุณให้ orchestrator ตรงนี้คือกระดูกสันหลังหรือรากฐาน

619
00:39:21,324 --> 00:39:24,738
แต่ยังมีอีกมากที่คุณให้เอเจนต์เรียนรู้เกี่ยวกับคุณได้

620
00:39:24,738 --> 00:39:29,890
ดังนั้นใช้เวลากับพรอมป์ต์นี้ เพราะมันจะถามคำถามคุณเพื่อทำความเข้าใจว่าคุณเป็นใคร

621
00:39:29,890 --> 00:39:34,656
การตั้งค่าที่อยากสร้าง กลุ่มเป้าหมาย และอื่นๆ แต่ผมจะข้ามอันนี้ในบทช่วยสอน

622
00:39:34,656 --> 00:39:37,940
เพราะเดี๋ยวบทช่วยสอนจะยาวเกินไป เพราะสำหรับการทดสอบ

623
00:39:37,940 --> 00:39:42,255
มันจะถามคุณประมาณ 10-15 คำถาม ผมจะข้ามเพื่อไม่ให้บทช่วยสอนยาวเกินไป

624
00:39:42,255 --> 00:39:45,669
สิ่งที่สองที่ผมแนะนำคือกฎการปฏิบัติงานถาวร (permanent

625
00:39:45,669 --> 00:39:49,275
operating rules) เวลาทำงานกับเอเจนต์ แนะนำเสมอให้เอเจนต์

626
00:39:49,275 --> 00:39:52,367
ให้แผนกับคุณเสมอก่อนที่จะทำอะไรก็ตามที่มันอยากทำ

627
00:39:52,367 --> 00:39:58,098
และเมื่อเอเจนต์กำลังทำงาน คุณอยากให้เอเจนต์อัปเดตคุณตลอดกระบวนการว่ามันกำลังสร้างอะไรอยู่

628
00:39:58,098 --> 00:40:02,285
มิฉะนั้นบางครั้งคุณก็จะนั่งอยู่ในความมืด ไม่รู้ว่างานเสร็จหรือยัง

629
00:40:02,285 --> 00:40:05,698
นี่คือเหตุผลที่ผมเตรียมกฎการปฏิบัติงานถาวรเหล่านี้ไว้

630
00:40:05,698 --> 00:40:10,850
ซึ่งคุณสามารถให้เอเจนต์ของคุณได้เช่นกัน มันเป็นตัวเลือกว่าคุณอยากมีมันไว้หรือไม่

631
00:40:10,850 --> 00:40:14,006
ผมจะข้ามส่วนนี้ไปเช่นกัน ไม่งั้นในการ build ของผม

632
00:40:14,006 --> 00:40:18,450
orchestrator จะถามหาวางแผนตลอดเวลาว่าผมต้องพิมพ์อนุมัติก่อนที่มันจะทำ

633
00:40:18,450 --> 00:40:22,314
และนั่นจะทำให้การ build ช้าลง ตอนนี้เราจะเริ่มส่วนหลักของการ

634
00:40:22,314 --> 00:40:26,114
build เราจะบอก orchestrator ว่า "เฮ้ เราจะสร้างเอเจนต์ต่างๆ

635
00:40:26,114 --> 00:40:30,300
ขึ้นมา เราจะสร้างเอเจนต์อย่าง Atlas ที่ดูแลการสร้างไอเดียคอนเทนต์

636
00:40:30,300 --> 00:40:33,327
carousel เราจะมี Vera เป็นนักเขียน เราจะมี Kite

637
00:40:33,327 --> 00:40:36,418
เป็นนักออกแบบ และ Kite ยังเป็นนักพัฒนาของเราด้วย

638
00:40:36,418 --> 00:40:39,638
และเราจะมี Orion เป็นนักเผยแพร่ที่เผยแพร่สิ่งต่างๆ

639
00:40:39,638 --> 00:40:43,438
ไปยังช่องทางที่เราต้องการ" และตรงนี้เรากำลังให้ภาพรวมคร่าวๆ

640
00:40:43,438 --> 00:40:47,044
แก่ orchestrator ว่าอยากสร้างอะไร และเราบอก orchestrator

641
00:40:47,044 --> 00:40:50,522
ว่า "เฮ้ คุณเป็นหนึ่งในห้าเอเจนต์ที่เราจะสร้างอยู่แล้ว

642
00:40:50,522 --> 00:40:54,129
คุณจะเป็นเอเจนต์หลัก และคุณคือคนที่ผมกำลังคุยด้วยตอนนี้"

643
00:40:54,129 --> 00:40:57,478
และที่สำคัญ ผมบอกมันว่าตอนที่มันสร้างโปรไฟล์เหล่านี้

644
00:40:57,478 --> 00:41:00,955
มันไม่ควรสร้างโปรไฟล์ให้ตัวเอง เพราะผมเคยทดสอบกับโมเดล

645
00:41:00,955 --> 00:41:04,498
AI บางตัวที่สร้างโปรไฟล์ให้ตัวเองด้วย ซึ่งไม่สมเหตุสมผล

646
00:41:04,498 --> 00:41:09,135
นี่คือเหตุผลที่ผมบอกมันตรงนี้ว่า "คุณไม่จำเป็นต้องสร้างโปรไฟล์ให้ตัวเอง"

647
00:41:09,135 --> 00:41:13,772
ผมจะคัดลอกพรอมป์ต์นี้และให้ orchestrator เพื่อเตรียมมันว่าอะไรจะถูกสร้าง

648
00:41:13,772 --> 00:41:17,249
แล้วผมยังบอกมันว่า "เฮ้ ยืนยันว่าคุณเข้าใจแผน ห้าบทบาท

649
00:41:17,249 --> 00:41:21,113
และการแมปชื่อโปรไฟล์ ก่อนที่คุณจะไปเปลี่ยนแปลงหรือสร้างอะไร"

650
00:41:21,113 --> 00:41:25,364
และสิ่งที่ผมชอบเกี่ยวกับ Hermes คือ เมื่อไหร่ก็ตามที่คุณส่งอะไรให้

651
00:41:25,364 --> 00:41:30,130
Hermes ที่มันเห็นว่ามีประโยชน์ในระยะยาว มันจะบันทึกสิ่งนั้นลงในหน่วยความจำ

652
00:41:30,130 --> 00:41:33,350
(memory) นี่คือเหตุผลที่คุณจะเห็นข้อความแบบ memory

653
00:41:33,350 --> 00:41:36,892
เสมอ นั่นหมายความว่ามีบางอย่างถูกเขียนลงหน่วยความจำแล้ว

654
00:41:36,892 --> 00:41:41,465
และยังไงก็ตาม cadence คือชื่อที่ผมตั้งให้กับระบบปฏิบัติการสร้างคอนเทนต์

655
00:41:41,465 --> 00:41:45,780
(content creating OS) ที่เราจะทำงานด้วยวันนี้ จากนั้นมันก็แค่บอกว่า

656
00:41:45,780 --> 00:41:48,935
"ห้าบทบาทของ Cadence คือ orchestrator ซึ่งก็คือผม

657
00:41:48,935 --> 00:41:52,220
และโปรไฟล์อื่นๆ ที่เราจะสร้าง" และมันบอกว่า "คุณคือ

658
00:41:52,220 --> 00:41:57,759
Larry เจ้าของและผู้มีอำนาจตัดสินใจสูงสุด" พรอมป์ต์ถัดไปนี้จะเป็นพรอมป์ต์ที่สำคัญที่สุด

659
00:41:57,759 --> 00:42:00,850
นี่คือพรอมป์ต์ที่จะสร้างเอเจนต์ AI ที่เราต้องการ

660
00:42:00,850 --> 00:42:04,263
ผมจะส่งพรอมป์ต์นี้ให้ orchestrator ผมบอก orchestrator

661
00:42:04,263 --> 00:42:07,934
ว่า "เฮ้ สร้าง hermes profiles แบบ persistent ห้าโปรไฟล์"

662
00:42:07,934 --> 00:42:14,761
เหตุผลที่ผมใช้คำว่า persistent ก็เพราะ Hermes ยังสามารถสร้างเอเจนต์ที่ถูกเรียกเข้ามาทำงานแล้วก็ตายจากไปได้

663
00:42:14,761 --> 00:42:18,625
(แบบชั่วคราว) แต่สิ่งที่ผมอยากสร้างคือเอเจนต์ที่ถูกสร้างถาวร

664
00:42:18,625 --> 00:42:22,618
หมายความว่าเมื่อไหร่ก็ตามที่เราต้องการ พวกมันจะอยู่ตรงนั้นเสมอ

665
00:42:22,618 --> 00:42:25,774
และเวลาสร้างเอเจนต์กับ Hermes จะมีเอเจนต์เริ่มต้น

666
00:42:25,774 --> 00:42:29,767
(default agent) หนึ่งตัวเสมอ มีเอเจนต์หนึ่งตัวที่อยู่บนสุดเสมอ

667
00:42:29,767 --> 00:42:35,370
ซึ่งก็คือ default agent และใต้ default agent คุณสามารถมีเอเจนต์ได้กี่ตัวก็ได้ตามต้องการ

668
00:42:35,370 --> 00:42:39,749
แต่จะมีเอเจนต์หนึ่งตัวอยู่บนสุดเสมอ นี่คือเหตุผลที่ในการตั้งค่าของผม

669
00:42:39,749 --> 00:42:43,227
ผมมักทำให้ default agent ที่อยู่บนสุดเป็น orchestrator

670
00:42:43,227 --> 00:42:46,705
แล้วมันก็สร้างเอเจนต์อื่นๆ ที่ทำงานใต้มัน ตัวอย่างเช่น

671
00:42:46,705 --> 00:42:49,732
ถ้ามีคนถามว่าสามารถมี orchestrator สองตัวได้ไหม

672
00:42:49,732 --> 00:42:53,660
โดยหลักการแล้วคุณมี orchestrator สองตัวได้ แต่นั่นหมายความว่า

673
00:42:53,660 --> 00:42:57,202
orchestrator หนึ่งตัวจะต้องอยู่ใต้ default orchestrator

674
00:42:57,202 --> 00:43:00,809
ซึ่งก็ทำได้เช่นกัน สุดท้ายก็แล้วแต่คุณว่าจะกำหนดค่ายังไง

675
00:43:00,809 --> 00:43:03,900
ในการสร้างโปรไฟล์ให้เอเจนต์ คุณต้องบอกเอเจนต์ว่า

676
00:43:03,900 --> 00:43:07,120
"เฮ้ ฉันในฐานะเอเจนต์คืออะไร" สำหรับเอเจนต์ทั้งหมด

677
00:43:07,120 --> 00:43:10,856
เราบอก orchestrator ให้เพิ่มข้อมูลนี้ลงในเอกสารที่เรียกว่า

678
00:43:10,856 --> 00:43:14,011
soul.md ดังนั้น soul.md คือเอกสารที่บอกเอเจนต์ว่า

679
00:43:14,011 --> 00:43:17,747
"เฮ้ ผมชื่อ Larry นี่คือสิ่งที่ผมทำ นี่คือคนที่ผมทำงานด้วย

680
00:43:17,747 --> 00:43:21,868
นี่คือระบบที่เราทำงานด้วย" และอื่นๆ นี่คือเหตุผลที่ในพรอมป์ต์นี้

681
00:43:21,868 --> 00:43:26,699
สำหรับเอเจนต์ทั้งหมด ผมบอก orchestrator ว่ามันควรใส่อะไรในคำอธิบายของพวกมัน

682
00:43:26,699 --> 00:43:30,112
ตัวอย่างเช่น สำหรับ Scout ผมบอกว่า "เฮ้ ชื่อของคุณคือ

683
00:43:30,112 --> 00:43:33,203
Scout คุณเป็นหน่วยสอดแนมคอนเทนต์ (content scout)

684
00:43:33,203 --> 00:43:36,295
ของ Cadence Studio งานของคุณคือหาไอเดีย carousel

685
00:43:36,295 --> 00:43:39,322
สำหรับ Instagram และ TikTok ที่สดใหม่และสะดุดตา

686
00:43:39,322 --> 00:43:43,443
แล้วค้นคว้าข้อเท็จจริงเบื้องหลังมัน" ดังนั้นสำหรับเอเจนต์ทั้งหมด

687
00:43:43,443 --> 00:43:46,728
ผมบอกพวกมันว่าพวกมันจะทำอะไร ตัวอย่างเช่น Kite Kite

688
00:43:46,728 --> 00:43:49,884
ก็จะเป็นนักออกแบบของเราและยังเป็นวิศวกรของเราด้วย

689
00:43:49,884 --> 00:43:53,619
ผมจึงอธิบายสิ่งที่ Kite ทำเพื่อให้มันเข้าใจว่ามันทำงานอะไร

690
00:43:53,619 --> 00:43:56,710
เมื่อไหร่ก็ตามที่คุณเริ่มเซสชันแชทใหม่กับเอเจนต์

691
00:43:56,710 --> 00:44:03,408
พวกมันจะโหลด soul.md ของตัวเองเสมอ นี่คือเหตุผลที่แนะนำอย่างยิ่งให้เราอธิบายรายละเอียดว่าเอเจนต์จะทำอะไร

692
00:44:03,408 --> 00:44:07,401
คุณสามารถเปลี่ยนข้อความได้ตามที่ต้องการ ให้เข้ากับสิ่งที่คุณทำ

693
00:44:07,401 --> 00:44:10,686
ตัวอย่างเช่น ในกรณีของผม ผมบอก Instagram และ TikTok

694
00:44:10,686 --> 00:44:13,777
แต่บางทีคุณอาจอยากได้ LinkedIn ด้วยหรืออะไรก็ตาม

695
00:44:13,777 --> 00:44:17,448
คุณสามารถเพิ่มมันตรงนี้ได้เช่นกัน orchestrator ตอบกลับว่า

696
00:44:17,448 --> 00:44:20,604
"เสร็จแล้ว ผมสร้าง hermes profiles แบบ persistent

697
00:44:20,604 --> 00:44:25,048
ห้าโปรไฟล์ แต่ละโปรไฟล์มี soul.md ของตัวเอง" แล้วคุณจะเห็นตรงนี้เรามี

698
00:44:25,048 --> 00:44:28,461
Scout ซึ่งคือ Atlas, Scribe ซึ่งคือ Vera, Dev ซึ่งคือ

699
00:44:28,461 --> 00:44:33,098
Kite และ Rich ซึ่งคือ Orion และมันยังยืนยันว่าโปรไฟล์เหล่านั้นมีอยู่จริง

700
00:44:33,098 --> 00:44:36,511
ถ้าคุณอยากยืนยันด้วยตัวเอง เพราะบางครั้งเอเจนต์ก็หลอน

701
00:44:36,511 --> 00:44:40,118
(hallucinate) ได้ มันเป็นไปได้ที่ orchestrator บอกคุณว่า

702
00:44:40,118 --> 00:44:43,467
"เฮ้ ผมสร้างเอเจนต์แล้ว" แต่จริงๆ แล้วมันไม่ได้สร้าง

703
00:44:43,467 --> 00:44:47,717
โดยเฉพาะถ้าคุณไม่ได้ใช้โมเดลที่ดีมาก คุณสามารถตรวจสอบด้วยตัวเองได้

704
00:44:47,717 --> 00:44:50,744
เข้ามาที่เทอร์มินัลของคุณแล้วพิมพ์คำสั่ง hermes

705
00:44:50,744 --> 00:44:55,961
profile list แล้วกด enter คำสั่งนี้จะแสดงรายการโปรไฟล์ทั้งหมดที่คุณมีในการตั้งค่า

706
00:44:55,961 --> 00:44:59,052
Hermes คุณจะเห็นว่าในกรณีของผมมี default ซึ่งคือ

707
00:44:59,052 --> 00:45:02,852
orchestrator และเอเจนต์สี่ตัวที่เราสร้าง ตรงนี้คุณจะเห็นว่า

708
00:45:02,852 --> 00:45:06,523
gateway ไม่ได้กำลังรันอยู่ gateway หยุดอยู่ ซึ่งไม่เป็นไร

709
00:45:06,523 --> 00:45:10,194
เพราะเราอยากให้ gateway เปิดใช้งานเฉพาะตอนที่เอเจนต์ทำงาน

710
00:45:10,194 --> 00:45:13,736
เราจึงยืนยันว่า orchestrator สร้างเอเจนต์ทั้งหมดนี้จริง

711
00:45:13,736 --> 00:45:16,892
พรอมป์ต์นี้ก็สำคัญมากๆ เช่นกัน ในพรอมป์ต์นี้ผมบอก

712
00:45:16,892 --> 00:45:22,688
orchestrator ให้กำหนดสิ่งนี้ให้แต่ละเอเจนต์ ผมอยากให้ทุกเอเจนต์มีหน่วยความจำเฉพาะของตัวเอง

713
00:45:22,688 --> 00:45:27,711
(dedicated memory) ลองนึกภาพว่าคุณมีห้าเอเจนต์ ทุกเอเจนต์มีบทบาทเฉพาะของตัวเอง

714
00:45:27,711 --> 00:45:31,511
มันจะเละเทะถ้าเอเจนต์ทั้งหมดแชร์ไฟล์หน่วยความจำไฟล์เดียวกัน

715
00:45:31,511 --> 00:45:34,538
เอเจนต์มักเขียนข้อมูลระยะยาวลงในไฟล์ที่เรียกว่า

716
00:45:34,538 --> 00:45:38,595
memory.md ถ้าเอเจนต์ทั้งห้าตัวใช้ไฟล์เดียวกัน มันจะเละเทะแน่นอน

717
00:45:38,595 --> 00:45:41,880
orchestrator จะทิ้งความทรงจำระยะยาวของมันลงไปในนั้น

718
00:45:41,880 --> 00:45:45,873
มันจะเละเทะ และยิ่งไปกว่านั้น มันจะทำให้ไฟล์หน่วยความจำหนักมาก

719
00:45:45,873 --> 00:45:49,351
และจำไว้ว่า ยิ่งไฟล์ memory.md ใหญ่เท่าไหร่ คุณยิ่งใช้

720
00:45:49,351 --> 00:45:54,632
token มากขึ้นเท่านั้น นี่คือเหตุผลที่ผมชอบให้ทุกเอเจนต์มีหน่วยความจำเฉพาะของตัวเอง

721
00:45:54,632 --> 00:45:58,431
เพื่อให้ทุกเอเจนต์ เขียนข้อมูลของตัวเองลงในพื้นที่ของตัวเอง

722
00:45:58,431 --> 00:46:02,167
และทุกเอเจนต์ก็จะมีตัวตนเฉพาะ โฟลเดอร์เฉพาะ และขอบเขตบทบาท

723
00:46:02,167 --> 00:46:08,285
(role boundaries) ของตัวเอง ตรงนี้เราบอกให้ทุกเอเจนต์ทำเฉพาะสิ่งที่อยู่ในบทบาทของตัวเองเท่านั้น

724
00:46:08,285 --> 00:46:11,312
ตัวอย่างเช่น ถ้าผมไปหาเอเจนต์ที่ทำงานวิจัยอย่าง

725
00:46:11,312 --> 00:46:14,339
Scout แล้วบอกว่า "เฮ้ สร้างแดชบอร์ดให้ฉันหน่อย"

726
00:46:14,339 --> 00:46:17,430
Scout จะตอบว่า "เฮ้ ไม่น่าจะใช่ผมนะ คุณน่าจะไปหา

727
00:46:17,430 --> 00:46:23,226
Dev เพราะเขาเป็นนักพัฒนา" อันนี้สำคัญมาก เพราะลองนึกภาพว่าคุณมีเอเจนต์การเงินที่อาจเข้าถึง

728
00:46:23,226 --> 00:46:27,799
PayPal ของคุณ เข้าถึง Stripe และอื่นๆ และคุณให้กฎเฉพาะกับเอเจนต์การเงิน

729
00:46:27,799 --> 00:46:31,663
เช่น "ห้ามถอนเงินจากบัญชีของฉัน" เอเจนต์การเงินรู้กฎเหล่านี้

730
00:46:31,663 --> 00:46:37,395
แต่ถ้าเอเจนต์อีกตัวเข้ามาทำสิ่งนั้นโดยที่ไม่รู้ด้วยซ้ำว่ากฎที่คุณให้เอเจนต์การเงินคืออะไร

731
00:46:37,395 --> 00:46:42,805
เอเจนต์นั้นก็อาจทำให้การตั้งค่าของคุณพังได้ นี่คือเหตุผลที่ผมมีขอบเขตบทบาทแบบนี้เสมอ

732
00:46:42,805 --> 00:46:45,896
ให้ทุกเอเจนต์เข้าใจว่าบทบาทเฉพาะของตัวเองคืออะไร

733
00:46:45,896 --> 00:46:49,181
และตรงนี้ orchestrator ก็จัดการเรื่องนี้ให้เรา แล้ว

734
00:46:49,181 --> 00:46:52,723
orchestrator ก็ทำเสร็จ เอเจนต์ทั้งหมดมีหน่วยความจำเฉพาะ

735
00:46:52,723 --> 00:46:55,814
และมันยังสร้างโฟลเดอร์เฉพาะให้เอเจนต์ทั้งหมดด้วย

736
00:46:55,814 --> 00:46:59,163
และมันยังทดสอบขอบเขตบทบาท เช่น มันถาม Vera ว่า "Vera

737
00:46:59,163 --> 00:47:02,319
เขียนโค้ดให้ฉันหน่อยได้ไหม" แล้ว Vera ตอบว่า "เฮ้

738
00:47:02,319 --> 00:47:05,990
นั่นเป็นหน้าที่ของ Kite" และมันยังถาม Kite เรื่องการวิจัย

739
00:47:05,990 --> 00:47:10,820
Kite ก็ตอบว่า "นั่นเป็นหน้าที่ของ Atlas" นั่นหมายความว่าขอบเขตบทบาททำงานได้

740
00:47:10,820 --> 00:47:15,006
ในขั้นตอนถัดไป เราจะสร้างโฟลเดอร์โปรเจกต์ที่ใช้เก็บโปรเจกต์ของเรา

741
00:47:15,006 --> 00:47:18,999
และที่สำคัญมาก เราจะสร้างระบบฐานข้อมูลบันทึกการทำงานของเอเจนต์

742
00:47:18,999 --> 00:47:22,477
(agent logging database) เมื่อไหร่ก็ตามที่เอเจนต์ทำงาน

743
00:47:22,477 --> 00:47:27,694
เราอยากให้มันบันทึกสิ่งที่มันทำ เราจะสร้างฐานข้อมูลบันทึกการทำงานของเอเจนต์ขึ้นมา

744
00:47:27,694 --> 00:47:30,914
แนวคิดคือ ก่อนที่เอเจนต์จะส่งข้อความให้คุณว่า "เฮ้

745
00:47:30,914 --> 00:47:34,520
ผมทำงานนี้เสร็จแล้ว" เอเจนต์จะบันทึกชื่อของมันลงในรายการ

746
00:47:34,520 --> 00:47:37,869
บันทึกคำอธิบายว่ามันทำอะไร บันทึก timestamp ที่มันทำ

747
00:47:37,869 --> 00:47:42,442
และเขียนโมเดล AI ที่ใช้สำหรับงานนั้นๆ เราจะทำสิ่งนี้ด้วยสิ่งที่เรียกว่า

748
00:47:42,442 --> 00:47:46,564
SQLite เราจะสร้างเซิร์ฟเวอร์ฐานข้อมูลขนาดเล็กบนเซิร์ฟเวอร์ของเรา

749
00:47:46,564 --> 00:47:51,716
ที่เอเจนต์จะบันทึกกิจกรรมทั้งหมด ตัวอย่างเช่น ตอนที่เรามาที่แดชบอร์ดที่ผมจะสร้าง

750
00:47:51,716 --> 00:47:57,061
เมื่อคุณมาที่แท็บ agents คุณจะเห็น heat map ที่แสดงว่าเอเจนต์แต่ละตัวทำงานเมื่อไหร่

751
00:47:57,061 --> 00:48:00,732
และตรงนี้เอเจนต์ยังโพสต์งานที่มันทำ งานล่าสุดที่มันทำด้วย

752
00:48:00,732 --> 00:48:04,210
สิ่งนี้ให้ความโปร่งใสอย่างเต็มที่ว่าอะเจนต์กำลังทำอะไร

753
00:48:04,210 --> 00:48:09,491
เพื่อที่ว่าถ้าเอเจนต์ติดอยู่ที่ไหนสักแห่ง คุณจะรู้ว่าเอเจนต์ตัวนั้นไม่ได้ทำงานนั้น

754
00:48:09,491 --> 00:48:13,291
และยังไงก็ตาม นี่คือแดชบอร์ดที่เราจะสร้าง และสำหรับสิ่งนั้น

755
00:48:13,291 --> 00:48:18,958
ผมจะให้พรอมป์ต์นี้กับ orchestrator เพื่อสร้างระบบฐานข้อมูลบันทึกการทำงานของเอเจนต์ให้เรา

756
00:48:18,958 --> 00:48:22,436
แล้ว orchestrator ก็ทำระบบฐานข้อมูลบันทึกการทำงานเสร็จ

757
00:48:22,436 --> 00:48:25,592
และมันยังทำ smoke test ซึ่งเราจะเห็นว่า dev สร้าง

758
00:48:25,592 --> 00:48:29,198
cadence store โมเดล AI ที่มันใช้ สถานะว่ามันเสร็จสมบูรณ์

759
00:48:29,198 --> 00:48:32,676
และเวลาที่มันทำงานนี้ จำไว้ว่าเราได้สร้างฐานขึ้นมาแล้ว

760
00:48:32,676 --> 00:48:36,025
แต่เอเจนต์อื่นๆ ยังไม่รู้ ตอนนี้มีเพียง orchestrator

761
00:48:36,025 --> 00:48:41,048
เท่านั้นที่รู้ว่ามีฐานข้อมูลนี้อยู่ เราจึงต้องกระจายข่าวนี้ไปยังเอเจนต์ทั้งหมด

762
00:48:41,048 --> 00:48:45,878
แล้วบอก orchestrator ว่า "เฮ้ บันทึกกฎการปฏิบัติงานนี้ลงในหน่วยความจำของคุณ

763
00:48:45,878 --> 00:48:49,549
แล้วกระจายมันให้ Atlas, Vera และเอเจนต์อื่นๆ ทั้งหมดก่อน"

764
00:48:49,549 --> 00:48:52,705
และนี่คือคำสั่งที่เราจะให้พวกมัน "ก่อนส่งคำตอบใดๆ

765
00:48:52,705 --> 00:48:56,569
ให้บันทึกสิ่งที่คุณทำลงในตาราง cadence runs โดยรันคำสั่งนี้"

766
00:48:56,569 --> 00:49:00,562
นั่นจะเป็นคำสั่งที่คุณรันเพื่อแทรกสิ่งที่พวกมันทำลงในฐานข้อมูล

767
00:49:00,562 --> 00:49:06,745
ผมจะคัดลอกอันนี้และส่งให้มันติดตั้ง เพื่อให้แน่ใจว่าเอเจนต์ทั้งหมดรู้เกี่ยวกับการตั้งค่าที่เราทำ

768
00:49:06,745 --> 00:49:09,901
และหลังจากนั้นผมจะบอกมันว่า "เฮ้ ให้ทุกเอเจนต์รัน

769
00:49:09,901 --> 00:49:13,636
smoke test เพื่อที่พวกมันจะได้บันทึกบางอย่างลงในฐานข้อมูล"

770
00:49:13,636 --> 00:49:18,015
อันนี้จะช่วยให้เรารู้ว่าเอเจนต์ทั้งหมดเข้าถึงฐานข้อมูลที่เราสร้างได้

771
00:49:18,015 --> 00:49:23,747
เวลาที่เอเจนต์ทำงาน บางครั้งคุณจะได้พรอมป์ต์แบบนี้ที่คุณต้องอนุญาตให้มันรันคำสั่งบางอย่าง

772
00:49:23,747 --> 00:49:26,967
ในกรณีของผม คุณเลือก allow once (อนุญาตครั้งเดียว)

773
00:49:26,967 --> 00:49:30,187
หรือ allow เฉพาะเซสชันนี้ หรือจะเลือก allow always

774
00:49:30,187 --> 00:49:33,601
(อนุญาตเสมอ) เพื่อไม่ให้มันถามคุณทุกครั้ง แล้วก็เสร็จ

775
00:49:33,601 --> 00:49:37,594
จากนั้นมันก็ทำ smoke test ที่เอเจนต์ทั้งห้าตัวของเราทำการทดสอบ

776
00:49:37,594 --> 00:49:40,621
โดยบันทึกโมเดล AI ที่ใช้ เวลาที่ทำงาน และวันที่

777
00:49:40,621 --> 00:49:43,648
เวลาที่ทำงานงานนั้น ตอนนี้เราจะเข้าสู่ส่วนหลักๆ

778
00:49:43,648 --> 00:49:47,125
ส่วนหนึ่ง ตอนนี้คุณจะเห็นว่าเราส่งข้อความทั้งหมดในช่อง

779
00:49:47,125 --> 00:49:50,539
orchestrator เพราะจนถึงตอนนี้เราทำงานกับ orchestrator

780
00:49:50,539 --> 00:49:53,630
แต่ตอนนี้เราจะย้ายไปสู่ส่วนที่เริ่มสร้างแดชบอร์ด

781
00:49:53,630 --> 00:49:57,559
และสำหรับสิ่งนั้นเราจะไม่ใช้ orchestrator เราจะมีเอเจนต์เฉพาะ

782
00:49:57,559 --> 00:50:01,294
Kite ซึ่งเป็นนักออกแบบและนักพัฒนา ที่จะสร้างแดชบอร์ดให้เรา

783
00:50:01,294 --> 00:50:04,514
เพราะมันเป็นนักพัฒนา เราจะมีช่องที่สามซึ่งเรียกว่า

784
00:50:04,514 --> 00:50:09,666
studio และนั่นคือช่องที่เราใช้ระดมความคิดเกี่ยวกับคอนเทนต์ใหม่ที่จะสร้างและอื่นๆ

785
00:50:09,666 --> 00:50:12,758
ปัญหาคือ โดยค่าเริ่มต้น Telegram ไม่อนุญาตให้ใช้

786
00:50:12,758 --> 00:50:16,815
bot token อันเดียวคุยกับบอทหลายตัว ใน Telegram หนึ่งบอทต่อหนึ่ง

787
00:50:16,815 --> 00:50:20,744
token ดังนั้นถ้าเราอยากสร้างช่อง Telegram เฉพาะที่เราจะคุยกับ

788
00:50:20,744 --> 00:50:23,899
Kite เราก็ไม่สามารถใช้ bot token ของ orchestrator

789
00:50:23,899 --> 00:50:27,892
ได้ เราต้องสร้าง bot token เฉพาะสำหรับ Kite มีวิธีแก้ปัญหาอยู่

790
00:50:27,892 --> 00:50:31,177
อย่างที่ผมทำในวิดีโอก่อนๆ ที่เราสร้าง router plugin

791
00:50:31,177 --> 00:50:34,848
สิ่งที่ router ทำคือ เมื่อไหร่ก็ตามที่คุณส่งข้อความในช่อง

792
00:50:34,848 --> 00:50:38,583
มันจะผ่าน bot token เดียวนั้นก่อน แล้ว router จะพิจารณาว่า

793
00:50:38,583 --> 00:50:42,125
"เฮ้ นี่คือข้อความที่มาจากช่องของ orchestrator ขอส่งให้

794
00:50:42,125 --> 00:50:45,539
orchestrator" เช่นเดียวกัน ถ้าคุณมีเอเจนต์ที่เรียกว่า

795
00:50:45,539 --> 00:50:49,145
Scribe ข้อความมาจากช่อง Telegram ของ Scribe มันก็จะไปที่

796
00:50:49,145 --> 00:50:52,687
bot ตัวเดียวกัน แล้ว router พิจารณาว่า "เฮ้ อันนี้มาจาก

797
00:50:52,687 --> 00:50:55,714
thread 4" เพราะทุกช่องมี ID เฉพาะของตัวเอง ด้วย

798
00:50:55,714 --> 00:50:58,870
ID นั้น router จึงสามารถระบุได้ว่าข้อความมาจากไหน

799
00:50:58,870 --> 00:51:03,700
แล้วจัดส่งไปยังเอเจนต์นั้นๆ อันนี้มีประโยชน์มากถ้าคุณมีหลายช่องที่อยากสร้าง

800
00:51:03,700 --> 00:51:07,886
แต่ในการตั้งค่าของเรา เราจะสร้างแค่สามช่อง ผมจะโชว์วิธีแก้แบบอื่น

801
00:51:07,886 --> 00:51:12,717
เพราะในทุกบทช่วยสอน ผมพยายามนำเสนอสิ่งใหม่ๆ เพื่อให้คุณได้เรียนรู้สิ่งใหม่ๆ

802
00:51:12,717 --> 00:51:15,808
ด้วย สิ่งที่เราจะทำในการตั้งค่านี้คือ เราจะสร้าง

803
00:51:15,808 --> 00:51:20,187
bot token อีกอันโดยเฉพาะสำหรับ Kite นั่นหมายความว่าทุกข้อความที่ผ่าน

804
00:51:20,187 --> 00:51:23,601
gateway เฉพาะนี้หรือ bot token นี้จะไปที่ Kite โดยตรง

805
00:51:23,601 --> 00:51:26,692
แต่แล้วเราก็เจอความท้าทายอีกอย่าง โดยค่าเริ่มต้น

806
00:51:26,692 --> 00:51:32,166
เมื่อคุณสร้างช่องใน Telegram ข้อความทั้งหมดที่เราสร้างในช่องเหล่านี้จะผ่านบอทตัวเดียว

807
00:51:32,166 --> 00:51:35,515
ซึ่งในกรณีของเราตอนนี้ ทุกข้อความจะผ่าน orchestrator

808
00:51:35,515 --> 00:51:38,542
ซึ่งไม่สมเหตุสมผลใช่ไหม เราอยากให้ orchestrator

809
00:51:38,542 --> 00:51:43,050
ฟังเฉพาะในช่องของมัน และอยากให้ Kite ฟังเฉพาะในช่องที่เราจะสร้างให้มัน

810
00:51:43,050 --> 00:51:47,301
ดังนั้นสิ่งที่เราจะทำคือ เราจะบอก orchestrator ให้สร้างปลั๊กอินที่

811
00:51:47,301 --> 00:51:50,585
orchestrator จะฟังเฉพาะในช่องที่อุทิศให้มันเท่านั้น

812
00:51:50,585 --> 00:51:53,677
orchestrator จะไม่ไปฟังในช่องที่เราสร้างให้ Kite

813
00:51:53,677 --> 00:51:58,571
เด็ดขาด และเช่นเดียวกันกับ Kite Kite จะฟังเฉพาะช่องที่เราสร้างให้มันเท่านั้น

814
00:51:58,571 --> 00:52:02,500
ทุกอย่างจะเข้าใจได้ในไม่ช้า เชื่อผมเถอะ เพราะอันนี้ซับซ้อนมาก

815
00:52:02,500 --> 00:52:07,266
ผมมักจะแจ้งให้เอเจนต์ทราบล่วงหน้าเมื่อไหร่ก็ตามที่เราจะสร้างสิ่งที่ซับซ้อน

816
00:52:07,266 --> 00:52:12,933
เพื่อให้พวกมันรู้ว่ากำลังจะเกิดอะไรขึ้น ตรงนี้ผมส่งข้อความนี้เพื่อเตรียมมันว่าอยากทำอะไร

817
00:52:12,933 --> 00:52:16,346
ผมบอก orchestrator ว่า "เฮ้ เราจะสร้างบางอย่างด้วยกัน

818
00:52:16,346 --> 00:52:21,499
เป้าหมายคือ Kite จะสร้างแดชบอร์ดสตูดิโอของเรา และผมอยากคุยกับวิศวกรคนนี้โดยตรงใน

819
00:52:21,499 --> 00:52:24,590
group ของมันเอง ซึ่งมันจะมีบอทและตัวตนของตัวเอง"

820
00:52:24,590 --> 00:52:31,417
แล้วผมก็อธิบายว่าทำไมเราถึงต้องมีบอทตัวที่สอง คุณอ่านอันนี้ก็จะเข้าใจเหตุผลว่าทำไมเราถึงต้องมีบอทตัวที่สอง

821
00:52:31,417 --> 00:52:36,440
ผมกำลังบอกมันว่า "เฮ้ นี่คือสิ่งที่เราจะสร้าง" เพื่อให้มันเข้าใจว่าเราจะทำอะไร

822
00:52:36,440 --> 00:52:39,467
ระหว่างที่ orchestrator ทำงานนี้ เราจะต้องสร้าง

823
00:52:39,467 --> 00:52:42,623
bot token ตัวที่สองสำหรับ Kite เพราะจำไว้ว่า Kite

824
00:52:42,623 --> 00:52:46,873
จะต้องมี bot token เฉพาะของตัวเอง orchestrator ตอบกลับว่ามันเข้าใจ

825
00:52:46,873 --> 00:52:52,090
เป้าหมายคือให้ Kite มีตัวตนบน Telegram ของตัวเองที่เราสามารถพูดคุยกับมันได้โดยตรง

826
00:52:52,090 --> 00:52:55,825
แต่ก่อนอื่นเราต้องสร้างบอทนี้ให้ Kite ก่อน ในการทำเช่นนั้น

827
00:52:55,825 --> 00:52:59,303
เราจะกลับไปที่ BotFather ที่เราใช้สร้างบอทตัวแรกสำหรับ

828
00:52:59,303 --> 00:53:02,394
orchestrator แล้วสร้างบอทตัวที่สอง พิมพ์ /newbot

829
00:53:02,394 --> 00:53:05,936
เหมือนตอนแรกที่ทำกับ orchestrator แล้วตั้งชื่อบอทนี้ว่า

830
00:53:05,936 --> 00:53:09,543
KM Kite Content ขอเรียกว่า Content Kite ละกัน ผมจะคัดลอก

831
00:53:09,543 --> 00:53:14,438
username กด enter และเหมือนตอนที่ทำก่อนหน้านี้ ผมจะใช้ชื่อเดียวกันกับที่ตั้ง

832
00:53:14,438 --> 00:53:17,722
แต่จะลงท้ายด้วยคำว่า bot เพราะทุก username ของบอทใน

833
00:53:17,722 --> 00:53:21,329
Telegram ต้องลงท้ายด้วยคำว่า bot แล้วกด enter เราก็จะได้

834
00:53:21,329 --> 00:53:24,356
token เฉพาะสำหรับบอทตัวนี้ จำไว้ว่านี่คือ token

835
00:53:24,356 --> 00:53:27,640
ที่เรามีสำหรับ orchestrator และตอนนี้เราสร้าง token

836
00:53:27,640 --> 00:53:30,667
เฉพาะสำหรับ Kite แล้ว เราจะต้องเพิ่มบอทของ Kite

837
00:53:30,667 --> 00:53:34,402
นี้เข้ากับการตั้งค่า Hermes ของเราด้วย และในการทำอย่างนั้น

838
00:53:34,402 --> 00:53:37,687
ผมสร้างคำสั่งนี้ให้คุณแล้ว มาที่นี่ คัดลอกคำสั่งนี้

839
00:53:37,687 --> 00:53:40,843
กลับมาที่หน้าต่างเทอร์มินัลของคุณ ขอเคลียร์หน้าจอ

840
00:53:40,843 --> 00:53:44,063
สำคัญมาก ให้แน่ใจว่าคุณไม่ได้อยู่บน root คุณอยู่บน

841
00:53:44,063 --> 00:53:47,154
Larry หรือ user ใหม่ที่คุณสร้าง แล้ววางคำสั่งนี้

842
00:53:47,154 --> 00:53:50,568
คำสั่งนี้จะถามให้คุณใส่ bot token ผมจะรันคำสั่งตรงนี้

843
00:53:50,568 --> 00:53:53,659
แล้วมันจะบอกว่า "เฮ้ วาง Kite token ของคุณแล้วกด

844
00:53:53,659 --> 00:53:57,587
enter" ผมจะกลับไปที่ Telegram คลิกตรงนี้ ให้แน่ใจว่าคุณคัดลอก

845
00:53:57,587 --> 00:54:00,743
token ของ Kite ผมจะคลิกเพื่อคัดลอก ย่อหน้าต่างนี้

846
00:54:00,743 --> 00:54:04,607
กลับมาที่เทอร์มินัล แล้วคลิกขวาเพื่อวาง คีย์ถูกวางตรงนี้แล้ว

847
00:54:04,607 --> 00:54:08,343
หลังจากนั้นก็กด enter อันนี้จะบันทึกคีย์ลงในแดชบอร์ดของเรา

848
00:54:08,343 --> 00:54:11,627
กลับไปที่การตั้งค่าของเรา แล้วเข้าไปใน group ของเรา

849
00:54:11,627 --> 00:54:14,847
จากนั้นผมจะบอก orchestrator ว่า "ผมสร้าง bot token

850
00:54:14,847 --> 00:54:18,776
สำหรับ Kite แล้ว และผมได้เพิ่ม bot token เองในพื้นที่นี้แล้ว"

851
00:54:18,776 --> 00:54:21,867
ผมบอกให้มันตรวจสอบว่า token ที่ผมเพิ่มมีอยู่จริง

852
00:54:21,867 --> 00:54:27,213
และทำการตรวจสอบความถูกต้อง (sanity checks) สองสามอย่างเพื่อให้แน่ใจว่ามันจะทำงานกับ

853
00:54:27,213 --> 00:54:33,009
Kite ผมจะคัดลอกอันนี้แล้วส่งให้ orchestrator และอีกอย่างที่มีประโยชน์มากซึ่งผมแนะนำเสมอคือ

854
00:54:33,009 --> 00:54:38,612
เมื่อไหร่ก็ตามที่คุณให้เอเจนต์ทำงานที่ซับซ้อนซึ่งคุณไม่แน่ใจว่าเอเจนต์จะทำสำเร็จหรือไม่

855
00:54:38,612 --> 00:54:42,412
คุณสามารถให้ข้อมูลอ้างอิงถึงเอกสาร Hermes แก่เอเจนต์ได้เสมอ

856
00:54:42,412 --> 00:54:45,632
เช่น ถ้าผมบอกว่า "เฮ้ ถ้าคุณไม่แน่ใจ ให้ไปดูเอกสาร

857
00:54:45,632 --> 00:54:48,852
Hermes ในส่วนนี้" เพื่อให้เอเจนต์เข้าใจว่ามันควรจะ

858
00:54:48,852 --> 00:54:52,394
build สิ่งนี้อย่างไร จากนั้นผมได้รับการอนุมัติคำสั่งจาก

859
00:54:52,394 --> 00:54:55,679
orchestrator ผมคลิก always แล้ว orchestrator บอกว่า

860
00:54:55,679 --> 00:54:58,834
"เฮ้ ขั้นตอนที่หนึ่งเสร็จสมบูรณ์ มันยืนยันแล้วว่า

861
00:54:58,834 --> 00:55:01,926
token ที่เราเพิ่มมีอยู่จริง และมันยังบอกว่า "เฮ้

862
00:55:01,926 --> 00:55:05,275
บอทออนไลน์อยู่ เราสามารถส่งข้อความหา Kite โดยตรงได้"

863
00:55:05,275 --> 00:55:09,847
สิ่งที่เราจะทำตอนนี้คือสร้างช่องที่เราต้องการ เราจะสร้างช่องหนึ่งสำหรับ

864
00:55:09,847 --> 00:55:14,613
Kite และสร้างช่องหนึ่งสำหรับ studio ซึ่งเราใช้สำหรับระดมความคิดก่อนที่จะพา

865
00:55:14,613 --> 00:55:18,799
Kite เข้ามาในแชทนั้น ในการทำอย่างนั้น เราจะคลิกที่จุดสามจุดตรงนี้

866
00:55:18,799 --> 00:55:21,955
แต่คุณจะไม่เห็นตัวเลือกสร้าง group เราจะกลับมาที่

867
00:55:21,955 --> 00:55:25,304
all แล้วคลิกจุดสามจุดตรงนี้ จากนั้นคลิก create topic

868
00:55:25,304 --> 00:55:28,588
แล้วต้องตั้งชื่อ topic ในกรณีของเรา จะเรียกว่า Kite

869
00:55:28,588 --> 00:55:32,066
และเพราะ Kite จะเป็นนักพัฒนา ขอใส่อิโมจิแล็ปท็อปให้มัน

870
00:55:32,066 --> 00:55:35,093
แล้วคลิก create เมื่อไหร่ก็ตามที่คุณสร้าง topic

871
00:55:35,093 --> 00:55:38,571
ใหม่ ก่อนที่ topic จะถูกเปิดใช้งาน คุณต้องส่งข้อความใน

872
00:55:38,571 --> 00:55:41,598
topic นั้นก่อน สำหรับ topic ที่เรากำลังสร้างนี้

873
00:55:41,598 --> 00:55:44,753
เราจะต้องใช้ thread ID ของ topic นี้ เพราะด้วย ID

874
00:55:44,753 --> 00:55:47,909
นี้ orchestrator จะผูก topic นี้กับ Kite โดยเฉพาะ

875
00:55:47,909 --> 00:55:51,451
ในการเริ่มต้น group นี้ ผมจะคัดลอกพรอมป์ต์นี้แล้วส่งให้

876
00:55:51,451 --> 00:55:55,251
orchestrator ทันทีว่า "เฮ้ thread ID ของ topic นี้คืออะไร?"

877
00:55:55,251 --> 00:55:59,244
คุณสามารถส่งข้อความอะไรก็ได้ เราอาจส่ง "hi" เพื่อสร้างช่องก่อน

878
00:55:59,244 --> 00:56:02,851
แล้วตามด้วยข้อความอย่าง "thread ID ของ topic นี้คืออะไร"

879
00:56:02,851 --> 00:56:06,071
ผมจะโชว์วิธีนั้นให้ดูด้วย ตอนนี้ Kite ถูกสร้างแล้ว

880
00:56:06,071 --> 00:56:09,226
เรามี Telegram topic ID เรามี thread ID กลับมาที่

881
00:56:09,226 --> 00:56:12,897
all แล้วคลิก create topic เราจะสร้าง topic ถัดไปซึ่งก็คือ

882
00:56:12,897 --> 00:56:17,341
studio จำไว้ว่า studio คือที่ที่เราจะระดมความคิดเกี่ยวกับคอนเทนต์ใหม่

883
00:56:17,341 --> 00:56:21,205
โปรโมชัน ไอเดีย และอื่นๆ ผมจะเรียกมันว่า Ideas พร้อมไอคอนนี้

884
00:56:21,205 --> 00:56:25,649
แล้วคลิก create และเพื่อกระตุ้นการสร้างมัน ผมจะใช้ข้อความต้อนรับอย่าง

885
00:56:25,649 --> 00:56:29,578
"เฮ้ topic ID ของ group นี้คืออะไร" แล้วตรงนี้เราก็จะได้คำตอบ

886
00:56:29,578 --> 00:56:32,798
จำไว้ว่าเราสร้าง Kite แล้ว แต่ยังเป็น orchestrator

887
00:56:32,798 --> 00:56:36,082
ที่เราคุยด้วยอยู่ เพราะ Kite ยังไม่ถูกเพิ่มเข้าไปใน

888
00:56:36,082 --> 00:56:39,496
group นี้เลย ข้อความทั้งหมดที่คุณเห็นตรงนี้ ทั้งคำตอบ

889
00:56:39,496 --> 00:56:42,716
thread ID ของ Kite และคำตอบ ID ของ studio ยังมาจาก

890
00:56:42,716 --> 00:56:45,743
orchestrator ทั้งหมด ตอนนี้เรามี thread ID แล้ว

891
00:56:45,743 --> 00:56:49,221
เราจะส่งข้อความไปที่ orchestrator ว่า "เฮ้ ตอนนี้เรามี

892
00:56:49,221 --> 00:56:52,569
thread IDs แล้ว เราอยากให้คุณเดินสาย (wire) Telegram

893
00:56:52,569 --> 00:56:55,725
group ของเรา" ผมจะให้ Telegram group ID ของ group

894
00:56:55,725 --> 00:56:59,396
ปัจจุบันแก่ orchestrator และให้ thread IDs ของทุกช่องด้วย

895
00:56:59,396 --> 00:57:02,552
เพื่อที่มันจะมี thread ID ของที่ที่ผมคุยกับมัน มี

896
00:57:02,552 --> 00:57:05,708
thread ID ของ Kite และ thread ID ของ group studio

897
00:57:05,708 --> 00:57:10,151
จากนั้นด้วยสิ่งนี้เท่านั้นมันถึงจะผูกช่องต่างๆ เข้ากับเอเจนต์เฉพาะได้

898
00:57:10,151 --> 00:57:13,887
orchestrator จะเข้าถึงช่องที่เราคุยกับมัน และ orchestrator

899
00:57:13,887 --> 00:57:17,236
ก็จะเข้าถึงช่อง studio ด้วย เพราะนั่นคือสิ่งที่เราจะ

900
00:57:17,236 --> 00:57:20,649
ใช้ระดมความคิดกับมันในช่อง studio เพราะมันเป็นเจ้านาย

901
00:57:20,649 --> 00:57:24,127
แต่ Kite จะฟังเฉพาะในช่องนี้ และ Kite จะไม่เข้าถึงช่อง

902
00:57:24,127 --> 00:57:28,313
orchestrator และช่อง Kite ผมจะเปิด notepad แล้ววางพรอมป์ต์นี้ลงไป

903
00:57:28,313 --> 00:57:31,984
เพราะเราจะเปลี่ยนบางอย่างในนั้น สิ่งแรกที่เราจะต้องใช้คือ

904
00:57:31,984 --> 00:57:35,204
Telegram group ID ในการหา Telegram group ID ของคุณ

905
00:57:35,204 --> 00:57:38,553
เราจะใช้บอทตัวเดียวกับที่ใช้หา Telegram ID ของเราคือ

906
00:57:38,553 --> 00:57:42,095
User Info Bot เมื่อมันเปิดขึ้นมา คลิกที่ forum ด้านล่าง

907
00:57:42,095 --> 00:57:45,122
แล้วเลือก group ที่คุณเพิ่งสร้าง ในกรณีของผมคือ

908
00:57:45,122 --> 00:57:48,278
KM Content จากนั้นคลิกที่มัน แล้วกด send บอทจะส่ง

909
00:57:48,278 --> 00:57:52,206
ID ของ Telegram group มาให้คุณ คุณสามารถคลิกตรงนี้เพื่อคัดลอก

910
00:57:52,206 --> 00:57:55,298
แล้วผมจะแทนที่ด้วยส่วนนี้ที่เรียกว่า Telegram ID

911
00:57:55,298 --> 00:57:59,419
ขั้นตอนถัดไป เราจะกรอก thread ID สำหรับสามช่อง และสำหรับสิ่งนั้น

912
00:57:59,419 --> 00:58:03,026
ผมจะกลับเข้ามาใน Telegram group ของเรา แต่ในกรณีส่วนใหญ่

913
00:58:03,026 --> 00:58:06,246
ช่องแรกที่คุณสร้างมักจะมี thread ID เป็น 1 ดังนั้น

914
00:58:06,246 --> 00:58:09,338
orchestrator น่าจะตอบว่าเป็น 1 แต่เพื่อความแน่ใจ

915
00:58:09,338 --> 00:58:12,558
ขอถามมันอีกที เอาล่ะ มันตอบว่า thread ID ของมันคือ

916
00:58:12,558 --> 00:58:15,778
1 เพราะมันถูกสร้างก่อน ผมจะใส่ 1 ตรงนี้ ไปที่ Kite

917
00:58:15,778 --> 00:58:18,869
Kite คือ 36 ขอใส่ 36 แล้วมาที่ studio ซึ่งคือ 40

918
00:58:18,869 --> 00:58:23,184
แล้วก็เสร็จ แค่สี่พารามิเตอร์นี้เท่านั้นที่คุณต้องกรอกในพรอมป์ต์นี้

919
00:58:23,184 --> 00:58:26,597
หลังจากนั้นคัดลอกข้อความ สำคัญมาก อย่าทำในช่อง studio

920
00:58:26,597 --> 00:58:30,140
หรือ Kite ให้ทำในช่องของ orchestrator แล้ววางข้อความนี้

921
00:58:30,140 --> 00:58:34,133
ส่งให้ orchestrator เพื่อให้มัน implement การผูกช่องกับเอเจนต์

922
00:58:34,133 --> 00:58:37,417
(topic-lane agent binding) orchestrator ตอบว่า "เฮ้

923
00:58:37,417 --> 00:58:41,796
ผมบันทึกข้อมูล lane ทั้งสี่ลงในหน่วยความจำแล้ว และทำส่วนบันทึกเสร็จ"

924
00:58:41,796 --> 00:58:45,983
แต่มันมีปัญหาอยู่อย่างหนึ่ง มันไม่สามารถรันคำสั่งนี้เพื่อรีสตาร์ท

925
00:58:45,983 --> 00:58:49,782
gateway ได้ มันเลยบอกให้เรารันให้มัน ผมจะคัดลอกคำสั่งตรงนี้

926
00:58:49,782 --> 00:58:53,260
กลับมาที่เทอร์มินัล ขอเคลียร์หน้าจอเพื่อให้ดูสะอาดขึ้น

927
00:58:53,260 --> 00:58:56,867
แล้ววางคำสั่งนี้ สำคัญมากอีกครั้ง ให้แน่ใจว่าถ้าคุณสร้าง

928
00:58:56,867 --> 00:59:00,280
user ใหม่ คุณอยู่บน user ใหม่ ไม่ใช่บัญชี root แล้วกด

929
00:59:00,280 --> 00:59:04,015
enter และมันก็เกิดแบบนี้ตอนที่ผมทดสอบด้วย คุณจะได้คำตอบว่า

930
00:59:04,015 --> 00:59:07,107
failed to connect to bus ให้คัดลอกทุกอย่างตรงนี้

931
00:59:07,107 --> 00:59:10,327
แล้วมาที่ Telegram บอก orchestrator ว่า "เฮ้ ผมเจอ

932
00:59:10,327 --> 00:59:13,483
error นี้" แล้ววางมัน อุ๊ย ผมคิดว่าผมไม่ได้คัดลอก

933
00:59:13,483 --> 00:59:16,767
กลับไปที่ PowerShell กด control+shift+C เพื่อคัดลอก

934
00:59:16,767 --> 00:59:22,113
กลับมาที่ Telegram แล้ววาง จากนั้นมันจะแก้ไขให้และให้คำสั่งอื่นที่เราใช้แก้ปัญหานี้

935
00:59:22,113 --> 00:59:26,363
และผมควรจะหาเจอ มันบอกว่า error นี้หมายความว่าเชลล์ของคุณไม่ได้ใช้

936
00:59:26,363 --> 00:59:30,034
bus environment มันเลยให้คำสั่งอื่นมารัน ผมจะคัดลอกอันนี้

937
00:59:30,034 --> 00:59:35,766
ล้างหน้าจออีกครั้ง วางคำสั่งใหม่นี้ กด enter แล้วคุณจะเห็นว่าผมได้รับการแจ้งเตือนทันทีว่า

938
00:59:35,766 --> 00:59:39,179
gateway ของผมกำลังรีสตาร์ท นั่นหมายความว่าคำสั่งได้ผล

939
00:59:39,179 --> 00:59:43,494
ใช้เวลาไม่กี่วินาทีกว่าทุกอย่างจะเสร็จ ให้อดทนอีกนิดเมื่อเห็นแบบนี้

940
00:59:43,494 --> 00:59:47,294
ผมจะคัดลอกตรงนี้ กด control+shift+C แล้วส่งให้ orchestrator

941
00:59:47,294 --> 00:59:51,802
ว่า "มันทำงานแล้ว นี่คือข้อความที่ผมได้รับ" คุณจะเห็นว่าตอนที่ผมส่งให้

942
00:59:51,802 --> 00:59:54,829
orchestrator ทันที มันไม่ตอบ เพราะผมว่า gateway

943
00:59:54,829 --> 00:59:57,985
ยังบูตเอเจนต์ทั้งหมดอยู่ บางครั้งเมื่อคุณรีสตาร์ท

944
00:59:57,985 --> 01:00:02,686
gateway มันต้องใช้เวลาสักพักกว่า gateway ทั้งหมดของเอเจนต์จะรีสตาร์ทเสร็จ

945
01:00:02,686 --> 01:00:05,842
ดังนั้นเมื่อคุณส่งข้อความนี้ทันทีแล้วไม่เห็นคำตอบ

946
01:00:05,842 --> 01:00:09,899
ให้อดทนอีกนิด และนี่คือทิป เมื่อคุณกลับมาที่เทอร์มินัลแล้วพิมพ์

947
01:00:09,899 --> 01:00:13,506
hermes profile list แล้วกด enter คุณจะเห็นว่าตอนนี้เรามี

948
01:00:13,506 --> 01:00:16,855
gateway สองตัวที่กำลังรันอยู่ ตอนแรกเรามีแค่ default

949
01:00:16,855 --> 01:00:19,882
gateway ที่รันอยู่ และ gateway ของ dev หยุดอยู่

950
01:00:19,882 --> 01:00:23,231
แต่ตอนนี้คุณจะเห็นว่าเรามี gateway อีกตัวที่สร้างให้

951
01:00:23,231 --> 01:00:26,451
Kite ซึ่งกำลังรันอยู่ สิ่งที่เราจะทำตอนนี้คือเพิ่ม

952
01:00:26,451 --> 01:00:29,542
Kite เข้าไปใน group ที่เราสร้าง ในการทำอย่างนั้น

953
01:00:29,542 --> 01:00:32,633
ไปที่ BotFather คลิกที่ URL ที่มันให้ไว้เพื่อดึง

954
01:00:32,633 --> 01:00:35,982
ID ของ Kite คลิกที่ชื่อ แล้วคลิกเพื่อคัดลอก username

955
01:00:35,982 --> 01:00:39,074
ของ Kite แล้วกลับมาใน group ของเรา ผมจะไปที่ all

956
01:00:39,074 --> 01:00:42,487
คลิกจุดสามจุดตรงนี้ ไปที่ view group info จากนั้นคลิก

957
01:00:42,487 --> 01:00:45,514
manage ลงมาที่ members คลิก add members แล้วใส่

958
01:00:45,514 --> 01:00:48,670
username ของ Kite bot เลือกมันแล้วคลิก add ตอนนี้

959
01:00:48,670 --> 01:00:51,761
Kite ถูกเพิ่มเข้าไปใน group แล้ว เรายังต้องทำให้

960
01:00:51,761 --> 01:00:54,917
Kite เป็น administrator เพื่อให้มันทำงานที่นี่ได้

961
01:00:54,917 --> 01:00:58,008
ยังอยู่บนแท็บ all ผมจะคลิกจุดสามจุด ไปที่ manage

962
01:00:58,008 --> 01:01:01,808
group จากนั้นไปที่ administrator แล้วคลิก add administrator

963
01:01:01,808 --> 01:01:04,899
เพิ่ม Kite ลงไป ตรวจสอบสิทธิ์ ถ้าพอใจก็คลิก save

964
01:01:04,899 --> 01:01:08,119
แล้วปิดได้ ตอนนี้เราเพิ่ม Kite เข้าไปใน group แล้ว

965
01:01:08,119 --> 01:01:12,241
สิ่งที่เราจะทำตอนนี้คือ เข้ามาในช่องของ Kite แล้วส่งข้อความอย่าง

966
01:01:12,241 --> 01:01:15,526
"คุณคือใคร?" และนี่คือส่วนที่ทำให้ผมประหม่าทุกครั้ง

967
01:01:15,526 --> 01:01:19,454
เพราะนี่คือจุดที่คุณจะเห็นว่าการผูกเอเจนต์กับช่องทำงานหรือไม่

968
01:01:19,454 --> 01:01:22,868
ถ้าทุกอย่างทำงาน เราควรเห็นข้อความจาก Kite ว่า "ผมคือ

969
01:01:22,868 --> 01:01:26,281
Kite" มาดูกันว่ามันจะทำงานไหม สมบูรณ์แบบ ผมโล่งใจไปที

970
01:01:26,281 --> 01:01:29,630
ตรงนี้ Kite ตอบว่า "ผมคือ Kite นักออกแบบและวิศวกรของ

971
01:01:29,630 --> 01:01:32,850
Cadence ของ Larry" เพื่อให้แน่ใจว่าส่วนอื่นๆ ทำงาน

972
01:01:32,850 --> 01:01:36,779
ผมจะส่งแบบเดียวกันนี้ไปให้ orchestrator และถ้ามันตอบว่ามันคือ

973
01:01:36,779 --> 01:01:40,127
orchestrator ก็ดี แต่ถ้า Kite ตอบในช่อง orchestrator

974
01:01:40,127 --> 01:01:46,954
เราก็มีปัญหา ขอทำแบบเดียวกันกับ studio เพื่อความปลอดภัยว่าเรามีเอเจนต์ที่ถูกต้องอยู่เบื้องหลังช่องเหล่านี้

975
01:01:46,954 --> 01:01:50,110
เยี่ยม ในช่องของ orchestrator มันยังตอบว่า "ผมคือ

976
01:01:50,110 --> 01:01:53,266
orchestrator" ซึ่งหมายความว่าสิ่งนี้ทำงานได้ดีมาก

977
01:01:53,266 --> 01:01:56,872
Kite ถ้าจำได้ก็ตอบว่ามันคือ Kite เช่นกัน และเมื่อผมไปที่

978
01:01:56,872 --> 01:02:00,286
studio orchestrator ก็ตอบว่า orchestrator อยู่ที่นั่น

979
01:02:00,286 --> 01:02:03,506
นั่นหมายความว่าการผูกช่อง Telegram กับเอเจนต์ทำงาน

980
01:02:03,506 --> 01:02:06,983
Kite จะไม่ไปฟังในช่องของ orchestrator และ orchestrator

981
01:02:06,983 --> 01:02:10,461
ก็จะไม่ฟังในช่องของ Kite ซึ่งเป็นสิ่งที่เราต้องการเป๊ะ

982
01:02:10,461 --> 01:02:14,390
ตอนนี้เรามีส่วนหลักทั้งหมดของเฟรมเวิร์กที่เราต้องการพร้อมแล้ว

983
01:02:14,390 --> 01:02:17,932
Hermes Agent พร้อมแล้ว orchestrator ตั้งค่าเสร็จสมบูรณ์

984
01:02:17,932 --> 01:02:21,088
Kite นักพัฒนาของเราก็ตั้งค่าเสร็จ group พร้อมแล้ว

985
01:02:21,088 --> 01:02:24,243
เราสามารถเริ่ม build แดชบอร์ดได้เลย ตลอดการ build

986
01:02:24,243 --> 01:02:28,558
แดชบอร์ดทั้งหมด เราจะใช้ Kite ซึ่งรับบทเป็นทั้งนักออกแบบและนักพัฒนา

987
01:02:28,558 --> 01:02:32,938
และก่อนที่เราจะให้ Kite เริ่ม build แดชบอร์ด เราจะต้องแจ้งรายละเอียด

988
01:02:32,938 --> 01:02:36,287
(brief) ให้ Kite ทราบเกี่ยวกับทั้งหมดที่เราอยากสร้าง

989
01:02:36,287 --> 01:02:40,730
ตั้งแต่ต้นจนจบ และแนวคิด (concept) ที่เรามีสำหรับสิ่งที่เรากำลังสร้าง

990
01:02:40,730 --> 01:02:46,913
และสำหรับสิ่งนั้น ผมจะให้พรอมป์ต์นี้กับ Kite เป็นการสรุปรายละเอียดเพื่อให้มันรู้ว่าเราอยากทำอะไร

991
01:02:46,913 --> 01:02:51,550
ผมเพิ่งส่งอันนี้ให้ Kite และระหว่างนี้ผมจะอธิบายให้คุณฟังว่าผมส่งอะไรให้

992
01:02:51,550 --> 01:02:55,607
Kite ผมบอก Kite ว่า "เฮ้ ก่อนที่เราจะเขียนโค้ดแม้แต่บรรทัดเดียว

993
01:02:55,607 --> 01:02:59,085
นี่คือภาพรวมทั้งหมดของสิ่งที่เรากำลังสร้าง" ผมกำลังบอก

994
01:02:59,085 --> 01:03:04,559
Kite เรากำลังสร้างสตูดิโอระบบอัตโนมัติคอนเทนต์ระดับพรีเมียมพร้อมแดชบอร์ดเว็บที่สวยงาม

995
01:03:04,559 --> 01:03:07,908
ผมบอก Kite ว่ากระบวนการทั้งหมดจะทำงานอย่างไร เราจะมี

996
01:03:07,908 --> 01:03:12,674
Atlas นักวิจัยของเราที่ไปเสนอไอเดีย แล้วเราจะโปรโมตไอเดียหนึ่งในฐานะผู้ใช้

997
01:03:12,674 --> 01:03:15,701
จากนั้น Vera จะเขียนเนื้อหาของสไลด์ พอเสร็จแล้ว

998
01:03:15,701 --> 01:03:21,433
Kite ซึ่งเป็นทั้งนักพัฒนาและนักออกแบบของเราจะนำคอนเทนต์นั้นใส่ลงในเทมเพลตหนึ่งที่เราเลือก

999
01:03:21,433 --> 01:03:24,975
แล้วเรนเดอร์เทมเพลตนั้นจากเอกสาร HTML เป็นภาพขนาดประมาณ

1000
01:03:24,975 --> 01:03:31,351
1080x1350 พิกเซล จากนั้น Orion นักเผยแพร่ของเราจะเผยแพร่สิ่งนี้ไปยังเครือข่ายใดก็ตามที่เราอยากสร้าง

1001
01:03:31,351 --> 01:03:34,700
และผมยังบอก Kite ด้วยว่าเราจะรันสิ่งนี้บนเซิร์ฟเวอร์

1002
01:03:34,700 --> 01:03:37,920
Python ขนาดเล็กซึ่งจะอยู่บนแดชบอร์ด และที่สำคัญมาก

1003
01:03:37,920 --> 01:03:44,489
ผมบอก Kite ว่าเราจะให้เทมเพลตที่เราจะทำงานด้วย และผมอยากให้เทมเพลตนี้เป็นแหล่งอ้างอิงความจริงของดีไซน์

1004
01:03:44,489 --> 01:03:49,834
(design source of truth) เพราะผมไม่อยากให้มันเปลี่ยนอะไรก็ตามที่เราจะใส่ลงในเทมเพลต

1005
01:03:49,834 --> 01:03:54,021
และยังมีอีกสองสามอย่างที่ผมให้มัน คืออยากให้มีโปรโตคอลสำรองข้อมูล

1006
01:03:54,021 --> 01:03:57,112
(backup protocol) และหลักการบางอย่างว่าการ build

1007
01:03:57,112 --> 01:04:00,203
ทั้งหมดจะเป็นอย่างไร Kite ตอบว่า "เฮ้ เข้าใจแล้ว

1008
01:04:00,203 --> 01:04:08,189
นี่คือแผนในคำพูดของผมเอง Cadence เป็นสตูดิโอระบบอัตโนมัติคอนเทนต์ที่สมบูรณ์พร้อมแดชบอร์ดเว็บที่ขัดเกลาเป็นอินเทอร์เฟซควบคุม"

1009
01:04:08,189 --> 01:04:13,341
และมันก็แค่พูดซ้ำทุกอย่างที่เราบอก Kite ตามลำดับว่ากระแสงานทั้งหมดจะทำงานอย่างไร

1010
01:04:13,341 --> 01:04:17,206
Kite พร้อมที่จะเริ่ม build แดชบอร์ดกับเราแล้ว ในขั้นตอนถัดไป

1011
01:04:17,206 --> 01:04:21,456
เราจะบอก Kite ให้สร้างแบ็กเอนด์ Python ที่แดชบอร์ดเว็บนี้จะรันอยู่

1012
01:04:21,456 --> 01:04:24,548
ผมจะให้พรอมป์ต์นี้เพื่อเตรียมสิ่งนั้น ผมบอก Kite

1013
01:04:24,548 --> 01:04:27,703
ว่า "เฮ้ เราจะสร้างแดชบอร์ดนี้ในแบบที่ปลอดภัยมาก"

1014
01:04:27,703 --> 01:04:30,923
สำหรับส่วนแรก เราจะตั้งค่าสิ่งนี้บนสิ่งที่เรียกว่า

1015
01:04:30,923 --> 01:04:35,625
SSH tunneling นั่นหมายความว่าเมื่อไหร่ก็ตามที่คุณอยากเชื่อมต่อกับแดชบอร์ด

1016
01:04:35,625 --> 01:04:39,360
คุณจะใช้คำสั่งอย่าง ssh -N -L พอร์ตนี้ แล้วตอนท้ายคุณจะใส่

1017
01:04:39,360 --> 01:04:43,546
username และ IP address ของคุณ แต่ผมจะโชว์ให้ดูว่ามันทำงานอย่างไร

1018
01:04:43,546 --> 01:04:48,634
เหตุผลที่เราใช้วิธีนี้ตั้งแต่แรกคือ แดชบอร์ดเว็บจะไม่เปิดให้อินเทอร์เน็ตสาธารณะ

1019
01:04:48,634 --> 01:04:54,044
มีเพียงคนที่รู้รหัสผ่านของเซิร์ฟเวอร์ VPS ของคุณเท่านั้นที่จะเชื่อมต่อกับแดชบอร์ดได้

1020
01:04:54,044 --> 01:04:58,037
นั่นคือสิ่งที่ทำให้มันปลอดภัยมาก แต่แม้หลังจากที่เราสร้างเสร็จ

1021
01:04:58,037 --> 01:05:01,128
เราจะติดตั้ง Tailscale ซึ่งจะโฮสต์แดชบอร์ดให้เรา

1022
01:05:01,128 --> 01:05:08,019
Tailscale เป็นหนึ่งในการตั้งค่าความปลอดภัยที่แข็งแกร่งที่สุดที่เราสามารถใช้เพื่อนำแดชบอร์ดของเราขึ้นออนไลน์

1023
01:05:08,019 --> 01:05:11,755
ดังนั้นครั้งแรกเราจะใช้ SSH tunneling เพื่อเข้าถึงแดชบอร์ด

1024
01:05:11,755 --> 01:05:16,005
แต่เมื่อเสร็จแล้ว เราจะติดตั้ง Tailscale ซึ่งจะโฮสต์ทุกอย่างให้เรา

1025
01:05:16,005 --> 01:05:20,513
และสิ่งที่ดีที่สุดเกี่ยวกับ Tailscale คือ เราจะสามารถเข้าถึงแดชบอร์ดบน

1026
01:05:20,513 --> 01:05:25,086
PC ใดก็ตามที่รันบัญชี Tailscale ของเรา หรือแม้แต่บนโทรศัพท์มือถือของคุณ

1027
01:05:25,086 --> 01:05:29,015
เอาล่ะ Kite เสร็จแล้ว มันตั้งค่าแบ็กเอนด์ที่เราใช้รันแดชบอร์ด

1028
01:05:29,015 --> 01:05:32,621
และมันยังให้คำสั่ง SSH tunnel ที่เราจะใช้เข้าถึงแดชบอร์ด

1029
01:05:32,621 --> 01:05:35,970
สิ่งที่เราต้องทำคือคัดลอกคำสั่งที่ Kite ให้ไว้ตรงนี้

1030
01:05:35,970 --> 01:05:41,187
กลับไปที่ PowerShell แล้วใส่คำสั่งนี้ ssh -L พอร์ตนี้คือพอร์ตที่เราใช้เซฟแดชบอร์ด

1031
01:05:41,187 --> 01:05:44,214
นี่คือฝั่งความปลอดภัย และนี่คือ username ของคุณ

1032
01:05:44,214 --> 01:05:47,369
ซึ่งในกรณีของผม ผมสร้าง username ใหม่ถ้าจำได้ชื่อ

1033
01:05:47,369 --> 01:05:52,071
Larry และนี่คือ IP address ของเซิร์ฟเวอร์ VPS ตรงนี้ผมจะใส่รหัสผ่านแล้วกด

1034
01:05:52,071 --> 01:05:55,549
enter มันจะพาคุณมาถึงจุดนี้ จะเป็นแค่เคอร์เซอร์กระพริบ

1035
01:05:55,549 --> 01:05:58,962
นั่นหมายความว่าคุณเชื่อมต่อกับแบ็กเอนด์ของเซิร์ฟเวอร์

1036
01:05:58,962 --> 01:06:01,989
VPS แล้ว สิ่งที่เราจะทำตอนนี้คือเปิดเบราว์เซอร์

1037
01:06:01,989 --> 01:06:05,080
แล้วอย่างที่ Kite ให้ไว้ มันบอกว่าเราควรเปิด URL

1038
01:06:05,080 --> 01:06:08,493
นี้บนเบราว์เซอร์ เราจะคัดลอก URL นี้ วางตรงนี้ แล้วกด

1039
01:06:08,493 --> 01:06:11,649
enter แล้วคุณจะเห็นว่าเราเชื่อมต่อกับแดชบอร์ดแล้ว

1040
01:06:11,649 --> 01:06:14,869
แต่เพราะเรายังไม่มีอะไรอยู่ตรงนั้น เราจึงเจอ error

1041
01:06:14,869 --> 01:06:19,506
response แบบนี้ แต่โดยหลักการแล้ว เราเชื่อมต่อกับแบ็กเอนด์ของเซิร์ฟเวอร์

1042
01:06:19,506 --> 01:06:25,882
Python แล้ว สิ่งที่เราจะทำต่อไปคือ ต้องใส่อะไรบางอย่างบนแดชบอร์ดเพื่อให้เราเห็นสิ่งที่เรากำลังสร้าง

1043
01:06:25,882 --> 01:06:29,424
และสำหรับสิ่งนั้น เราจะบอก Kite ให้สร้างหน้าเว็บอัปโหลด

1044
01:06:29,424 --> 01:06:35,285
(web upload page) ในหน้านี้เราจะอัปโหลดไฟล์ทั้งหมดที่จะใช้เป็นเทมเพลตของสิ่งที่เราอยากสร้าง

1045
01:06:35,285 --> 01:06:40,824
ผมจะคัดลอกพรอมป์ต์นี้ให้ Kite แล้วส่งให้มันสร้างจุดอัปโหลดที่เราสามารถอัปโหลดสิ่งต่างๆ

1046
01:06:40,824 --> 01:06:44,108
ของแดชบอร์ดที่เราต้องการได้ ซึ่งจะประกอบด้วยเทมเพลต

1047
01:06:44,108 --> 01:06:47,715
HTML ของแดชบอร์ด และสไลด์ทั้งหมดที่เราจะใช้ตอนสร้างสไลด์

1048
01:06:47,715 --> 01:06:53,060
carousel เหล่านี้ ระหว่างที่ Kite กำลังสร้าง ขอโชว์ให้ดูว่าเทมเพลตหน้าตาเป็นอย่างไร

1049
01:06:53,060 --> 01:06:56,795
นี่คือเทมเพลตเปล่าที่เราจะให้ Kite อัปโหลดบนแดชบอร์ดให้เรา

1050
01:06:56,795 --> 01:07:00,466
เราจะเห็นว่าเรามีแท็บ content ซึ่งมีการเติมข้อมูลเล็กน้อย

1051
01:07:00,466 --> 01:07:03,558
แท็บ ideas ดูว่างเปล่า แท็บ studio ก็ดูว่างเปล่า

1052
01:07:03,558 --> 01:07:07,680
ทุกอย่างดูว่างเปล่า แต่พอมันเสร็จ มันจะเพิ่มสิ่งนี้ลงในแบ็กเอนด์

1053
01:07:07,680 --> 01:07:11,093
แล้วเราจะค่อยๆ เติมแดชบอร์ดเทมเพลตนี้ในขณะที่เราสร้าง

1054
01:07:11,093 --> 01:07:16,889
เอาล่ะ Kite เสร็จแล้ว มันสร้างแบ็กเอนด์ที่เราใช้สำหรับอัปโหลดไฟล์ทั้งหมดที่มันต้องใช้ในการ

1055
01:07:16,889 --> 01:07:20,109
build แดชบอร์ด และมันให้ URL นี้มา ฉันจะคัดลอก URL

1056
01:07:20,109 --> 01:07:24,295
เปิดเบราว์เซอร์ แล้ววาง URL นี้ หวังว่าเราจะมีแดชบอร์ดอัปโหลดเว็บ

1057
01:07:24,295 --> 01:07:27,451
โอเค อันนี้ทำงานได้ดีมาก มันสร้างแบ็กเอนด์อัปโหลด

1058
01:07:27,451 --> 01:07:30,736
Cadence ขึ้นมา และมันบอกเราว่ามันคาดหวังไฟล์สี่ไฟล์

1059
01:07:30,736 --> 01:07:34,922
นั่นคือเทมเพลต HTML และไฟล์ JSON สามไฟล์ซึ่งจะเป็นเทมเพลตของสไลด์

1060
01:07:34,922 --> 01:07:38,528
carousel และสำหรับ reel ผมจึงอัปโหลดไฟล์ทั้งสี่ที่จำเป็น

1061
01:07:38,528 --> 01:07:42,393
และนี่ก็ได้รับการยืนยันบนแดชบอร์ดว่าไฟล์ทั้งสี่ถูกบันทึกแล้ว

1062
01:07:42,393 --> 01:07:47,996
ขั้นตอนถัดไป ผมจะบอก Kite ว่า "เฮ้ ผมอัปโหลดไฟล์ทั้งสี่ที่จำเป็นต่อการสร้างเทมเพลตเพื่อ

1063
01:07:47,996 --> 01:07:51,989
build แดชบอร์ดแล้ว ผมอยากให้คุณเสิร์ฟไฟล์เหล่านี้บนเซิร์ฟเวอร์

1064
01:07:51,989 --> 01:07:55,660
Python เพื่อที่เราจะได้เห็นว่ามันทำงานจริง" สิ่งที่เราบอก

1065
01:07:55,660 --> 01:07:59,137
Kite ในพรอมป์ต์นี้คือ ไฟล์เทมเพลตที่เราอัปโหลดเรียกว่า

1066
01:07:59,137 --> 01:08:03,130
cadence_dashboard_template.html แต่ผมอยากให้มันเปลี่ยนชื่อเป็น

1067
01:08:03,130 --> 01:08:06,930
index.html ในโฟลเดอร์เฉพาะที่เราสร้างสำหรับแดชบอร์ดที่เราจะ

1068
01:08:06,930 --> 01:08:11,181
build และที่สำคัญมาก อย่างน้อยในกรณีของผม ถ้าคุณอยากเปลี่ยนเทมเพลต

1069
01:08:11,181 --> 01:08:14,530
คุณไม่จำเป็นต้องให้คำสั่งนี้กับ Kite แต่สิ่งที่ผมบอก

1070
01:08:14,530 --> 01:08:17,878
Kite คือ "เฮ้ นี่จะเป็นแหล่งอ้างอิงความจริงของดีไซน์

1071
01:08:17,878 --> 01:08:24,834
เมื่อไหร่ก็ตามที่มันสร้างอะไร มันควรตรวจสอบเทมเพลตเสมอเพื่อให้แน่ใจว่ามันไม่ได้เปลี่ยนแปลงดีไซน์ของเทมเพลตไป

1072
01:08:24,834 --> 01:08:28,634
เพื่อให้สิ่งที่มันสร้างออกมาเหมือนกับที่เรามีในเทมเพลตเป๊ะ"

1073
01:08:28,634 --> 01:08:34,237
ผมบอกมันว่า "เทมเพลตมีค่าม็อก (mock values) แบบฮาร์ดโค้ดไว้เพื่อให้ไม่มีอะไรดูว่างเปล่า

1074
01:08:34,237 --> 01:08:39,325
แต่ตัวเลขเหล่านั้นบนเทมเพลตจะถูกแทนที่ด้วยเมตริกจริงเมื่อเราเริ่มสร้างแดชบอร์ด"

1075
01:08:39,325 --> 01:08:44,284
และนี่คือหนึ่งในสิ่งที่ผมชอบเกี่ยวกับ Hermes สิ่งที่คุณเห็นตรงนี้ตัวอย่างเช่น

1076
01:08:44,284 --> 01:08:48,405
มันทำงานที่เราให้เสร็จแล้ว และคุณจะเห็นว่ามันใช้เบราว์เซอร์ในตัว

1077
01:08:48,405 --> 01:08:52,398
(inbuilt browser) เพื่อตรวจสอบว่าทุกอย่างที่อยู่ตรงนั้นถูกต้อง

1078
01:08:52,398 --> 01:08:56,069
มันคลิกและถ่ายภาพหน้าจอของเบราว์เซอร์ (browser snapshots)

1079
01:08:56,069 --> 01:09:02,316
มันคลิกส่วนต่างๆ แล้วถ่ายภาพหน้าจอของแต่ละส่วน เพื่อให้แน่ใจว่าสิ่งที่มันทำเหมือนกับในเทมเพลตเป๊ะ

1080
01:09:02,316 --> 01:09:05,472
และนี่คือหนึ่งในเหตุผลหลักที่ผมชอบทำงานกับ Hermes

1081
01:09:05,472 --> 01:09:08,692
มาก เพราะผมสร้างแดชบอร์ดบ่อย ถ้าเอเจนต์หรือ Hermes

1082
01:09:08,692 --> 01:09:12,299
อนุญาตให้เอเจนต์ทำงานกับเบราว์เซอร์แบบไม่มีหัว (headless

1083
01:09:12,299 --> 01:09:15,841
browser) เพื่อให้เห็นสิ่งที่มันกำลังสร้าง นี่มันเจ๋งมาก

1084
01:09:15,841 --> 01:09:21,186
เอาล่ะ Kite บอกว่ามันเสร็จแล้ว มันบอกว่าเทมเพลตถูกล็อกอินแล้วแต่สมบูรณ์เพียงบางส่วน

1085
01:09:21,186 --> 01:09:24,728
เพราะมีไฟล์หนึ่งที่หายไป พอผมดูตรงนี้ มันบอกว่ามันไม่พบ

1086
01:09:24,728 --> 01:09:28,528
templates_pack เพราะมันเป็น false zero ขอดูว่าเป็นเพราะอะไร

1087
01:09:28,528 --> 01:09:34,196
เป็นไปได้ว่าการอัปโหลดของเราไม่ทำงาน มันบอกว่าเราควรอัปโหลดไฟล์นี้อีกครั้งผ่านจุดอัปโหลด

1088
01:09:34,196 --> 01:09:37,287
ผมจะใส่อันนี้ตรงนี้อีกครั้งแล้วอัปโหลด templates

1089
01:09:37,287 --> 01:09:40,958
pack ใหม่ ผมจะบอก Kite ว่า "ผมอัปโหลด templates_pack.json

1090
01:09:40,958 --> 01:09:46,368
ใหม่แล้ว ช่วยยืนยันหน่อย" สมบูรณ์แบบ ดูเหมือนมีบางอย่างเกิดขึ้นตอนที่อัปโหลดครั้งแรก

1091
01:09:46,368 --> 01:09:49,846
มันบอกว่า "ใช่ ตอนนี้ผมเห็นมันแล้ว" มันตรวจสอบไฟล์แล้ว

1092
01:09:49,846 --> 01:09:54,611
และไฟล์ต้นฉบับที่อัปโหลดทั้งหมดตอนนี้อยู่ในโฟลเดอร์ที่เราต้องการให้มันอยู่

1093
01:09:54,611 --> 01:09:59,184
ซึ่งสมบูรณ์แบบ ต่อไปไปที่แดชบอร์ดแล้วดูว่าแดชบอร์ดเรนเดอร์บนเซิร์ฟเวอร์

1094
01:09:59,184 --> 01:10:02,984
Python จริงหรือไม่ ในการทำอย่างนั้น เราจะใช้ localhost:8892

1095
01:10:02,984 --> 01:10:09,939
เลข 8892 คือพอร์ตของเซิร์ฟเวอร์ และ localhost คือพื้นที่ภายในเครื่องบนเซิร์ฟเวอร์ของเราที่ใช้เข้าถึงแดชบอร์ด

1096
01:10:09,939 --> 01:10:14,769
แล้วพอเปิด หวังว่าสวยงาม คุณจะเห็นว่าเรามีแดชบอร์ดโหลดขึ้นมาเหมือนในเทมเพลต

1097
01:10:14,769 --> 01:10:19,471
ขอเปิดเทมเพลตเพื่อเปรียบเทียบแบบหนึ่งต่อหนึ่ง นี่คือสิ่งที่เรามีในเทมเพลต

1098
01:10:19,471 --> 01:10:24,043
และนี่คือสิ่งที่ถูกเสิร์ฟบนแดชบอร์ดของเรา ทุกหน้าเหมือนกับในเทมเพลตเป๊ะ

1099
01:10:24,043 --> 01:10:29,711
Kite ทำงานได้ดีมาก ในขั้นตอนถัดไป นี่คือหนึ่งในสิ่งที่ผมแนะนำเสมอเวลาสร้างอะไรกับเอเจนต์

1100
01:10:29,711 --> 01:10:34,026
ให้เอเจนต์สร้างสำเนา (copy) ของแดชบอร์ดก่อนที่จะเปลี่ยนแปลงอะไรเสมอ

1101
01:10:34,026 --> 01:10:37,697
ผมพูดแบบนี้ในทุกวิดีโอ เพราะผมเคยทำงานบนแดชบอร์ดมาหลายวัน

1102
01:10:37,697 --> 01:10:43,622
แล้วเอเจนต์ของผมทำผิดพลาด และผมเสียทุกอย่างไป นี่คือเหตุผลที่สำคัญมากที่คุณต้องบอกเอเจนต์ว่า

1103
01:10:43,622 --> 01:10:49,482
"เฮ้ ก่อนที่คุณจะเปลี่ยนอะไรบนแดชบอร์ด กรุณาสร้างสำเนาของแดชบอร์ดและบันทึกไว้ที่ไหนสักแห่ง"

1104
01:10:49,482 --> 01:10:52,896
และบนแดชบอร์ด เรามีส่วนนี้ที่เป็นเลขเวอร์ชัน (version

1105
01:10:52,896 --> 01:10:57,404
number) ผมอยากให้มันอัปเดตเลขเวอร์ชันทุกครั้งที่มันเปลี่ยนแปลงแดชบอร์ด

1106
01:10:57,404 --> 01:11:00,753
ผมจะคัดลอกพรอมป์ต์นี้แล้วส่งให้ Kite เพื่อ implement

1107
01:11:00,753 --> 01:11:05,132
สิ่งนี้ และ Kite ก็ทำเสร็จแล้ว เมื่อเรามาที่แดชบอร์ดและรีโหลดเทมเพลต

1108
01:11:05,132 --> 01:11:08,159
เราควรเห็นว่ามันเปลี่ยนไปแล้ว เดิมเรามี version

1109
01:11:08,159 --> 01:11:12,217
0.1 editorial ขอเปิดเทมเพลตให้ดูว่าก่อนหน้านี้หน้าตาเป็นอย่างไร

1110
01:11:12,217 --> 01:11:15,759
ในเทมเพลตตรงส่วนล่างนี้ เดิมเรามี version 0.1 editorial

1111
01:11:15,759 --> 01:11:18,914
และตอนนี้คุณจะเห็นว่ามันถูกอัปเดตเป็น version 0.1

1112
01:11:18,914 --> 01:11:24,389
ในแดชบอร์ดของเรา หมายความว่า Kite จะคอยอัปเดตเวอร์ชันให้ตลอดเวลาเมื่อเราเดินหน้าต่อไป

1113
01:11:24,389 --> 01:11:28,317
ตอนนี้เราจะเริ่ม build กัน พารามิเตอร์ทั้งหมดที่คุณเห็นในแท็บ

1114
01:11:28,317 --> 01:11:32,825
content เป็นค่าฮาร์ดโค้ดจากเทมเพลตที่ผมสร้าง และทุกอย่างที่เรามีในแท็บ

1115
01:11:32,825 --> 01:11:36,368
agents, heat map ทุกอย่างเป็นฮาร์ดโค้ด เราจะให้พรอมป์ต์

1116
01:11:36,368 --> 01:11:39,910
Kite เพื่ออัปเดตเมตริกแดชบอร์ดที่เรามีตรงนี้ รวมถึงแท็บ

1117
01:11:39,910 --> 01:11:43,130
agents เพื่อให้มีข้อมูลจริงจาก Hermes setup ของเรา

1118
01:11:43,130 --> 01:11:46,350
ไม่ใช่จากค่าฮาร์ดโค้ดในเทมเพลต และผมบอกมันว่า "เฮ้

1119
01:11:46,350 --> 01:11:49,441
เมื่อคุณเสร็จ ยืนยันว่าแท็บทั้งสองแสดงข้อมูลจริง

1120
01:11:49,441 --> 01:11:56,976
และ heat map ตรงกับตาราง runs" สำหรับ heat map ข้อมูลทั้งหมดจะถูกดึงมาจากฐานข้อมูลบันทึกการทำงานของเอเจนต์ที่เราสร้าง

1121
01:11:56,976 --> 01:12:03,095
ถ้าจำได้ เราสร้างสิ่งที่เอเจนต์ทุกตัวจะบันทึกกิจกรรมเมื่อไหร่ก็ตามที่มันทำอะไรหรือปฏิบัติการใดๆ

1122
01:12:03,095 --> 01:12:06,250
เอาล่ะ Kite ทำเสร็จแล้ว มาดูสิ่งที่ Kite สร้างกัน

1123
01:12:06,250 --> 01:12:11,725
รีโหลดแดชบอร์ด ตรงนี้คุณจะเห็นว่ามันดึงเมตริกจริงจากฐานข้อมูลเอเจนต์ของเราที่เราสร้าง

1124
01:12:11,725 --> 01:12:16,426
คุณจะเห็นว่า Kite พยายามดึงเมตริกจริงจากฐานข้อมูลบันทึกการทำงานของเอเจนต์

1125
01:12:16,426 --> 01:12:21,900
คุณจะเห็นว่าตอนนี้ในส่วน workload ของเอเจนต์ เพราะไม่มีเอเจนต์ตัวไหนทำงานอะไรในวันนี้

1126
01:12:21,900 --> 01:12:24,992
ทุกอย่างจึงเป็นศูนย์สำหรับ Atlas, Vera และ Orion

1127
01:12:24,992 --> 01:12:28,083
และ Kite เป็นตัวเดียวที่จะทำงานกับเราวันนี้ Kite

1128
01:12:28,083 --> 01:12:32,333
จึงอยู่ที่ประมาณ 100% และเช่นเดียวกันเมื่อคุณมาที่ฐานข้อมูลเอเจนต์

1129
01:12:32,333 --> 01:12:35,811
คุณจะเห็นว่าทุกอย่างเกือบเป็นศูนย์สำหรับเอเจนต์ทั้งหมด

1130
01:12:35,811 --> 01:12:39,804
เพราะพวกมันยังไม่ได้ทำอะไรในวันนี้ ผมกำลังอัดวิดีโอในวันที่สอง

1131
01:12:39,804 --> 01:12:42,831
ดังนั้นผมคาดว่าจะมีเมตริกบางอย่างจากวันก่อนหน้า

1132
01:12:42,831 --> 01:12:47,726
ผมจะบอก Kite ว่า "เฮ้ ดูเหมือนว่าเมตริกที่ถูกดึงมานั้นดึงมาจากวันนี้เท่านั้น

1133
01:12:47,726 --> 01:12:53,522
แต่ควรมีกิจกรรมจากเอเจนต์ในวันก่อนหน้าด้วย มันควรทำให้แน่ใจว่าแดชบอร์ดไม่เพียงสะท้อนวันนี้

1134
01:12:53,522 --> 01:12:57,773
แต่สะท้อนข้อมูลทั้งหมดที่เรามีในฐานข้อมูลบันทึกการทำงานของเอเจนต์"

1135
01:12:57,773 --> 01:13:01,315
ผมบอก Kite ว่า "เฮ้ อันนี้ดูเจ๋งมาก ขอบคุณ อย่างไรก็ตาม

1136
01:13:01,315 --> 01:13:04,664
ดูเหมือนว่าเมตริกเอเจนต์ที่แสดงเป็นของวันนี้เท่านั้น

1137
01:13:04,664 --> 01:13:08,657
ผมไม่เห็นข้อมูลจากเมื่อวานเลย แม้ว่าฐานข้อมูลควรจะมีข้อมูลนี้"

1138
01:13:08,657 --> 01:13:15,741
มันควรตรวจสอบว่าอะไรผิดปกติ และทำให้แน่ใจว่าเราเสิร์ฟข้อมูลทั้งหมดที่มีอยู่ในฐานข้อมูลบันทึกการทำงานของเอเจนต์

1139
01:13:15,741 --> 01:13:19,219
เอาล่ะ Kite บอกว่ามันเสร็จแล้ว ดูเหมือนมีปัญหาเกิดขึ้น

1140
01:13:19,219 --> 01:13:22,632
มันบอกว่าปัญหาที่แท้จริงคือมีปัญหากับเซิร์ฟเวอร์ทดสอบ

1141
01:13:22,632 --> 01:13:26,754
(test server) ของ Python ที่ลบสิ่งต่างๆ ออกจากฐานข้อมูลโปรดักชัน

1142
01:13:26,754 --> 01:13:29,909
มันจึงแก้ไขสิ่งนี้ด้วย มันบอกว่าการแก้ไขเสร็จสิ้น

1143
01:13:29,909 --> 01:13:33,001
เซิร์ฟเวอร์ทดสอบไม่แตะฐานข้อมูลโปรดักชันอีกต่อไป

1144
01:13:33,001 --> 01:13:37,187
และมันเพิ่มมาตรการบางอย่างเพื่อให้แน่ใจว่าสิ่งนี้จะไม่เกิดขึ้นอีก

1145
01:13:37,187 --> 01:13:40,536
แต่สิ่งที่ผมอยากให้ Kite ทำก่อนที่เราจะเดินหน้าต่อไป

1146
01:13:40,536 --> 01:13:43,627
ผมอยากแน่ใจว่าปัญหานี้แก้ไขแล้วจริง ผมจะบอก Kite

1147
01:13:43,627 --> 01:13:47,620
ว่า "เฮ้ ทำการทดสอบแบบ end-to-end smoke test กับเอเจนต์ทั้งหมด

1148
01:13:47,620 --> 01:13:54,576
กระตุ้นกิจกรรมทดสอบสองสามอย่าง แล้วตรวจสอบว่าข้อมูลที่ได้ถูกบันทึกในฐานข้อมูลและสะท้อนบนแดชบอร์ดอย่างถูกต้อง

1149
01:13:54,576 --> 01:14:01,660
ถ้ามีอะไรที่ขาดหายไป ก็แก้ไขมันด้วย" เพราะฐานข้อมูลบันทึกการทำงานของเอเจนต์จะเป็นส่วนสำคัญของสิ่งที่เราจะสร้าง

1150
01:14:01,660 --> 01:14:05,073
ผมจึงอยากแน่ใจร้อยเปอร์เซ็นต์ว่าเอเจนต์บันทึกการทำงาน

1151
01:14:05,073 --> 01:14:08,551
และทุกสิ่งที่พวกมันทำสะท้อนบนแดชบอร์ดนี้ และยังไงก็ตาม

1152
01:14:08,551 --> 01:14:12,673
พรอมป์ต์เชิงลึกทั้งหมดที่ผมเพิ่มเข้าไปนี้ ผมจะทำให้คุณเข้าถึงได้

1153
01:14:12,673 --> 01:14:17,181
ถ้าคุณเจอสถานการณ์เดียวกัน คุณก็แค่คัดลอกวางพรอมป์ต์แล้วให้เอเจนต์หรือ

1154
01:14:17,181 --> 01:14:20,466
Kite แก้ไขให้คุณ เอาล่ะ Kite บอกว่ามันทำ smoke test

1155
01:14:20,466 --> 01:14:25,747
เสร็จแล้ว มันทำซ้ำกับเอเจนต์ทั้งหมด และตอนนี้คุณจะเห็นว่าเอเจนต์ทั้งหมดทำเสร็จแล้ว

1156
01:14:25,747 --> 01:14:30,319
เมื่อเรากลับมาที่แดชบอร์ด คุณจะเห็นว่าตอนนี้เราไม่มีค่าศูนย์ที่เราเคยมี

1157
01:14:30,319 --> 01:14:35,987
เรามีเมตริกจากเอเจนต์ทั้งหมด ที่ถูกดึงมาจากฐานข้อมูลบันทึกการทำงานของเอเจนต์อย่างถูกต้อง

1158
01:14:35,987 --> 01:14:39,336
และเช่นเดียวกันกับ heat map และเมื่อเรามาที่แดชบอร์ด

1159
01:14:39,336 --> 01:14:42,813
เรายังเห็นว่าจำนวน runs ทั้งหมดของเอเจนต์ก็ถูกต้องด้วย

1160
01:14:42,813 --> 01:14:47,772
ยังมีอีกอย่างหนึ่งที่ไม่ถูกต้องตรงนี้ ซึ่งเกี่ยวกับการกระจายภาระงานของเอเจนต์

1161
01:14:47,772 --> 01:14:50,864
(agent workload distribution) อันนี้ควรรวมกันได้

1162
01:14:50,864 --> 01:14:54,921
100 เสมอ เพื่อที่เราจะได้เห็นว่าเอเจนต์ตัวไหนมีภาระงานมากที่สุด

1163
01:14:54,921 --> 01:14:58,399
ผมจะบอก Kite ให้แก้ไขอันนี้ด้วย แล้วเราค่อยไปต่อกับการ

1164
01:14:58,399 --> 01:15:04,517
build ผมบอก Kite ว่า "เฮ้ บนหน้าแรกของแดชบอร์ด การกระจายส่วนแบ่งภาระงานของเอเจนต์ไม่สมเหตุสมผล"

1165
01:15:04,517 --> 01:15:08,574
ผมบอกมันว่าทุกอย่างควรรวมกันได้ 100% แต่ตอนนี้ทุกอย่างรวมกันได้

1166
01:15:08,574 --> 01:15:13,791
350 แนวคิดคือ เมื่อไหร่ก็ตามที่ผมดูอันนี้ ผมควรจะเห็นว่าเอเจนต์ตัวไหนทำงานมากกว่า

1167
01:15:13,791 --> 01:15:18,042
มันควรแก้ไขอันนี้ให้เรา Kite ก็ทำเสร็จแล้ว ตอนนี้เมื่อผมดูแดชบอร์ด

1168
01:15:18,042 --> 01:15:21,133
คุณจะเห็นว่าการกระจายสมเหตุสมผลแล้ว มันรวมกันได้

1169
01:15:21,133 --> 01:15:24,675
100% และผมเห็นชัดเจนว่า Kite เป็นเอเจนต์ที่แอคทีฟที่สุด

1170
01:15:24,675 --> 01:15:30,536
เพราะมันเป็นคนสร้างแดชบอร์ดอยู่แล้ว ตอนนี้ฐานข้อมูลบันทึกการทำงานของเอเจนต์ทำงานถูกต้องแล้ว

1171
01:15:30,536 --> 01:15:34,207
เมตริกทั้งหมดที่วางบนแท็บ agents ก็สมเหตุสมผล เราจึงเริ่ม

1172
01:15:34,207 --> 01:15:39,294
build คอมโพเนนต์อื่นๆ ของแดชบอร์ดได้ ผมจะอธิบายแนวคิดว่าพรอมป์ต์ทั้งหมดจะทำอะไร

1173
01:15:39,294 --> 01:15:44,576
และผมจะใส่พรอมป์ต์ทั้งหมดนี้ในครั้งเดียว เพื่อที่คุณจะได้ไม่ต้องนั่งดูผมใส่ทีละอัน

1174
01:15:44,576 --> 01:15:48,955
ในพรอมป์ต์ถัดไปเราจะสร้าง exporter และขออธิบายว่าทำไมเราถึงต้องมีมัน

1175
01:15:48,955 --> 01:15:52,046
เดิมที เมื่อไหร่ก็ตามที่คุณอยากสร้างภาพ carousel

1176
01:15:52,046 --> 01:15:55,138
หรือสไลด์ คุณต้องออกแบบทุกอย่างในโปรแกรมแก้ไขภาพ

1177
01:15:55,138 --> 01:15:58,164
(photo editor) เสมอ แล้วบันทึก ส่งออกเป็นรูปภาพ

1178
01:15:58,164 --> 01:16:02,222
แล้วคุณก็ได้ภาพ carousel ของคุณ แต่เคล็ดลับที่เราจะใช้ตรงนี้คือ

1179
01:16:02,222 --> 01:16:05,378
เราจะเรนเดอร์ทุกสไลด์ เราจะสร้างทุกสไลด์เป็น HTML

1180
01:16:05,378 --> 01:16:09,177
ถ้าคุณสร้างสไลด์เป็นภาพ คุณจะจ่ายเงินทุกครั้งต่อภาพที่สร้าง

1181
01:16:09,177 --> 01:16:13,235
ถ้าอยากเปลี่ยนข้อความในภาพ นั่นหมายความว่าคุณต้องจ่ายเงินสำหรับ

1182
01:16:13,235 --> 01:16:16,970
API call ทุกครั้ง ซึ่งทำให้การทำงานกับสไลด์ไม่สนุกอีกต่อไป

1183
01:16:16,970 --> 01:16:20,126
เราจะสร้างมันด้วยวิธีที่ฉลาดกว่านี้ เราจะสร้างทุก

1184
01:16:20,126 --> 01:16:25,986
carousel เป็นไฟล์ HTML เพราะมันจะเป็นไฟล์ HTML เราจะแก้ไขข้อความใดก็ตามที่อยากแก้ได้ง่ายมาก

1185
01:16:25,986 --> 01:16:30,752
ขอเข้าไปในเซ็ตอัปของผมเพื่ออธิบายให้คุณเห็นแนวคิดว่าเราจะสร้างสไลด์อย่างไร

1186
01:16:30,752 --> 01:16:34,488
ขอยกอันนี้เป็นตัวอย่าง ทุกอย่างที่คุณเห็นตรงนี้ดูเหมือนภาพ

1187
01:16:34,488 --> 01:16:38,738
แต่จริงๆ แล้วมันไม่ใช่ภาพ มันเป็นเอกสาร HTML ที่เรนเดอร์ไฟล์แบบนี้

1188
01:16:38,738 --> 01:16:42,538
เมื่อไหร่ก็ตามที่ผมอยากส่งออกเป็นภาพ ผมจะใช้สิ่งที่เรียกว่า

1189
01:16:42,538 --> 01:16:45,758
headless browser (เบราว์เซอร์ไร้หน้าต่าง) headless

1190
01:16:45,758 --> 01:16:50,459
browser ไม่จำเป็นต้องมีเดสก์ท็อปในการรัน มันจะเรนเดอร์ไฟล์นี้ซึ่งเป็นไฟล์

1191
01:16:50,459 --> 01:16:56,256
HTML แล้วถ่ายภาพหน้าจอของสิ่งที่มันเห็น ดังนั้นทุกสิ่งที่เราเห็นตรงนี้ซึ่งเรนเดอร์เป็นโค้ด

1192
01:16:56,256 --> 01:17:00,120
จะถูกส่งออกเป็น JPEG ในที่สุด แล้วคุณก็สามารถอัปโหลดมันไปยัง

1193
01:17:00,120 --> 01:17:05,336
Instagram, TikTok หรือที่ไหนก็ตามที่อยากสร้าง เหตุผลที่เราทำด้วยวิธีที่ฉลาดนี้คือ

1194
01:17:05,336 --> 01:17:08,492
เดิมทีเมื่อไหร่ก็ตามที่คุณอยากสร้างสไลด์ carousel

1195
01:17:08,492 --> 01:17:11,648
คุณต้องใช้เครื่องสร้างภาพ บางทีคุณอาจใช้ Leonardo

1196
01:17:11,648 --> 01:17:17,187
หรือโมเดล AI ทั้งหลายที่มีอยู่เพื่อสร้างภาพ แต่เมื่อคุณอยากเปลี่ยนข้อความแม้แต่คำเดียว

1197
01:17:17,187 --> 01:17:20,858
คุณต้องบอกโมเดล AI อีกครั้งว่า "เฮ้ ผมอยากเปลี่ยนข้อความ"

1198
01:17:20,858 --> 01:17:24,013
เช่น ผมอยากเปลี่ยนจาก most people เป็น most users

1199
01:17:24,013 --> 01:17:27,749
ผมต้องบอกโมเดล AI อีกครั้งว่า "เฮ้ ผมอยากเปลี่ยนข้อความจาก

1200
01:17:27,749 --> 01:17:31,742
most people เป็น most users" แล้วคุณก็จ่ายเงินทุกครั้งที่แก้ไข

1201
01:17:31,742 --> 01:17:36,314
ซึ่งอาจไม่ใช่วิธีที่ฉลาดที่สุด วิธีที่ผมสร้างและที่ผู้ใช้ส่วนใหญ่ใช้คือ

1202
01:17:36,314 --> 01:17:39,405
คุณสร้างสไลด์ทั้งใบเป็นไฟล์ HTML และด้วยวิธีนั้น

1203
01:17:39,405 --> 01:17:44,751
คุณสามารถเปลี่ยนทุกอย่างที่อยากเปลี่ยนในไฟล์ได้โดยไม่ต้องสร้างพรอมป์ต์ใหม่หรือสร้าง

1204
01:17:44,751 --> 01:17:48,744
API keys ใหม่ ตัวอย่างเช่น นี่คือสิ่งที่แดชบอร์ดของเราจะทำด้วย

1205
01:17:48,744 --> 01:17:53,381
เมื่อผมคลิก fine-tune แล้วเลือกองค์ประกอบนี้ ผมก็เปลี่ยนข้อความตรงนี้จาก

1206
01:17:53,381 --> 01:17:56,987
people เป็น most builders ได้เลย และคุณจะเห็นว่ามันทำได้

1207
01:17:56,987 --> 01:18:01,174
ผมสามารถบันทึกและเรนเดอร์ใหม่ แล้วผมก็ได้สไลด์ใหม่โดยไม่ต้องเรียก

1208
01:18:01,174 --> 01:18:04,265
API เลย เช่นเดียวกัน ผมเปลี่ยนคอนเทนต์ทั้งหมดได้

1209
01:18:04,265 --> 01:18:08,516
นี่คือเหตุผลที่ผมชอบสิ่งที่เราสร้างตรงนี้มาก ผมเปลี่ยนเลย์เอาต์ได้

1210
01:18:08,516 --> 01:18:13,024
ย้ายคอนเทนต์ทุกชิ้นตรงนี้ เปลี่ยนขนาด ใส่ในรูปแบบไหนก็ได้ตามที่ต้องการ

1211
01:18:13,024 --> 01:18:16,630
โดยไม่ต้องจ่ายค่า API call เลย ดังนั้นสิ่งที่เราสร้างคือ

1212
01:18:16,630 --> 01:18:20,430
เราสร้างสไลด์ carousel ทุกใบเป็นไฟล์ HTML แล้วเมื่อเราพร้อม

1213
01:18:20,430 --> 01:18:28,931
เราก็ใช้ headless browser ที่ดูไฟล์ HTML ที่เราสร้างและสร้างภาพหน้าจอเป็นรูปภาพที่เราสามารถอัปโหลดไปยังแพลตฟอร์มโซเชียลมีเดียใดก็ได้

1214
01:18:28,931 --> 01:18:32,344
เราจึงหลีกเลี่ยงการทำให้การออกแบบภาพ carousel ซับซ้อน

1215
01:18:32,344 --> 01:18:36,402
ที่คุณต้องเรียก API ทุกครั้งที่แก้ไขและจ่ายเงินทุกครั้งที่แก้ไข

1216
01:18:36,402 --> 01:18:40,202
เรากำลังเรนเดอร์ทุกอย่างเป็นไฟล์ HTML ที่แก้ไขได้อย่างอิสระ

1217
01:18:40,202 --> 01:18:43,229
ค่อนข้างบ้ามากที่คุณสามารถทำได้กับ HTML มาตรฐาน

1218
01:18:43,229 --> 01:18:47,093
อย่างที่คุณเห็นเทมเพลตทั้งหมดตรงนี้ ไม่มีสักอันที่เป็นรูปภาพ

1219
01:18:47,093 --> 01:18:52,052
ทุกอย่างสร้างด้วย HTML มาตรฐาน ซึ่งบางคนอาจไม่เชื่อด้วยซ้ำว่าสิ่งนี้สร้างด้วย

1220
01:18:52,052 --> 01:18:55,336
HTML โดยพื้นฐานแล้ว พรอมป์ต์นี้จะสร้างการตั้งค่าของ

1221
01:18:55,336 --> 01:18:58,685
headless browser ที่จะเรนเดอร์สิ่งที่เราสร้างจากไฟล์

1222
01:18:58,685 --> 01:19:03,193
HTML ให้เป็นภาพที่สามารถอัปโหลดบนแพลตฟอร์มโซเชียลมีเดียใดก็ตามที่เรามี

1223
01:19:03,193 --> 01:19:07,508
เราไม่ได้สร้างภาพตรงๆ เราสร้างไฟล์ HTML ที่มีโครงสร้างที่เราต้องการ

1224
01:19:07,508 --> 01:19:11,437
แล้วพอเราพอใจกับมัน เราก็ส่งออกเป็นภาพ และสำหรับสิ่งนี้เราใช้

1225
01:19:11,437 --> 01:19:14,979
headless browser ที่เรียกว่า Chromium และโดยค่าเริ่มต้น

1226
01:19:14,979 --> 01:19:19,938
Hermes setup ส่วนใหญ่มาพร้อมกับ Chromium เราจึงอาจไม่ต้องติดตั้งมันเองด้วยซ้ำ

1227
01:19:19,938 --> 01:19:24,897
เราแค่ใช้ประโยชน์จากสิ่งที่ Hermes มีอยู่แล้ว แล้วใช้มันสร้างสิ่งที่อยากสร้าง

1228
01:19:24,897 --> 01:19:29,405
ถ้าจำได้ ตอนที่เราสร้างแดชบอร์ด มีส่วนที่ผมบอกว่าเอเจนต์ใช้เบราว์เซอร์

1229
01:19:29,405 --> 01:19:35,524
ตัวอย่างเช่น คุณจะเห็นว่า Kite เรนเดอร์เบราว์เซอร์ที่มันไปที่แดชบอร์ดและตรวจสอบว่าทุกอย่างทำงาน

1230
01:19:35,524 --> 01:19:39,839
นั่นคือแนวคิดเดียวกันที่ผมจะใช้ เราจะให้นักออกแบบซึ่งในกรณีนี้ก็คือ

1231
01:19:39,839 --> 01:19:44,862
Kite ใช้ headless browser ตัวเดียวกัน แต่ตอนนี้มันจะไม่ใช้เพื่อตรวจสอบแดชบอร์ด

1232
01:19:44,862 --> 01:19:50,401
แต่จะใช้เพื่อแปลงสิ่งที่ไฟล์ HTML มีอยู่ มันทำให้การสร้างสไลด์ง่ายมากโดยไม่ต้องจ่ายค่า

1233
01:19:50,401 --> 01:19:53,749
API call ทุกครั้ง และ Kite ก็ทำเสร็จแล้ว มันทำ smoke

1234
01:19:53,749 --> 01:19:57,163
test และยืนยันว่าภาพถูกเรนเดอร์จากเบราว์เซอร์เป็นไฟล์

1235
01:19:57,163 --> 01:20:01,156
PNG จริง ในขั้นตอนถัดไป เราจะสร้างทุกอย่างที่จะรันจากแบ็กเอนด์

1236
01:20:01,156 --> 01:20:04,376
ผมจะอธิบายพรอมป์ต์แบ็กเอนด์ทั้งหมดเหล่านี้ แล้วให้

1237
01:20:04,376 --> 01:20:10,687
Kite แต่ผมจะอธิบายพรอมป์ต์ทั้งหมดเหล่านี้จนถึงจุดที่เราไปถึงพรอมป์ต์ที่กระตุ้นการออกแบบฟรอนต์เอนด์

1238
01:20:10,687 --> 01:20:13,714
เมื่อคุณใช้พรอมป์ต์ ทุกอย่างที่ผมพูดว่า backend

1239
01:20:13,714 --> 01:20:16,999
ผมจะพยายามเพิ่มคำนี้ เพื่อให้คุณรู้ว่าจะคาดหวังอะไร

1240
01:20:16,999 --> 01:20:20,283
ถ้าเป็นพรอมป์ต์แบ็กเอนด์ มันจะไม่แสดงอะไรบนแดชบอร์ด

1241
01:20:20,283 --> 01:20:23,954
มันกำลังสร้างรากฐานที่เราจะใช้เพื่อแสดงบางอย่างบนแดชบอร์ด

1242
01:20:23,954 --> 01:20:29,171
เมื่อเราไปถึงจุดที่ผมเขียนว่า design นั่นหมายความว่าสิ่งที่คุณจะทำคือจะแสดงดีไซน์

1243
01:20:29,171 --> 01:20:32,456
แต่ถ้าผมไปถึงจุดที่ผมรู้สึกว่ามีประโยชน์ที่จะอธิบาย

1244
01:20:32,456 --> 01:20:37,672
ผมก็จะอธิบายให้คุณฟังด้วย เพื่อที่คุณจะเข้าใจว่าพรอมป์ต์เหล่านี้หน้าตาเป็นอย่างไร

1245
01:20:37,672 --> 01:20:43,082
และในทุกกรณีผมมักใส่คำอธิบายสั้นๆ เพื่ออธิบายว่าพรอมป์ต์จะทำอะไรและคุณควรคาดหวังอะไร

1246
01:20:43,082 --> 01:20:46,624
ตอนนี้เราทำพรอมป์ต์ exporter เสร็จแล้ว พรอมป์ต์ถัดไปคือ

1247
01:20:46,624 --> 01:20:50,166
template packs auto fit เมื่อไหร่ก็ตามที่เราสร้างไอเดีย

1248
01:20:50,166 --> 01:20:53,644
ขอใช้เซ็ตอัปของผมเพื่อให้คุณเห็นแนวคิดว่าผมกำลังทำอะไร

1249
01:20:53,644 --> 01:20:58,088
เมื่อผมคลิก generate ideas มาดูกัน ผมมีไอเดียที่ถูกสร้างไว้แล้วตรงนี้

1250
01:20:58,088 --> 01:21:01,501
ขอดูตัวอย่างอย่าง "building a one person AI operation

1251
01:21:01,501 --> 01:21:07,684
team" เมื่อผมชอบไอเดียนี้และคลิก promote โดยพื้นฐานแล้วผมสามารถตัดสินใจจำนวนสไลด์ที่ต้องการสร้าง

1252
01:21:07,684 --> 01:21:11,934
สมมติว่าผมอยากสร้างหกสไลด์แล้วกด write slides สิ่งที่จะเกิดขึ้นคือ

1253
01:21:11,934 --> 01:21:16,829
Vera นักเขียนของเราจะเขียนสไลด์สำหรับ carousel หรือคอนเทนต์หรือข้อความสำหรับ

1254
01:21:16,829 --> 01:21:19,920
carousel ที่เราอยากสร้าง อย่างที่บอก ทุกอย่างที่

1255
01:21:19,920 --> 01:21:25,910
Vera ให้เรามาเป็นเพียงข้อความดิบ (raw text) แต่เราต้องสามารถแทรกข้อความเหล่านี้ลงในเทมเพลตได้

1256
01:21:25,910 --> 01:21:29,387
พรอมป์ต์ที่เราจะสร้างตรงนี้จะสร้างส่วนที่นำคอนเทนต์ที่

1257
01:21:29,387 --> 01:21:34,991
Vera สร้างขึ้นมาแทรกลงในเทมเพลต HTML ที่เรามี เทมเพลตทั้งหมดที่คุณเห็นตรงนี้อย่างที่บอก

1258
01:21:34,991 --> 01:21:38,919
เป็นเทมเพลต HTML โดยพื้นฐาน ตัวอย่างเช่น เมื่อผมดูตัวอย่างนี้

1259
01:21:38,919 --> 01:21:43,105
คุณจะเห็นว่าบางอันมีตัวอักษรยาวกว่าบางอัน อันนี้มีตัวอักษรยาวกว่า

1260
01:21:43,105 --> 01:21:46,519
อันนี้มีเลย์เอาต์ต่างกันและอื่นๆ สิ่งที่จะเกิดขึ้นคือ

1261
01:21:46,519 --> 01:21:50,576
แบ็กเอนด์ที่เราจะสร้างจะดูเทมเพลตที่คุณเลือก แล้วปรับข้อความที่

1262
01:21:50,576 --> 01:21:54,762
Vera สร้างให้เข้ากับเทมเพลตนั้น และนี่คือสิ่งที่ผมเรียกว่าฟีเจอร์

1263
01:21:54,762 --> 01:21:58,369
auto fit เพื่อให้สิ่งนี้ทำงาน เราต้องสร้างเรนเดอร์เอนจิน

1264
01:21:58,369 --> 01:22:02,619
(render engine) ที่จะดูคอนเทนต์ที่ Vera สร้าง แล้วดูเทมเพลตปลายทาง

1265
01:22:02,619 --> 01:22:05,646
ตัวอย่างเช่น ถ้าผมบอกว่า "เฮ้ ผมชอบคอนเทนต์นี้"

1266
01:22:05,646 --> 01:22:09,961
เมื่อผมมาที่ approve และเลือกเทมเพลต มันจะถามว่าผมอยากใช้เทมเพลตไหน

1267
01:22:09,961 --> 01:22:15,886
เมื่อไหร่ก็ตามที่ผมเลือกเทมเพลตที่อยากใช้ แบ็กเอนด์ที่เราจะสร้างตรงนี้จะดูเทมเพลตที่เราเลือก

1268
01:22:15,886 --> 01:22:19,042
ดูจำนวนคำและตัวอักษรที่มี แล้วปรับข้อความที่ Vera

1269
01:22:19,042 --> 01:22:22,069
สร้างให้เข้ากับเทมเพลตนั้น ลองนึกภาพว่าถ้าคำที่

1270
01:22:22,069 --> 01:22:26,062
Vera สร้างยาวเกินกว่าที่เทมเพลตรองรับ carousel ก็จะดูน่าเกลียด

1271
01:22:26,062 --> 01:22:30,248
นี่คือเหตุผลที่เราสร้างเรนเดอร์เอนจินนี้เพื่อจัดการสิ่งนั้นให้เรา

1272
01:22:30,248 --> 01:22:34,434
และหลังจากนั้นเราจะสร้างไปป์ไลน์ (pipeline) เพื่อคุยกับทีมเอเจนต์

1273
01:22:34,434 --> 01:22:37,719
ตอนนี้เวลาผมคุยกับทีม ผมแชทกับ Kite ได้ แชทกับ Vera

1274
01:22:37,719 --> 01:22:42,549
ได้ แต่ยังแชทกับนักเผยแพร่ของเราไม่ได้ แต่เราอยากคุยกับพวกมันจากแดชบอร์ดได้

1275
01:22:42,549 --> 01:22:45,576
และคำว่า "คุย" ที่ผมหมายถึงคือ เมื่อผมมาที่แท็บ

1276
01:22:45,576 --> 01:22:48,796
ideas แล้วคลิก generate ideas นี่จะส่งข้อความไปที่

1277
01:22:48,796 --> 01:22:52,467
Atlas นักวิจัยของเราเพื่อหาไอเดียว่าเราสามารถสร้างอะไรได้

1278
01:22:52,467 --> 01:22:55,687
ผมกำลังคุยกับ Atlas ผ่านโค้ดที่ผมส่งทริกเกอร์ไปที่

1279
01:22:55,687 --> 01:22:59,938
Atlas ว่า "เฮ้ สร้างไอเดียให้หน่อย" และเช่นเดียวกันกับเอเจนต์อื่นๆ

1280
01:22:59,938 --> 01:23:03,737
ทั้งหมด เมื่อไหร่ก็ตามที่เราอยากเผยแพร่อะไร เราไม่ต้องมาที่

1281
01:23:03,737 --> 01:23:09,662
Telegram แล้วบอกให้มันเผยแพร่ เราอยากกดปุ่มบนแดชบอร์ดที่จะทริกเกอร์เอเจนต์ให้เผยแพร่คอนเทนต์

1282
01:23:09,662 --> 01:23:15,781
และนี่คือสิ่งที่พรอมป์ต์ 17 จะทำ มันจะสร้างอินเทอร์เฟซที่เมื่อไหร่ก็ตามที่เราคลิกปุ่มบนแดชบอร์ด

1283
01:23:15,781 --> 01:23:20,160
มันจะส่งและทริกเกอร์เอเจนต์ให้ทำงานนั้นให้เรา จากนั้นเราจะมีพรอมป์ต์

1284
01:23:20,160 --> 01:23:25,119
18 พรอมป์ต์ 18 จะเป็นของ Atlas โดยเฉพาะ ซึ่งเป็นคนดูแลไอเดียและนักวิจัยของเรา

1285
01:23:25,119 --> 01:23:28,726
และผมก็แค่บอก Atlas ว่าผมอยากให้ carousel ออกแบบมาแบบไหน

1286
01:23:28,726 --> 01:23:31,881
ตรงนี้เป็นแค่ตัวอย่างที่ผมใส่ลงไป ผมบอก Atlas ว่า

1287
01:23:31,881 --> 01:23:36,583
"เฮ้ เมื่อไหร่ก็ตามที่คุณเขียนสไลด์ carousel ผมอยากให้เขียนด้วยภาษาธรรมดา

1288
01:23:36,583 --> 01:23:39,610
ง่ายๆ คำสั้นๆ ประโยคสั้นๆ ไม่มีการโอเวอร์ ไม่มี

1289
01:23:39,610 --> 01:23:43,281
buzz words อะไรแบบนั้น" ดังนั้นพรอมป์ต์นี้จึงให้แนวทางแก่

1290
01:23:43,281 --> 01:23:46,436
Atlas ว่าเราอยากให้คอนเทนต์เป็นแบบไหน รวมถึง Vera

1291
01:23:46,436 --> 01:23:50,816
นักเขียนคอนเทนต์ของเราว่าเราอยากให้คอนเทนต์ของสไลด์หน้าตาเป็นอย่างไร

1292
01:23:50,816 --> 01:23:54,229
และตรงนี้เรายังให้แนวทางกับมันเกี่ยวกับการสร้างไอเดีย

1293
01:23:54,229 --> 01:23:57,320
มันควรสร้างสี่ไอเดีย และแนวทางว่าเราอยากให้สไลด์

1294
01:23:57,320 --> 01:24:01,764
carousel ทั้งหมดหน้าตาเป็นอย่างไร จากนั้นเราจะมีพรอมป์ต์สุดท้ายตรงนี้

1295
01:24:01,764 --> 01:24:05,435
ซึ่งสำหรับนักเผยแพร่ของเราเมื่อไหร่ก็ตามที่เราอยากเผยแพร่

1296
01:24:05,435 --> 01:24:08,849
ตัวอย่างเช่น เมื่อเรามาที่แดชบอร์ดและมาที่แท็บ studio

1297
01:24:08,849 --> 01:24:13,614
ถ้าผมอยากเผยแพร่อะไรตรงนี้ ผมก็แค่คลิก post แล้วมันก็สามารถเผยแพร่ตรงไปยัง

1298
01:24:13,614 --> 01:24:19,217
Instagram, TikTok หรือที่ไหนก็ตามที่คุณอยากใช้ แต่สำหรับสิ่งนั้นเราก็ต้องสร้างแบ็กเอนด์

1299
01:24:19,217 --> 01:24:25,786
และนั่นคือสิ่งที่พรอมป์ต์นี้จะทำ พรอมป์ต์นี้จะสร้างแบ็กเอนด์ที่เมื่อไหร่ก็ตามที่เราทริกเกอร์การอัปโหลด

1300
01:24:25,786 --> 01:24:30,552
การอัปโหลดนั้นก็สามารถถูกส่งตรงไปยังแพลตฟอร์มโซเชียลมีเดียที่เราอยากส่งได้

1301
01:24:30,552 --> 01:24:36,413
ผมจะรันพรอมป์ต์ทั้งหมดนี้ พรอมป์ต์แรกคือตัวที่จะนำข้อความที่ถูกสร้างมาปรับให้เข้ากับเทมเพลต

1302
01:24:36,413 --> 01:24:42,145
พรอมป์ต์ถัดไปคือตัวที่ดูแลให้เราใช้ปุ่มทั้งหมดบนแดชบอร์ดเพื่อทริกเกอร์แอ็กชันไปที่เอเจนต์

1303
01:24:42,145 --> 01:24:45,687
พรอมป์ต์ 18 ซึ่งจะดูแลว่าเราอยากให้ไอเดียถูกสร้างแบบไหน

1304
01:24:45,687 --> 01:24:49,487
จำนวนไอเดียที่อยากให้สร้าง อยากให้แคปชันแบบไหน อยากให้สไลด์

1305
01:24:49,487 --> 01:24:57,923
carousel คอนเทนต์หน้าตาแบบไหน และเราจะมีพรอมป์ต์สุดท้ายที่ดูแลการเผยแพร่ไปยังเซิร์ฟเวอร์หรือแพลตฟอร์มโซเชียลมีเดียที่เราอยากเผยแพร่

1306
01:24:57,923 --> 01:25:02,303
ผมจะรันพรอมป์ต์ทั้งหมดนี้ ถ้าเจอปัญหาอะไร ผมจะหยุดและอธิบายให้คุณฟัง

1307
01:25:02,303 --> 01:25:05,523
เพื่อให้คุณตามสิ่งที่เราจะทำตรงนั้นได้ เอาล่ะ Kite

1308
01:25:05,523 --> 01:25:08,614
ประมวลผลพรอมป์ต์ทั้งหมดนั้นเสร็จแล้ว อย่างที่บอก

1309
01:25:08,614 --> 01:25:11,963
ผมไม่ต้องตอบอะไรเลย ผมแค่คัดลอกวางพรอมป์ต์ทั้งหมดให้

1310
01:25:11,963 --> 01:25:15,377
Kite แล้วมันก็ประมวลผลแบ็กเอนด์ทั้งหมด ในขั้นตอนถัดไป

1311
01:25:15,377 --> 01:25:18,597
เราจะหา API keys มาบางอัน และผมจะอธิบายทุก API key

1312
01:25:18,597 --> 01:25:22,718
ว่าคืออะไรและทำไมเราถึงต้องใช้มัน API key แรกที่เราจะหาคือสำหรับ

1313
01:25:22,718 --> 01:25:27,291
Perplexity Perplexity เป็นหนึ่งในโมเดล AI ที่แข็งแกร่งมากในด้านการวิจัย

1314
01:25:27,291 --> 01:25:30,769
ผมจึงเพิ่มฟีเจอร์นี้ เพื่อที่ว่าเมื่อคุณเขียน carousel

1315
01:25:30,769 --> 01:25:33,989
และอยากให้เอเจนต์ใช้ข้อมูลล่าสุดจริงๆ ตัวอย่างเช่น

1316
01:25:33,989 --> 01:25:37,080
คุณสามารถใช้ Perplexity เป็นโมเดลวิจัย โดย Atlas

1317
01:25:37,080 --> 01:25:41,460
จะสอบถาม Perplexity เพื่อทำการวิจัยก่อนที่คอนเทนต์ของสไลด์จะถูกเขียน

1318
01:25:41,460 --> 01:25:46,161
ขอยกตัวอย่างว่าเราจะใช้มันตรงไหน ตัวอย่างเช่น เมื่อผมมาที่แดชบอร์ดและคลิก

1319
01:25:46,161 --> 01:25:50,154
generate ideas คุณจะเห็นว่าผมมีไอเดียสองสามอันที่ถูกสร้างให้ผม

1320
01:25:50,154 --> 01:25:53,310
ตัวอย่างเช่น ลองเลือก "builder AI automation map"

1321
01:25:53,310 --> 01:25:56,787
เมื่อผมอยากโปรโมตบทความนี้หรือโปรโมตไอเดียนี้เป็นสไลด์

1322
01:25:56,787 --> 01:26:00,330
ผมมีตัวเลือกนี้คือ research with Perplexity ถ้าคุณเลือก

1323
01:26:00,330 --> 01:26:03,743
research with Perplexity แล้ว เอเจนต์จะใช้ Perplexity

1324
01:26:03,743 --> 01:26:07,478
เป็นเครื่องมือวิจัยเพื่อรวบรวมข้อมูลเกี่ยวกับไอเดียใหม่นี้

1325
01:26:07,478 --> 01:26:13,017
ถ้าคุณไม่เลือกอันนี้ เอเจนต์ก็จะทำการค้นหาเว็บแบบมาตรฐานเพื่อหาไอเดียสำหรับคอนเทนต์นี้

1326
01:26:13,017 --> 01:26:18,169
หรืออาจใช้สิ่งที่เอเจนต์ถูกฝึกมาแล้ว แต่ถ้าคุณอยากได้คอนเทนต์ที่อิงงานวิจัยจริงๆ

1327
01:26:18,169 --> 01:26:25,382
คุณก็เปิด research with Perplexity แล้วเอเจนต์จะสร้างคอนเทนต์ที่อิงการวิจัยสำหรับบทความหรือไอเดียที่คุณอยากสร้าง

1328
01:26:25,382 --> 01:26:28,989
นั่นจะเป็นคีย์แรกที่เราจะได้มา ในการหามัน คุณสามารถมาที่

1329
01:26:28,989 --> 01:26:32,531
console.perplexity.ai ผมจะใส่ลิงก์ไว้ในส่วนคำอธิบายด้วย

1330
01:26:32,531 --> 01:26:36,009
เมื่อมาถึงตรงนี้ แค่สร้างบัญชีหรือล็อกอินถ้ามีอยู่แล้ว

1331
01:26:36,009 --> 01:26:39,551
เมื่อคุณล็อกอินเข้าคอนโซลแล้ว คุณไม่ต้องทำอะไรมากตรงนี้

1332
01:26:39,551 --> 01:26:42,642
แค่มาที่ส่วนด้านซ้ายแล้วคลิก API keys จากนั้นใต้

1333
01:26:42,642 --> 01:26:45,669
API keys ให้มาที่มุมขวาบน คลิก generate API key

1334
01:26:45,669 --> 01:26:49,082
คุณสามารถตั้งชื่อคีย์ได้ตามต้องการ สำหรับบทช่วยสอนนี้

1335
01:26:49,082 --> 01:26:52,109
ผมจะเรียกมันว่า Komputer Mechanic tutorial test

1336
01:26:52,109 --> 01:26:55,329
แล้วคลิก create a key หลังจากนั้น คุณจะเห็นว่า API

1337
01:26:55,329 --> 01:26:59,000
key ถูกสร้างให้คุณ คัดลอก API key นี้ เก็บไว้ในที่ปลอดภัย

1338
01:26:59,000 --> 01:27:02,221
แล้วเราจะใช้ API key นี้ ขั้นตอนถัดไป เราจะได้ API

1339
01:27:02,221 --> 01:27:05,312
key จาก ImgBB แต่ขออธิบายว่าทำไมเราถึงต้องใช้มัน

1340
01:27:05,312 --> 01:27:08,661
สิ่งที่เราอยากทำกับการตั้งค่าของเราคือ เรามี Cadence

1341
01:27:08,661 --> 01:27:11,881
และอยากส่งภาพจากตรงนี้ไปยัง Instagram เป็นตัวอย่าง

1342
01:27:11,881 --> 01:27:15,037
ปัญหาคือ ถ้าเราอยากส่งสไลด์ของเราตรงๆ จาก Cadence

1343
01:27:15,037 --> 01:27:18,901
ไปยัง Instagram เราต้องได้ Instagram API key ถ้าอยากทำสำหรับ

1344
01:27:18,901 --> 01:27:22,572
TikTok คุณต้องสร้าง TikTok flow ของคุณเอง ถ้าอยากทำสำหรับ

1345
01:27:22,572 --> 01:27:26,243
Facebook คุณต้องสร้างคีย์ของคุณเอง flow ของคุณเองและอื่นๆ

1346
01:27:26,243 --> 01:27:32,747
และนี่ซับซ้อนมาก เราจะใช้เวลากับการสร้างการเชื่อมต่อเหล่านั้นมากกว่าที่จะโฟกัสกับแดชบอร์ดที่อยากสร้าง

1347
01:27:32,747 --> 01:27:36,032
ดังนั้นสิ่งที่เราจะทำคือ มีบางแพลตฟอร์มอย่าง Buffer

1348
01:27:36,032 --> 01:27:39,059
หรือ Metricool และสิ่งที่แพลตฟอร์มเหล่านี้ทำคือ

1349
01:27:39,059 --> 01:27:42,086
พวกมันมีการเข้าถึงแพลตฟอร์มโซเชียลมีเดียทั้งหมด

1350
01:27:42,086 --> 01:27:48,333
และพวกมันจัดการแบ็กเอนด์ทั้งหมดนั้นให้คุณแล้ว สิ่งที่เราต้องทำคือส่งสไลด์ของเราผ่านแพลตฟอร์มอย่าง

1351
01:27:48,333 --> 01:27:53,678
Metricool หรือ Buffer แล้วพวกมันก็จะส่งสไลด์ไปยังแพลตฟอร์มโซเชียลมีเดียที่เราอยากไป

1352
01:27:53,678 --> 01:27:56,834
มีข้อแม้หนึ่งข้อ อย่างน้อยจากการทดสอบของผม Buffer

1353
01:27:56,834 --> 01:28:02,051
ไม่อนุญาตให้เราส่งภาพตรงๆ ไปยังแพลตฟอร์มนั้น เราจึงต้องมีพื้นที่เก็บข้อมูลตัวกลาง

1354
01:28:02,051 --> 01:28:05,271
(intermediate storage) ที่ภาพที่เราสร้างจะถูกส่งไป

1355
01:28:05,271 --> 01:28:10,423
แล้วจากนั้นภาพก็จะไปที่ Buffer และสำหรับสิ่งนั้นเราจะต้องใช้แพลตฟอร์มที่เรียกว่า

1356
01:28:10,423 --> 01:28:15,446
ImgBB ซึ่ง ImgBB นี้ฟรี สิ่งที่จะเกิดขึ้นคือ เมื่อไหร่ก็ตามที่คุณส่งภาพหรือส่ง

1357
01:28:15,446 --> 01:28:18,989
story หรือ carousel จาก Cadence ของเรา มันจะถูกส่งไปที่

1358
01:28:18,989 --> 01:28:22,015
ImgBB ก่อน แล้วจาก ImgBB ภาพก็จะไปที่ Instagram

1359
01:28:22,015 --> 01:28:25,686
ฟังดูซับซ้อนจากการตั้งค่าที่ผมกำลังอธิบาย แต่เราจะเดินสาย

1360
01:28:25,686 --> 01:28:30,517
(wire) สิ่งนี้เข้าไป และเมื่อคุณคลิก post เช่น เมื่อผมมาที่แดชบอร์ดแล้วคลิก

1361
01:28:30,517 --> 01:28:35,025
post แล้วเลือก เช่น ผมอยากโพสต์ไปที่ Instagram นี่คือสิ่งที่จะเกิดขึ้น

1362
01:28:35,025 --> 01:28:39,855
การโอนย้ายทั้งหมดนี้จะเกิดขึ้นโดยอัตโนมัติ คุณไม่ต้องไปส่งจากที่นี่ไปที่นี่

1363
01:28:39,855 --> 01:28:43,462
ส่งจากที่นี่ไปที่นี่ เราจะเดินสายการเชื่อมต่อทั้งหมดนั้น

1364
01:28:43,462 --> 01:28:46,811
ในการทำอย่างนั้น เราจะมาที่ ImgBB ซึ่งฟรีโดยสิ้นเชิง

1365
01:28:46,811 --> 01:28:51,383
คุณสามารถสร้างบัญชีฟรีได้ เมื่อสร้างบัญชีแล้ว มาที่ส่วนด้านซ้ายแล้วคลิก

1366
01:28:51,383 --> 01:28:54,474
API นี่จะพาคุณไปที่หน้า API เมื่ออยู่ตรงนี้ คลิก

1367
01:28:54,474 --> 01:28:58,081
add API key สร้าง API key เก็บ API key แล้วเราก็ไปต่อยัง

1368
01:28:58,081 --> 01:29:06,003
API key ถัดไปที่เราต้องการ API key ถัดไปที่เราต้องการคือแพลตฟอร์มที่จะส่งสไลด์ของเราไปยังแพลตฟอร์มโซเชียลมีเดียที่เราอยากไป

1369
01:29:06,003 --> 01:29:09,029
ตรงนี้มีหลายแพลตฟอร์ม ตัวอย่างเช่น เรามี Buffer

1370
01:29:09,029 --> 01:29:12,765
ที่ทำสิ่งนี้ให้เราได้ และเราก็มี Metricool ที่ทำได้เช่นกัน

1371
01:29:12,765 --> 01:29:17,788
ทั้งคู่ทำงานได้ ผมรู้ว่าหลายคนใช้ Metricool เพราะพวกเขามีแดชบอร์ดที่ทรงพลังมาก

1372
01:29:17,788 --> 01:29:21,330
แต่จากการทดสอบของผม ผมพบว่าเพื่อให้คุณสามารถส่งสไลด์จาก

1373
01:29:21,330 --> 01:29:24,744
Cadence OS ไปยัง Instagram หรือ TikTok ได้ ถ้าอยากใช้

1374
01:29:24,744 --> 01:29:28,479
Metricool เราต้องเลือกแผนที่แพงขึ้น มีเพียงตัวเลือกขั้นสูง

1375
01:29:28,479 --> 01:29:33,052
(advanced) ที่คุณจ่าย 43 ดอลลาร์ต่อเดือนในกรณีของผมเท่านั้นที่จะมาพร้อม

1376
01:29:33,052 --> 01:29:36,787
Metricool API อันนี้ค่อนข้างแพงสำหรับผม เพราะถ้าคุณอยากให้

1377
01:29:36,787 --> 01:29:39,878
Metricool ทำงานกับ Cadence จริงๆ คุณต้องเลือกแผน

1378
01:29:39,878 --> 01:29:43,098
advance ที่จ่ายเป็นดอลลาร์ต่อเดือนเพื่อเข้าถึง API

1379
01:29:43,098 --> 01:29:47,478
ของพวกเขา จำไว้ว่า API คืออินเทอร์เฟซที่ให้เราสื่อสารกับแพลตฟอร์มได้

1380
01:29:47,478 --> 01:29:51,278
และในกรณีของผม ผมมีบัญชีโซเชียลมีเดียแค่สองบัญชีที่ใช้ทดสอบ

1381
01:29:51,278 --> 01:29:56,043
ผมไม่อยากจ่าย 43 ดอลลาร์ต่อเดือนเพื่อแพลตฟอร์มโซเชียลมีเดียแค่สองแพลตฟอร์ม

1382
01:29:56,043 --> 01:29:59,328
แต่ข้อดีของ Metricool คือ คุณสามารถเลือกแผนเริ่มต้น

1383
01:29:59,328 --> 01:30:07,121
(starter plan) ที่จ่าย 16 ดอลลาร์ต่อเดือน แล้วคุณสามารถเพิ่มแพลตฟอร์มโซเชียลมีเดียได้มากเท่าที่ต้องการโดยไม่ต้องเพิ่มราคา

1384
01:30:07,121 --> 01:30:10,598
ตัวอย่างเช่น ถ้าคุณมีสี่แพลตฟอร์มโซเชียลมีเดีย TikTok,

1385
01:30:10,598 --> 01:30:14,076
Facebook, LinkedIn ฯลฯ คุณก็ยังจ่าย 16 ดอลลาร์ต่อเดือน

1386
01:30:14,076 --> 01:30:17,361
ซึ่งผมว่าค่อนข้างเจ๋ง และผมจะโชว์ให้ดูตอนที่ผมเลือก

1387
01:30:17,361 --> 01:30:23,350
Metricool เรามีอีกแพลตฟอร์มที่เรียกว่า Buffer และนั่นคือสิ่งที่ผมใช้ในสิ่งที่เรากำลังสร้างกับ

1388
01:30:23,350 --> 01:30:26,441
Hermes ข้อดีของ Buffer คือ พวกเขาอนุญาตให้เราใช้

1389
01:30:26,441 --> 01:30:30,434
API assets ของพวกเขาได้แม้กับแผนมาตรฐาน และผมคิดว่าในกรณีของผม

1390
01:30:30,434 --> 01:30:34,556
ผมเลือกแผน 5 ดอลลาร์ซึ่งเป็นแบบ essential ถึงแม้กับแผนนี้คุณก็มี

1391
01:30:34,556 --> 01:30:38,227
API keys สามอันและใช้มันได้ แต่กับ Metricool คุณจะเข้าถึง

1392
01:30:38,227 --> 01:30:41,254
API key ได้ก็ต่อเมื่อมีแผน 43 ดอลลาร์ ข้อแม้ของ

1393
01:30:41,254 --> 01:30:44,281
Buffer คือ ทุกแพลตฟอร์มโซเชียลมีเดียที่คุณเพิ่ม

1394
01:30:44,281 --> 01:30:47,630
คุณจ่ายเพิ่มอีก 5 ดอลลาร์ ถ้าคุณมี TikTok, Facebook,

1395
01:30:47,630 --> 01:30:50,979
Instagram ก็เป็น 15 ดอลลาร์ ถ้าเพิ่ม LinkedIn ก็เป็น

1396
01:30:50,979 --> 01:30:55,745
20 ดอลลาร์ มันอาจแพงขึ้นเรื่อยๆ ในกรณีนั้น ถ้าคุณไม่สนใจเรื่องการส่งตรงจาก

1397
01:30:55,745 --> 01:31:02,121
Cadence ไปยังแพลตฟอร์มโซเชียลมีเดีย ผมก็เพิ่มตัวเลือกบนแดชบอร์ดที่คุณสามารถดาวน์โหลดสไลด์ทั้งหมดได้

1398
01:31:02,121 --> 01:31:06,886
ขอทำตัวอย่างให้ดู เมื่อผมคลิก slides คุณจะเห็นว่าสไลด์ถูกดาวน์โหลดมาที่นี่

1399
01:31:06,886 --> 01:31:10,944
เมื่อผมคลิกอันนี้ คุณจะเห็นว่าผมมีสไลด์ทั้งหมดดาวน์โหลดมาที่นี่

1400
01:31:10,944 --> 01:31:14,099
ขอไปที่ thumbnails แล้วคุณจะเห็นว่าผมมีภาพทั้งหมด

1401
01:31:14,099 --> 01:31:17,191
และสิ่งที่ผมเพิ่มให้คุณอีกอย่างคือ คุณสามารถคลิก

1402
01:31:17,191 --> 01:31:20,411
caption แล้วคุณจะเห็นแคปชันที่จำเป็นสำหรับการโพสต์

1403
01:31:20,411 --> 01:31:23,695
แล้วคุณก็โพสต์ด้วยตัวเองได้ และในกรณีนั้น Metricool

1404
01:31:23,695 --> 01:31:26,722
น่าจะเป็นตัวเลือกที่ดีที่สุด เพราะพวกเขามี เช่น

1405
01:31:26,722 --> 01:31:30,200
สำหรับแผน 16 ดอลลาร์ คุณจะเพิ่มโซเชียลมีเดียได้มากขึ้น

1406
01:31:30,200 --> 01:31:35,224
คุณเห็นตรงนี้ได้ถึง 10 แบรนด์ ซึ่งเจ๋งมาก แต่ถ้าคุณอยากใช้ประโยชน์จากการส่งจาก

1407
01:31:35,224 --> 01:31:38,508
Cadence ตรงๆ ไปยังแพลตฟอร์มโซเชียลมีเดียของคุณจริงๆ

1408
01:31:38,508 --> 01:31:44,755
Buffer อาจเป็นตัวเลือกที่ถูกกว่า ผมแค่พยายามอธิบายว่าคุณจะตัดสินใจเลือกแพลตฟอร์มที่อยากใช้อย่างไร

1409
01:31:44,755 --> 01:31:47,911
สำหรับตัวอย่างนี้เราจะใช้ Buffer เพราะอย่างที่บอก

1410
01:31:47,911 --> 01:31:51,131
ผมมีบัญชีโซเชียลมีเดียแค่สองบัญชี และผมไม่อยากจ่าย

1411
01:31:51,131 --> 01:31:56,670
43 ดอลลาร์ตรงนี้เพื่อการทดสอบของผม คุณจึงสามารถสร้างบัญชีกับแพลตฟอร์มใดก็ได้ที่อยากใช้

1412
01:31:56,670 --> 01:31:59,954
แล้วล็อกอินเข้าบัญชีของคุณ เมื่อคุณล็อกอินเข้าบัญชี

1413
01:31:59,954 --> 01:32:04,269
Buffer ของคุณแล้ว แดชบอร์ดของ Buffer ให้มาที่ส่วนล่างตรงนี้ที่คุณมี

1414
01:32:04,269 --> 01:32:07,360
my organization แล้วคลิก API จากนั้นคลิก new key

1415
01:32:07,360 --> 01:32:11,160
แล้วคุณก็สามารถสร้าง API key ได้ ด้วย API keys สามอันนี้จาก

1416
01:32:11,160 --> 01:32:14,831
Perplexity, ImgBB และ Buffer เราจะสามารถเดินสายมันเข้ากับ

1417
01:32:14,831 --> 01:32:18,051
Cadence และ build ต่อไปได้ เมื่อเรารวบรวม API keys

1418
01:32:18,051 --> 01:32:21,593
เหล่านี้แล้ว เราต้องเก็บ API keys ลงบนเซิร์ฟเวอร์ของเรา

1419
01:32:21,593 --> 01:32:26,424
ในการทำอย่างนั้น เราจะกลับมาที่ PowerShell ผมจะล็อกอินกลับเข้าสู่เทอร์มินัล

1420
01:32:26,424 --> 01:32:29,515
กลับมาแล้ววางคำสั่งนี้ คำสั่งนี้จะถามหา API keys

1421
01:32:29,515 --> 01:32:33,315
ทั้งหมด และมันจะถูกเก็บอย่างลับๆ โดยหลักการแล้วคุณสามารถให้

1422
01:32:33,315 --> 01:32:36,599
API keys ตรงๆ กับ Kite ได้ แต่นี่ไม่ใช่วิธีที่แนะนำ

1423
01:32:36,599 --> 01:32:39,626
เพราะถ้ามันถูกบุกรุก ใครบางคนจะเข้าถึง API keys

1424
01:32:39,626 --> 01:32:42,846
ของคุณ นี่คือเหตุผลที่เมื่อไหร่ก็ตามที่ผมเพิ่ม API

1425
01:32:42,846 --> 01:32:45,873
keys หรือความลับ (secrets) ผมชอบทำจากเทอร์มินัล

1426
01:32:45,873 --> 01:32:49,093
มากกว่าที่จะให้ Kite หรือ Telegram โดยตรง กด enter

1427
01:32:49,093 --> 01:32:52,636
แล้วมันจะถามหา Buffer access token ของคุณ ตรงนี้ผมจะวาง

1428
01:32:52,636 --> 01:32:56,178
Buffer key ของผม วางลงไป แล้วกด enter จากนั้นมันจะถามหา

1429
01:32:56,178 --> 01:32:59,269
ImgBB API key ผมจะคัดลอกอันนี้เช่นกัน วางลงไป กด

1430
01:32:59,269 --> 01:33:02,489
enter แล้วอันสุดท้ายจะถามหา Perplexity ของคุณ อุ๊ย

1431
01:33:02,489 --> 01:33:05,645
ผมรู้ตัวว่าผมทำผิด อันแรกที่ผมใส่ไม่ใช่ของ Buffer

1432
01:33:05,645 --> 01:33:09,316
แต่เป็นของ Perplexity ผมจะยกเลิกอันนี้แล้วรันใหม่อีกครั้ง

1433
01:33:09,316 --> 01:33:12,922
หวังว่ามันจะไม่เละ ผมจะบอก Kite ระหว่างทางว่าผมทำผิดพลาด

1434
01:33:12,922 --> 01:33:16,271
ผมจะเรียกคำสั่งเดิมที่ใช้ กด enter แล้วคัดลอก Buffer

1435
01:33:16,271 --> 01:33:19,620
key ที่ถูกต้อง จากนั้นคัดลอก ImgBB key จากนั้นคัดลอก

1436
01:33:19,620 --> 01:33:23,806
Perplexity API key วางลงไป แล้วคุณจะเห็นว่าข้อมูลทั้งหมดถูกบันทึก

1437
01:33:23,806 --> 01:33:28,121
และเราได้รับการแจ้งเตือนว่าทุกอย่างเสร็จสิ้น สิ่งที่ผมจะทำตอนนี้คือ

1438
01:33:28,121 --> 01:33:31,277
มาที่ Kite แล้วบอก Kite ว่า "เฮ้ เราเก็บ API keys

1439
01:33:31,277 --> 01:33:35,592
สามอันนี้แล้ว มันควรทำ smoke test เพื่อให้แน่ใจว่าคีย์ทั้งหมดทำงาน"

1440
01:33:35,592 --> 01:33:39,456
ผมจะคัดลอกอันนี้และให้ Kite แต่เพราะผมทำผิดและใส่มันสองครั้ง

1441
01:33:39,456 --> 01:33:43,965
ผมจะเขียนบอกมันว่า "ผมทำผิดและเพิ่มมันสองครั้ง คุณเพิกเฉยรายการนี้ได้"

1442
01:33:43,965 --> 01:33:48,151
จากนั้นบอกให้มันทำ smoke test ผมหวังว่าความผิดพลาดครั้งแรกที่ผมทำ

1443
01:33:48,151 --> 01:33:53,303
มันจะแก้ไขให้และเห็นว่าคีย์ทั้งหมดทำงาน เฮ้ ถ้าคุณเห็นคุณค่าในคอนเทนต์ที่ผมสร้าง

1444
01:33:53,303 --> 01:33:56,330
กดปุ่ม subscribe สมัครสมาชิกช่องของผม และกดปุ่ม

1445
01:33:56,330 --> 01:34:00,194
like เพื่อให้อัลกอริทึมของ YouTube ผลักวิดีโอนี้ไปยังคนอื่นๆ

1446
01:34:00,194 --> 01:34:04,895
ที่อยู่ข้างนอก มันไม่เสียเงินคุณเลย แต่มันสนับสนุนการเติบโตของช่องผมจริงๆ

1447
01:34:04,895 --> 01:34:08,116
มีงานจำนวนมากที่ใส่ลงไปในการสร้างบทช่วยสอนเหล่านี้

1448
01:34:08,116 --> 01:34:12,559
การสร้างพรอมป์ต์ นี่คือเหตุผลที่ผมไม่สามารถอัปโหลดวิดีโอทุกสัปดาห์ได้

1449
01:34:12,559 --> 01:34:16,037
เพราะผมทดสอบทุกอย่างประมาณ 20 ครั้งก่อนที่จะปล่อยออกไป

1450
01:34:16,037 --> 01:34:19,450
นี่คือเหตุผลที่ผมต้องอัปโหลดวิดีโอตามกำหนดการรายปักษ์

1451
01:34:19,450 --> 01:34:23,443
(bi-weekly) เพราะมีงานจำนวนมากที่ใส่ลงไปในการสร้างสิ่งเหล่านี้

1452
01:34:23,443 --> 01:34:26,728
Kite ก็ทำเสร็จเช่นกัน มันทำ smoke test มันยืนยันว่า

1453
01:34:26,728 --> 01:34:30,077
Buffer ทำงาน ImgBB ทำงาน และ Perplexity ทำงาน เอาล่ะ

1454
01:34:30,077 --> 01:34:35,615
ในขั้นตอนถัดไป เราจะใส่พรอมป์ต์ 20 พรอมป์ต์ 20 จะให้ทริกเกอร์ที่เราสามารถเผยแพร่ไอเดีย

1455
01:34:35,615 --> 01:34:39,158
สร้างไอเดีย เรนเดอร์คอนเทนต์ เรนเดอร์ carousel และอื่นๆ

1456
01:34:39,158 --> 01:34:42,185
แค่คัดลอกพรอมป์ต์นี้แล้วให้ Kite เช่นกัน เอาล่ะ

1457
01:34:42,185 --> 01:34:46,113
Kite ก็ทำเสร็จแล้ว พรอมป์ต์สามอันถัดไปจะเป็นพรอมป์ต์การออกแบบ

1458
01:34:46,113 --> 01:34:49,140
(design prompts) อันนี้จะเดินสายแท็บ ideas แท็บ

1459
01:34:49,140 --> 01:34:52,747
promotes และแท็บ studio และหลังจากนั้นเราจะทดสอบทั้งระบบ

1460
01:34:52,747 --> 01:34:55,967
ตอนนี้เรามีแท็บ ideas ที่ไม่มีอะไรอยู่ แท็บ studio

1461
01:34:55,967 --> 01:34:59,444
ที่ไม่มีอะไรอยู่ แท็บ publish ที่ไม่มีอะไรอยู่ และแท็บ

1462
01:34:59,444 --> 01:35:02,922
templates ด้วย สิ่งที่เราจะทำคือให้พรอมป์ต์เหล่านี้กับ

1463
01:35:02,922 --> 01:35:07,108
Kite เพื่อเดินสายพวกมัน หลังจากนั้นเราสามารถทดสอบฟังก์ชันบางอย่าง

1464
01:35:07,108 --> 01:35:11,230
เพื่อให้คุณเห็นสิ่งที่เรากำลังสร้าง ผมจะให้พรอมป์ต์ทั้งหมดนี้กับ

1465
01:35:11,230 --> 01:35:14,450
Kite ตามลำดับ แล้วเราก็ไปดูการทดสอบกัน เอาล่ะ Kite

1466
01:35:14,450 --> 01:35:19,023
ประมวลผลพรอมป์ต์ทั้งหมดนั้นเสร็จแล้ว ผมรู้ว่าเราสร้างกันมาระยะหนึ่งแล้ว

1467
01:35:19,023 --> 01:35:22,694
มาดูเดโม่จริงแบบ end-to-end เพื่อให้แน่ใจว่าทุกอย่างทำงาน

1468
01:35:22,694 --> 01:35:25,914
ผมจะกลับมาที่แดชบอร์ด รีโหลดแดชบอร์ด แล้วไปที่แท็บ

1469
01:35:25,914 --> 01:35:30,937
ideas ตอนนี้ผมเห็นว่า Kite ทำ smoke test โดยทดสอบเอเจนต์หนึ่งตัวก่อนที่จะไว้ใจ

1470
01:35:30,937 --> 01:35:33,964
มันแค่ทำ smoke test เพื่อให้แน่ใจว่าไอเดียทำงาน

1471
01:35:33,964 --> 01:35:37,056
มาคลิก generate ideas เพื่อดูว่ากระแส end-to-end

1472
01:35:37,056 --> 01:35:40,211
ที่ Atlas ทำงานวิจัยและให้ไอเดียเราจะทำงานหรือไม่

1473
01:35:40,211 --> 01:35:44,140
ผมเห็นการแจ้งเตือนว่ามันกำลังทำวิจัย ขอรอจนกว่าผลลัพธ์จะออกมา

1474
01:35:44,140 --> 01:35:48,197
และอันนี้ทำงานได้ดีมาก คุณจะเห็นว่าเรามีสี่ไอเดียที่ถูกสร้างโดย

1475
01:35:48,197 --> 01:35:51,546
Atlas "Browser agents should verify, not just click"

1476
01:35:51,546 --> 01:35:54,638
"Your agent needs a sandbox before it needs more

1477
01:35:54,638 --> 01:35:57,858
tokens" สมมติว่าเราอยากโปรโมตหนึ่งในไอเดียเหล่านี้

1478
01:35:57,858 --> 01:36:01,271
ลองเลือก "stop giving agents your whole app" แล้วคลิก

1479
01:36:01,271 --> 01:36:04,362
promote ตรงนี้สมมติว่าเราอยากสร้างสไลด์ carousel

1480
01:36:04,362 --> 01:36:07,776
สิบสไลด์ และผมจะเลือก research with Perplexity ตรงนี้

1481
01:36:07,776 --> 01:36:10,931
Perplexity ถูกเปิดใช้งาน เพราะเราอยากทดสอบว่า API

1482
01:36:10,931 --> 01:36:13,958
key ทำงาน และผมยังเพิ่มตัวเลือกนี้ steroid mode

1483
01:36:13,958 --> 01:36:16,985
ซึ่งจะสร้างคำที่ทรงพลังกว่าสำหรับสไลด์ carousel

1484
01:36:16,985 --> 01:36:20,978
ขอเปิดทั้งสองอันนี้ แล้วไปที่ write 10 slides อันนี้กำลังทำงาน

1485
01:36:20,978 --> 01:36:24,134
Vera ถูกทริกเกอร์ Vera คือเอเจนต์ที่เขียนคอนเทนต์

1486
01:36:24,134 --> 01:36:27,805
มันกำลังอ่านไอเดียและทำวิจัยเพื่อให้แน่ใจว่าทุกอย่างทำงาน

1487
01:36:27,805 --> 01:36:33,022
ทำวิจัยเพื่อให้แน่ใจว่ามันได้ข้อมูลทั้งหมดที่เราต้องการสำหรับการเขียนคอนเทนต์นั้น

1488
01:36:33,022 --> 01:36:37,530
เอาล่ะ Vera สร้างคอนเทนต์แล้ว คุณจะเห็นว่าเรามีสไลด์ทั้งสิบอันถูกสร้าง

1489
01:36:37,530 --> 01:36:40,685
เรามีข้อความปก (cover text) ที่บอกว่า "your agent

1490
01:36:40,685 --> 01:36:46,868
is not dumb, your prompt is bloated" จากนั้นมันก็เขียนคอนเทนต์ทั้งหมดที่จะอยู่บนทุกสไลด์ที่เรามี

1491
01:36:46,868 --> 01:36:50,153
สมมติว่าเราอยากอนุมัติอันนี้และโปรโมตมันลงในเทมเพลต

1492
01:36:50,153 --> 01:36:54,017
คลิก approve แล้วเลือกเทมเพลตในขั้นตอนถัดไป ตรงนี้เราจะสร้าง

1493
01:36:54,017 --> 01:36:58,525
Instagram carousel เราจึงต้องมีอัตราส่วน 4:5 สมมติว่าสำหรับตัวอย่างนี้

1494
01:36:58,525 --> 01:37:02,196
ผมจะเลือกอันสีม่วงที่เรามีตรงนี้ ผมจะเลือกอันนั้นแล้วคลิก

1495
01:37:02,196 --> 01:37:10,246
fit copy to this สิ่งที่จะเกิดขึ้นคือ Vera จะตรวจสอบว่าคอนเทนต์หรือข้อความที่มันสร้างเข้ากับจำนวนตัวอักษรในเทมเพลตนั้นหรือไม่

1496
01:37:10,246 --> 01:37:14,368
เพราะถ้าคำยาวเกินกว่าที่เทมเพลตรองรับ ดีไซน์ทั้งหมดจะดูน่าเกลียด

1497
01:37:14,368 --> 01:37:18,490
สิ่งที่ Vera จะทำคือ Vera จะอ่านข้อความฮาร์ดโค้ดทั้งหมดในเทมเพลต

1498
01:37:18,490 --> 01:37:22,354
แล้วพยายามปรับและใส่คอนเทนต์ที่มันสร้างให้เข้ากับเทมเพลตนั้น

1499
01:37:22,354 --> 01:37:26,733
และ Vera ก็ปรับคอนเทนต์ที่มันสร้างเพื่อให้เข้ากับเทมเพลตที่เรามีแล้ว

1500
01:37:26,733 --> 01:37:30,855
เพราะเทมเพลตที่เราเลือกมีคำในส่วนปกน้อยกว่า มันจึงเขียนปกใหม่จาก

1501
01:37:30,855 --> 01:37:35,363
"your package is bloated" เป็น "agent fat" แล้วเขียนคอนเทนต์ทั้งหมดที่

1502
01:37:35,363 --> 01:37:39,485
จะอยู่บนสไลด์ ตอนนี้ผมจะคลิก render now เพื่อส่งสิ่งนี้ไปยังแท็บ

1503
01:37:39,485 --> 01:37:43,865
studio เพื่อที่เราจะได้เห็นว่ามันจะดูเป็นอย่างไรบนเทมเพลตที่เราเลือก

1504
01:37:43,865 --> 01:37:47,342
ตอนนี้คุณเห็นการแจ้งเตือน open in studio เราสามารถคลิก

1505
01:37:47,342 --> 01:37:51,657
open in studio ตรงนี้ได้ และมันจะเปิดสไลด์ที่เราเพิ่งสร้างในสตูดิโอ

1506
01:37:51,657 --> 01:37:55,006
มาคลิกที่อันนี้ แล้วคุณจะเห็นว่า อย่างที่ Vera เขียน

1507
01:37:55,006 --> 01:37:58,162
"agent okay, package fat, package fat, bad agent,

1508
01:37:58,162 --> 01:38:01,575
run starts with too much context, whole ripple noise,

1509
01:38:01,575 --> 01:38:06,019
guesses" แล้วเมื่อคุณคลิกที่อันนี้ คุณจะเห็นข้อความทั้งหมดที่ถูกสร้าง

1510
01:38:06,019 --> 01:38:09,046
สมมติว่าเราไม่อยากใช้ข้อความนี้สำหรับปก เราอยาก

1511
01:38:09,046 --> 01:38:12,266
fine-tune คุณสามารถคลิก fine-tune the slide ตรงนี้

1512
01:38:12,266 --> 01:38:15,422
แล้วมันจะโหลดสไลด์ขึ้นมา และเมื่อเราคลิกที่อันนี้

1513
01:38:15,422 --> 01:38:18,706
ตัวอย่างเช่น ผมสามารถเขียน "agents not the problem,

1514
01:38:18,706 --> 01:38:22,635
prompt fat" แล้วคุณยังสามารถเลื่อนสไลด์ขึ้นลงได้ตามที่ต้องการ

1515
01:38:22,635 --> 01:38:25,791
ทั้งหมดนี้เป็นไปได้ในแท็บ fine-tune ผมจะปิดอันนี้

1516
01:38:25,791 --> 01:38:29,204
ทิ้งการเปลี่ยนแปลง แล้วสมมติว่าเราอยากส่งสิ่งนี้ไปยัง

1517
01:38:29,204 --> 01:38:32,617
Instagram และนี่คือส่วนที่ทำให้ผมประหม่า ผมสร้างบัญชี

1518
01:38:32,617 --> 01:38:36,353
Instagram ทดลองชื่อ content vibe เพื่อที่เมื่อเราส่งตรงจาก

1519
01:38:36,353 --> 01:38:39,766
Cadence นี้ มันจะผ่าน Buffer แล้วมาที่บัญชี Instagram

1520
01:38:39,766 --> 01:38:43,051
นี้ ขอเปิดแพ็กเกจอีกครั้ง คลิกที่มัน แล้วยังไงก็ตาม

1521
01:38:43,051 --> 01:38:47,559
คุณสามารถเปลี่ยนเทมเพลตได้เสมอเมื่อไหร่ก็ตามที่คุณอยากเลือกเทมเพลตอื่น

1522
01:38:47,559 --> 01:38:52,582
คุณเลือกเทมเพลตอะไรก็ได้ แล้ว Cadence จะเขียนคอนเทนต์ใหม่ให้เข้ากับเทมเพลตนั้น

1523
01:38:52,582 --> 01:38:56,382
ตอนนี้ขอมาที่นี่ คลิก post now แล้วตรงนี้ เพราะผมตั้งค่าแค่

1524
01:38:56,382 --> 01:38:59,666
Instagram มันจะโชว์แค่ Instagram ผมจะคลิก Instagram

1525
01:38:59,666 --> 01:39:02,693
only แล้วมันจะเตือนผม และผมจะได้รับการแจ้งเตือน

1526
01:39:02,693 --> 01:39:06,300
"เฮ้ แน่ใจนะว่าจะโพสต์อันนี้?" ผมจะตอบว่า "ใช่ โพสต์เลย"

1527
01:39:06,300 --> 01:39:09,456
แล้วอันนี้จะถูกส่งไปที่ Buffer และหวังว่าถ้ากระแส

1528
01:39:09,456 --> 01:39:12,483
end-to-end ทำงาน เราควรเห็นโพสต์มาถึง Instagram

1529
01:39:12,483 --> 01:39:15,767
โดยตรง และเราได้รับการแจ้งเตือนว่าอันนี้ถูกส่งไปที่

1530
01:39:15,767 --> 01:39:18,858
Buffer แล้ว คลิก okay แล้วอันนี้จะถูกย้ายจากแท็บ

1531
01:39:18,858 --> 01:39:22,143
studio ไปยังแท็บ publish เมื่อมันถูกส่งไปที่ Buffer

1532
01:39:22,143 --> 01:39:25,685
แล้ว ต่อไปไปที่ Instagram แล้วดูว่าเราจะเห็นโพสต์นี้ไหม

1533
01:39:25,685 --> 01:39:29,614
ผมจะมาที่ Instagram ของผม แล้วเฮ้ คุณเห็นไหม มันโพสต์ตรงไปที่

1534
01:39:29,614 --> 01:39:32,898
Instagram แล้ว คุณเห็นโพสต์นี้ที่เราสร้างใน Cadence

1535
01:39:32,898 --> 01:39:39,789
เป๊ะ ซึ่งเป็นโพสต์แรกที่ผมทดสอบกับบัญชีนี้ และคุณจะเห็นว่าข้อความทั้งหมดออกมาเหมือนที่เราเรนเดอร์บนเว็บไซต์

1536
01:39:39,789 --> 01:39:42,881
Cadence และตรงนี้เราก็มีข้อความที่ถูกสร้างโดย AI

1537
01:39:42,881 --> 01:39:46,938
สำหรับส่วนคำอธิบายด้วย อันนี้ทำงานได้ดีมาก เมื่อผมกลับมาที่แท็บ

1538
01:39:46,938 --> 01:39:50,545
studio และไปที่ published ผมควรจะเห็น โอ้ อันนี้ไม่ทำงาน

1539
01:39:50,545 --> 01:39:53,894
มันแสดงว่าเรามีหนึ่งอัน แต่ผมไม่เห็นสไลด์ที่ถูกสร้าง

1540
01:39:53,894 --> 01:39:58,015
ผมจึงบอก Kite ว่า "เฮ้ แท็บ publish ไม่แสดงคอนเทนต์ที่เผยแพร่เลย

1541
01:39:58,015 --> 01:40:02,781
ผมเห็นจำนวนหนึ่งซึ่งบ่งบอกว่ารายการมีอยู่ แต่หน้านั้นว่างเปล่าโดยสิ้นเชิง"

1542
01:40:02,781 --> 01:40:07,998
ให้ Kite แก้ไขอันนี้ให้เรา และหวังว่าหลังจากนั้นเราจะเห็นคอนเทนต์โผล่ขึ้นมาตรงนี้

1543
01:40:07,998 --> 01:40:11,282
อีกสองอย่างที่เราจะทำ ผมจะโชว์ว่าแท็บ configuration

1544
01:40:11,282 --> 01:40:15,597
ทำงานอย่างไร บนแท็บ configuration คุณจะมีโอกาสแก้ไขชื่อบรานด์ของคุณ

1545
01:40:15,597 --> 01:40:19,397
แก้ไขแฮนเดิล เขียนเล็กน้อยเกี่ยวกับคอนเทนต์ที่คุณกำลังสร้าง

1546
01:40:19,397 --> 01:40:23,905
เพื่อที่เอเจนต์จะได้อ่านสิ่งนี้เสมอเพื่อหาไอเดียและสร้างคอนเทนต์ให้คุณ

1547
01:40:23,905 --> 01:40:27,190
และคุณยังสามารถเลือกค่าเริ่มต้นการสร้าง (generation

1548
01:40:27,190 --> 01:40:31,311
defaults) ที่ต้องการได้ และสำหรับสิ่งนั้น เราจะให้พรอมป์ต์นี้กับ

1549
01:40:31,311 --> 01:40:35,948
Cadence เพื่อเดินสายแท็บ configuration แต่ผมจะรอให้มันทำแบ็กเอนด์ของแท็บ

1550
01:40:35,948 --> 01:40:38,975
publish เสร็จก่อน หลังจากนั้นเราจะเข้าไปที่แท็บ

1551
01:40:38,975 --> 01:40:42,775
configuration แล้วเดินสายมันเช่นกัน และระหว่างที่อยู่ตรงนี้

1552
01:40:42,775 --> 01:40:46,511
เราก็มีแท็บ calendar ที่เมื่อไหร่ก็ตามที่คุณกำหนดเวลาโพสต์

1553
01:40:46,511 --> 01:40:50,117
บางทีคุณไม่อยากเผยแพร่ทันที อยากกำหนดเวลาเป็นวันที่เฉพาะ

1554
01:40:50,117 --> 01:40:54,239
เมื่อคุณเข้ามาที่ปฏิทิน คุณจะเห็นจำนวนโพสต์ที่คุณได้กำหนดเวลาไว้

1555
01:40:54,239 --> 01:40:57,266
ตัวอย่างเช่น คุณจะเห็นว่าโพสต์ที่เราโพสต์วันนี้

1556
01:40:57,266 --> 01:41:00,550
24 กรกฎาคม แสดงอยู่ในแท็บ calendar แล้ว เอาล่ะ Kite

1557
01:41:00,550 --> 01:41:03,642
ทำเสร็จแล้ว รีโหลดแดชบอร์ด แล้วมาที่แท็บ publish

1558
01:41:03,642 --> 01:41:07,699
สมบูรณ์แบบ ตอนนี้คุณจะเห็นว่าโพสต์ที่ถูกเผยแพร่มาอยู่ที่นี่แล้ว

1559
01:41:07,699 --> 01:41:11,177
สองสิ่งที่เราจะทำต่อไปอย่างที่บอกคือแท็บ configuration

1560
01:41:11,177 --> 01:41:15,943
ที่คุณสามารถแก้ไขการตั้งค่าต่างๆ ได้ แล้วเอเจนต์จะรับการอัปเดตใหม่ที่คุณมี

1561
01:41:15,943 --> 01:41:19,871
และสำหรับสิ่งนั้น ผมจะส่งพรอมป์ต์นี้ให้ Kite เพื่อเดินสายแท็บ

1562
01:41:19,871 --> 01:41:23,284
configuration เอาล่ะ นั่นหมายความว่าเมื่อเรามาที่แท็บ

1563
01:41:23,284 --> 01:41:26,827
configuration ขอรีโหลดอันนี้ คุณสามารถเปลี่ยนชื่อบรานด์

1564
01:41:26,827 --> 01:41:30,498
แฮนเดิล จำนวนสไลด์ที่คุณอยากให้เป็นค่าเริ่มต้น ถ้าอยากให้

1565
01:41:30,498 --> 01:41:35,392
Perplexity เป็นค่าเริ่มต้น ตัวอย่างเช่น เมื่อผมปิดอันนี้แล้วบันทึกการตั้งค่า

1566
01:41:35,392 --> 01:41:39,385
และผมกำลังสร้างไอเดีย มันก็จะไม่ใช้ Perplexity เป็นค่าเริ่มต้น

1567
01:41:39,385 --> 01:41:42,541
และหลังจากนั้น เราก็เสร็จสิ้นส่วนหลักของการ build

1568
01:41:42,541 --> 01:41:49,239
แล้ว ผมยังมีพรอมป์ต์อื่นๆ ที่ให้คุณเป็นตัวเลือกเสริมที่คุณสามารถเพิ่มในการตั้งค่าเพื่อให้ทรงพลังยิ่งขึ้น

1569
01:41:49,239 --> 01:41:52,266
สิ่งที่เราจะสร้างตอนนี้คือรีโมตคอนโทรล Telegram

1570
01:41:52,266 --> 01:41:55,550
(telegram remote control) ถ้าจำได้ เรามีแท็บ studio

1571
01:41:55,550 --> 01:41:59,414
ที่เราสร้าง ซึ่งเราอยากใช้สร้างไอเดียโดยไม่ต้องมาที่แดชบอร์ด

1572
01:41:59,414 --> 01:42:03,472
แนวคิดคือ เมื่อไหร่ก็ตามที่คุณอยากสร้างไอเดีย คุณก็แค่มาที่แท็บ

1573
01:42:03,472 --> 01:42:07,400
studio ใน Telegram สร้างไอเดีย โปรโมต และอื่นๆ สำหรับสิ่งนั้น

1574
01:42:07,400 --> 01:42:10,749
เราจะให้พรอมป์ต์นี้กับ Kite เพื่อตั้งค่ารีโมตคอนโทรล

1575
01:42:10,749 --> 01:42:14,807
Telegram เอาล่ะ Kite บอกว่ามันเสร็จแล้ว มันสร้างและตรวจสอบรีโมต

1576
01:42:14,807 --> 01:42:17,898
Telegram เท่าที่มันทำได้ มันยังบอกว่ามันทำ smoke

1577
01:42:17,898 --> 01:42:22,213
test มาที่แท็บ studio แล้วเราจะเห็นว่ามันทดสอบโดยทริกเกอร์สิ่งต่างๆ

1578
01:42:22,213 --> 01:42:26,141
บนแท็บ studio แต่ผมต้องบอกว่ามันพูดถึงบางอย่างที่มันรันไม่ได้

1579
01:42:26,141 --> 01:42:29,684
ขอเลื่อนลงไปด้านล่างสุด มันบอกว่ามันมีอุปสรรค (blocker)

1580
01:42:29,684 --> 01:42:34,965
มันไม่สามารถรีสตาร์ท Hermes gateway เองได้ มันบอกให้เราจากเชลล์แยกต่างหากบนเครื่อง

1581
01:42:34,965 --> 01:42:37,992
รันคำสั่งนี้ แล้วบอกมันว่า gateway รีสตาร์ทแล้ว

1582
01:42:37,992 --> 01:42:41,019
ขอคัดลอกอันนี้ มาที่ PowerShell ขอเคลียร์หน้าจอ

1583
01:42:41,019 --> 01:42:45,527
วางคำสั่งนี้ เชื่อมต่อกับเซิร์ฟเวอร์อีกครั้ง แล้วรันคำสั่งที่มันให้เรา

1584
01:42:45,527 --> 01:42:48,554
เอาล่ะ gateway นี้รีสตาร์ทแล้ว ผมจะรอสักครู่ให้

1585
01:42:48,554 --> 01:42:51,645
gateway บูตสมบูรณ์ หลังจากนั้นผมจะส่งข้อความไปหา

1586
01:42:51,645 --> 01:42:55,123
Kite ว่า "restarted" จากนั้นผมจะส่งข้อความ "restarted"

1587
01:42:55,123 --> 01:42:58,600
ไปให้ Kite แล้วหวังว่ามันจะไปต่อกับสิ่งที่มันทำอยู่ได้

1588
01:42:58,600 --> 01:43:01,885
เอาล่ะ มันบอกว่ามันเสร็จแล้ว ทุกอย่างถูกเดินสายแล้ว

1589
01:43:01,885 --> 01:43:05,363
ไปที่แท็บ studio แล้วเขียนอะไรบางอย่าง เช่น สแลชคำสั่ง

1590
01:43:05,363 --> 01:43:08,647
ขอตรวจก่อนว่าคำสั่งสแลชคืออะไร ผมจำไม่ได้ว่ามันเป็น

1591
01:43:08,647 --> 01:43:13,349
ideas หรือ idea ใช่ มันคือ ideas ส่ง /ideas แล้วหวังว่ามันจะทริกเกอร์แท็บ

1592
01:43:13,349 --> 01:43:16,633
ideas ในสตูดิโอตรงนี้ และมันก็ทำงาน เรามีไอเดียใหม่

1593
01:43:16,633 --> 01:43:20,497
"stop asking one agent to do the whole job" เมื่อผมมาที่แท็บ

1594
01:43:20,497 --> 01:43:23,782
studio ผมก็เห็นแบบเดียวกัน นี่คือการสะท้อน (mirror)

1595
01:43:23,782 --> 01:43:27,066
ทุกอย่างที่เรามีบนแดชบอร์ด เหตุผลที่เราทำสิ่งนี้คือ

1596
01:43:27,066 --> 01:43:31,317
ผมอยากให้คุณสร้างไอเดียและอื่นๆ ได้โดยไม่ต้องมาที่แดชบอร์ดตลอดเวลา

1597
01:43:31,317 --> 01:43:35,696
สมมติว่าเราอยากโปรโมตไอเดียนี้ พิมพ์ /promote แล้วใส่จำนวนไอเดียนั้น

1598
01:43:35,696 --> 01:43:39,174
11 อุ๊ย ผมทำผิด ผมตั้งใจจะพิมพ์ 11 และมันก็ถูกต้องเป๊ะ

1599
01:43:39,174 --> 01:43:42,652
มันบอกว่า "idea 1 not found" ขอทำใหม่ /promote แล้วส่ง

1600
01:43:42,652 --> 01:43:47,224
11 นั่นคือสิ่งที่ผมตั้งใจจะส่ง แล้วคุณจะเห็นว่าเราทริกเกอร์สิ่งนี้ทันที

1601
01:43:47,224 --> 01:43:50,831
อันนี้ก็แสดงบนแดชบอร์ดด้วย เราเห็นว่า Vera ถูกโปรโมตแล้ว

1602
01:43:50,831 --> 01:43:54,631
คุณเห็นว่าไอเดียถูกโปรโมต และ Vera กำลังเขียนไอเดียที่เรามี

1603
01:43:54,631 --> 01:43:58,237
และเราเห็นสิ่งเดียวกันตรงนี้ เกิดการโปรโมตไอเดียขึ้นจริง

1604
01:43:58,237 --> 01:44:01,393
มันทำงานบนแดชบอร์ด เราเห็นว่าไอเดียถูกสร้าง แต่บน

1605
01:44:01,393 --> 01:44:05,064
Telegram เราได้รับข้อความ "promotes field list attributes

1606
01:44:05,064 --> 01:44:08,993
no get" ผมจะบอก Kite ให้แก้ไขอันนี้ให้เรา ผมให้พรอมป์ต์นี้กับ

1607
01:44:08,993 --> 01:44:12,792
Kite "ผมทดสอบคำสั่ง /ideas ใน Telegram ทำงานอย่างสมบูรณ์แบบ

1608
01:44:12,792 --> 01:44:16,077
อย่างไรก็ตาม เมื่อผมโปรโมตไอเดียด้วยคำสั่ง /promote

1609
01:44:16,077 --> 01:44:19,361
หมายเลขไอเดีย ไอเดียถูกโปรโมตอย่างถูกต้องบนแดชบอร์ด

1610
01:44:19,361 --> 01:44:24,192
แต่ Telegram ส่งข้อความนี้มาให้เรา คุณเห็นปัญหาคืออะไรแล้วแก้ไขให้เราหน่อย"

1611
01:44:24,192 --> 01:44:29,022
เอาล่ะ Kite บอกว่ามันเสร็จแล้ว ลองอีกครั้ง ผมจะกลับมาที่แอปนี้แล้วทริกเกอร์

1612
01:44:29,022 --> 01:44:32,564
ideas สิ่งที่คุณทำได้เพื่อให้ง่ายขึ้นตอนโปรโมตไอเดียคือ

1613
01:44:32,564 --> 01:44:36,493
คุณสามารถเพิ่มเทมเพลตที่อยากใช้ได้โดยตรง และสิ่งที่ผมแนะนำคือ

1614
01:44:36,493 --> 01:44:40,421
ใช้ Telegram เพื่อระดมความคิดไอเดียแล้วโปรโมตมันเข้ามาที่แท็บ

1615
01:44:40,421 --> 01:44:45,767
studio แล้วพอคุณอยู่ในแท็บ studio คุณก็ทำทุกอย่างเกี่ยวกับเทมเพลตว่าจะใช้เทมเพลตไหน

1616
01:44:45,767 --> 01:44:50,919
แก้ไขอะไร และอื่นๆ แต่จะดีกว่าถ้าใช้ Telegram สำหรับการสร้างไอเดียและอะไรแบบนั้น

1617
01:44:50,919 --> 01:44:55,620
หรือบางทีเมื่อไหร่ก็ตามที่อยากได้ไอเดีย คุณก็แค่มาที่นี่แล้วบอกเอเจนต์ว่า

1618
01:44:55,620 --> 01:45:00,901
"เฮ้ ให้ไอเดียเกี่ยวกับระบบอัตโนมัติหน่อย" สมมติว่าตรงนี้เราอยากโปรโมตเป็นตัวอย่าง

1619
01:45:00,901 --> 01:45:03,992
ขอไปที่ /promote แล้วใส่อุ๊ย 18 ขอโทษที พิมพ์ผิด

1620
01:45:03,992 --> 01:45:07,084
/promote 18 แล้วใส่เทมเพลต ขอไปที่แท็บ templates

1621
01:45:07,084 --> 01:45:10,304
เพื่อดูตัวอย่าง สมมติว่าผมอยากใช้เทมเพลต statement

1622
01:45:10,304 --> 01:45:13,975
พิมพ์ statement แล้ว enter แล้วหวังว่ามันจะถูกสร้างให้เรา

1623
01:45:13,975 --> 01:45:18,032
แต่แปลกที่มันบอกว่า template not found ขอดูว่าทำไมถึงเป็นแบบนี้

1624
01:45:18,032 --> 01:45:21,188
พิมพ์ templates เพื่อดูว่าผมจะได้รายการเทมเพลตไหม

1625
01:45:21,188 --> 01:45:24,215
ดูเหมือนว่าชื่อของเทมเพลตต่างจากที่ผมเห็นตรงนี้

1626
01:45:24,215 --> 01:45:27,306
ขอหาตัวอย่าง สมมติว่าผมอยากใช้เทมเพลตที่เรียกว่า

1627
01:45:27,306 --> 01:45:30,526
isometric กลับมาโปรโมตอีกครั้ง แล้วไปที่ isometric

1628
01:45:30,526 --> 01:45:33,553
สิ่งที่คุณสามารถบอก Kite ให้ทำเพื่อคุณทีหลังคือ

1629
01:45:33,553 --> 01:45:37,417
ทำให้แน่ใจว่าชื่อที่คุณเห็นสำหรับเทมเพลตตรงกับชื่อบนแดชบอร์ด

1630
01:45:37,417 --> 01:45:41,217
เพื่อให้ทำงานกับมันง่ายขึ้น ผมคิดว่าเหตุผลที่ชื่อต่างกันคือ

1631
01:45:41,217 --> 01:45:44,631
ตัวอย่างเช่น tip deck มีสองคำ และเพื่อให้คุณใช้มันได้

1632
01:45:44,631 --> 01:45:48,173
คุณต้องพิมพ์ tip-deck แต่เป็นเพียงพรอมป์ต์ เราสามารถบอก

1633
01:45:48,173 --> 01:45:51,264
Kite ให้ทำสิ่งนี้ แล้วมันจะแก้ไขให้คุณได้เช่นกัน

1634
01:45:51,264 --> 01:45:55,257
แล้วโดยพื้นฐานแล้วคุณจะเห็นว่าสไลด์ถูกสร้าง เมื่อผมมาที่ตรงนี้

1635
01:45:55,257 --> 01:46:00,087
คุณจะเห็นว่าเทมเพลตที่เราเลือกอยู่ที่นี่ แล้วเราเห็นสไลด์ทั้งหมดที่ถูกสร้าง

1636
01:46:00,087 --> 01:46:05,046
สิ่งที่ผมคิดว่าผมทำเพื่อคุณได้คือ ผมจะให้พรอมป์ต์เพื่อแก้ไขความไม่สอดคล้องนี้

1637
01:46:05,046 --> 01:46:08,138
ที่ชื่อเทมเพลตต่างจากเทมเพลตที่เราใช้ใน Telegram

1638
01:46:08,138 --> 01:46:11,744
และผมจะให้พรอมป์ต์นี้ที่เราสามารถให้ Kite แก้ไขให้เราได้

1639
01:46:11,744 --> 01:46:16,445
เราจะบอก Kite ว่า "เฮ้ ชื่อเทมเพลตที่แสดงบนแดชบอร์ดไม่ตรงกับชื่อที่คำสั่ง

1640
01:46:16,445 --> 01:46:19,730
/promote ยอมรับ ตัวอย่างเช่น บนแดชบอร์ดเมื่อผมพิมพ์

1641
01:46:19,730 --> 01:46:23,465
statement มันบอกว่า template not found" มันควรแก้ไขสิ่งนี้

1642
01:46:23,465 --> 01:46:27,587
ผมจะให้พรอมป์ต์ทั้งหมดนี้กับคุณ เพื่อที่ว่าถ้าคุณมีปัญหาเดียวกัน

1643
01:46:27,587 --> 01:46:31,387
คุณก็คัดลอกวางพรอมป์ต์ แล้วเอเจนต์ของคุณควรจะแก้ไขให้คุณได้

1644
01:46:31,387 --> 01:46:35,380
ระหว่างที่ Kite กำลังสร้างและแก้ไขปัญหาชื่อเทมเพลตที่ไม่ตรงกับ

1645
01:46:35,380 --> 01:46:40,146
Telegram มีอีกอย่างหนึ่งที่เราอยากทำ ผมอยากใช้เวลาให้เป็นประโยชน์ระหว่างรอ

1646
01:46:40,146 --> 01:46:44,332
Kite เสร็จ ตอนนี้ถ้าจำได้ เมื่อไหร่ก็ตามที่เราอยากเข้าถึงแดชบอร์ด

1647
01:46:44,332 --> 01:46:47,810
เราทำผ่านสิ่งที่เรียกว่า SSH tunneling โดยใส่คำสั่งนี้

1648
01:46:47,810 --> 01:46:52,318
ssh -N -L และชื่อและอื่นๆ กด enter แล้วใส่รหัสผ่านของบัญชีผู้ใช้ของเรา

1649
01:46:52,318 --> 01:46:56,375
แล้ว SSH tunnel จึงจะถูกเปิดใช้งานที่ทำให้เราเข้าถึงแดชบอร์ดได้

1650
01:46:56,375 --> 01:47:00,755
แต่สิ่งที่คุณทำได้ซึ่งเป็นวิธีที่ดีกว่าในการเข้าถึงแดชบอร์ดคือการใช้

1651
01:47:00,755 --> 01:47:05,392
Tailscale สิ่งที่ Tailscale ทำคือ มันให้คุณเข้าถึงแดชบอร์ดโดยไม่ต้องผ่าน

1652
01:47:05,392 --> 01:47:08,998
SSH tunneling และอื่นๆ แนวคิดคือ คุณดาวน์โหลดแอปพลิเคชัน

1653
01:47:08,998 --> 01:47:12,218
Tailscale เชื่อมต่อบัญชีของคุณ แล้วตรงนั้นคุณจะได้

1654
01:47:12,218 --> 01:47:15,503
URL เฉพาะที่คุณสามารถเชื่อมต่อกับแดชบอร์ดได้ง่ายมาก

1655
01:47:15,503 --> 01:47:18,594
โดยไม่ต้องใส่รหัสผ่านทุกครั้ง ส่วนที่ดีที่สุดของ

1656
01:47:18,594 --> 01:47:22,523
Tailscale ในการตั้งค่านี้คือ บนทุก PC ตัวอย่างเช่นในกรณีของผม

1657
01:47:22,523 --> 01:47:25,936
ผมมีเดสก์ท็อปที่ทำงานด้วย มี MacBook มีโทรศัพท์มือถือ

1658
01:47:25,936 --> 01:47:29,929
และอุปกรณ์อีกมากมายที่ผมทำงานด้วย บนอุปกรณ์ใดก็ตามที่ผมติดตั้ง

1659
01:47:29,929 --> 01:47:36,176
Tailscale และเชื่อมต่อบัญชีของผมแล้ว ผมก็สามารถเข้าถึงแดชบอร์ดได้โดยไม่ต้องผ่านเทอร์มินัลทุกครั้ง

1660
01:47:36,176 --> 01:47:39,525
โดยเฉพาะบนโทรศัพท์มือถือของคุณ ไม่ว่าคุณจะอยู่ที่ไหน

1661
01:47:39,525 --> 01:47:43,969
คุณก็สามารถทำงานกับแดชบอร์ดบนโทรศัพท์มือถือได้ ตราบใดที่คุณติดตั้งแอป

1662
01:47:43,969 --> 01:47:47,060
Tailscale และเชื่อมต่อบัญชีของคุณ ในการทำสิ่งนี้

1663
01:47:47,060 --> 01:47:51,246
เราจะดาวน์โหลดแอปพลิเคชันที่เรียกว่า Tailscale ซึ่งฟรีโดยสิ้นเชิง

1664
01:47:51,246 --> 01:47:55,497
ตอนนี้ผมมีเซิร์ฟเวอร์เจ็ดตัวที่รันบน Tailscale และผมไม่จ่ายอะไรเลย

1665
01:47:55,497 --> 01:47:59,425
เมื่อคุณมาที่นี่ แค่คลิก get started แล้วคุณสามารถสมัครสมาชิก

1666
01:47:59,425 --> 01:48:04,062
สร้างบัญชี ทุกอย่างฟรี คุณไม่ต้องจ่ายอะไรเลย เมื่อการติดตั้งเสร็จสมบูรณ์

1667
01:48:04,062 --> 01:48:07,540
คุณก็มาที่นี่และดาวน์โหลด Tailscale บนหน้าแรกของพวกเขา

1668
01:48:07,540 --> 01:48:10,953
คลิกปุ่มดาวน์โหลดตรงนี้ แล้วมันจะดาวน์โหลดแอปพลิเคชัน

1669
01:48:10,953 --> 01:48:14,624
Tailscale ตรงนี้ เลือกระบบปฏิบัติการที่คุณใช้ ในกรณีของผม

1670
01:48:14,624 --> 01:48:18,295
ผมใช้ Windows ผมจะคลิกที่ Windows และดาวน์โหลดแอปพลิเคชัน

1671
01:48:18,295 --> 01:48:21,580
Windows สำหรับ Tailscale ถ้าคุณใช้อินเทอร์เฟซสำหรับ

1672
01:48:21,580 --> 01:48:24,800
Mac OS มันดียิ่งกว่าอินเทอร์เฟซของ Windows เสียอีก

1673
01:48:24,800 --> 01:48:28,213
ผมจะเปิดตัวติดตั้ง ยอมรับข้อกำหนดและเงื่อนไข แล้วคลิก

1674
01:48:28,213 --> 01:48:31,434
install แล้วแอปพลิเคชัน Tailscale ก็จะติดตั้งเสร็จ

1675
01:48:31,434 --> 01:48:36,843
ดูเหมือนว่างานที่ผมให้ Kite ทำเพื่อให้แน่ใจว่าเทมเพลตตรงกันนั้นเป็นงานที่หนักพอสมควร

1676
01:48:36,843 --> 01:48:40,579
มันทำงานมาเกือบ 15 นาทีแล้ว และยังไม่เสร็จ เมื่อการติดตั้ง

1677
01:48:40,579 --> 01:48:43,670
Tailscale เสร็จสมบูรณ์ในฝั่งของผม ผมก็คลิก close

1678
01:48:43,670 --> 01:48:47,727
ได้ แล้วเมื่อผมลงมาที่ตรงนี้ บน Windows คุณจะเห็นสัญลักษณ์เล็กๆ

1679
01:48:47,727 --> 01:48:51,205
ตรงนี้ อันนี้สำหรับ Tailscale ที่มีจุดประมาณเจ็ดแปดจุด

1680
01:48:51,205 --> 01:48:54,232
เมื่อคุณคลิกขวาที่มัน คุณจะต้องล็อกอินเข้าบัญชี

1681
01:48:54,232 --> 01:48:57,517
Tailscale ของคุณ เมื่อคุณล็อกอินเข้าบัญชี Tailscale

1682
01:48:57,517 --> 01:49:00,994
แล้ว คุณก็เสร็จสิ้นการติดตั้ง Tailscale โดยพื้นฐานแล้ว

1683
01:49:00,994 --> 01:49:06,018
เมื่อคุณล็อกอินเข้าบัญชี Tailscale คุณจะเห็นอุปกรณ์ทั้งหมดที่เชื่อมต่อกับบัญชี

1684
01:49:06,018 --> 01:49:09,238
Tailscale ของคุณอยู่ และด้วยอุปกรณ์ทั้งหมดเหล่านี้

1685
01:49:09,238 --> 01:49:13,746
คุณจะได้ URL เฉพาะที่คุณสามารถใช้เข้าถึงเซิร์ฟเวอร์ที่เรากำลังสร้างได้

1686
01:49:13,746 --> 01:49:17,159
ตอนนี้แอปพลิเคชัน Tailscale ติดตั้งแล้ว เราสร้างบัญชี

1687
01:49:17,159 --> 01:49:20,508
Tailscale แล้ว หรือถ้าคุณมีบัญชีอยู่แล้วก็สมบูรณ์แบบ

1688
01:49:20,508 --> 01:49:23,857
สิ่งที่เราต้องทำต่อคือ บอก Kite ให้ติดตั้ง Tailscale

1689
01:49:23,857 --> 01:49:28,430
ให้เรา และผูกแดชบอร์ดหรือแดชบอร์ด Cadence ที่เราสร้างเข้ากับเซิร์ฟเวอร์

1690
01:49:28,430 --> 01:49:33,002
Tailscale ของเรา และด้วยสิ่งนั้น เราจะสามารถเข้าถึงแดชบอร์ดได้โดยตรงจาก

1691
01:49:33,002 --> 01:49:36,223
URL บนเบราว์เซอร์ โดยไม่ต้องผ่านส่วน SSH tunneling

1692
01:49:36,223 --> 01:49:39,958
ขอรอให้ Kite ทำงานที่มันทำเสร็จก่อน ผมว่ามันเกือบเสร็จแล้ว

1693
01:49:39,958 --> 01:49:45,368
ตอนนี้คุณจะเห็นว่ามันกำลังท่องเว็บเพื่อให้แน่ใจว่าการเปลี่ยนแปลงทั้งหมดที่มันทำทำงาน

1694
01:49:45,368 --> 01:49:48,395
แล้วพอมันเสร็จ เราก็ให้คำสั่ง Kite ทำการเดินสาย

1695
01:49:48,395 --> 01:49:51,550
Tailscale ให้เรา แล้วเราก็จะจบบทช่วยสอนนี้ และเฮ้

1696
01:49:51,550 --> 01:49:54,835
ผมกำลังทำงานกับตัวติดตั้งอัตโนมัติ (auto installer)

1697
01:49:54,835 --> 01:49:59,343
ที่จะติดตั้งทั้งหมดนี้ให้คุณภายในไม่กี่นาที สมัครสมาชิกคอมมูนิตี้ของผม

1698
01:49:59,343 --> 01:50:02,435
คุณจะได้รับคีย์เฉพาะที่คุณสามารถใช้ตัวติดตั้งได้

1699
01:50:02,435 --> 01:50:06,363
และผมจะสร้างบทช่วยสอนวิธีใช้ตัวติดตั้งให้คุณด้วยเมื่อมันพร้อม

1700
01:50:06,363 --> 01:50:12,739
และในที่สุด Kite ก็ทำงานใหญ่เสร็จแล้ว ชื่อเทมเพลตที่เราเห็นบนแดชบอร์ดตรงนี้จะตรงกับชื่อที่เราเห็นบน

1701
01:50:12,739 --> 01:50:16,281
Telegram กลับมาที่ประเด็น Tailscale Kite ทำงานเสร็จแล้ว

1702
01:50:16,281 --> 01:50:19,694
เราสามารถให้พรอมป์ต์ Kite ทำงานการเชื่อมต่อ Tailscale

1703
01:50:19,694 --> 01:50:22,850
ให้เราได้ และสำหรับสิ่งนั้น ผมจะให้พรอมป์ต์นี้กับ

1704
01:50:22,850 --> 01:50:26,328
Kite ผมบอก Kite ว่า "เฮ้ ตั้งค่าการเข้าถึงแดชบอร์ดผ่าน

1705
01:50:26,328 --> 01:50:31,158
Tailscale เพื่อที่ผมจะเข้าถึงมันอย่างปลอดภัยจากอุปกรณ์ของผมเองโดยไม่ต้องใช้

1706
01:50:31,158 --> 01:50:34,571
SSH tunnel" และผมก็ให้แนวทางว่าผมอยากให้มันเป็นแบบไหน

1707
01:50:34,571 --> 01:50:39,852
แล้วพอมันเสร็จ มันจะให้ลิงก์ที่เราจะใช้คลิกเพื่อผูกเซิร์ฟเวอร์เฉพาะนี้เข้ากับบัญชี

1708
01:50:39,852 --> 01:50:42,879
Tailscale ของเรา ขอให้แน่ใจว่าผมอยู่บนแท็บ Kite

1709
01:50:42,879 --> 01:50:46,615
แล้วส่งพรอมป์ต์นี้ให้ Kite เพื่อทำสิ่งนี้ แล้วพอเราทำเสร็จ

1710
01:50:46,615 --> 01:50:50,865
เราก็จะอยู่ที่จุดจบของบทช่วยสอน ผมเหนื่อยแล้ว ผมอัดวิดีโอมานานกว่า

1711
01:50:50,865 --> 01:50:54,150
10 ชั่วโมง ผมเริ่มเหนื่อยแล้ว เอาล่ะ Kite เสร็จแล้ว

1712
01:50:54,150 --> 01:50:59,560
มันให้ลิงก์ล็อกอินนี้ที่เราจะใช้ยืนยันตัวตนบัญชีของเรากับเซิร์ฟเวอร์เฉพาะที่เราสร้าง

1713
01:50:59,560 --> 01:51:06,064
ผมจะเปิดแท็บใหม่แล้วใส่ URL ที่ Kite ให้มา หลังจากนั้นสิ่งที่คุณต้องทำคือเชื่อมต่อและล็อกอินเข้าบัญชี

1714
01:51:06,064 --> 01:51:09,413
Tailscale ของคุณ อันนี้จะพาคุณไปที่หน้าที่ Tailscale

1715
01:51:09,413 --> 01:51:12,762
ถามว่า "เฮ้ ผมอยากเชื่อมต่ออุปกรณ์ cadence dashboard

1716
01:51:12,762 --> 01:51:16,304
กับคอมพิวเตอร์ของคุณ" ในกรณีของผม komputer-mechanic.com

1717
01:51:16,304 --> 01:51:19,589
tailnet ผมจะคลิก connect แล้วการล็อกอินก็เข้าถึงได้

1718
01:51:19,589 --> 01:51:22,680
อุปกรณ์ของเราถูกผูกกับบัญชี Tailscale ของเราแล้ว

1719
01:51:22,680 --> 01:51:27,382
ผมจะมาที่นี่แล้วบอก Kite ว่า "done" เพราะมันบอกว่าเมื่อผมยืนยันตัวตนเสร็จ

1720
01:51:27,382 --> 01:51:30,859
ผมควรตอบว่า "เราทำเสร็จแล้ว" Kite ก็ทำเสร็จแล้วเช่นกัน

1721
01:51:30,859 --> 01:51:34,852
มันยังบอกว่ามันทดสอบ IP สาธารณะและทั้งหมดล้มเหลวในการเชื่อมต่อ

1722
01:51:34,852 --> 01:51:38,073
ซึ่งหมายความว่าแดชบอร์ดสามารถเข้าถึงได้ผ่าน IP ของ

1723
01:51:38,073 --> 01:51:41,808
Tailscale เท่านั้น ขอให้แน่ใจว่าอันนี้ทำงาน รีโหลดแดชบอร์ด

1724
01:51:41,808 --> 01:51:45,286
ตรงนี้เรามี SSH tunneling ที่ทำงานอยู่ซึ่งเป็นไปตามคาด

1725
01:51:45,286 --> 01:51:49,472
ผมจะมาที่ PowerShell และฆ่าการเชื่อมต่อ SSH แล้วกลับมาที่แดชบอร์ด

1726
01:51:49,472 --> 01:51:54,044
และพยายามเข้าถึงแดชบอร์ดผ่าน SSH tunnel แล้วคุณจะเห็นว่าผมได้รับข้อความ

1727
01:51:54,044 --> 01:51:58,424
"site cannot be reached" เมื่อไหร่ก็ตามที่ผมอยากเชื่อมต่อกับแดชบอร์ด

1728
01:51:58,424 --> 01:52:01,901
ผมก็แค่ใช้ URL ที่ Kite ให้มา ขอคัดลอก URL ของแดชบอร์ด

1729
01:52:01,901 --> 01:52:07,569
วาง URL นี้ แล้วไชโย คุณจะเห็นว่าเราสามารถเข้าถึงแดชบอร์ดได้โดยไม่ต้องผ่านความยุ่งยากของ

1730
01:52:07,569 --> 01:52:10,789
SSH tunnel Tailscale ทำงานโดยตั้งค่า VPN ในเครื่อง

1731
01:52:10,789 --> 01:52:14,202
(local VPN) บน PC ที่ติดตั้งมัน ดังนั้นถ้าคุณมีบริการ

1732
01:52:14,202 --> 01:52:17,616
VPN อื่นรันอยู่ คุณต้องหยุด VPN นั้นก่อนที่ Tailscale

1733
01:52:17,616 --> 01:52:21,029
จะทำงานได้ เพราะถ้าคุณมีสองบริการรันขนานกัน Tailscale

1734
01:52:21,029 --> 01:52:25,473
จะไม่สามารถทำงานได้ ดังนั้นให้แน่ใจว่าคุณหยุดบริการอื่นที่รันอยู่เสมอ

1735
01:52:25,473 --> 01:52:28,822
เพื่อให้ Tailscale สามารถปรับใช้เซิร์ฟเวอร์ให้คุณได้

1736
01:52:28,822 --> 01:52:33,008
นี่จึงนำเรามาถึงจุดจบของบทช่วยสอน ขอสรุปสั้นๆ ว่าเราสร้างอะไรบ้าง

1737
01:52:33,008 --> 01:52:36,357
เรามีแท็บแดชบอร์ดที่เราเห็นทุกอย่างที่เอเจนต์กำลังทำ

1738
01:52:36,357 --> 01:52:40,350
บันทึกกิจกรรมทั้งหมดดึงมาจากฐานข้อมูลเอเจนต์ เมื่อคุณมาที่แท็บ

1739
01:52:40,350 --> 01:52:44,021
ideas เราสามารถสร้างไอเดียใหม่ได้เสมอโดยเลือกไอเดียของคุณ

1740
01:52:44,021 --> 01:52:48,143
แล้วเอเจนต์อย่าง Atlas จะรับไอเดียนั้นและสร้างเป็นคอนเทนต์ให้คุณ

1741
01:52:48,143 --> 01:52:51,298
และเมื่อไหร่ก็ตามที่คุณไม่มีไอเดีย คุณก็แค่มาคลิก

1742
01:52:51,298 --> 01:52:56,451
generate ideas แล้วไอเดียก็จะถูกสร้างให้คุณ เมื่อไหร่ก็ตามที่เราอยากโปรโมตไอเดีย

1743
01:52:56,451 --> 01:53:00,057
เราก็แค่คลิก promote แล้วมันจะถูกโปรโมตให้เราเข้าสู่แท็บ

1744
01:53:00,057 --> 01:53:03,342
studio และเมื่อไหร่ก็ตามที่เราอยากส่งโพสต์ใดๆ ไปยัง

1745
01:53:03,342 --> 01:53:06,755
Instagram, TikTok หรืออะไรก็ตามที่อยากทำ เมื่อเราคลิก

1746
01:53:06,755 --> 01:53:11,006
post now อันนี้จะถูกส่งตรงไปยังแพลตฟอร์มโซเชียลมีเดียที่เราอยากใช้

1747
01:53:11,006 --> 01:53:14,226
และเมื่อเสร็จแล้ว อันนี้จะนำโพสต์ไปยังแท็บ publish

1748
01:53:14,226 --> 01:53:18,476
เพื่อที่คุณจะได้อ้างอิงมันได้เสมอเมื่อไหร่ก็ตามที่อยากทำอะไรกับมัน

1749
01:53:18,476 --> 01:53:22,920
เรายังมีแท็บ templates ที่เต็มไปด้วยเทมเพลตมากมายในการตั้งค่าปัจจุบัน

1750
01:53:22,920 --> 01:53:26,913
ที่คุณสามารถเลือกใช้และพัฒนาสไลด์ carousel ใดก็ตามที่อยากพัฒนา

1751
01:53:26,913 --> 01:53:30,970
จากนั้นเรามีแท็บ dedicated agents ที่เราเห็นเอเจนต์ทั้งหมดที่มี

1752
01:53:30,970 --> 01:53:35,607
heat map ของพวกมัน คุณมีปฏิทิน (calendar) ที่คุณเห็นโพสต์ที่กำหนดเวลาไว้

1753
01:53:35,607 --> 01:53:39,278
โพสต์ที่เผยแพร่แล้ว และโพสต์ที่จะมาถึง แท็บ configuration

1754
01:53:39,278 --> 01:53:43,787
ที่คุณกำหนดค่าชื่อบรานด์ สิ่งที่คุณอยากให้เอเจนต์ทำงานเมื่อพวกมันสร้าง

1755
01:53:43,787 --> 01:53:46,878
และแท็บ docs ที่คุณสามารถทำความเข้าใจแดชบอร์ดได้

1756
01:53:46,878 --> 01:53:51,064
ผมยังมีพรอมป์ต์อีกมากมายที่จะให้คุณใช้ ซึ่งผมแนะนำอย่างยิ่งให้ใช้

1757
01:53:51,064 --> 01:53:57,247
ตัวอย่างเช่น สำหรับบันทึกกิจกรรมของเอเจนต์ เอเจนต์จะบันทึกลงในฐานข้อมูลเมื่อไหร่ก็ตามที่มันทำงาน

1758
01:53:57,247 --> 01:54:00,853
แต่ถ้าคุณรันสิ่งนี้เป็นเวลาทั้งปี ฐานข้อมูลของคุณจะรกมาก

1759
01:54:00,853 --> 01:54:04,138
คุณจึงสามารถตั้งค่าการทำความสะอาดรายสัปดาห์ (weekly

1760
01:54:04,138 --> 01:54:08,582
cleanup) ที่เอเจนต์จะมองหากิจกรรมที่เก่ากว่า 7 วันแล้วล้างทิ้งทั้งหมด

1761
01:54:08,582 --> 01:54:13,476
และผมยังรวมพรอมป์ต์เพิ่มเติมบางอันที่คุณสามารถใช้เพื่อขยายการตั้งค่าที่คุณมี

1762
01:54:13,476 --> 01:54:17,856
ผมรู้ว่ามันเป็นบทช่วยสอนที่ยาว แต่ผมอยากผ่านทุกอย่างที่เรากำลังสร้าง

1763
01:54:17,856 --> 01:54:23,008
กระบวนการคิดที่ผมมีเวลาสร้างอะไรแบบนี้ และคุณยังเห็นผมแก้ไขปัญหาทั้งหมดที่เราเจอ

1764
01:54:23,008 --> 01:54:26,936
เพื่อที่ว่าเมื่อคุณเจอสถานการณ์คล้ายกัน คุณก็ทำแบบเดียวกันได้

1765
01:54:26,936 --> 01:54:29,963
ถ้าคุณพบว่าวิดีโอนี้มีประโยชน์ กรุณากดปุ่ม like

1766
01:54:29,963 --> 01:54:33,119
สมัครสมาชิกช่องของผมเพื่อดูเนื้อหาแบบนี้เพิ่มเติม