เปิดตัว Thoughtworks Technology Radar, Volume 31
(thoughtworks.com)แสดงภาพและอธิบายเทรนด์ล่าสุดในด้านเทคนิค/เครื่องมือ/แพลตฟอร์ม/ภาษาและเฟรมเวิร์กสำหรับการพัฒนา โดยแบ่งเป็น 4 ระดับคือ Hold/Assess/Trial/Adopt
แอนติแพตเทิร์นของ coding assistance
- ไม่น่าแปลกใจที่ Radar ครั้งนี้เน้นการพูดถึง generative AI และ LLM ที่นักพัฒนาใช้งานกันอย่างแพร่หลาย
- แพตเทิร์นย่อมนำไปสู่แอนติแพตเทิร์น ซึ่งหมายถึงสถานการณ์เฉพาะที่นักพัฒนาควรหลีกเลี่ยง
- ในพื้นที่ AI ที่กำลังร้อนแรงเกินไป เริ่มมีแอนติแพตเทิร์นบางอย่างปรากฏขึ้น:
- ความเข้าใจผิดที่ว่ามนุษย์สามารถใช้ AI เป็นคู่หูแทน pair programming ได้อย่างสมบูรณ์
- การพึ่งพาคำแนะนำช่วยเขียนโค้ดมากเกินไป
- ปัญหาคุณภาพโค้ดของโค้ดที่ถูกสร้างขึ้น
- อัตราการเติบโตของ codebase ที่เร็วขึ้น
- AI มีแนวโน้มแก้ปัญหาแบบตะลุยตรงไปตรงมา มากกว่าการใช้ abstraction
- ตัวอย่าง: ใช้เงื่อนไขหลายสิบชุดแทน Strategy design pattern
- โดยเฉพาะปัญหาคุณภาพโค้ด เป็นจุดที่ตอกย้ำว่านักพัฒนาและสถาปนิกต้องใส่ใจอย่างต่อเนื่อง เพื่อไม่ให้ตกหลุมโค้ดแบบ "ใช้งานได้แต่แย่มาก"
- ดังนั้นสมาชิกในทีมจึงควรให้ความสำคัญกับแนวปฏิบัติทางวิศวกรรมที่ดีมากขึ้น เช่น unit test, architecture fitness function และเทคนิค governance กับ validation อื่น ๆ ที่พิสูจน์แล้ว
- เพื่อให้มั่นใจว่า AI กำลังช่วยลดแรงงาน แทนที่จะทำให้ codebase เต็มไปด้วยความซับซ้อน
Rust is anything but rusty - Rust ไม่ได้ขึ้นสนิมเลย
- Rust กำลังค่อย ๆ กลายเป็นภาษาโปรแกรมระบบที่ได้รับความนิยมมากขึ้น
- ในทุกเซสชันของ Radar ชื่อของ Rust ปรากฏขึ้นซ้ำ ๆ อยู่เสมอในบริบทของการสนทนา
- เครื่องมือจำนวนมากที่ถูกพูดถึงนั้นเขียนด้วย Rust
- Rust เป็นภาษาที่นิยมใช้เมื่อจะมาแทนที่ยูทิลิตีระดับระบบแบบเก่า หรือเมื่อจะเขียนบางส่วนของ ecosystem ใหม่เพื่อเพิ่มประสิทธิภาพ
- คำขยายที่พบบ่อยที่สุดสำหรับเครื่องมือที่สร้างด้วย Rust ดูเหมือนจะเป็น "เร็วมากอย่างเหลือเชื่อ"
- ตัวอย่างเช่น ใน ecosystem ของ Python มีเครื่องมือหลายตัวที่มีทางเลือกแบบ Rust-based เพื่อรองรับประสิทธิภาพที่ดีกว่าอย่างชัดเจน
- ผู้ออกแบบภาษาและชุมชนสามารถสร้าง ecosystem ของ SDK หลัก ไลบรารี และเครื่องมือพัฒนาที่เป็นที่ชื่นชอบได้สำเร็จ พร้อมมอบความเร็วในการทำงานที่ยอดเยี่ยมโดยมีหลุมพรางน้อยกว่าภาษารุ่นก่อน ๆ มาก
- หลายคนในทีมเป็นแฟนของ Rust และดูเหมือนว่านักพัฒนาส่วนใหญ่ที่ใช้ Rust ก็ชื่นชมมันอย่างมาก
การเติบโตอย่างค่อยเป็นค่อยไปของ WASM
- WASM(WebAssembly) คือรูปแบบคำสั่งแบบไบนารีสำหรับ virtual machine ที่ทำงานบนสแตก
- สำหรับความสนใจของนักพัฒนาส่วนใหญ่ มันอาจฟังดูเฉพาะทางและอยู่ในระดับต่ำเกินไป แต่ผู้คนมองเห็นนัยสำคัญของมัน: ความสามารถในการรันแอปพลิเคชันที่ซับซ้อนภายใน browser sandbox
- WASM สามารถทำงานภายใน JavaScript virtual machine ที่มีอยู่แล้วได้ ทำให้นักพัฒนาฝังแอปพลิเคชันลงในเบราว์เซอร์ได้ ซึ่งก่อนหน้านี้ทำได้เฉพาะผ่าน native framework และส่วนขยายเท่านั้น
- เบราว์เซอร์หลักทั้ง 4 ราย (Chrome, Firefox, Safari, Edge) รองรับ WASM 1.0 แล้วในตอนนี้ เปิดความเป็นไปได้ที่น่าสนใจสำหรับการพัฒนาแบบพกพาและข้ามแพลตฟอร์มที่ซับซ้อน
- เราติดตามมาตรฐานนี้ด้วยความสนใจอย่างมากตลอดหลายปีที่ผ่านมา และยินดีที่ตอนนี้มันเริ่มแสดงศักยภาพในฐานะเป้าหมายการดีพลอยที่ใช้งานได้จริง
การระเบิดครั้งใหญ่แบบแคมเบรียนของเครื่องมือ generative AI
- หากดูจากแนวโน้มที่นำเสนอใน Radar ไม่กี่ฉบับที่ผ่านมา ก็พอคาดได้ว่า generative AI จะถูกพูดถึงอย่างโดดเด่นในการสนทนาของเรา
- ถึงอย่างนั้น เราก็ยังประหลาดใจกับการระเบิดของ ecosystem เทคโนโลยีที่รองรับ language model อยู่ดี:
- guardrails, evaluation, เครื่องมือสร้าง agent, เฟรมเวิร์กสำหรับงาน structured output, vector database, cloud service และเครื่องมือ observability
- การเติบโตที่รวดเร็วและหลากหลายนี้ ในหลายแง่มุมถือว่าเข้าใจได้อย่างสมบูรณ์
- ประสบการณ์เริ่มต้น หรือความง่ายของการป้อน prompt แบบข้อความธรรมดาให้ language model ได้ต่อยอดไปสู่ software product engineering
- มันอาจยังไม่ไปถึงความฝันและคำกล่าวอ้างเกินจริงที่เกิดขึ้นหลังจากผู้คนส่ง prompt แรกให้ ChatGPT แต่เราเห็นการใช้งาน generative AI อย่างชาญฉลาดและสร้างประสิทธิผลจากลูกค้าจำนวนมาก และเครื่องมือ แพลตฟอร์ม กับเฟรมเวิร์กทั้งหมดเหล่านี้มีบทบาทสำคัญในการนำโซลูชันที่อิงกับ LLM เข้าสู่ production
- เช่นเดียวกับกรณีการระเบิดของ ecosystem JavaScript ราวปี 2015 เราคาดว่าการเติบโตอันสับสนเช่นนี้จะดำเนินต่อไปอีกระยะหนึ่ง
[Techniques]
Adopt
-
1% canary
- ใช้ canary deployment เพื่อกระตุ้นการรับ feedback ระยะแรกต่อซอฟต์แวร์เวอร์ชันใหม่และลดความเสี่ยง
- เป็นเทคนิคการ rollout ฟีเจอร์ใหม่ให้ผู้ใช้ 1% ทำให้ทีมสามารถเก็บ feedback, สังเกตผลกระทบ และตอบสนองได้เมื่อจำเป็น
- สำคัญต่อการดีพลอยในวงกว้าง เช่น แอปมือถือ อุปกรณ์ edge computing หรือ software-defined vehicle
-
Component testing
- test automation คือรากฐานสำคัญของการพัฒนาซอฟต์แวร์ที่มีประสิทธิภาพ
- มุ่งเน้นที่ frontend testing เพื่อให้ได้ทั้งความเสถียรและความเร็ว
- ใช้ jsdom สำหรับ component testing เพื่อรันในหน่วยความจำ
- สำหรับ end-to-end testing ให้ใช้เครื่องมือของเบราว์เซอร์
-
Continuous deployment
- นำแนวทาง continuous deployment มาใช้ให้มากที่สุดเท่าที่ทำได้
- ดีพลอยทุกการเปลี่ยนแปลงที่ผ่าน automated test เข้าสู่ระบบ production โดยอัตโนมัติ
- ทำให้เกิด feedback loop ที่รวดเร็วและส่งมอบคุณค่าให้ลูกค้าได้อย่างฉับไว
- แนะนำหนังสือ "Continuous Deployment" ของ Valentina Servile ซึ่งให้ roadmap สำหรับไปสู่ระดับความพร้อมที่จำเป็น
-
Retrieval-augmented generation (RAG)
- เป็นแพตเทิร์นที่นิยมใช้เพื่อปรับปรุงคุณภาพคำตอบของ large language model
- ถูกใช้อย่างประสบความสำเร็จในโครงการอย่างแพลตฟอร์ม Jugalbandi AI
- จัดเก็บข้อมูลเกี่ยวกับเอกสารที่เกี่ยวข้องและเชื่อถือได้ไว้ในฐานข้อมูล
- ค้นหาเอกสารที่เกี่ยวข้องกับ prompt และนำมาเสริมเพื่อให้บริบทที่สมบูรณ์ยิ่งขึ้น
- ให้ผลลัพธ์ที่มีคุณภาพดีกว่าและลด hallucination ลงอย่างมาก
Trial
-
Domain storytelling
- domain-driven design (DDD) ได้กลายเป็นรากฐานของแนวทางการพัฒนาซอฟต์แวร์ของเรา
- หลายทีมเริ่มต้นทำ DDD ได้ยาก
- domain storytelling เป็นทางเลือกหรือแนวทางเสริมสำหรับการพัฒนา domain model ในระยะแรก
- ทำให้ความเข้าใจร่วมกันชัดเจนขึ้นด้วยการทำแผนภาพคำอธิบายกิจกรรมของผู้เชี่ยวชาญทางธุรกิจ
-
Fine-tuning embedding models
- เมื่อสร้างแอป LLM ที่อิงกับ retrieval-augmented generation คุณภาพของ embedding ส่งผลโดยตรงต่อการค้นหาและการตอบกลับ
- สามารถปรับปรุงความแม่นยำและความเหมาะสมของ embedding สำหรับงานหรือโดเมนเฉพาะได้
- ทีมของเราทำ embedding fine-tuning เมื่อการดึงข้อมูลอย่างแม่นยำมีความสำคัญในแอป LLM เฉพาะโดเมน
- จำเป็นต้องพิจารณาทั้งข้อดีและข้อเสียของแนวทางนี้
-
Function calling with LLMs
- ความสามารถที่ทำให้ LLM ตัดสินใจและเรียกใช้ฟังก์ชันที่เหมาะสม โดยอิงจาก query และเอกสารที่เกี่ยวข้องที่ได้รับ
- ขยายให้ LLM ทำงานได้มากกว่าการสร้างข้อความเพียงอย่างเดียว
- ผ่านการเรียกใช้ฟังก์ชันหรือ API trigger ทำให้ LLM สามารถทำงานที่ก่อนหน้านี้อยู่นอกขอบเขตความสามารถแบบสแตนด์อโลน
- LLM สามารถเชื่อมต่อกับระบบภายใน ฐานข้อมูล หรือแม้แต่ค้นหาอินเทอร์เน็ตผ่านเบราว์เซอร์ได้
- เป็นแพตเทิร์นนามธรรมที่ควรทำความเข้าใจในบริบทของ retrieval-augmented generation และ agent architecture
-
LLM as a judge
- เราสร้างระบบที่สามารถให้คำตอบโดยอิงจากคำถามต่อชุดข้อมูลขนาดใหญ่ได้ แต่ยากที่จะติดตามว่ามันไปถึงคำตอบนั้นได้อย่างไร
- ใช้ LLM เพื่อประเมินคำตอบของอีกระบบหนึ่ง ซึ่งอาจเป็นระบบที่อิงกับ LLM เช่นกัน
- ใช้ในการประเมินความเกี่ยวข้องของผลการค้นหาใน product catalog และทิศทางการแนะนำผู้ใช้ของ chatbot ที่อิงกับ LLM
- จำเป็นต้องตั้งค่าและปรับเทียบ evaluator system อย่างรอบคอบ
- อาจนำไปสู่การเพิ่มประสิทธิภาพและลดต้นทุนได้
-
Passkeys
- นำโดย FIDO Alliance และได้รับการสนับสนุนจาก Apple, Google, Microsoft จนใกล้เข้าสู่การใช้งานกระแสหลัก
- เมื่อสร้างการตั้งค่าล็อกอินใหม่ จะมีการสร้าง key pair โดยเว็บไซต์ได้รับ public key ส่วนผู้ใช้เก็บ private key ไว้
- ประมวลผลการล็อกอินด้วย asymmetric cryptography
- พิสูจน์การครอบครอง private key ซึ่งถูกเก็บไว้บนอุปกรณ์ของผู้ใช้และไม่ถูกส่งไปยังเว็บไซต์
- การเข้าถึง Passkey ได้รับการปกป้องด้วย biometric หรือ PIN
- สำหรับผู้ใช้หลายแพลตฟอร์ม สามารถเก็บ Passkey ไว้บนอุปกรณ์อื่นที่ไม่ใช่อุปกรณ์ที่ใช้สร้างคีย์หรือล็อกอินผ่าน CTAP ได้
-
Small language models
- แม้โมเดลภาษาขนาดใหญ่ (LLM) จะมีประโยชน์ แต่ก็อาจก่อปัญหาจากขนาดของมัน
- ต้องใช้ทรัพยากรประมวลผลจำนวนมากในการตอบสนองต่อพรอมป์ต์ จึงช้าและมีค่าใช้จ่ายสูง
- เนื่องจากโมเดลเป็นแบบเฉพาะทางและมีขนาดใหญ่ จึงต้องโฮสต์บนคลาวด์ของบุคคลที่สาม ซึ่งเป็นปัญหาสำหรับข้อมูลอ่อนไหว
- ในกรณีส่วนใหญ่ การฝึกโมเดลมีค่าใช้จ่ายสูงเกินไป
- แม้รูปแบบ RAG จะช่วยลดความจำเป็นในการฝึกและ fine-tuning โมเดลพื้นฐานได้ แต่ปัญหาเรื่องต้นทุนและความเป็นส่วนตัวยังคงอยู่
- ความสนใจต่อโมเดลภาษาขนาดเล็ก (SLM) กำลังเพิ่มขึ้น
- มีจำนวน weights และระดับความแม่นยำน้อยกว่า (โดยทั่วไปอยู่ที่ 3.5 พันล้านถึง 1 หมื่นล้านพารามิเตอร์)
- หากตั้งค่าได้ถูกต้องในบริบทที่เหมาะสม ก็อาจให้ประสิทธิภาพเทียบเท่าหรือดีกว่า LLM ได้
- ด้วยขนาดที่เล็กกว่า จึงสามารถรันบนอุปกรณ์ edge ได้
- เป็นสาขาที่กำลังพัฒนาอย่างรวดเร็ว เช่น Gemini Nano ของ Google และตระกูล Phi-3 ของ Microsoft
- แม้โมเดลภาษาขนาดใหญ่ (LLM) จะมีประโยชน์ แต่ก็อาจก่อปัญหาจากขนาดของมัน
-
Synthetic data for testing and training models
- รวมถึงการสร้างข้อมูลสังเคราะห์ที่สามารถเลียนแบบสถานการณ์จริงได้โดยไม่ต้องพึ่งพาแหล่งข้อมูลอ่อนไหวหรือแหล่งข้อมูลที่เข้าถึงได้จำกัด
- ข้อมูลสังเคราะห์สำหรับชุดข้อมูลแบบมีโครงสร้างได้รับการศึกษาอย่างกว้างขวาง
- มีการนำข้อมูลสังเคราะห์สำหรับข้อมูลแบบไม่มีโครงสร้างกลับมาใช้เพิ่มขึ้น
- โดยเฉพาะในองค์กรที่เผชิญปัญหาขาดแคลนข้อมูลเฉพาะโดเมนแบบมีป้ายกำกับสำหรับการฝึกหรือ fine-tuning LLM
- เครื่องมืออย่าง Bonito และ AgentInstruct ของ Microsoft สามารถสร้างข้อมูลคำสั่งสังเคราะห์สำหรับการปรับแต่งได้จากแหล่งข้อมูลดิบ เช่น เอกสารข้อความและไฟล์โค้ด
- ช่วยเร่งการฝึกโมเดลพร้อมลดต้นทุนและการพึ่งพาการคัดสรรข้อมูลด้วยตนเอง
- การสร้างข้อมูลสังเคราะห์เพื่อแก้ปัญหาข้อมูลไม่สมดุลหรือมีอยู่น้อยก็เป็นกรณีใช้งานที่สำคัญเช่นกัน
- พบได้บ่อยในงานอย่างการตรวจจับการฉ้อโกงหรือการแบ่งกลุ่มลูกค้า
- เทคนิคอย่าง SMOTE ช่วยสร้างอินสแตนซ์ของคลาสส่วนน้อยขึ้นมาเทียมเพื่อปรับสมดุลของชุดข้อมูล
- ในอุตสาหกรรมอย่างการเงิน มีการใช้ GAN เพื่อจำลองธุรกรรมที่เกิดขึ้นไม่บ่อย ทำให้โมเดลตรวจจับ edge case ได้แข็งแกร่งขึ้นและปรับปรุงประสิทธิภาพโดยรวม
-
Using GenAI to understand legacy codebases
- Generative AI (GenAI) และโมเดลภาษาขนาดใหญ่ (LLM) ช่วยให้นักพัฒนาทั้งเขียนและทำความเข้าใจโค้ดได้ดีขึ้น
- มีประโยชน์อย่างยิ่งกับโค้ดเบสแบบ legacy ที่เอกสารประกอบไม่ดี ล้าสมัย หรือทำให้เข้าใจผิด
- เทคนิคและผลิตภัณฑ์สำหรับใช้ GenAI เพื่อทำความเข้าใจโค้ดเบสแบบ legacy กำลังก้าวหน้ามากขึ้น
- โดยเฉพาะอย่างยิ่ง มีการใช้อย่างประสบความสำเร็จในการสนับสนุนงาน reverse engineering เพื่อทำ modernize ระบบเมนเฟรม
- แนวทาง retrieval-augmented generation (RAG) ที่ทำ retrieval ข้อมูลจาก knowledge graph ของโค้ดเบสมีแนวโน้มที่ดี
- knowledge graph สามารถเก็บรักษาข้อมูลเชิงโครงสร้างเกี่ยวกับโค้ดเบสได้มากกว่าสิ่งที่ LLM อนุมานจากข้อความของโค้ดเพียงอย่างเดียว
- มีประโยชน์เป็นพิเศษกับโค้ดเบสแบบ legacy ที่ขาดความอธิบายตัวเองและมีความเชื่อมโยงภายในต่ำ
- ยังมีโอกาสที่จะเสริมกราฟเพิ่มเติมด้วยเอกสารที่มีอยู่เดิมและเอกสารที่ AI สร้างขึ้น การพึ่งพาภายนอก และความรู้เชิงโดเมนทางธุรกิจ เพื่อช่วยให้งานของ AI ง่ายขึ้น
Assess
-
AI team assistants
- เครื่องมือช่วยเขียนโค้ดด้วย AI มักถูกพูดถึงในบริบทของการสนับสนุนและเพิ่มประสิทธิภาพการทำงานของผู้มีส่วนร่วมรายบุคคลเป็นหลัก
- แต่การส่งมอบซอฟต์แวร์เป็นงานแบบทีมมาโดยตลอดและจะยังคงเป็นเช่นนั้น ดังนั้นจึงควรหาวิธีสร้าง AI team assistant ที่ช่วยสร้างทีมแบบ 10x แทนที่จะมุ่งหา 10x engineer
- พัฒนาการล่าสุดของตลาดเครื่องมือทำให้เราเข้าใกล้ความเป็นจริงนี้มากขึ้นอีกขั้น
- Unblocked เป็นแพลตฟอร์มที่รวมแหล่งความรู้ทั้งหมดของทีมและผสานเข้ากับเครื่องมือของสมาชิกทีมอย่างชาญฉลาด
- Rovo ของ Atlassian นำ AI เข้าสู่แพลตฟอร์มการทำงานร่วมกันของทีมที่ใช้งานอย่างแพร่หลายที่สุด พร้อมมอบรูปแบบใหม่ของการค้นหาและการเข้าถึงเอกสาร
- เรากำลังสำรวจศักยภาพของ AI สำหรับการขยายความรู้และการสนับสนุนแนวปฏิบัติของทีมด้วยตัวเอง
- เปิดซอร์ส Haiven team assistant และเริ่มเรียนรู้จากการใช้ AI ช่วยงานที่ไม่ใช่การเขียนโค้ด เช่น การวิเคราะห์ความต้องการ
-
Dynamic few-shot prompting
- อาศัย few-shot prompting โดยใส่ตัวอย่างเฉพาะลงในพรอมป์ต์แบบไดนามิกเพื่อชี้นำการตอบของโมเดล
- ปรับจำนวนและความเกี่ยวข้องของตัวอย่างเหล่านี้เพื่อเพิ่มประสิทธิภาพความยาวของบริบทและความเกี่ยวข้อง ช่วยปรับปรุงทั้งประสิทธิภาพและผลลัพธ์ของโมเดล
- ไลบรารีอย่าง scikit-llm นำเทคนิคนี้ไปใช้โดยอาศัยการค้นหา nearest neighbors เพื่อดึงตัวอย่างที่เกี่ยวข้องที่สุดซึ่งตรงกับคำค้นของผู้ใช้
- ช่วยใช้ประโยชน์จากหน้าต่างบริบทที่จำกัดของโมเดลได้ดีขึ้นและลดการใช้โทเค็น
- เครื่องมือสร้าง SQL แบบโอเพนซอร์ส vanna ใช้ dynamic few-shot prompting เพื่อเพิ่มความแม่นยำของคำตอบ
-
GraphQL for data products
- การใช้ GraphQL เป็น output port ของ data product เพื่อให้ไคลเอนต์นำผลิตภัณฑ์ไปใช้งาน
- ใช้ GraphQL สร้างชั้น Unified API ที่ช่วยซ่อนความซับซ้อนของข้อมูลพื้นฐานและมอบอินเทอร์เฟซที่สม่ำเสมอและจัดการได้ง่ายกว่าให้กับไคลเอนต์
- เมื่อใช้ GraphQL กับ data product ผู้ใช้งานสามารถค้นพบรูปแบบข้อมูลและความสัมพันธ์ต่าง ๆ ผ่าน GraphQL schema ได้อย่างราบรื่น และใช้เครื่องมือไคลเอนต์ที่คุ้นเคยได้
- ทีมของเรากำลังสำรวจเทคนิคนี้ในกรณีใช้งานเฉพาะสำหรับการสำรวจและค้นพบข้อมูลเชิงลึกจาก big data ด้วยความช่วยเหลือของ LLM
- LLM สร้าง GraphQL query จากพรอมป์ต์ของผู้ใช้และ GraphQL schema ที่ให้อ้างอิง
-
LLM-powered autonomous agents
- ด้วยการมาของเฟรมเวิร์กอย่าง Autogen และ CrewAI เทคโนโลยีนี้กำลังก้าวไปไกลกว่าระบบเอเจนต์เดี่ยวและระบบหลายเอเจนต์แบบคงที่
- เป็นเทคนิคที่แยกกิจกรรมซับซ้อนออกเป็นงานย่อยหลายงาน แล้วมอบบทบาทเฉพาะให้แต่ละเอเจนต์ดำเนินการ
- นักพัฒนาสามารถใช้เครื่องมือที่ตั้งค่าไว้ล่วงหน้าสำหรับการทำงาน และเอเจนต์สามารถสนทนากันเองพร้อมประสานลำดับการทำงานได้
- เทคโนโลยียังอยู่ในช่วงพัฒนาเริ่มต้น โดยทีมของเราพบปัญหาอย่างเอเจนต์ติดอยู่ในลูปต่อเนื่องหรือเกิดพฤติกรรมที่ควบคุมไม่ได้
- ไลบรารีอย่าง LangGraph มอบการควบคุมปฏิสัมพันธ์ของเอเจนต์ได้มากขึ้นด้วยความสามารถในการกำหนดโฟลว์เป็นกราฟ
- แนะนำให้ใช้กลไก fail-safe เช่น การตั้ง timeout และการกำกับดูแลโดยมนุษย์เมื่อใช้งานเทคโนโลยีนี้
-
Observability 2.0
- การเปลี่ยนผ่านจากเครื่องมือติดตามแบบดั้งเดิมที่แยกส่วนและหลากหลาย ไปสู่แนวทางแบบรวมศูนย์ที่ใช้ข้อมูลเหตุการณ์เชิงโครงสร้างและมี cardinality สูงในแหล่งเก็บข้อมูลเดียว
- เก็บเหตุการณ์ดิบที่มีรายละเอียดสูงพร้อม metadata ที่สมบูรณ์ เพื่อเป็นแหล่งข้อมูลจริงหนึ่งเดียวสำหรับการวิเคราะห์แบบครอบคลุม
- การเก็บเหตุการณ์ในรูปแบบดิบช่วยให้การหาความสัมพันธ์ทำได้ง่ายขึ้น รองรับทั้งการวิเคราะห์แบบเรียลไทม์และการวิเคราะห์เชิงนิติวิทยาศาสตร์ และเปิดทางสู่ความเข้าใจที่ลึกขึ้นต่อระบบที่ซับซ้อนและกระจายตัว
- มอบความสามารถด้านการมอนิเตอร์ความละเอียดสูงและการตรวจสอบแบบไดนามิก
- ให้ความสำคัญกับการเก็บข้อมูลที่มี cardinality สูงและข้อมูลหลายมิติเพื่อการตรวจสอบเชิงลึก โดยไม่ให้เกิดคอขวดด้านประสิทธิภาพ
- แหล่งเก็บข้อมูลแบบรวมศูนย์ช่วยลดความซับซ้อน มอบมุมมองที่สอดคล้องกันต่อพฤติกรรมของระบบ และทำให้แนวปฏิบัติด้าน observability สอดคล้องกับวงจรการพัฒนาซอฟต์แวร์มากยิ่งขึ้น
-
On-device LLM inference
- ปัจจุบันสามารถรันโมเดลภาษาขนาดใหญ่ (LLM) ได้แล้วบนเว็บเบราว์เซอร์และอุปกรณ์ edge เช่น สมาร์ตโฟนและโน้ตบุ๊ก
- ช่วยประมวลผลข้อมูลอ่อนไหวได้อย่างปลอดภัยโดยไม่ต้องส่งขึ้นคลาวด์ มอบ latency ต่ำมากสำหรับงานอย่าง edge computing และการประมวลผลภาพ/วิดีโอแบบเรียลไทม์ ลดต้นทุนด้วยการประมวลผลในเครื่อง และยังคงใช้งานได้แม้การเชื่อมต่ออินเทอร์เน็ตไม่เสถียรหรือไม่มีเลย
- เป็นสาขาที่มีงานวิจัยและพัฒนาอย่างคึกคัก โดยก่อนหน้านี้ได้เน้นย้ำถึง MLX ซึ่งเป็นเฟรมเวิร์กโอเพนซอร์สสำหรับการทำ machine learning อย่างมีประสิทธิภาพบน Apple silicon
- ขณะนี้มีเครื่องมือใหม่อย่าง Transformers.js และ Chatty ปรากฏขึ้น
- Transformers.js ใช้ ONNX Runtime เพื่อรัน transformer ในเบราว์เซอร์ได้ (รองรับโมเดลที่แปลงมาจาก PyTorch, TensorFlow และ JAX)
- Chatty ใช้ WebGPU เพื่อรัน LLM ในเบราว์เซอร์แบบเนทีฟและเป็นส่วนตัว มอบประสบการณ์ AI ที่มีความสามารถหลากหลาย
-
Structured output from LLMs
- หมายถึงแนวทางการจำกัดการตอบกลับของโมเดลภาษาให้อยู่ในสคีมาที่กำหนดไว้
- ทำได้โดยสั่งให้โมเดลทั่วไปตอบกลับในรูปแบบเฉพาะ หรือปรับจูนโมเดลเพื่อให้มีเอาต์พุต "พื้นฐาน" เช่น JSON
- ตอนนี้ OpenAI รองรับ structured output แล้ว ทำให้นักพัฒนาสามารถกำหนดการตอบกลับของโมเดลด้วย JSON schema, pydantic หรือออบเจ็กต์ Zod ได้
- มีประโยชน์อย่างยิ่งเมื่อความถูกต้องและการทำตามรูปแบบเป็นสิ่งสำคัญ เช่น การเรียกฟังก์ชัน การโต้ตอบกับ API และการผสานระบบภายนอก
- รองรับกรณีการใช้งานได้กว้างขวาง ไม่เพียงแต่ช่วยปรับปรุงวิธีเชื่อมต่อกับโค้ด แต่ยังรวมถึงการสร้างมาร์กอัปสำหรับการเรนเดอร์กราฟด้วย
- ยังช่วยลดโอกาสเกิดอาการหลอนในเอาต์พุตของโมเดลได้ด้วย
Hold
-
ความชะล่าใจกับโค้ดที่สร้างโดย AI
- AI coding assistant อย่าง GitHub Copilot และ Tabnine ได้รับความนิยมอย่างมาก
- จากแบบสำรวจนักพัฒนาปี 2024 ของ StackOverflow พบว่า "72% ของผู้ตอบแบบสอบถามทั้งหมดมีทัศนคติเชิงบวกหรือเชิงบวกมากต่อเครื่องมือ AI สำหรับการพัฒนา"
- เราเองก็ยอมรับถึงข้อดีของมัน แต่ยังคงระมัดระวังต่อผลกระทบระยะกลางถึงระยะยาวต่อคุณภาพของโค้ด และขอเตือนนักพัฒนาไม่ให้ชะล่าใจกับโค้ดที่ AI สร้างขึ้น
- หลังจากมีประสบการณ์เชิงบวกไม่กี่ครั้ง ก็เป็นเรื่องง่ายที่จะลดความระมัดระวังลงเมื่อทบทวนข้อเสนอจาก AI
- งานวิจัยของ GitClear ชี้ให้เห็นแนวโน้มของ codebase ที่เติบโตเร็วขึ้น ซึ่งคาดว่าสอดคล้องกับ pull request ที่มีขนาดใหญ่ขึ้น
- งานวิจัยนี้ของ GitHub ตั้งคำถามว่าอัตราการรวม pull request ที่เพิ่มขึ้น 15% ตามที่กล่าวถึงนั้นเป็นเรื่องดีจริงหรือไม่ หรือเป็นเพราะผู้คนเชื่อผลลัพธ์จาก AI มากเกินไปจนรวม pull request ที่ใหญ่ขึ้นได้เร็วเกินไป
- เรายังคงใช้คำแนะนำพื้นฐานสำหรับ "การเริ่มต้น" ที่ให้ไว้เมื่อ 1 ปีก่อน และควรระวัง automation bias, sunk cost fallacy, fixation และ review fatigue
- นอกจากนี้ยังควรพัฒนากรอบความคิดที่ดีว่าจุดไหนและเมื่อใดที่โปรแกรมเมอร์ควรใช้ AI และไม่ควรเชื่อมัน
-
สภาพแวดล้อมทดสอบการรวมระบบระดับทั้งองค์กร
- เป็นแนวปฏิบัติที่พบได้ทั่วไปและสิ้นเปลือง ซึ่งทำให้ทุกอย่างช้าลง
- มักกลายเป็นทรัพยากรล้ำค่าที่ทำซ้ำได้ยากและกลายเป็นคอขวดของการพัฒนา
- ให้ความรู้สึกปลอดภัยแบบหลอก ๆ เนื่องจากความไม่สอดคล้องของข้อมูลระหว่างสภาพแวดล้อมที่หลีกเลี่ยงไม่ได้และภาระในการตั้งค่า
- เหตุผลคัดค้านทางเลือกอื่นทั่วไป (เช่น สภาพแวดล้อมชั่วคราวหรือสภาพแวดล้อมทดสอบ on-premises หลายชุด) กลับเป็นเรื่องต้นทุนอย่างน่าขัน
- แต่กลับไม่ได้คำนึงถึงต้นทุนจากความล่าช้าที่เกิดจากสภาพแวดล้อมทดสอบการรวมระบบระดับทั้งองค์กร
- ซึ่งเกิดขึ้นขณะที่ทีมพัฒนาต้องรอให้ทีมอื่นทำงานเสร็จ หรือรอให้มีการติดตั้งระบบที่พึ่งพาเวอร์ชันใหม่
- ทางที่ดีกว่า ทีมควรใช้สภาพแวดล้อมชั่วคราว และใช้ fake stub แทนของจำลองจริง เพื่อให้ชุดการทดสอบที่ทีมพัฒนาเป็นเจ้าของสามารถเริ่มต้นและยกเลิกได้ในต้นทุนต่ำ
- เทคโนโลยีอื่นที่สนับสนุนทางเลือกนี้ ได้แก่ contract testing, การแยก deployment ออกจาก release, การมุ่งเน้นที่ mean time to recovery และการทดสอบบนโปรดักชัน
-
การแบน LLM
- แทนที่จะออกข้อห้ามแบบครอบคลุมต่อ LLM ในที่ทำงาน ควรมุ่งเน้นไปที่การเปิดให้เข้าถึงชุดเครื่องมือ AI ที่ได้รับการอนุมัติ
- การแบนมีแต่จะทำให้พนักงานหาทางแก้แบบอ้อมที่ไม่ได้รับอนุมัติและอาจไม่ปลอดภัย
- เช่นเดียวกับยุคแรกของคอมพิวเตอร์ส่วนบุคคล ผู้คนจะใช้เครื่องมือที่พวกเขารู้สึกว่ามีประสิทธิภาพในการทำงาน ไม่ว่ากำแพงจะมีแค่ไหนก็ตาม
- หากไม่จัดหาทางเลือกที่ปลอดภัยและได้รับการรับรอง องค์กรก็เสี่ยงที่พนักงานจะใช้ LLM ที่ไม่ได้รับอนุมัติจนก่อให้เกิดความเสี่ยงด้านทรัพย์สินทางปัญญา การรั่วไหลของข้อมูล และความรับผิด
- ในทางกลับกัน หากจัดหา LLM หรือเครื่องมือ AI ที่ปลอดภัยและได้รับการอนุมัติจากองค์กร ก็จะช่วยรับประกันทั้งความปลอดภัยและผลิตภาพ
- ด้วยแนวทางที่มีการกำกับดูแลอย่างดี องค์กรสามารถจัดการประเด็นเรื่องความเป็นส่วนตัวของข้อมูล ความปลอดภัย การปฏิบัติตามข้อกำหนด และต้นทุน พร้อมทั้งมอบความสามารถของ LLM ให้พนักงานได้
- ในกรณีที่ดีที่สุด การเข้าถึงเครื่องมือ AI ที่มีการกำกับดูแลอย่างดีสามารถเร่งการเรียนรู้ขององค์กรเกี่ยวกับวิธีที่ดีที่สุดในการใช้ AI ในที่ทำงานได้
-
การแทนที่ pair programming ด้วย AI
- เมื่อพูดถึง coding assistant ประเด็นเรื่อง pair programming มักถูกหยิบยกขึ้นมาอย่างหลีกเลี่ยงไม่ได้
- วิชาชีพของเรามีความสัมพันธ์แบบทั้งรักทั้งเกลียดกับ pair programming
- บางคนเชื่อมั่นมาก ขณะที่บางคนทนไม่ได้เลย
- ตอนนี้ coding assistant ทำให้เกิดคำถามว่า มนุษย์จะสามารถจับคู่กับ AI แทนมนุษย์อีกคน และยังได้ผลลัพธ์แบบเดียวกันสำหรับทีมได้หรือไม่
- GitHub Copilot ถึงกับเรียกตัวเองว่า "AI pair programmer ของคุณ"
- แม้เราจะคิดว่า coding assistant สามารถมอบประโยชน์บางส่วนของ pair programming ได้ แต่เราไม่แนะนำให้ใช้ AI แทน pair programming อย่างสมบูรณ์
- หากมอง coding assistant เป็น pair programmer ก็อาจทำให้มองข้ามข้อดีหลักอย่างหนึ่งของการทำงานแบบจับคู่ นั่นคือการยกระดับทีมให้ดีขึ้น ไม่ใช่แค่ตัวผู้มีส่วนร่วมรายบุคคล
- coding assistant อาจช่วยแก้จุดที่ติดขัด เรียนรู้เทคโนโลยีใหม่ ช่วย onboarding หรือทำงานเชิงแท็กติกได้เร็วขึ้น เพื่อให้โฟกัสกับการออกแบบเชิงกลยุทธ์มากขึ้น
- แต่ไม่ได้ช่วยในด้านประโยชน์ของการทำงานร่วมกันในทีม เช่น การจำกัดงานที่กำลังทำอยู่ให้ต่ำ ลดการส่งต่องานและการต้องเรียนรู้ใหม่ ทำให้เกิด continuous integration ได้ และปรับปรุง collective code ownership
[Platforms]
Adopt : ไม่มี
Trial
-
Databricks Unity Catalog
- เป็นโซลูชันด้าน data governance สำหรับสินทรัพย์อย่างไฟล์ ตาราง และโมเดล ML ใน Lakehouse
- เป็นโซลูชันโอเพนซอร์สแบบมีการจัดการ ที่ใช้จัดการและคิวรีข้อมูลทั้งใน external storage หรือข้อมูลภายใต้การดูแลของ Databricks ได้
- ข้อดีคือรองรับทั้ง governance, การจัดการ metastore และการค้นหาข้อมูลแบบรวมศูนย์ จึงช่วยลดความจำเป็นในการต้องดูแลหลายเครื่องมือ
- ข้อเสียที่พบคือ Databricks managed Unity Catalog ไม่มีระบบกู้คืนจากภัยพิบัติแบบอัตโนมัติ
- ทีมต้องตั้งค่าความสามารถด้านการสำรองและกู้คืนด้วยตนเอง
- แม้เป็นโซลูชันแบบรวมศูนย์ แต่ก็สามารถมอบหมายสิทธิ์ให้แต่ละทีมจัดการสินทรัพย์ของตนเองได้
-
FastChat
- เป็นแพลตฟอร์มแบบเปิดสำหรับการฝึก เสิร์ฟ และประเมินผล large language model
- สามารถโฮสต์หลายโมเดล (Llama 3.1, Mistral 7B, Llama-SQL เป็นต้น) ในรูปแบบ OpenAI API ได้อย่างสม่ำเสมอ
- ใช้สถาปัตยกรรม controller-worker เพื่อโฮสต์โมเดลหลากหลายบน worker หลายตัว
- รองรับ worker หลายประเภท เช่น vLLM, LiteLLM และ MLX
- สามารถสร้างและขยาย FastChat model worker คนละประเภทตามลักษณะการใช้งานได้
- ข้อเสนอแนะโค้ดใน IDE ของนักพัฒนาต้องการ latency ต่ำ จึงขยายเป็นหลาย worker
- ส่วน Text-to-SQL มีความต้องการต่ำ จึงไม่จำเป็นต้องมีหลาย worker
- สามารถนำไปใช้กับ A/B testing ได้
- โดยตั้งค่าพารามิเตอร์ไฮเปอร์ของโมเดลเดียวกันต่างกันเพื่อระบุค่าที่เหมาะสมที่สุด
- และตรวจสอบการย้ายโมเดลแบบไร้การหยุดชะงักเมื่อสลับโมเดลในบริการจริงได้
-
GCP Vertex AI Agent Builder
- เป็นแพลตฟอร์มที่ยืดหยุ่นสำหรับสร้าง AI agent ได้ทั้งด้วยภาษาธรรมชาติหรือแนวทาง code-first
- ผสานกับข้อมูลองค์กรได้อย่างราบรื่นผ่าน third-party connector
- มีเครื่องมือครบถ้วนที่จำเป็นต่อการสร้าง ทำต้นแบบ และปรับใช้ AI agent
- ช่วยให้นักพัฒนาสามารถทำต้นแบบ agent ได้อย่างรวดเร็วด้วยการตั้งค่าน้อยที่สุด และจัดการงานข้อมูลที่ซับซ้อนได้
- เหมาะสำหรับสร้างฐานความรู้หรือระบบสนับสนุนอัตโนมัติที่จัดการข้อมูลแบบ structured/unstructured ได้อย่างมีประสิทธิภาพ
-
Langfuse
- เป็นเครื่องมือสำหรับการสังเกตการณ์ การมอนิเตอร์ และการประเมินผลแอปพลิเคชันที่ใช้ LLM
- สามารถวิเคราะห์ประสิทธิภาพและความแม่นยำของการตอบกลับได้ผ่านความสามารถด้าน tracing, analytics และ evaluation
- ช่วยให้ปรับปรุงโดยอิงข้อมูลได้ ด้วยการจัดการต้นทุนและ latency และทำความเข้าใจรูปแบบการใช้งานในโปรดักชัน
- ใช้ข้อมูล instrumentation ที่ให้การติดตามได้ครบถ้วนทั้ง flow แบบ request-response และขั้นตอนระหว่างทาง
- สามารถใช้ร่วมกับ RAG และ autonomous agent ที่อิง LLM ได้
- สามารถวิเคราะห์ trace ของบทสนทนาที่ได้คะแนนต่ำเพื่อระบุจุดที่สถาปัตยกรรมต้องการการปรับปรุง
-
Qdrant
- เป็นโอเพนซอร์ส vector similarity search engine และฐานข้อมูลที่เขียนด้วย Rust
- รองรับโมเดล embedding แบบ dense ทั้งข้อความและมัลติโหมดได้หลากหลาย
- สามารถนำ embedding โอเพนซอร์สอย่าง MiniLM-v6 และ BGE ไปใช้กับฐานความรู้ของหลายผลิตภัณฑ์ได้
- ถูกใช้เป็น enterprise vector store ที่รองรับ multi-tenancy
- จัดเก็บ vector embedding เป็น collection แยกต่างหากเพื่อแยกฐานความรู้ของแต่ละผลิตภัณฑ์
- นโยบายการเข้าถึงของผู้ใช้จะถูกจัดการในชั้นแอปพลิเคชัน
-
Vespa
- เป็นเสิร์ชเอนจินโอเพนซอร์สและแพลตฟอร์มประมวลผลบิ๊กดาต้า
- เหมาะสำหรับแอปพลิเคชันที่ต้องการ latency ต่ำและ throughput สูง
- สามารถทำไฮบริดเสิร์ชโดยใช้เทคนิคการค้นหาหลายแบบร่วมกันได้
- รองรับการกรองและการจัดเรียงเมทาดาทาหลากหลายประเภทได้อย่างมีประสิทธิภาพ
- สามารถทำการจัดอันดับหลายขั้นได้
- สามารถทำดัชนีเวกเตอร์หลายตัวต่อเอกสารโดยไม่เกิดความซ้ำซ้อน
- สามารถค้นหาข้อมูลจากหลายฟิลด์ที่ทำดัชนีไว้ได้พร้อมกัน
Assess
-
Azure AI Search
- เป็นบริการค้นหาบนคลาวด์สำหรับประมวลผลข้อมูลแบบมีโครงสร้างและไม่มีโครงสร้างสำหรับแอปพลิเคชันอย่างเช่นระบบฐานความรู้
- รองรับการค้นหาหลายประเภท เช่น keyword, vector และ hybrid search
- สามารถรวบรวมรูปแบบข้อมูลไม่มีโครงสร้างที่พบบ่อย เช่น PDF, DOC, PPT โดยอัตโนมัติ และสร้างคอนเทนต์ที่ค้นหาได้
- ผสานการทำงานกับบริการ Azure อื่น ๆ เช่น Azure OpenAI ทำให้สร้างแอปพลิเคชันได้โดยต้องผสานระบบด้วยตนเองเพียงเล็กน้อย
- เหมาะกับโปรเจกต์ที่โฮสต์อยู่ในสภาพแวดล้อม Azure และให้ประสิทธิภาพที่เสถียร
- สามารถกำหนดขั้นตอนประมวลผลข้อมูลเฉพาะทางผ่าน custom skill ได้
-
Databricks Delta Live Tables
- เป็นเฟรมเวิร์กเชิงประกาศสำหรับสร้าง data processing pipeline ที่เชื่อถือได้ ดูแลรักษาง่าย และทดสอบได้
- กำหนด data transformation ด้วยแนวทางเชิงประกาศ และจัดการโครงสร้างพื้นฐานกับ data flow ที่อยู่เบื้องหลังโดยอัตโนมัติ
- มีความสามารถด้านการมอนิเตอร์ที่แข็งแกร่ง และแสดง DAG ของ data pipeline ทั้งหมดในรูปแบบภาพ
- มีประโยชน์ต่อการติดตาม data lineage และ dependency
- เนื่องจากผสานรวมกับระบบนิเวศ Databricks อย่างลึกซึ้ง จึงอาจมีข้อจำกัดด้านการปรับแต่งอินเทอร์เฟซ
-
Elastisys Compliant Kubernetes
- เป็น Kubernetes distribution เฉพาะทางสำหรับอุตสาหกรรมที่มีข้อกำกับเข้มงวด เช่น สาธารณสุข การเงิน และภาครัฐ
- มีการจัดเตรียมกระบวนการรักษาความปลอดภัยแบบอัตโนมัติ
- รองรับทั้งมัลติคลาวด์และออนพรেমิส
- สร้างขึ้นบนสถาปัตยกรรมความปลอดภัยแบบ Zero Trust
- มีการรองรับการปฏิบัติตามกฎหมายอย่าง GDPR, HIPAA และมาตรฐานควบคุมอย่าง ISO27001 มาในตัว
-
FoundationDB
- เป็นฐานข้อมูลมัลติโมเดลที่ Apple เข้าซื้อในปี 2015 และโอเพนซอร์สในปี 2018
- แกนหลักคือ distributed key-value store ที่ให้ธุรกรรมแบบ strict serializable
- มีการปรับปรุงสำคัญ เช่น การกระจายข้อมูลแบบอัจฉริยะเพื่อหลีกเลี่ยง write hotspot และ storage engine แบบใหม่
- ด้วยสถาปัตยกรรมแบบ unbundled ทำให้สามารถสเกลส่วนต่าง ๆ ของคลัสเตอร์ได้อย่างอิสระ
- แม้จะมีความสามารถครอบคลุมอย่างกว้างขวาง แต่ก็ยังดูแลคลัสเตอร์ขนาดใหญ่ได้ไม่ยาก
-
Golem
- เป็นแพลตฟอร์ม distributed computing ที่ใช้สถาปัตยกรรม explicit state machine สำหรับ durable computing
- เหมาะกับเวิร์กโฟลว์ของ microservice saga ที่รันระยะยาว หรือการ orchestration AI agent
- สามารถเขียน WebAssembly component ได้ด้วยทุกภาษาที่รองรับ
- มีความเป็น deterministic และรองรับเวลาเริ่มต้นที่รวดเร็ว
-
Iggy
- เป็นแพลตฟอร์ม persistent message streaming ที่เขียนด้วย Rust
- รองรับหลาย stream, topic และ partition
- มีความสามารถอย่าง at-most-once delivery, message expiration และรองรับ TLS สำหรับโปรโตคอล QUIC/TCP/HTTP
- สามารถทำ throughput การอ่าน/เขียนได้สูงด้วยเซิร์ฟเวอร์เพียงเครื่องเดียว
- มีแผนรองรับ clustering และ io_uring จึงอาจเป็นทางเลือกแทน Kafka ได้
-
Iroh
- เป็นระบบจัดเก็บไฟล์แบบกระจายศูนย์และระบบส่งคอนเทนต์ที่พัฒนาต่อยอดจาก IPFS
- ไม่มีข้อจำกัดเรื่องขนาดบล็อกสูงสุด และมีกลไกซิงก์ข้อมูลผ่าน range-based set reconciliation
- มี browser support ผ่าน WASM อยู่ในโรดแมป
- สามารถใช้บริการคลาวด์ได้ผ่าน iroh.network
- มี SDK สำหรับหลายภาษา และใช้งานง่ายกว่า IPFS
-
Large vision model (LVM) platforms
- เป็นแพลตฟอร์มโมเดลวิชันขนาดใหญ่ที่สามารถทำ segmentation, synthesis, reconstruction และ analysis ของสตรีมวิดีโอและภาพได้
- สามารถใช้งานร่วมกับ diffusion model หรือ CNN มาตรฐานได้
- ยังมีความท้าทายเกี่ยวกับการนำไปใช้ในสภาพแวดล้อม production
- เช่น การเก็บรวบรวมข้อมูลสำหรับฝึก, object segmentation และ labeling, การ fine-tune โมเดล เป็นต้น
- เครื่องมืออย่าง V7, Nvidia Deepstream SDK และ Roboflow เกิดขึ้นมาเพื่อช่วยแก้โจทย์เหล่านี้
- Deepstream และ Roboflow มีทั้ง GUI และ API สำหรับจัดการสตรีมวิดีโอแบบรวมศูนย์
-
OpenBCI Galea
- เป็นแพลตฟอร์มเทคโนโลยีแบบไม่รุกล้ำสำหรับ brain-computer interface (BCI)
- ใช้สัญญาณ electrophysiological เช่น EEG เพื่อเป็นทางเลือกที่มีความเสี่ยงต่ำกว่าการฝังอุปกรณ์ในสมอง
- เป็นผลิตภัณฑ์ล่าสุดของ OpenBCI ที่รวมความสามารถของ VR headset เข้ากับ BCI
- ให้สตรีมข้อมูลทางสรีรวิทยาที่ซิงก์ตามเวลา รวมถึงเซ็นเซอร์ตำแหน่งเชิงพื้นที่และการติดตามสายตา
- สามารถใช้ข้อมูลจากเซ็นเซอร์ใน Unity หรือ Unreal ได้
- ให้บริการเป็นแพลตฟอร์มโอเพนซอร์สเพื่อสนับสนุนนวัตกรรมของนักวิจัย
-
PGLite
- เป็น WASM build ของฐานข้อมูล PostgreSQL
- สามารถรันได้โดยตรงในเว็บเบราว์เซอร์โดยไม่ต้องใช้ Linux virtual machine
- สามารถสร้างฐานข้อมูลชั่วคราวในหน่วยความจำ หรือทำ persistence ลงดิสก์ผ่าน indexedDB ได้
- สามารถใช้ร่วมกับ Electric เพื่อสร้างแอปพลิเคชันแบบ reactive local-first ที่อิงบน PostgreSQL ได้
-
SpinKube
- เป็นโอเพนซอร์ส serverless runtime สำหรับ WebAssembly บน Kubernetes
- ด้วยเวลาเริ่มต้นระดับมิลลิวินาทีของ WebAssembly จึงให้โซลูชัน serverless สำหรับ on-demand workload ที่มีความไดนามิกและยืดหยุ่นมากขึ้น
- ช่วยลดความซับซ้อนในการพัฒนาและดีพลอย workload ที่อิง WebAssembly
-
Unblocked
- เป็นเครื่องมือค้นหา asset และ artifact ของ SDLC
- ผสานกับเครื่องมือ ALM และเครื่องมือทำงานร่วมกันเพื่อช่วยให้เข้าใจ codebase และทรัพยากรที่เกี่ยวข้อง
- ให้คอนเท็กซ์ที่เกี่ยวข้องและพร้อมใช้งานทันทีเกี่ยวกับโค้ด ทำให้ง่ายต่อการสำรวจและทำความเข้าใจระบบที่ซับซ้อน
- ช่วยให้ทีมวิศวกรรมเข้าถึงการสนทนาที่เกี่ยวข้องกับงาน, asset และเอกสารได้อย่างปลอดภัย
- เก็บและแบ่งปันความรู้ของสมาชิกทีมที่มีประสบการณ์ เพื่อให้ทุกคนในทีมสามารถนำไปใช้ได้
Hold : ไม่มี
[Tools]
Adopt
-
Bruno
- Bruno เป็นทางเลือกโอเพนซอร์สบนเดสก์ท็อปแทน Postman และ Insomnia สำหรับการทดสอบ พัฒนา และดีบัก API
- มุ่งเน้นการออกแบบแบบเรียบง่ายที่ทำงานออฟไลน์เท่านั้น เพื่อมอบการทำงานร่วมกัน ความเป็นส่วนตัว และความปลอดภัยที่ดี
- คอลเลกชันถูกเขียนด้วย Bru Lang ซึ่งเป็นภาษามาร์กอัปข้อความธรรมดาแบบกำหนดเอง และบันทึกลงไฟล์ซิสเต็มโดยตรง จึงสามารถแชร์ผ่าน Git หรือเครื่องมือควบคุมเวอร์ชันที่เลือกเพื่อทำงานร่วมกันได้
- ใช้งานได้ทั้งในรูปแบบแอปเดสก์ท็อปและเครื่องมือ CLI มีส่วนขยาย VS Code อย่างเป็นทางการ และมีแผนรองรับ IDE เพิ่มเติม
- กลายเป็นตัวเลือกหลักของหลายทีมใน Thoughtworks แล้ว แต่ควรระวังเพราะมีรายงานว่าคำขอบางรายการล้มเหลวโดยไม่คาดคิดเมื่อทำงานในสภาพแวดล้อม VPN และพร็อกซี
-
K9s
- K9s ได้ปรับปรุงความสามารถด้านการแสดงผลด้วยการผสานกราฟและมุมมองที่ละเอียดมากขึ้น
- ตอนนี้สามารถแสดง logs และ metrics ได้ดีขึ้น และแสดง custom resource (CRD) ได้อย่างยืดหยุ่นมากขึ้น
- การทำงานกับ pod ถูกขยายเพิ่มขึ้น การผสานกับเครื่องมือดีบัก (เช่น
kubectl debug) แข็งแรงขึ้น และการรองรับสภาพแวดล้อมแบบ multi-cluster ดีขึ้น - การรองรับ CRD ได้รับการปรับปรุงอย่างมาก ทำให้ตอนนี้สามารถสำรวจและจัดการ resource เหล่านี้ได้ดีขึ้น และโต้ตอบกับ custom resource ได้ลื่นไหลกว่าเดิม
- แผงคีย์ลัดก็ได้รับการปรับปรุง ทำให้นักพัฒนาที่ไม่คุ้นเคยกับ kubectl เข้าถึงได้ง่ายขึ้น
- เนื่องจากในช่วงแรก K9s มุ่งเน้นไปที่ทีม DevOps เป็นหลัก นี่จึงเป็นการปรับปรุงที่สำคัญ
-
SOPS
- SOPS เป็นตัวแก้ไขไฟล์ที่เข้ารหัส ซึ่งรองรับไฟล์ได้หลายรูปแบบและเข้ารหัสด้วย KMS
- ในการจัดการความลับ คำแนะนำของเรามาโดยตลอดคือให้แยกออกจากซอร์สโค้ดเสมอ
- อย่างไรก็ตาม ในแนวคิดของโค้ดโครงสร้างพื้นฐาน เมื่อต้องเลือกระหว่างระบบอัตโนมัติเต็มรูปแบบกับการจัดการ ตั้งต้น และหมุนเวียนซีดซีเคร็ตผ่านขั้นตอนแบบแมนนวลบางส่วน เช่น การใช้เครื่องมืออย่าง Vault ทีมมักต้องเผชิญกับทางประนีประนอม
- ตัวอย่างเช่น ทีมของเราใช้ SOPS เพื่อจัดการข้อมูลรับรองตั้งต้นสำหรับการบูตสแตรปโครงสร้างพื้นฐาน
- แต่ในบางสถานการณ์ ก็ไม่สามารถลบความลับออกจากที่เก็บโค้ดแบบเลกาซีได้
- ในกรณีเหล่านี้ เราใช้ SOPS เพื่อเข้ารหัสความลับในไฟล์ข้อความ
- SOPS ผสานรวมกับที่เก็บกุญแจแบบคลาวด์ที่มีการจัดการ เช่น AWS และ GCP Key Management Service (KMS) หรือ Azure Key Vault เพื่อใช้เป็นแหล่งของคีย์เข้ารหัส
- นอกจากนี้ยังทำงานได้ข้ามแพลตฟอร์มและรองรับคีย์ PGP
- เมื่อจำเป็นต้องจัดการความลับในที่เก็บโค้ด หลายทีมของเราเลือกใช้ SOPS เป็นค่าเริ่มต้น
-
Visual regression testing tools
- ก่อนหน้านี้เราเคยเน้นย้ำเครื่องมือทดสอบ visual regression และได้เห็นอัลกอริทึมพัฒนาจากการเปรียบเทียบระดับพิกเซลดิบไปสู่การจับคู่แพตเทิร์นที่ซับซ้อนและการรู้จำอักขระด้วยแสง (OCR)
- เครื่องมือ visual regression testing รุ่นแรก ๆ สร้าง false positive จำนวนมาก และมีประโยชน์เฉพาะในช่วงปลายของการพัฒนาเมื่ออินเทอร์เฟซนิ่งแล้วเท่านั้น
- BackstopJS หลีกเลี่ยงปัญหานี้ด้วยการกำหนดค่า selector และ viewport เพื่อทำการทดสอบเชิงภาพกับองค์ประกอบเฉพาะของหน้าได้อย่างแม่นยำ
- อย่างไรก็ตาม machine learning ทำให้ตรวจจับและเปรียบเทียบองค์ประกอบภาพได้แม่นยำยิ่งขึ้น แม้องค์ประกอบจะเคลื่อนที่หรือมีเนื้อหาแบบไดนามิก
- เครื่องมือเหล่านี้มีประโยชน์มากขึ้นเรื่อย ๆ และอยู่ในตำแหน่งที่ดีต่อการใช้ประโยชน์จากความก้าวหน้าล่าสุดของ AI และ machine learning
- เครื่องมือเชิงพาณิชย์หลายตัว เช่น Applitools และ Percy ตอนนี้อ้างว่าใช้ AI ในการทดสอบ visual regression
- หนึ่งในทีมของเราใช้ Applitools Eyes อย่างกว้างขวาง และพึงพอใจกับผลลัพธ์
- แม้ว่า visual regression testing จะไม่สามารถแทนที่การทดสอบฟังก์ชันแบบ end-to-end ที่เขียนมาอย่างดีได้ แต่ก็เป็นส่วนเสริมที่มีคุณค่าในชุดเครื่องมือทดสอบ
- เรากำลังนำสิ่งนี้มาใช้ เพราะมันได้กลายเป็นตัวเลือกเริ่มต้นที่ปลอดภัยในฐานะองค์ประกอบหนึ่งของกลยุทธ์การทดสอบ UI แบบครอบคลุม
-
Wiz
- Wiz ได้กลายเป็นแพลตฟอร์มความปลอดภัยคลาวด์ที่ถูกเลือกใช้ในหลายโครงการ
- ทีมของเราชื่นชมที่มันสามารถตรวจสอบการเปลี่ยนแปลงอย่างต่อเนื่องและตรวจจับความเสี่ยงกับภัยคุกคามได้เร็วกว่าเครื่องมือที่คล้ายกัน
- Wiz สามารถตรวจจับและแจ้งเตือนการกำหนดค่าผิดพลาด ช่องโหว่ และความลับที่รั่วไหลได้ทั้งในอาร์ติแฟกต์ที่ยังไม่ถูกนำไปใช้งานจริง เช่น อิมเมจคอนเทนเนอร์และโค้ดโครงสร้างพื้นฐาน รวมถึงเวิร์กโหลดที่กำลังทำงานอยู่จริง เช่น คอนเทนเนอร์ VM และบริการคลาวด์
- เรายังชื่นชมความสามารถด้านการรายงานที่แข็งแกร่งสำหรับทั้งทีมพัฒนาและฝ่ายผู้นำ
- การวิเคราะห์นี้ช่วยให้เข้าใจได้ว่าช่องโหว่อาจส่งผลต่อบริการใดบ้าง เพื่อให้สามารถแก้ปัญหาได้อย่างเหมาะสมในบริบทนั้น
Trial
-
AWS Control Tower
- AWS Control Tower ยังคงเป็นตัวเลือกที่ดีที่สุดสำหรับการจัดการบัญชี AWS ในสภาพแวดล้อมแบบหลายทีม
- มีกลไกที่สะดวกสำหรับการกำหนดค่าการควบคุมด้านความปลอดภัยและการปฏิบัติตามข้อกำหนดล่วงหน้า ซึ่งจะถูกนำไปใช้กับ landing zone ใหม่โดยอัตโนมัติ
- นี่คือตัวอย่างของ “compliance at the point of change” ซึ่งหมายถึงทุกครั้งที่มีการสร้างโครงสร้างพื้นฐานใหม่ การควบคุมจะถูกนำไปใช้และตรวจสอบทันที จึงไม่จำเป็นต้องมีการตรวจ compliance แบบแมนนวลในภายหลัง
- AWS Control Tower Account Factory for Terraform (AFT) ยังคงพัฒนาต่อเนื่องนับตั้งแต่เล่มก่อน และตอนนี้ใช้งานได้ใน AWS Region มากขึ้น
- ด้วย AFT คุณสามารถ provision บัญชี Control Tower ผ่าน pipeline ของโค้ดโครงสร้างพื้นฐานได้
- เราชอบที่ AFT สามารถปรับแต่งให้ส่ง webhook หรือดำเนินการเฉพาะบางอย่าง เพื่อผสานรวมกับเครื่องมือภายนอกอย่าง GitHub Actions ได้อย่างมั่นคงและปลอดภัย
- ทีมของเราประสบความสำเร็จอย่างมากจากการใช้ AWS Control Tower เพื่อจัดการบัญชี แต่ก็หวังว่าเมื่อมีโอกาสปรับปรุง AWS จะเปิดรับการมีส่วนร่วมจากชุมชนในโครงการนี้
-
CCMenu
- สำหรับทีมที่ทำ continuous integration การรับรู้สถานะของบิลด์ส่วนกลางจากระบบ continuous integration (CI) เป็นเรื่องสำคัญ
- ก่อนการระบาดใหญ่ แดชบอร์ดบนหน้าจอทีวีขนาดใหญ่ในห้องทีมช่วยให้เห็นข้อมูลนี้ได้อย่างรวดเร็ว
- เมื่อการทำงานทางไกลยังคงดำเนินต่อไป จึงจำเป็นต้องมีโซลูชันที่ทำงานบนเวิร์กสเตชันของนักพัฒนาแต่ละคน
- สำหรับ Mac ช่องว่างนี้ถูกเติมเต็มโดย CCMenu ซึ่งเป็นแอปขนาดเล็กที่เขียนโดย Thoughtworker
- เดิมทีเป็นส่วนหนึ่งของ CruiseControl แอปนี้ทำงานได้กับทุกเซิร์ฟเวอร์ที่สามารถให้ข้อมูลในรูปแบบ cctray รวมถึง Jenkins และ TeamCity
- จากการเขียนใหม่เมื่อไม่นานมานี้ ได้เพิ่มการรองรับ GitHub Actions และเปิดทางไปสู่การผสานรวมที่ลึกยิ่งขึ้นกับเซิร์ฟเวอร์ CI และรูปแบบการยืนยันตัวตนอื่น ๆ อีกมาก
-
ClickHouse
- ClickHouse เป็นฐานข้อมูล OLAP แบบคอลัมน์โอเพนซอร์สสำหรับการวิเคราะห์แบบเรียลไทม์
- เริ่มต้นจากโครงการทดลองในปี 2009 และเติบโตเป็นฐานข้อมูลวิเคราะห์ที่มีประสิทธิภาพสูงและขยายขนาดแบบเชิงเส้นได้
- ด้วยเอนจินประมวลผลคำสั่งคิวรีที่มีประสิทธิภาพและความสามารถในการบีบอัดข้อมูล มันจึงเหมาะกับการรันคิวรีแบบโต้ตอบโดยไม่ต้องมีการสรุปล่วงหน้า
- ClickHouse เป็นตัวเลือกที่ดีสำหรับการจัดเก็บข้อมูล OpenTelemetry
- ด้วยการผสานรวมกับ Jaeger จึงสามารถจัดเก็บข้อมูล tracing ปริมาณมากและวิเคราะห์ได้อย่างมีประสิทธิภาพ
-
Devbox
- แม้เครื่องมือพัฒนาจะก้าวหน้าไปมาก แต่การรักษาสภาพแวดล้อมการพัฒนาแบบโลคัลให้สอดคล้องกันก็ยังเป็นความท้าทายสำหรับหลายทีม
- การ onboard วิศวกรใหม่มักต้องรันคำสั่งหรือสคริปต์ที่ปรับแต่งเอง ซึ่งอาจล้มเหลวอย่างคาดเดาไม่ได้ในแต่ละระบบ และนำไปสู่ความไม่สอดคล้องกัน
- เพื่อแก้ปัญหานี้ ทีมของเราพึ่งพา Devbox มากขึ้นเรื่อย ๆ
- Devbox เป็นเครื่องมือบรรทัดคำสั่งที่มอบอินเทอร์เฟซที่เข้าถึงง่ายสำหรับการสร้างสภาพแวดล้อมการพัฒนาแบบโลคัลที่ทำซ้ำได้และเฉพาะต่อโปรเจกต์ โดยใช้ตัวจัดการแพ็กเกจ Nix โดยไม่ต้องพึ่ง virtual machine หรือคอนเทนเนอร์
- เมื่อตั้งค่าสำหรับ codebase หนึ่งครั้งแล้ว การสร้างสภาพแวดล้อมที่กำหนดไว้บนอุปกรณ์ใหม่ต้องใช้เพียงคำสั่ง CLI เดียว (
devbox shell) ซึ่งช่วยลดความซับซ้อนของเวิร์กโฟลว์การ onboard ได้อย่างมาก - Devbox รองรับ shell hook, สคริปต์แบบกำหนดเอง และการสร้าง
devcontainer.jsonเพื่อผสานรวมกับ VSCode
-
Difftastic
- Difftastic เป็นเครื่องมือที่ไฮไลต์ความแตกต่างระหว่างไฟล์โค้ดด้วยวิธีที่รับรู้โครงสร้างไวยากรณ์
- สิ่งนี้แตกต่างอย่างมากจากเครื่องมือเปรียบเทียบความต่างของข้อความ เช่น คำสั่ง Unix diff
- ตัวอย่างเช่น Difftastic จะเพิกเฉยต่อการขึ้นบรรทัดใหม่ที่แทรกเข้ามาเพื่อแบ่งประโยคยาว ๆ ในภาษาอย่าง Java หรือ TypeScript ที่ใช้เซมิโคลอนเป็นตัวคั่น
- เครื่องมือนี้จะไฮไลต์เฉพาะการเปลี่ยนแปลงที่มีผลต่อไวยากรณ์ของโปรแกรมเท่านั้น
- เพื่อทำเช่นนั้น มันจะพาร์สไฟล์เป็น abstract syntax tree ก่อน จากนั้นใช้อัลกอริทึมของ Dijkstra เพื่อคำนวณระยะห่างระหว่างต้นไม้
- เราพบว่า Difftastic มีประโยชน์อย่างยิ่งในการทำความเข้าใจการเปลี่ยนแปลงเมื่อรีวิว codebase ขนาดใหญ่
- Difftastic ใช้ได้กับทุกภาษาโปรแกรมที่มี parser และรองรับโดยค่าเริ่มต้นมากกว่า 50 ภาษาโปรแกรม รวมถึงรูปแบบข้อความที่มีโครงสร้างอย่าง CSS และ HTML
- นี่ไม่ใช่เครื่องมือใหม่ แต่เราคิดว่ามันควรค่าแก่การให้ความสนใจในยุคของผู้ช่วยเขียนโค้ด LLM ที่การรีวิวแบบ human-in-the-loop มีความสำคัญมากขึ้นเรื่อย ๆ
-
LinearB
- LinearB ซึ่งเป็นแพลตฟอร์ม software engineering intelligence มอบข้อมูลเชิงลึกที่ขับเคลื่อนด้วยข้อมูลแก่ผู้นำด้านวิศวกรรมเพื่อสนับสนุนการปรับปรุงอย่างต่อเนื่อง
- ช่วยจัดแนวในด้านสำคัญ เช่น benchmarking, workflow automation, และการลงทุนแบบมุ่งเป้าเพื่อยกระดับประสบการณ์ของนักพัฒนาและผลิตภาพ
- ประสบการณ์การใช้งาน LinearB เน้นให้เห็นถึงความสามารถในการสร้างวัฒนธรรมแห่งการปรับปรุงและประสิทธิภาพภายในทีมวิศวกรรม
- ทีมของเราใช้แพลตฟอร์มนี้เพื่อติดตามเมตริกวิศวกรรมหลัก ระบุด้านที่ต้องปรับปรุง และนำมาตรการที่อิงหลักฐานมาใช้
- ความสามารถเหล่านี้สอดคล้องอย่างมากกับคุณค่าหลักของ LinearB ได้แก่ benchmarking, การทำให้การเก็บรวบรวมเมตริกเป็นอัตโนมัติ และการขับเคลื่อนการปรับปรุงด้วยข้อมูล
- LinearB ผสานการทำงานกับซอร์สโค้ด, วงจรชีวิตแอปพลิเคชัน, CI/CD และเครื่องมือสื่อสาร พร้อมใช้ทั้งเมตริกวิศวกรรมที่ตั้งค่าไว้ล่วงหน้าและเมตริกวิศวกรรมแบบกำหนดเอง เพื่อมอบข้อมูลเชิงลึกเชิงปริมาณที่ครอบคลุมเกี่ยวกับประสบการณ์ของนักพัฒนา ผลิตภาพ และประสิทธิภาพของทีม
- ในฐานะผู้สนับสนุน DORA เราชื่นชมที่ LinearB ให้ความสำคัญกับเมตริกเฉพาะเหล่านี้ และเพิ่มความสามารถในการวัดแง่มุมหลักของประสิทธิภาพการส่งมอบซอฟต์แวร์ซึ่งจำเป็นต่อการปรับปรุงประสิทธิภาพ
- ในอดีต ทีมต่างๆ มักประสบปัญหาในการเก็บรวบรวมเมตริกเฉพาะของ DORA และมักต้องพึ่งพาแดชบอร์ดแบบกำหนดเองที่ซับซ้อนหรือกระบวนการแบบแมนนวล
- LinearB ยังคงเป็นโซลูชันที่น่าสนใจด้วยการทำให้การติดตามเมตริกเหล่านี้เป็นอัตโนมัติ และมอบข้อมูลแบบเรียลไทม์ที่สนับสนุนการตัดสินใจเชิงรุกเกี่ยวกับประสบการณ์ของนักพัฒนา ผลิตภาพ และความคาดการณ์ได้
-
pgvector
- pgvector เป็นส่วนขยายโอเพนซอร์สสำหรับ PostgreSQL เพื่อการค้นหาความคล้ายคลึงของเวกเตอร์ ซึ่งช่วยให้สามารถจัดเก็บเวกเตอร์ร่วมกับข้อมูลแบบมีโครงสร้างในฐานข้อมูลเดียวที่จัดการไว้เป็นอย่างดี
- แม้จะขาดความสามารถขั้นสูงบางอย่างของฐานข้อมูลเวกเตอร์แบบเฉพาะทาง แต่ก็ได้รับประโยชน์จากการรองรับ ACID, point-in-time recovery และความสามารถที่แข็งแกร่งอื่นๆ ของ PostgreSQL
- เราพบว่าพร้อมกับการเติบโตของแอปพลิเคชันที่ขับเคลื่อนด้วย generative AI รูปแบบการจัดเก็บและค้นคืน embedding vector อย่างมีประสิทธิภาพเพื่อใช้กับงานด้านความคล้ายคลึง ซึ่ง pgvector แก้ปัญหาได้อย่างมีประสิทธิผล ก็กำลังเพิ่มขึ้น
- เมื่อพิจารณาจากการใช้งาน pgvector ในสภาพแวดล้อม production ที่เพิ่มขึ้น โดยเฉพาะในทีมที่ใช้งานผู้ให้บริการคลาวด์ที่มี managed PostgreSQL อยู่แล้ว รวมถึงความสามารถที่พิสูจน์แล้วในการรองรับความต้องการค้นหาเวกเตอร์ทั่วไปโดยไม่ต้องมี vector store แยกต่างหาก เราจึงมั่นใจในศักยภาพของ pgvector
- ทีมของเราใช้มันได้อย่างเป็นประโยชน์ในโครงการที่เปรียบเทียบข้อมูลแบบมีโครงสร้างกับข้อมูลไม่มีโครงสร้าง ซึ่งแสดงให้เห็นถึงศักยภาพในการนำไปใช้ในวงกว้าง
- ดังนั้นเราจึงย้าย pgvector ไปอยู่ในขั้นทดลอง
-
Snapcraft build tool
- Snapcraft เป็นเครื่องมือบรรทัดคำสั่งแบบโอเพนซอร์สสำหรับสร้างและแพ็กเกจแอปพลิเคชันแบบ self-contained ที่เรียกว่า snap สำหรับ Ubuntu, Linux distribution อื่นๆ และ macOS
- snap สามารถนำไป deploy และบำรุงรักษาได้ง่ายบนฮาร์ดแวร์หลายแพลตฟอร์ม รวมถึงคอมพิวเตอร์ Linux, สภาพแวดล้อมเสมือน และระบบคอมพิวเตอร์ออนบอร์ดของยานพาหนะ
- แม้ว่า Snapcraft จะมี public app store สำหรับเผยแพร่ snap แต่ทีมของเราใช้ build tool นี้เพื่อแพ็กเกจระบบขับเคลื่อนอัตโนมัติเป็น snap โดยไม่เผยแพร่ไปยัง public app store
- สิ่งนี้ทำให้สามารถ build, test และ debug ระบบซอฟต์แวร์แบบฝังตัวได้ภายในเครื่อง พร้อมทั้งเผยแพร่ไปยัง internal artifact repository ได้
-
Spinnaker
- Spinnaker เป็นแพลตฟอร์ม continuous delivery แบบโอเพนซอร์สที่สร้างโดย Netflix
- โดยมีความสามารถระดับ first-class สำหรับการจัดการคลัสเตอร์และการ deploy baked image ไปยังคลาวด์
- เราชอบแนวทางที่ชัดเจนและมีแบบแผนของ Spinnaker สำหรับการ deploy ไมโครเซอร์วิส
- ก่อนหน้านี้เราเคยชี้ให้เห็นว่าเวอร์ชันเก่าไม่สามารถกำหนดค่า pipeline เป็นโค้ดได้ แต่ปัญหานี้ได้รับการแก้ไขแล้วด้วยการเพิ่ม spin CLI
- เราไม่แนะนำ Spinnaker สำหรับสถานการณ์ CD แบบเรียบง่าย แต่ในบริบทที่ซับซ้อนมันได้กลายเป็นเครื่องมือที่หลายคนเลือกใช้ร่วมกับ deployment pipeline ที่ซับซ้อนไม่แพ้กัน
-
TypeScript OpenAPI
- TypeScript OpenAPI (หรือ tsoa) เป็นทางเลือกแทน Swagger สำหรับสร้างข้อกำหนด OpenAPI จากโค้ด
- เป็นแนวทางแบบ code-first โดยใช้ TypeScript controller และ model เป็นแหล่งความจริงเดียว และใช้ annotation หรือ decorator ของ TypeScript แทนการต้องมีไฟล์และการกำหนดค่าที่ซับซ้อนมากขึ้นเมื่อใช้เครื่องมือ OpenAPI ใน TypeScript
- สามารถสร้างข้อกำหนด API ทั้งเวอร์ชัน 2.0 และ 3.0 และสามารถสร้าง route สำหรับ Express, Hapi และ Koa ได้
- หากคุณเขียน API ด้วย TypeScript โปรเจ็กต์นี้ก็น่าลองพิจารณา
-
Unleash
- แม้แนวทางที่เราแนะนำยังคงเป็นการใช้ feature toggle ที่เรียบง่ายที่สุดเท่าที่จะทำได้ แต่เมื่อขนาดทีมขยายและการพัฒนาเร็วขึ้น การจัดการ toggle ที่ทำขึ้นเองก็ซับซ้อนมากขึ้น
- Unleash เป็นตัวเลือกที่ทีมของเราใช้อย่างแพร่หลายเพื่อรับมือกับความซับซ้อนนี้และทำให้ CI/CD เป็นไปได้
- สามารถใช้งานเป็นบริการหรือโฮสต์เองได้
- มี SDK สำหรับหลายภาษา พร้อม UI ที่คุ้นเคยสำหรับประสบการณ์ของนักพัฒนาและการจัดการ
- แม้ยังไม่มีการรองรับสเปก OpenFeature อย่างเป็นทางการ แต่สามารถพบ provider ที่ชุมชนดูแลสำหรับ Go และ Java ได้
- Unleash ใช้ได้ไม่เพียงกับ feature toggle แบบง่ายเท่านั้น แต่ยังใช้สำหรับ segmentation และ gradual rollout ได้ด้วย จึงเป็นตัวเลือกที่เหมาะสำหรับการจัดการฟีเจอร์ในระดับสเกล
Assess
-
Astronomer Cosmos
- Astronomer Cosmos เป็นปลั๊กอิน Airflow ที่ออกแบบมาเพื่อให้การรองรับ dbt core workflow แบบเนทีฟมากขึ้นใน Airflow
- เมื่อติดตั้งปลั๊กอินแล้ว DbtDag จะเปลี่ยน dbt node ให้เป็น Airflow task/task group เมื่อห่อหุ้ม dbt workflow ทำให้วิศวกรสามารถมองเห็นกราฟการพึ่งพาของ dbt และความคืบหน้าของการรันได้โดยตรงใน Airflow UI
- นอกจากนี้ยังสามารถใช้ Airflow connection แทน dbt profile ได้ ซึ่งช่วยลดการกระจายตัวของการกำหนดค่า
- เรากำลังทดลองใช้เครื่องมือนี้เพราะมีศักยภาพที่จะทำให้งาน dbt ใน Airflow ลื่นไหลยิ่งขึ้น
-
ColPali
- ColPali เป็นเครื่องมือใหม่สำหรับค้นหาเอกสาร PDF โดยใช้ vision language model ซึ่งช่วยแก้ความยากในการสร้างแอปพลิเคชัน retrieval-augmented generation (RAG) ที่มีประสิทธิภาพในการดึงข้อมูลจากเอกสารมัลติมีเดียที่มีรูปภาพ ไดอะแกรม และตาราง
- ต่างจากวิธีการเดิมที่พึ่งพา text-based embedding หรือเทคนิค optical character recognition (OCR) โดย ColPali ประมวลผลทั้งหน้า PDF และใช้ visual transformer เพื่อสร้าง embedding ที่คำนึงถึงทั้งข้อความและเนื้อหาเชิงภาพ
- แนวทางแบบองค์รวมนี้ไม่เพียงให้การค้นหาที่ดีขึ้น แต่ยังช่วยให้สามารถให้เหตุผลได้ว่าทำไมเอกสารบางฉบับจึงถูกค้นพบ และช่วยยกระดับประสิทธิภาพของ RAG สำหรับ PDF ที่อุดมด้วยข้อมูลอย่างมาก
- เราได้ทดสอบ ColPali กับลูกค้าหลายรายและพบผลลัพธ์ที่มีแนวโน้มดี แต่เทคโนโลยีนี้ยังอยู่ในระยะเริ่มต้น
- โดยเฉพาะสำหรับองค์กรที่มีข้อมูลเอกสารเชิงภาพซับซ้อน นับว่าคุ้มค่าต่อการประเมิน
-
Cursor
- การแข่งขันของเครื่องมือเขียนโปรแกรมที่มี AI ช่วยยังคงดำเนินต่อไป และ Cursor คือหนึ่งในตัวที่โดดเด่นที่สุด
- Cursor เป็นตัวแก้ไขโค้ดแบบ AI-first ที่ออกแบบมาเพื่อเพิ่มผลิตภาพของนักพัฒนาโดยผสาน AI เข้ากับเวิร์กโฟลว์การเขียนโค้ดอย่างลึกซึ้ง
- เราเคยกล่าวถึง Cursor ในการประเมิน Radar ก่อนหน้านี้ แต่ชัดเจนว่าการพัฒนาอย่างต่อเนื่องล่าสุดของ Cursor ได้ก่อให้เกิดการเปลี่ยนแปลงเชิงคุณภาพ
- จากการใช้งานของเรา Cursor แสดงให้เห็นความสามารถที่แข็งแกร่งในการอนุมานบริบทจาก codebase ที่มีอยู่
- ในขณะที่เครื่องมือโค้ด AI อื่นๆ เช่น GitHub Copilot มักเน้นการสร้าง snippet และการทำงานร่วมกัน ความสามารถของ Cursor ในการแก้ไขหลายบรรทัดและหลายไฟล์ทำให้มันโดดเด่น
- Cursor ถูก fork มาจาก VSCode และพัฒนาต่อยอดบนพื้นฐานนั้น โดยมอบวิธีโต้ตอบที่รวดเร็วและใช้งานง่ายซึ่งสอดคล้องกับสัญชาตญาณของนักพัฒนา
- งานที่ทรงพลังสามารถทำได้ด้วย ctrl/cmd+K และ ctrl/cmd+L
- Cursor กำลังเป็นผู้นำการแข่งขันระลอกใหม่ของเครื่องมือเขียนโปรแกรม AI ในด้านการปฏิสัมพันธ์กับนักพัฒนาและความเข้าใจ codebase
-
Data Mesh Manager
- Data Mesh Manager มอบชั้นเมทาดาทาสำหรับแพลตฟอร์ม data mesh ทั่วไป
- โดยเฉพาะอย่างยิ่ง เครื่องมือนี้มุ่งเน้นไปที่การนิยาม data product และข้อกำหนด data contract โดยใช้โครงการริเริ่ม OpenContract และสามารถผสานเข้ากับ build pipeline ได้ผ่าน DataContract CLI ที่เชื่อมต่ออยู่
- นอกจากนี้ แอปพลิเคชันนี้ยังมี data catalog สำหรับค้นหาและสำรวจ data product และเมทาดาทาที่เกี่ยวข้อง พร้อมรองรับ federated governance ซึ่งรวมถึงการกำหนดเมตริกคุณภาพข้อมูลและการจัดการกฎคุณภาพข้อมูล
- นี่เป็นหนึ่งในเครื่องมือพื้นฐานชุดแรกที่ปรากฏขึ้นในพื้นที่นี้ และไม่ได้พยายามดัดแปลงแพลตฟอร์มเดิมให้เข้ากับแนวคิด data mesh
-
GitButler
- อินเทอร์เฟซบรรทัดคำสั่งของ Git นั้นทรงพลังและมีประโยชน์ แต่ก็ขึ้นชื่อว่าซับซ้อนมากเมื่อต้องจัดการหลาย branch และ stage commit ภายในนั้น
- GitButler เป็น Git client ที่มีกราฟิกอินเทอร์เฟซ ซึ่งมีเป้าหมายเพื่อทำให้กระบวนการนี้ง่ายขึ้น
- มันทำงานโดยติดตามการเปลี่ยนแปลงของไฟล์ที่ยังไม่ได้ commit แยกจาก Git แล้วจึง stage การเปลี่ยนแปลงเหล่านั้นลงใน virtual branch
- อาจมีคนแย้งได้ว่านี่คือการแก้ปัญหาสำหรับสิ่งที่ไม่ควรเป็นปัญหาตั้งแต่แรก หากทำการเปลี่ยนแปลงเล็ก ๆ บ่อย ๆ และ push เข้าสู่ trunk ก็ไม่จำเป็นต้องมีหลาย branch
- อย่างไรก็ตาม หาก workflow ของคุณมี pull request รวมอยู่ด้วย โดยเฉพาะเมื่อมีรอบการรีวิวยาวนานก่อน merge PR โครงสร้างการแตก branch ก็อาจซับซ้อนได้
- เพื่อแก้ปัญหานี้ GitButler จึงผสานกับ GitHub เพื่อจัดกลุ่มการเปลี่ยนแปลงเป็น pull request แบบเลือกได้และส่งออกได้โดยตรงจากตัวเครื่องมือ
- GitButler เป็นอีกหนึ่งรายการในกลุ่ม blip ที่กำลังเติบโตสำหรับการจัดการความซับซ้อนที่มีอยู่ในกระบวนการ PR
-
JetBrains AI Assistant
- JetBrains AI Assistant เป็นผู้ช่วยเขียนโค้ดที่ออกแบบมาให้ผสานการทำงานอย่างราบรื่นกับ IDE ทุกตัวของ JetBrains เพื่อช่วยด้าน code completion การสร้างเทสต์ และการปฏิบัติตาม style guide
- สร้างขึ้นบนโมเดลอย่าง OpenAI และ Google Gemini และโดดเด่นด้วยความสามารถในการจดจำรูปแบบการเขียนโค้ดสำหรับเซสชันในอนาคต เพื่อให้ผลลัพธ์มีความสม่ำเสมอ
- นักพัฒนาของเรามองว่าฟีเจอร์การสร้างเทสต์มีประโยชน์เป็นพิเศษ และสังเกตเห็นความสามารถในการจัดการเอาต์พุตที่ยาวขึ้นได้โดยไม่มีปัญหาด้านเสถียรภาพ
- อย่างไรก็ตาม ต่างจากคู่แข่งบางราย JetBrains ไม่ได้โฮสต์โมเดลของตนเอง จึงอาจไม่เหมาะกับลูกค้าที่กังวลเรื่องการประมวลผลข้อมูลโดยบุคคลที่สาม
- ถึงกระนั้น การที่เครื่องมือนี้ผสานอยู่กับ JetBrains IDE ก็ทำให้มันเป็นตัวเลือกที่มีอนาคตสำหรับทีมที่กำลังสำรวจผู้ช่วยเขียนโค้ดที่ขับเคลื่อนด้วย AI
-
Mise
- นักพัฒนาที่ทำงานในสภาพแวดล้อมแบบ polyglot มักต้องเผชิญกับสถานการณ์ที่ต้องจัดการหลายเวอร์ชันของภาษาและเครื่องมือต่าง ๆ
- mise มีเป้าหมายที่จะแก้ปัญหานี้ด้วยการมอบเครื่องมือเดียวที่สามารถแทน nvm, pyenv, rbenv, rustup และอื่น ๆ ได้ และยังสามารถใช้แทน asdf ได้ด้วย
- Mise เขียนด้วย Rust เพื่อความเร็วในการโต้ตอบกับ shell และต่างจาก asdf ที่ใช้ shim บน shell, mise จะปรับตัวแปรสภาพแวดล้อม PATH ล่วงหน้า ทำให้เวลาเรียกใช้เครื่องมือเป็นการเรียกตรง
- นี่เป็นหนึ่งในเหตุผลที่ mise เร็วกว่า asdf
- สำหรับนักพัฒนาที่คุ้นเคยกับ asdf อยู่แล้ว mise มอบความสามารถแบบเดียวกันแต่มีความแตกต่างสำคัญบางประการ
- มันเขียนด้วย Rust จึงเร็วกว่า และมีฟีเจอร์บางอย่างที่ asdf ไม่มี ตัวอย่างเช่น สามารถติดตั้งหลายเวอร์ชันของเครื่องมือเดียวกันพร้อมกันได้ และมีคำสั่งที่ยืดหยุ่นกว่า รวมถึงการจับคู่แบบฟัซซี
- นอกจากนี้ยังมี task runner แบบบูรณาการที่มีประโยชน์สำหรับการรัน linter, test, builder, server และงานเฉพาะโปรเจกต์อื่น ๆ
- หากคุณเริ่มเบื่อกับการต้องใช้หลายเครื่องมือเพื่อจัดการสภาพแวดล้อมการพัฒนา และไวยากรณ์ที่บางครั้งก็ดูขัด ๆ ของเครื่องมืออื่น mise ก็คุ้มค่าที่จะลองอย่างชัดเจน
-
Mockoon
- Mockoon เป็นเครื่องมือโอเพนซอร์สสำหรับทำ API mocking
- มันมีอินเทอร์เฟซที่ใช้งานง่าย เส้นทางที่ปรับแต่งได้ และการตอบสนองแบบไดนามิก รวมถึงความสามารถในการทำให้การสร้างชุดข้อมูลจำลองเป็นอัตโนมัติ
- Mockoon รองรับ OpenAPI และสามารถสร้างสถานการณ์ทดสอบได้หลากหลายแบบเพื่อทดสอบบนเครื่องโลคัลและผสานเข้ากับ pipeline การพัฒนา
- นอกจากนี้ยังสามารถดักจับคำขอและปลอมเฉพาะการเรียกที่นิยามไว้ใน Mockoon เพื่อสร้าง “partial mock” ได้
- partial mock ช่วยจำลองเส้นทางหรือ endpoint ของ API บางส่วน และส่งต่อคำขออื่นไปยังเซิร์ฟเวอร์จริง
- partial mock อาจมีประโยชน์ในบางสถานการณ์ แต่หากใช้มากเกินไปก็เสี่ยงจะนำไปสู่ความซับซ้อนที่ไม่จำเป็น
- นอกเหนือจากนั้น Mockoon ก็ยังคงเป็นเครื่องมือที่มีประโยชน์สำหรับการตั้งค่า mock API อย่างรวดเร็ว รวมถึงช่วยปรับปรุงและทำให้ workflow การพัฒนาเป็นอัตโนมัติ
-
Raycast
- Raycast เป็น launcher ระดับพรีเมียมบน macOS ที่ให้คุณเปิดแอปอย่างรวดเร็ว รันคำสั่ง ค้นหาไฟล์ และทำงานอัตโนมัติได้จากคีย์บอร์ด
- ทีมของเราชื่นชอบความสามารถที่มีมาให้สำหรับนักพัฒนา และการขยายความสามารถได้ง่ายเพื่อโต้ตอบกับแอปและบริการของบุคคลที่สาม เช่น VSCode, Slack, Jira และ Google
- Raycast มุ่งเน้นด้าน productivity และเป็นเครื่องมือที่มีประโยชน์สำหรับผู้ที่ต้องการทำให้งานประจำวันเรียบง่ายขึ้นโดยลดการสลับบริบทให้น้อยที่สุด
- ผู้ใช้ Pro สามารถเข้าถึง Raycast AI ซึ่งเป็นผู้ช่วยค้นหาที่ขับเคลื่อนด้วย AI แบบเฉพาะทางได้
-
ReadySet
- ReadySet เป็น query cache สำหรับ MySQL และ PostgreSQL
- ต่างจากโซลูชันแคชแบบดั้งเดิมที่พึ่งพาการทำ invalidation ด้วยตนเอง ReadySet ใช้ database replication stream เพื่ออัปเดตแคชแบบค่อยเป็นค่อยไป
- ด้วย partial view materialization ทำให้ ReadySet มี tail latency ต่ำกว่า read replica แบบดั้งเดิม
- ReadySet เข้ากันได้กับ MySQL และ PostgreSQL ในระดับ wire protocol ดังนั้นจึงสามารถดีพลอยไว้หน้า database เพื่อขยาย read workload ในแนวนอนได้โดยไม่ต้องเปลี่ยนแอปพลิเคชัน
-
Rspack
- หลายทีมของเราที่ทำงานกับฟรอนต์เอนด์บนเว็บได้ย้ายจากเครื่องมือ bundling รุ่นเก่าอย่าง Webpack ไปใช้ Vite
- ผู้เล่นรายใหม่ในพื้นที่นี้คือ Rspack ซึ่งเปิดตัวเวอร์ชัน 1.0 หลังการพัฒนามา 18 เดือน
- มันถูกออกแบบมาให้เป็นตัวแทนของ Webpack และเข้ากันได้กับปลั๊กอินและ loader ใน ecosystem ของ Webpack
- สิ่งนี้อาจเป็นข้อได้เปรียบเหนือ Vite เมื่อต้องย้ายการตั้งค่า Webpack ที่ซับซ้อน
- เหตุผลหลักที่ทีมของเราย้ายไปใช้เครื่องมือสมัยใหม่อย่าง Vite และ Rspack คือประสบการณ์ของนักพัฒนา โดยเฉพาะเรื่องความเร็ว
- ไม่มีอะไรทำลาย flow ในการพัฒนาได้มากไปกว่าการต้องรอประมาณ 1–2 นาทีก่อนจะได้รับฟีดแบ็กจากการเปลี่ยนแปลงโค้ดล่าสุด
- Rspack ที่เขียนด้วย Rust ให้ประสิทธิภาพที่เร็วกว่า Webpack มาก และในหลายกรณีก็เร็วกว่า Vite ด้วย
-
Semantic Router
- เมื่อสร้างแอปพลิเคชันที่ใช้ LLM สิ่งสำคัญคือการตัดสินเจตนาของผู้ใช้ก่อนจะส่งคำขอไปยังเอเจนต์ที่เหมาะสมหรือเรียกใช้โฟลว์เฉพาะ
- Semantic Router ทำหน้าที่เป็นชั้นการตัดสินใจความเร็วสูงมากสำหรับ LLM และเอเจนต์ ช่วย route คำขอได้อย่างมีประสิทธิภาพและเชื่อถือได้ตามความหมายเชิงอรรถศาสตร์
- ด้วยการใช้ vector embedding เพื่ออนุมานเจตนา Semantic Router จึงลดการเรียกใช้ LLM ที่ไม่จำเป็น และมอบแนวทางที่เรียบง่ายและคุ้มค่ากว่าในการทำความเข้าใจเจตนา
- ศักยภาพของมันไม่ได้จำกัดแค่การอนุมานเจตนา แต่ยังขยายไปเป็นคอมโพเนนต์อเนกประสงค์สำหรับงานเชิงความหมายที่หลากหลาย
- ด้วยความเร็วและความยืดหยุ่นที่มอบให้ มันจึงเป็นตัวเลือกที่แข็งแกร่งในสภาพแวดล้อมที่ต้องการการตัดสินใจแบบรวดเร็วและเรียลไทม์โดยไม่มี overhead ของ LLM
-
เอเจนต์ด้านวิศวกรรมซอฟต์แวร์
- ปัจจุบันหนึ่งในหัวข้อที่ร้อนแรงที่สุดในวงการ GenAI คือแนวคิดของเอเจนต์ด้านวิศวกรรมซอฟต์แวร์
- เครื่องมือช่วยเขียนโค้ดเหล่านี้ทำได้มากกว่าช่วยให้วิศวกรเขียนโค้ดเป็นชิ้น ๆ ตรงนั้นตรงนี้ โดยขยายขนาดของปัญหาที่สามารถแก้ได้ และในอุดมคติคือทำงานได้อย่างอัตโนมัติพร้อมการแทรกแซงจากมนุษย์ให้น้อยที่สุด
- แนวคิดคือเครื่องมือเหล่านี้สามารถดึง GitHub issue หรือ Jira ticket มาพร้อมเสนอแผนและการเปลี่ยนแปลงโค้ด หรือแม้แต่สร้าง pull request ให้มนุษย์ตรวจทานได้
- นี่คือก้าวถัดไปที่สมเหตุสมผลในการเพิ่มอิทธิพลของ AI coding assistance แต่เป้าหมายของเอเจนต์ทั่วไปที่มักถูกโฆษณาว่าสามารถจัดการงานเขียนโค้ดได้อย่างกว้างขวางนั้นทะเยอทะยานมาก และสถานะของเครื่องมือในปัจจุบันก็ยังไม่ได้แสดงให้เห็นอย่างชัดเจนว่าทำได้
- อย่างไรก็ตาม เรามองว่าสำหรับงานง่าย ๆ ที่มีขอบเขตจำกัดมากกว่า สิ่งนี้อาจใช้งานได้ในเร็ว ๆ นี้เพื่อช่วยคืนเวลาให้นักพัฒนาไปจัดการปัญหาที่ซับซ้อนกว่า
- เครื่องมือที่มีการออกเอเจนต์เวอร์ชันเบต้าแล้ว ได้แก่ GitHub Copilot Workspace, qodo flow, Tabnine agent for JIRA และ Amazon Q Developer
- แม้ว่า benchmark SWE Bench จะมีการระบุเครื่องมืออื่น ๆ ในพื้นที่นี้เพิ่มเติม แต่ก็ควรรับข้อมูล benchmark ในวงการ AI ด้วยความระมัดระวังและตั้งข้อสงสัยไว้บ้าง
-
uv
- Rust เหมาะกับการเขียนเครื่องมือ command line เนื่องจากมีประสิทธิภาพการเริ่มทำงานที่รวดเร็ว และเราเห็นผู้คนจำนวนหนึ่งเขียน toolchain บางส่วนขึ้นใหม่ด้วย Rust
- ใน Radar ครั้งก่อน เราเคยกล่าวถึง Ruff ซึ่งเป็น Python linter ที่เขียนด้วย Rust
- ในเล่มนี้ เราได้ประเมิน uv ซึ่งเป็นเครื่องมือจัดการแพ็กเกจ Python ที่เขียนด้วย Rust
- ข้อเสนอคุณค่าของ uv คือความ "เร็วอย่างเหลือเชื่อ" และใน benchmark ก็เหนือกว่าเครื่องมือจัดการแพ็กเกจ Python อื่น ๆ อย่างมาก
- อย่างไรก็ตาม ระหว่างการประเมิน Radar เราได้ถกเถียงกันว่าการปรับปรุง build tool ในระดับไม่กี่วินาทีนั้นเป็นเพียงการปรับปรุงเล็กน้อยหรือไม่
- เมื่อเทียบกับประสิทธิภาพแล้ว สิ่งที่สำคัญกว่าสำหรับระบบจัดการแพ็กเกจคือ ecosystem, ชุมชนที่เติบโตเต็มที่ และการสนับสนุนระยะยาว
- ถึงอย่างนั้น feedback จากทีมโครงการก็แสดงให้เห็นว่าการปรับปรุงประสิทธิภาพเล็ก ๆ นี้สามารถช่วยปรับปรุงวงจร feedback และประสบการณ์โดยรวมของนักพัฒนาได้มาก เรามักทำให้การแคช CI/CD แบบแมนนวลซับซ้อนมากเพื่อให้ได้การปรับปรุงเล็กน้อยนี้; uv ช่วยทำให้การจัดการ environment ของ Python ง่ายขึ้น
- เมื่อพิจารณาว่าการจัดการแพ็กเกจและ env สำหรับการพัฒนา Python ยังมีพื้นที่ให้ปรับปรุงอีกมาก เราจึงคิดว่า uv เป็นตัวเลือกที่คุ้มค่าแก่การประเมิน
-
Warp
- Warp คือเทอร์มินัลสำหรับ macOS และ Linux
- มันแบ่งผลลัพธ์ของคำสั่งออกเป็นบล็อกเพื่อให้อ่านง่ายขึ้น
- Warp มีฟีเจอร์ที่ขับเคลื่อนด้วย AI เช่น การแนะนำคำสั่งอัจฉริยะและการประมวลผลภาษาธรรมชาติ
- นอกจากนี้ยังมีฟังก์ชัน notebook ที่ให้ผู้ใช้จัดระเบียบคำสั่งและผลลัพธ์ พร้อมเพิ่ม annotation และคำอธิบายได้
- ด้วยความสามารถเหล่านี้ ผู้ใช้สามารถสร้างไฟล์ README หรือเอกสาร onboarding และนำเสนอพร้อมจัดการ workflow บนเทอร์มินัลในรูปแบบที่เป็นโครงสร้างและโต้ตอบได้
- Warp ยังผสานรวมกับ Starship ซึ่งเป็น cross-shell prompt ที่ยืดหยุ่นได้อย่างง่ายดาย ทำให้สามารถปรับแต่งประสบการณ์การใช้งานเทอร์มินัลด้วยการดึงข้อมูลเกี่ยวกับ process ที่กำลังทำงานอยู่ เวอร์ชันเฉพาะของเครื่องมือที่ใช้งาน รายละเอียด Git หรือแม้แต่ Git user ปัจจุบันได้
-
Zed
- หลังจากโครงการ text editor อย่าง Atom สิ้นสุดลง ผู้สร้างได้พัฒนา editor ตัวใหม่ชื่อ Zed
- Zed เขียนด้วย Rust และปรับแต่งมาเพื่อใช้ประโยชน์จากฮาร์ดแวร์สมัยใหม่ จึงให้ความรู้สึกรวดเร็ว
- มันมีทุกอย่างที่คาดหวังจาก editor ยุคใหม่ ไม่ว่าจะเป็นการรองรับภาษาโปรแกรมจำนวนมาก เทอร์มินัลในตัว และการแก้ไขแบบ multi-buffer
- การเขียนโค้ดด้วย AI assistance สามารถใช้งานได้ผ่านการผสานรวมกับผู้ให้บริการ LLM หลายราย
- ในฐานะคนที่ชื่นชอบ pair programming อย่างมาก เราประทับใจกับความสามารถด้านการทำงานร่วมกันระยะไกลที่มีมาใน Zed
- นักพัฒนาสามารถค้นหากันผ่าน GitHub ID แล้วร่วมงานกันใน workspace เดียวกันแบบเรียลไทม์ได้
- ยังเร็วเกินไปที่จะตัดสินว่าทีมนักพัฒนาจะสามารถและต้องการหลุดจากแรงดึงดูดของ ecosystem ของ Visual Studio Code หรือไม่
- อย่างไรก็ตาม Zed เป็นทางเลือกหนึ่งที่น่าลองสำรวจ
Hold
- CocoaPods
- CocoaPods เป็นเครื่องมือจัดการ dependency ที่ได้รับความนิยมมาอย่างยาวนานในโปรเจ็กต์ Cocoa ของ Swift และ Objective-C
- ตลอดเวลากว่า 10 ปีที่ผ่านมา มันเป็นเครื่องมือสำคัญสำหรับนักพัฒนา iOS และ macOS
- ขณะนี้ทีม CocoaPods ได้ประกาศว่าโครงการจะเข้าสู่โหมด maintenance และจะยุติการพัฒนาเชิงรุก
- ตัวเครื่องมือ CocoaPods และทรัพยากรที่เกี่ยวข้องจะยังคงใช้งานได้ต่อไป แต่จะไม่มีการพัฒนาฟีเจอร์ใหม่หรือการปรับปรุงเพิ่มเติม
- นักพัฒนาถูกแนะนำให้ย้ายไปใช้ Swift Package Manager
- Swift Package Manager มีการผสานรวมกับ Xcode แบบ native และมีแนวโน้มจะได้รับการสนับสนุนระยะยาวจาก Apple
[Language and Frameworks]
Adopt
-
dbt
- ยังคงถูกมองว่าเป็นตัวเลือกที่ทรงพลังและชาญฉลาดสำหรับการทำ data transformation ใน ELT pipeline
- เราชอบที่มันช่วยให้เกิด engineering rigor และแนวปฏิบัติอย่างความเป็นโมดูล การทดสอบได้ และการนำกลับมาใช้ซ้ำของการแปลงข้อมูลที่อิง SQL
- มันผสานรวมได้ดีกับ cloud data warehouse, lakehouse และฐานข้อมูลจำนวนมาก เช่น Snowflake, BigQuery, Redshift, Databricks และ Postgres และยังมี ecosystem ของ community package ที่แข็งแรงอยู่รอบตัว
- การรองรับ unit test แบบ native ที่เพิ่งเพิ่มเข้ามาเมื่อไม่นานนี้ (dbt core 1.8+ และประสบการณ์ dbt Cloud แบบ "versionless" ที่เพิ่งเปิดตัว) ยิ่งเสริมตำแหน่งของมันใน toolbox ให้แข็งแกร่งขึ้น
- ฟีเจอร์ unit test ใหม่นี้ช่วยให้กำหนดข้อมูลทดสอบแบบคงที่ ตั้งค่าความคาดหวังของผลลัพธ์ และทดสอบได้ทั้งโหมด incremental และ full refresh ของ pipeline ได้อย่างง่ายดาย ซึ่งเป็นสิ่งที่ทีมชื่นชมมาก
- ในหลายกรณี สิ่งนี้ทำให้สามารถเลิกใช้สคริปต์ที่พัฒนาขึ้นเองได้ โดยยังคงรักษาระดับคุณภาพเดิมไว้
-
Testcontainers
- จากประสบการณ์ของเรา Testcontainers เป็นตัวเลือกพื้นฐานที่มีประโยชน์สำหรับการสร้างสภาพแวดล้อมที่เชื่อถือได้สำหรับการรันทดสอบ
- มันเป็นไลบรารีที่พอร์ตไปหลายภาษา ซึ่งทำ Dockerize dependency สำหรับการทดสอบที่พบได้ทั่วไป รวมถึงฐานข้อมูลหลายประเภท เทคโนโลยีคิว บริการคลาวด์ และ dependency ของการทดสอบ UI อย่างเว็บเบราว์เซอร์ อีกทั้งยังสามารถรัน Dockerfile แบบกำหนดเองได้เมื่อจำเป็น
- เมื่อไม่นานมานี้ได้มีการเปิดตัวเวอร์ชันเดสก์ท็อปที่ช่วยให้จัดการ test session แบบมองเห็นภาพได้ และรองรับการจัดการสถานการณ์ที่ซับซ้อนมากขึ้น ซึ่งทีมมองว่ามีประโยชน์อย่างมาก
Trial
-
CAP
- ไลบรารี .NET สำหรับการทำ Outbox pattern เพื่อให้การอัปเดตฐานข้อมูลและการเผยแพร่ event เกิดขึ้นแบบ atomic ในระบบ distributed messaging
- แก้ปัญหาด้วยการบันทึกเจตนาที่จะเผยแพร่ event ไว้ในธุรกรรมฐานข้อมูลเดียวกัน
- รองรับฐานข้อมูลและแพลตฟอร์ม messaging หลายแบบ และมีประโยชน์เพราะรับประกันการส่งอย่างน้อยหนึ่งครั้ง
-
CARLA
- simulator โอเพนซอร์สสำหรับการวิจัยด้าน autonomous driving ที่ใช้ทดสอบระบบขับขี่อัตโนมัติก่อนนำขึ้นใช้งานจริง
- สามารถสร้างและนำโมเดล 3D ของยานพาหนะ ภูมิประเทศ มนุษย์ สัตว์ และอื่น ๆ กลับมาใช้ซ้ำได้อย่างยืดหยุ่น ทำให้จำลองสถานการณ์ได้หลากหลาย
- ระบบขับขี่อัตโนมัติต้องสามารถรับรู้วัตถุที่มีการเคลื่อนไหวเหล่านี้และดำเนินการที่เหมาะสม เช่น การเบรก
- ถูกนำมาใช้เพื่อการพัฒนาและทดสอบระบบขับขี่อัตโนมัติอย่างต่อเนื่อง
-
Databricks Asset Bundles
- DABs ซึ่งประกาศ GA ในเดือนเมษายน 2024 กำลังกลายเป็นเครื่องมือสำหรับการแพ็กเกจและ deploy asset บน Databricks ที่ช่วยผลักดันให้ทีมข้อมูลนำแนวปฏิบัติด้านวิศวกรรมซอฟต์แวร์มาใช้
- มันสามารถแพ็ก bundle ของ workflow และการตั้งค่างาน รวมถึงโค้ดที่จะรันในงานเหล่านั้น แล้ว deploy ไปยังหลาย environment ผ่าน CI/CD pipeline ได้
- รองรับทั้งเทมเพลตสำหรับ asset ทั่วไปและเทมเพลตแบบกำหนดเอง ทำให้สร้าง service template ที่เหมาะกับโปรเจ็กต์ data engineering และ ML ได้
- กำลังถูกนำไปใช้มากขึ้นเรื่อย ๆ ในฐานะส่วนสำคัญของ workflow ด้านวิศวกรรม
- แม้ว่าจะมี notebook template และรองรับการ deploy notebook ขึ้น production แต่เราไม่แนะนำให้ทำ notebook ให้เป็น production
- เราสนับสนุนให้เขียน production code อย่างตั้งใจด้วยแนวปฏิบัติทางวิศวกรรมที่รองรับความต้องการด้านการบำรุงรักษา ความยืดหยุ่น และการขยายระบบ
-
Instructor
- ไลบรารีที่ช่วยเมื่อใช้ LLM เพื่อขอคำตอบแบบมีโครงสร้าง (JSON, YAML เป็นต้น) แล้วนำไปพาร์สเพื่อใช้งานในแอปพลิเคชัน
- เนื่องจาก LLM ไม่มีความแน่นอนในการทำงาน จึงอาจไม่ทำงานตามที่ร้องขอเสมอไป
- สามารถกำหนดโครงสร้างผลลัพธ์ที่ต้องการไว้ และตั้งค่าการลองใหม่ได้หาก LLM ไม่ส่งคืนโครงสร้างตามที่ขอ
- ยังมีความสามารถในการพาร์สโครงสร้างบางส่วนจากสตรีม ทำให้สามารถสตรีมผลลัพธ์ได้โดยไม่ต้องรอคำตอบทั้งหมด
-
Kedro
- ได้รับการปรับปรุงอย่างมากในฐานะเครื่องมือ MLOps และยังคงมุ่งเน้นที่ความเป็นโมดูลและแนวปฏิบัติด้านวิศวกรรม
- เน้นความเป็นโมดูล เช่น การแยกโค้ดออกจากข้อมูลด้วยการนำแพ็กเกจ kedro-datasets แบบสแตนด์อโลนมาใช้
- ปรับปรุง CLI, เทมเพลตโปรเจกต์เริ่มต้น และความสามารถด้าน telemetry
- ล่าสุดมีการเปิดตัวส่วนขยาย VS Code เพื่อยกระดับประสบการณ์ของนักพัฒนา
-
LiteLLM
- ไลบรารีที่ผสานรวมกับ API ของผู้ให้บริการ LLM หลากหลายรายได้อย่างราบรื่น โดยทำให้การโต้ตอบเป็นมาตรฐานผ่านรูปแบบ OpenAI API
- รองรับผู้ให้บริการและโมเดลจำนวนมาก พร้อมมอบอินเทอร์เฟซแบบรวมสำหรับ completions, embeddings และการสร้างภาพ
- ทำให้การผสานรวมง่ายขึ้นด้วยการแปลงอินพุตให้ตรงกับข้อกำหนด endpoint เฉพาะของผู้ให้บริการแต่ละราย
- มีเฟรมเวิร์กสำหรับใช้งานความสามารถด้านปฏิบัติการที่จำเป็นต่อแอปพลิเคชันระดับโปรดักชัน เช่น caching, logging, rate limiting และ load balancing
- ช่วยให้สลับใช้โมเดลต่าง ๆ ได้ง่าย ซึ่งเป็นความสามารถที่จำเป็นในสถานการณ์ปัจจุบันที่โมเดลพัฒนาอย่างรวดเร็ว
- ควรตระหนักว่าคำตอบของโมเดลต่อพรอมป์เดียวกันมีความหลากหลาย ดังนั้นการมีเพียงวิธีเรียกใช้งานที่สม่ำเสมออาจไม่เพียงพอต่อการปรับประสิทธิภาพของ completions ให้เหมาะสม
- แต่ละโมเดลยังมีการทำฟีเจอร์เสริมในแบบเฉพาะของตนเอง จึงอาจยากที่อินเทอร์เฟซเดียวจะรองรับทุกความสามารถได้
-
LlamaIndex
- มีเอนจินสำหรับออกแบบแอปพลิเคชัน LLM แบบเฉพาะโดเมนและอิงบริบท พร้อมรองรับงานอย่างการรวบรวมข้อมูล การทำ vector indexing และการถามตอบเอกสารด้วยภาษาธรรมชาติ
- สามารถใช้ LlamaIndex เพื่อทำเอกสารเข้าโดยอัตโนมัติ ทำดัชนี embeddings ของเอกสาร และสร้างไปป์ไลน์ RAG (Retrieval-Augmented Generation) ที่คิวรี embeddings เหล่านี้ตามอินพุตของผู้ใช้
- สามารถใช้ LlamaHub เพื่อขยายหรือปรับแต่งโมดูลของ LlamaIndex และสร้างแอปพลิเคชัน LLM ร่วมกับผู้ให้บริการ LLM, embeddings และ vector store ที่ต้องการได้
-
LLM Guardrails
- ชุดแนวทาง นโยบาย หรือฟิลเตอร์ที่ช่วยป้องกันไม่ให้ LLM สร้างเนื้อหาที่เป็นอันตราย ทำให้เข้าใจผิด หรือไม่เกี่ยวข้อง
- ยังสามารถใช้ปกป้องแอปพลิเคชัน LLM จากผู้ใช้ประสงค์ร้ายที่พยายามใช้ระบบในทางที่ผิดด้วยเทคนิคอย่างการบิดเบือนอินพุต
- ทำหน้าที่เป็นตาข่ายความปลอดภัยโดยกำหนดขอบเขตให้กับการประมวลผลและการสร้างเนื้อหาของโมเดล
- เฟรมเวิร์กที่กำลังมาแรงในด้านนี้ เช่น NeMo Guardrails, Guardrails AI และ Aporia Guardrails มีประโยชน์อย่างมาก
- แนะนำให้วาง guardrails ในทุกแอปพลิเคชัน LLM และปรับปรุงกฎกับนโยบายอย่างต่อเนื่อง
- เป็นสิ่งสำคัญต่อการสร้างแอปแชต LLM ที่มีความรับผิดชอบและเชื่อถือได้
-
Medusa
- โซลูชันอีคอมเมิร์ซสำหรับสร้างเว็บไซต์ช้อปปิ้งส่วนใหญ่มักตกอยู่ในกับดัก 80/20
- Medusa เป็นแพลตฟอร์มคอมเมิร์ซโอเพนซอร์สที่ปรับแต่งได้สูงและมีความสมดุลดี ช่วยให้นักพัฒนาสร้างประสบการณ์ช้อปปิ้งที่มีเอกลักษณ์และปรับให้เหมาะเฉพาะได้
- สร้างบน Next.js และ PostgreSQL พร้อมโมดูลที่ครอบคลุมตั้งแต่รถเข็นสินค้า การจัดการคำสั่งซื้อ ไปจนถึงฟีเจอร์ขั้นสูงอย่างโมดูลบัตรของขวัญและการคำนวณภาษีตามภูมิภาค ช่วยเร่งกระบวนการพัฒนา
- เมื่อนำไปใช้กับบางโปรเจกต์แล้วได้รับการประเมินว่าเป็นเฟรมเวิร์กที่มีคุณค่า
-
Pkl
- ภาษาและเครื่องมือสำหรับคอนฟิกแบบโอเพนซอร์สที่ Apple สร้างขึ้นมาใช้ภายในในช่วงแรก
- ความสามารถหลักคือระบบชนิดข้อมูลและการตรวจสอบความถูกต้องที่ช่วยจับข้อผิดพลาดของคอนฟิกได้ก่อนนำไป deploy
- ช่วยลดความซ้ำซ้อนของโค้ด (เช่น กรณี override ตาม environment) และสามารถตรวจสอบความถูกต้องของการเปลี่ยนแปลงคอนฟิกก่อนนำไปใช้กับสภาพแวดล้อมจริง
- รองรับการผสานรวมกับ IDE และภาษาต่าง ๆ อย่างกว้างขวาง รวมถึงการสร้างไฟล์ JSON, PLIST, YAML, .properties และการสร้างโค้ด
-
ROS 2
- เฟรมเวิร์กโอเพนซอร์สสำหรับการพัฒนาระบบหุ่นยนต์
- มีไลบรารีและเครื่องมือที่ช่วยให้สามารถนำแอปพลิเคชันไปใช้งานแบบโมดูลาร์ได้ โดยครอบคลุมความสามารถอย่างการสื่อสารระหว่างโปรเซส การทำงานแบบมัลติเธรด และคุณภาพการให้บริการ
- ได้รับการปรับปรุงจากเวอร์ชันก่อนหน้าในด้านความสามารถแบบเรียลไทม์ ความเป็นโมดูลที่ดีขึ้น การรองรับแพลตฟอร์มที่กว้างขึ้น และค่าเริ่มต้นที่สมเหตุสมผล
- สำหรับผู้ผลิตที่มีแอปพลิเคชันภายในรถที่ซับซ้อนและเปลี่ยนแปลงอยู่ตลอด เช่น ความสามารถในการขับขี่อัตโนมัติ สถาปัตยกรรมแบบ node-based และโมเดลการสื่อสารแบบ topic-based มีความน่าสนใจเป็นพิเศษ
- กำลังถูกใช้งานมากขึ้นเรื่อย ๆ ในอุตสาหกรรมยานยนต์
-
seL4
- ใน SDV หรือสถานการณ์สำคัญด้านความปลอดภัยอื่น ๆ ความเสถียรแบบเรียลไทม์ของระบบปฏิบัติการเป็นสิ่งสำคัญ
- เนื่องจากมีอุปสรรคในการเข้าสู่ตลาดสูง ทำให้มีเพียงไม่กี่บริษัทที่ครองพื้นที่นี้อยู่ ดังนั้นโซลูชันโอเพนซอร์สอย่าง seL4 จึงมีคุณค่า
- seL4 เป็นไมโครเคอร์เนลของระบบปฏิบัติการที่มีความเชื่อมั่นสูงและประสิทธิภาพสูง
- ใช้วิธี formal verification เพื่อตรวจสอบว่าการทำงานของระบบปฏิบัติการสอดคล้องกับข้อกำหนดในเชิง “คณิตศาสตร์” หรือไม่
- สถาปัตยกรรมไมโครเคอร์เนลลดความรับผิดชอบของแกนหลักให้เหลือน้อยที่สุดเพื่อรับประกันเสถียรภาพของระบบ
- บริษัทผู้ผลิตรถยนต์ไฟฟ้าอย่าง NIO กำลังทำงานร่วมกับระบบนิเวศ seL4 และอาจมีความก้าวหน้าเพิ่มเติมในด้านนี้ในอนาคต
-
SetFit
- ปัจจุบันเครื่องมือที่ขับเคลื่อนด้วย AI ส่วนใหญ่เป็นแบบสร้างเนื้อหา ทั้งการสร้างข้อความและภาพ รวมถึงใช้ GPT
- สำหรับงานข้อความแบบดั้งเดิม (เช่น การจัดประเภทข้อความหรือการระบุเจตนา) มักนิยมใช้ sentence transformers
- SetFit เป็นเฟรมเวิร์กสำหรับ fine-tune sentence transformers
- ใช้การเรียนรู้แบบเปรียบเทียบเพื่อแยก intent classes ต่าง ๆ ออกจากกัน และมักทำให้ได้การแยกที่ชัดเจนแม้มีตัวอย่างเพียงจำนวนน้อยมาก
- sentence transformers ยังสามารถมีบทบาทในระบบ generative AI ได้เช่นกัน
- ประสบความสำเร็จในการใช้ SetFit เพื่อตรวจจับเจตนาในระบบแชตบอตที่ติดต่อกับลูกค้าโดยใช้ LLM และเลือกตัวจัดประเภทที่อิง SetFit เพื่อการกรองที่เข้มงวดยิ่งขึ้น
-
vLLM
- เอนจินอนุมานสำหรับ LLM ที่มี throughput สูงและใช้หน่วยความจำอย่างมีประสิทธิภาพ ซึ่งสามารถรันได้ทั้งบนคลาวด์หรือ on-premises
- รองรับสถาปัตยกรรมโมเดลหลายแบบและโมเดลโอเพนซอร์สยอดนิยมได้อย่างราบรื่น
- มีการ deploy vLLM workers แบบคอนเทนเนอร์บนแพลตฟอร์ม GPU อย่าง NVIDIA DGX และ Intel HPC เพื่อโฮสต์โมเดลอย่าง Llama 3.1 (8B และ 70B), Mistral 7B และ Llama-SQL สำหรับงานอย่างการช่วยเขียนโค้ด การค้นคืนความรู้ และการโต้ตอบกับฐานข้อมูลด้วยภาษาธรรมชาติ
- เข้ากันได้กับมาตรฐาน OpenAI SDK ช่วยส่งเสริมการให้บริการโมเดลอย่างสม่ำเสมอ
- AI Model Catalog ของ Azure ปรับปรุงประสิทธิภาพการให้บริการโมเดลด้วย custom inference containers และใช้ vLLM เป็นเอนจินอนุมานเริ่มต้น เนื่องจากมี throughput สูงและการจัดการหน่วยความจำที่มีประสิทธิภาพ
- เฟรมเวิร์ก vLLM กำลังกลายเป็นตัวเลือกเริ่มต้นสำหรับการ deploy โมเดลขนาดใหญ่
Assess
-
Apache XTable™
- ในบรรดารูปแบบ open table ที่ใช้งานได้ ยังไม่มีผู้ชนะที่ชัดเจน
- เครื่องมืออย่าง Delta UniForm ช่วยให้เกิดการทำงานร่วมกันระหว่างรูปแบบเหล่านี้ได้
- Apache XTable™ เป็นโปรเจกต์ Apache Incubator ที่ส่งเสริมการทำงานร่วมกันแบบสองทางอย่างเต็มรูปแบบระหว่าง Hudi, Delta และ Iceberg
- อย่างไรก็ตาม เนื่องจากความแตกต่างด้านความสามารถของรูปแบบเหล่านี้ การพึ่งพาการทำงานร่วมกันแบบสองทางอย่างมากในระยะยาวอาจทำให้ทีมใช้ได้เพียงฟีเจอร์ระดับ “ตัวหารร่วมต่ำสุด” เท่านั้น
-
dbldatagen
- การเตรียมข้อมูลทดสอบสำหรับ data engineering เป็นความท้าทายอย่างมาก
- การย้ายข้อมูลจากโปรดักชันไปยังสภาพแวดล้อมทดสอบอาจมีความเสี่ยง ดังนั้นทีมจึงมักพึ่งพาข้อมูลปลอมหรือข้อมูลสังเคราะห์
- dbldatagen (Databricks Labs Data Generator) เป็นไลบรารี Python สำหรับสร้างข้อมูลสังเคราะห์ภายในสภาพแวดล้อม Databricks เพื่อใช้ในการทดสอบ การทำเบนช์มาร์ก เดโม และอื่น ๆ
- dbldatagen สามารถสร้างข้อมูลได้ระดับหลายพันล้านแถวภายในไม่กี่นาที รองรับหลากหลายสถานการณ์ เช่น หลายตาราง, change data capture และงาน merge/join พร้อมความสามารถในการสร้างข้อมูลสังเคราะห์ในสเกลใหญ่
-
DeepEval
- DeepEval เป็นเฟรมเวิร์กประเมินผลแบบโอเพนซอร์สบนพื้นฐาน Python สำหรับประเมินประสิทธิภาพของ LLM
- สามารถใช้ประเมินแอปแบบ RAG (retrieval-augmented generation) และแอปประเภทอื่น ๆ ที่สร้างด้วยเฟรมเวิร์กยอดนิยมอย่าง LlamaIndex หรือ LangChain รวมถึงใช้ตั้งค่า baseline และ benchmark เมื่อต้องการเปรียบเทียบโมเดลหลายแบบตามความจำเป็น
- DeepEval มีเมตริกและความสามารถที่ครอบคลุมสำหรับประเมินประสิทธิภาพของ LLM เช่น การตรวจจับอาการหลอน, ความเกี่ยวข้องของคำตอบ และการปรับแต่งไฮเปอร์พารามิเตอร์
- รองรับการทำงานร่วมกับ pytest และสามารถผนวกชุดทดสอบเข้ากับ CI (continuous integration) pipeline พร้อม assertion ได้อย่างง่ายดาย
-
DSPy
- ปัจจุบัน แอปพลิเคชันส่วนใหญ่ที่อิงกับ language model ยังพึ่งพา prompt template ที่ปรับแต่งด้วยมือสำหรับงานเฉพาะ
- DSPy เป็นเฟรมเวิร์กสำหรับพัฒนาแอปพลิเคชันลักษณะนี้ โดยใช้แนวทางที่แตกต่างออกไปซึ่งตัดความจำเป็นของ prompt engineering โดยตรง
- โดยจะนำเสนอ abstraction ระดับสูงที่เกี่ยวข้องกับ flow ของโปรแกรม (ผ่านโมดูลที่สามารถซ้อนเป็นชั้น ๆ กันได้), เมตริกที่จะใช้ปรับให้เหมาะสม และข้อมูลที่จะใช้ฝึกหรือทดสอบ
- จากนั้นจึงปรับ prompt หรือ weight ของ language model พื้นฐานให้เหมาะสมตามเมตริกที่กำหนดไว้
- โค้ดเบสที่ได้มีลักษณะคล้ายกับการฝึก neural network ด้วย PyTorch อย่างมาก
-
Flutter for Web
- Flutter เป็นที่รู้จักจากการรองรับข้ามแพลตฟอร์มสำหรับแอปพลิเคชัน iOS และ Android
- ตอนนี้ได้ขยายไปยังแพลตฟอร์มอื่น ๆ มากขึ้นแล้ว
- สามารถสร้างแอปสำหรับ iOS, Android และเบราว์เซอร์ได้จากโค้ดเบสเดียวกัน
- แม้ว่าเว็บแอปพลิเคชันไม่ใช่ทุกประเภทจะเหมาะกับ Flutter แต่เหมาะเป็นพิเศษสำหรับ progressive web app, single-page app และกรณีแปลงแอปมือถือ Flutter เดิมให้ทำงานบนเว็บ
- Flutter รองรับ WebAssembly (WASM) เป็นคอมไพล์เป้าหมายในช่องทางทดลองมาระยะหนึ่งแล้ว ซึ่งหมายความว่ายังอยู่ระหว่างการพัฒนาอย่างต่อเนื่องและอาจมีบั๊กหรือปัญหาด้านประสิทธิภาพ
- ในรีลีสล่าสุด ความสามารถนี้ได้เข้าสู่สถานะเสถียรแล้ว
- ประสิทธิภาพของ Flutter เว็บแอปพลิเคชันที่คอมไพล์ไปยัง WASM นั้นดีกว่าเป้าหมายการคอมไพล์แบบ JavaScript อย่างชัดเจน
- ประสิทธิภาพที่ใกล้เคียง native บนหลายแพลตฟอร์มก็เป็นหนึ่งในเหตุผลที่ทำให้นักพัฒนาหลายคนเลือก Flutter ตั้งแต่แรก
-
kotaemon
- kotaemon เป็นเครื่องมือและเฟรมเวิร์กแบบโอเพนซอร์สที่อิง RAG สำหรับสร้างแอป Q&A สำหรับเอกสารฐานความรู้
- สามารถเข้าใจเอกสารได้หลายประเภท รวมถึงไฟล์ PDF และ DOC และมีเว็บ UI ที่สร้างบนพื้นฐาน Gradio เพื่อให้ผู้ใช้จัดการฐานความรู้และโต้ตอบผ่านอินเทอร์เฟซแชตได้
- มี RAG pipeline ในตัวพร้อม vector store และสามารถขยายความสามารถได้ด้วย SDK
- นอกจากนี้ยังรองรับการอ้างอิงเอกสารต้นทางในคำตอบ พร้อมการแสดงตัวอย่างแบบอินไลน์บนเว็บและคะแนนความเกี่ยวข้อง
- หากต้องการแอปพลิเคชัน Q&A เอกสารที่อิง RAG เฟรมเวิร์กที่ปรับแต่งได้นี้ถือเป็นจุดเริ่มต้นที่ดีมาก
-
Lenis
- Lenis เป็นไลบรารี smooth scrolling ที่มีน้ำหนักเบาแต่ทรงพลัง ออกแบบมาสำหรับเบราว์เซอร์สมัยใหม่
- รองรับประสบการณ์การเลื่อนที่ลื่นไหล เช่น การซิงก์การเลื่อนกับ WebGL และเอฟเฟกต์พารัลแลกซ์ จึงเหมาะอย่างยิ่งสำหรับทีมที่สร้างหน้าเว็บที่มีปฏิสัมพันธ์การเลื่อนที่ยืดหยุ่นและลื่นไหล
- นักพัฒนาพบว่า Lenis เรียบง่าย ใช้งานง่าย และมอบแนวทางที่กระชับสำหรับการสร้าง smooth scrolling
- อย่างไรก็ตาม ไลบรารีนี้อาจมีปัญหาด้านการเข้าถึง โดยเฉพาะปฏิสัมพันธ์การเลื่อนแนวตั้งและแนวนอนที่อาจทำให้ผู้ใช้ที่มีความพิการสับสน
- แม้จะดึงดูดสายตา แต่หากต้องการคงการเข้าถึงไว้ก็จำเป็นต้องนำไปใช้อย่างระมัดระวัง
-
LLMLingua
- LLMLingua ช่วยเพิ่มประสิทธิภาพของ LLM โดยบีบอัด prompt ผ่านการตัด token ที่ไม่จำเป็นออกด้วย language model ขนาดเล็ก ทำให้สูญเสียประสิทธิภาพน้อยที่สุด
- แนวทางนี้ช่วยให้ LLM จัดการ prompt ที่ยาวขึ้นได้อย่างมีประสิทธิภาพ พร้อมคงความสามารถด้านการให้เหตุผลและการเรียนรู้ในบริบทไว้ จึงช่วยแก้โจทย์อย่างความคุ้มค่าด้านต้นทุน, latency ของการอนุมาน และการจัดการบริบท
- LLMLingua รองรับ LLM ได้หลากหลายโดยไม่ต้องฝึกเพิ่มเติม และรองรับเฟรมเวิร์กอย่าง LlamaIndex จึงเหมาะสำหรับการเพิ่มประสิทธิภาพของงานอนุมาน LLM
-
Microsoft Autogen
- Microsoft Autogen เป็นเฟรมเวิร์กโอเพนซอร์สที่ช่วยทำให้การสร้างและ orchestration ของ AI agent ง่ายขึ้น และรองรับการทำงานร่วมกันของหลาย agent เพื่อแก้ปัญหางานที่ซับซ้อน
- รองรับทั้งเวิร์กโฟลว์แบบอัตโนมัติและแบบ human-in-the-loop พร้อมความเข้ากันได้กับ LLM หลากหลายตัวและเครื่องมือสำหรับปฏิสัมพันธ์ระหว่าง agent
- ทีมหนึ่งใช้ Autogen กับลูกค้าเพื่อสร้างแพลตฟอร์มที่ขับเคลื่อนด้วย AI โดยให้แต่ละ agent แทนทักษะเฉพาะ เช่น การสร้างโค้ด การรีวิวโค้ด หรือการสรุปเอกสาร
- ด้วยการกำหนดโมเดลและเวิร์กโฟลว์ที่เหมาะสมผ่านเฟรมเวิร์ก ทีมจึงสามารถสร้าง agent ใหม่ได้อย่างราบรื่นและสม่ำเสมอ
- โดยใช้ LlamaIndex เพื่อ orchestration เวิร์กโฟลว์ ทำให้ agent จัดการงานอย่างการค้นหาสินค้าและการเสนอแนะโค้ดได้อย่างมีประสิทธิภาพ
- Autogen แสดงให้เห็นถึงศักยภาพอย่างมาก โดยเฉพาะในสภาพแวดล้อมโปรดักชัน แต่ยังคงมีความกังวลเรื่อง scalability และการจัดการความซับซ้อนเมื่อมีการเพิ่ม agent มากขึ้น
- จำเป็นต้องมีการประเมินเพิ่มเติมเพื่อพิจารณาความเป็นไปได้ในระยะยาวของการขยายระบบที่อิง agent
-
Pingora
- Pingora เป็นเฟรมเวิร์ก Rust สำหรับสร้างบริการเครือข่ายที่รวดเร็ว เสถียร และสามารถเขียนโปรแกรมควบคุมได้
- Pingora ซึ่งเดิมพัฒนาโดย Cloudflare เพื่อแก้ข้อจำกัดของ Nginx ได้แสดงให้เห็นถึงศักยภาพอย่างมากแล้ว โดยมีพร็อกซีรุ่นใหม่อย่าง River ถูกสร้างขึ้นบนพื้นฐานนี้
- แม้คนส่วนใหญ่จะไม่ได้เผชิญกับขนาดระดับ Cloudflare แต่ก็ยังพบสถานการณ์ที่การทำ routing ในแอปพลิเคชันเลเยอร์อย่างยืดหยุ่นเป็นสิ่งจำเป็นสำหรับบริการเครือข่าย
- สถาปัตยกรรมของ Pingora ทำให้สามารถใช้ประโยชน์จากความสามารถทั้งหมดของ Rust ในสถานการณ์เช่นนี้ได้ โดยไม่ต้องแลกกับความปลอดภัยหรือประสิทธิภาพ
-
Ragas
- Ragas เป็นเฟรมเวิร์กที่ออกแบบมาเพื่อประเมินประสิทธิภาพของ RAG pipeline โดยมุ่งแก้โจทย์การประเมินทั้งองค์ประกอบด้านการค้นคืนและการสร้าง
- มีเมตริกแบบมีโครงสร้าง เช่น fidelity, ความเกี่ยวข้องของคำตอบ และการใช้บริบท เพื่อช่วยประเมินประสิทธิผลของระบบที่อิง RAG
- นักพัฒนาพบว่ามีประโยชน์สำหรับการรันการประเมินเป็นประจำเพื่อปรับแต่งพารามิเตอร์อย่าง top-k retrieval และ embedding model
- บางทีมได้นำ Ragas ไปผนวกเข้ากับ pipeline ที่รันทุกวันเมื่อมีการเปลี่ยนแปลง prompt template หรือโมเดล
- แม้เมตริกจะให้ข้อมูลเชิงลึกที่แข็งแรง แต่ก็มีความกังวลว่าเฟรมเวิร์กอาจไม่สามารถจับทุกนัยสำคัญและปฏิสัมพันธ์ที่ซับซ้อนของ RAG pipeline ที่ซับซ้อนได้ จึงแนะนำให้พิจารณาเฟรมเวิร์กประเมินอื่นเพิ่มเติม
- ถึงกระนั้น Ragas ก็โดดเด่นจากความสามารถในการทำให้การประเมิน RAG ในสภาพแวดล้อมโปรดักชันง่ายขึ้น และช่วยให้เกิดการปรับปรุงบนพื้นฐานข้อมูล
-
Score
- หลายองค์กรที่สร้างแพลตฟอร์มพัฒนาภายในของตนเองมักมีแนวโน้มจะสร้างระบบ orchestration ของแพลตฟอร์มขึ้นมาเอง เพื่อบังคับใช้มาตรฐานขององค์กรระหว่างนักพัฒนาและทีมโฮสต์แพลตฟอร์ม
- อย่างไรก็ตาม ความสามารถพื้นฐานของแพลตฟอร์มการใช้งานแบบ paved road สำหรับโฮสต์ container workload อย่างปลอดภัย สม่ำเสมอ และเป็นไปตามข้อกำหนดนั้นมีความคล้ายกันในแต่ละองค์กร
- จะดีไหมหากมีภาษากลางร่วมกันสำหรับระบุข้อกำหนดเหล่านี้
- Score กำลังแสดงให้เห็นถึงศักยภาพที่จะกลายเป็นมาตรฐานในด้านนี้
- เป็นภาษาประกาศแบบ YAML สำหรับอธิบายวิธี deploy containerized workload รวมถึง service และพารามิเตอร์เฉพาะที่จำเป็นต่อการรัน
- เดิมที Score ถูกพัฒนาขึ้นเป็นภาษาคอนฟิกสำหรับผลิตภัณฑ์ Platform Orchestrator ของ Humanitec แต่ปัจจุบันเป็นโครงการโอเพนซอร์สภายใต้การดูแลของ CNCF (Cloud Native Computing Foundation)
- ด้วยการสนับสนุนจาก CNCF ทำให้ Score มีโอกาสถูกใช้งานอย่างกว้างขวางมากขึ้นนอกเหนือจากผลิตภัณฑ์ของ Humanitec
- เปิดตัวพร้อมกับ reference implementation สองแบบคือ Kubernetes และ Docker Compose
- คาดว่าความสามารถในการขยายของ Score จะนำไปสู่การมีส่วนร่วมจากชุมชนสำหรับแพลตฟอร์มอื่น ๆ
- Score มีความคล้ายคลึงกับข้อกำหนด Open Application Model (OAM) สำหรับ Kubevela แต่เน้นที่การ deploy container workload มากกว่าทั้งแอปพลิเคชัน
- ยังมีส่วนที่ทับซ้อนกับ SST อยู่บ้าง แต่ SST สนใจการ deploy ไปยัง cloud infrastructure โดยตรงมากกว่าแพลตฟอร์มวิศวกรรมภายใน
- เรากำลังติดตาม Score ด้วยความสนใจขณะที่มันพัฒนาต่อไป
-
shadcn
- shadcn ท้าทายแนวคิดดั้งเดิมของไลบรารีคอมโพเนนต์ ด้วยการมอบคอมโพเนนต์ที่นำกลับมาใช้ซ้ำได้และคัดลอกไปวางได้
- แนวทางนี้มอบความเป็นเจ้าของและการควบคุมอย่างเต็มที่ให้กับทีม ทำให้ปรับแต่งและขยายได้ง่ายขึ้น ซึ่งเป็นจุดที่ไลบรารีดั้งเดิมที่ใช้กันทั่วไปอย่าง MUI และ Chakra UI มักทำได้ไม่ดีนัก
- shadcn ที่สร้างบน Radix UI และ Tailwind CSS สามารถผสานเข้ากับแอปพลิเคชันที่ใช้ React ได้อย่างราบรื่น จึงเหมาะกับโครงการที่ให้ความสำคัญกับการควบคุมและการขยายต่อ
- มี CLI ที่ช่วยรองรับกระบวนการคัดลอกและวางคอมโพเนนต์ลงในโปรเจ็กต์
- ด้วยข้อดีในการลด hidden dependency และป้องกัน implementation ที่ผูกติดกันแน่นเกินไป shadcn จึงได้รับความสนใจในฐานะทางเลือกที่น่าสนใจสำหรับทีมที่มองหาแนวทางการพัฒนาฟรอนต์เอนด์ที่ใช้งานได้จริงและยืดหยุ่นกว่าเดิม
-
Slint
- Slint เป็นเฟรมเวิร์ก GUI แบบ declarative สำหรับสร้าง native user interface สำหรับแอปพลิเคชัน Rust, C++ หรือ JavaScript
- แม้จะเป็นเฟรมเวิร์ก UI แบบหลายแพลตฟอร์มที่มีฟีเจอร์สำคัญอย่าง live preview, การออกแบบ UI แบบ responsive, การผสานกับ VS Code และประสบการณ์ผู้ใช้แบบ native แต่เราอยากเน้นย้ำถึงประโยชน์ของมันสำหรับระบบ embedded โดยเฉพาะ
- ทีมที่พัฒนาแอปพลิเคชัน embedded โดยทั่วไปมีตัวเลือกสำหรับการพัฒนา UI อย่างจำกัดมาแต่เดิม และแต่ละตัวเลือกก็มีข้อดีข้อเสียของตัวเอง
- Slint ใช้ภาษามาร์กอัปที่คล้าย HTML และใช้งานง่าย อีกทั้งคอมไพล์ตรงเป็น machine code ทำให้เกิดสมดุลที่ยอดเยี่ยมระหว่างประสบการณ์นักพัฒนาและประสิทธิภาพ
- ในส่วน runtime ก็ยังใช้ทรัพยากรต่ำ ซึ่งเป็นเรื่องสำคัญสำหรับระบบ embedded
- สรุปได้ว่า เราชื่นชอบ Slint เพราะมันนำแนวปฏิบัติที่ผ่านการพิสูจน์แล้วจากการพัฒนาเว็บและมือถือเข้าสู่ระบบนิเวศ embedded
-
SST
- SST เป็นเฟรมเวิร์กสำหรับ deploy แอปพลิเคชันไปยังสภาพแวดล้อม cloud พร้อม service ทั้งหมดที่จำเป็นต่อการรันแอปพลิเคชันนั้น
- SST ไม่ใช่แค่เครื่องมือ IaC ธรรมดา แต่เป็นเฟรมเวิร์กที่มี TypeScript API สำหรับกำหนดสภาพแวดล้อมของแอปพลิเคชัน รวมถึงมี service ที่ deploy แอปพลิเคชันเมื่อถูก trigger จาก Git push และมี GUI console สำหรับจัดการแอปพลิเคชันที่ได้ผลลัพธ์รวมถึงเรียกใช้ความสามารถด้านการจัดการของ SST
- เดิมที SST สร้างอยู่บน AWS Cloud Formation และ CDK แต่เวอร์ชันล่าสุดถูกติดตั้งอยู่บน Terraform และ Pulumi ทำให้ในทางทฤษฎีไม่ผูกกับ cloud ใด cloud หนึ่ง
- SST รองรับการ deploy เฟรมเวิร์กเว็บแอปมาตรฐานหลายตัวโดยตรง เช่น Next.js และ Remix และยังรองรับแอปพลิเคชัน API แบบ headless ด้วย
- SST ดูเหมือนจะอยู่ในหมวดหมู่ของตัวเอง
- แม้จะมีความคล้ายกับเครื่องมือ platform orchestration อย่าง Kubevela แต่ก็มีฟีเจอร์อำนวยความสะดวกให้นักพัฒนา เช่น live mode ที่พร็อกซีการเรียก AWS Lambda ไปยังฟังก์ชันที่รันอยู่บนเครื่อง local ของนักพัฒนา
- ขณะนี้ SST ยังเป็นสิ่งที่ชวนให้สนใจอยู่เล็กน้อย แต่เมื่อมันพัฒนาต่อไป ก็เป็นทั้งโครงการและส่วนหนึ่งของหมวดหมู่เครื่องมือที่น่าจับตา
10 ความคิดเห็น
ขอบคุณครับ สนุกดีนะครับ
เหนื่อยมากเลยนะ... ขอบคุณมากครับ!
ถ้าจะพูดถึงไลบรารีสกอลชื่อ Lenis ที่โผล่มาคั่นกลางสักหน่อย... สำหรับผม แอนิเมชันสกอลที่ลื่นไหลแบบหน้าเว็บของ Apple กลับทำให้รู้สึกไม่ค่อยสบายในการใช้งานเท่าไร
พอลองเลื่อนด้วยล้อเมาส์ก็รู้สึกว่าแอนิเมชันสะดุดอยู่เรื่อย ๆ แต่ถ้ากดปุ่มลูกศรลงเพื่อเลื่อนก็เร็วเกินไปจนอ่านเนื้อหาได้ยาก
สุดท้ายบน Windows วิธีเดียวที่จะ "เสพ" เว็บไซต์แบบนั้นได้ก็คือกดล้อสกอลของเมาส์แล้วค่อย ๆ ขยับให้มันเลื่อนลงช้า ๆ แต่ผมก็ไม่แน่ใจว่ามันมีคุณค่ามากพอไหม พูดสั้น ๆ คือไม่แน่ใจว่านี่เป็นเทคนิคที่ดีจริงหรือเปล่า
Databricks โผล่มาเยอะจนน่ากลัวเลยนะ
อ่านไปอ่านมาก็หมดแรงเลย ฮือฮือ
ฉันได้รวบรวมผลิตภัณฑ์/บริการที่เคยถูกโพสต์บน GeekNews ไว้แล้ว
Platforms - Assess
Platforms - Trial
Language and Frameworks - Adopt
Language and Frameworks - Assess
Language and Frameworks - Trial
Tools - Adopt
Tools - Assess
Tools - Trial
ขอบคุณครับ น่าสนุกดีนะ~
อ่านแล้วครับ ขอบคุณมากครับ
อ่านอย่างเพลิดเพลินมากครับ ขอบคุณครับ
Thoughtworks Technology Radar, Volume 30
Thoughtworks Technology Radar, Volume 29
Thoughtworks Technology Radar, Volume 28
Thoughtworks Technology Radar, Volume 27
Thoughtworks Technology Radar, Volume 26
ThoughtWorks Technology Radar, Volume 23
ThoughtWorks Technology Radar, Volume 22
ข่าวเทคโนโลยีที่ ThoughtWorks เผยแพร่ทุก 6 เดือน - Radar Vol.21