14 พ.ย. 2024
การเพิ่มประสิทธิภาพเครื่องมือสําหรับนักพัฒนาซอฟต์แวร์ที่ทำงานด้วยระบบ AI ด้วย Gemini API
การเปิดโอกาสให้ทุกคนเข้าถึง AI ในช่วงปีที่ผ่านมาได้เปิดโอกาสสำคัญ 2 อย่างให้กับนักพัฒนาซอฟต์แวร์ ซึ่งทำให้ผสานรวม AI ล้ำสมัยเข้ากับโปรเจ็กต์ได้อย่างง่ายดายและนำประสิทธิภาพที่ขับเคลื่อนโดย AI มาใช้ในกระบวนการพัฒนา
Sublayer ซึ่งเป็นเฟรมเวิร์กตัวแทน AI ที่ใช้ Ruby แสดงให้เห็นถึงประสิทธิภาพและความสามารถของ Gemini API ด้วยการผสานรวมโมเดล 1.5 เข้ากับข้อเสนอหลักสำหรับนักพัฒนาแอป รวมถึงภายในเวิร์กโฟลว์ของเครื่องมือ
อัปเดตเอกสารประกอบของเลเยอร์ย่อยให้ทันสมัยอยู่เสมอด้วย Gemini
โอกาสอย่างหนึ่งที่ AI มีต่อนักพัฒนาแอปคือการช่วยให้ทีมทำงานได้มากขึ้นโดยใช้ทรัพยากรน้อยลง โดยเฉพาะในสตาร์ทอัปขนาดเล็กในระยะเริ่มต้น สําหรับหลายๆ คน สิ่งนี้อาจเป็นเรื่องง่ายๆ แต่สําคัญ เช่น เอกสารประกอบ ในเวิร์กโฟลว์ของตัวเอง Sublayer แก้ปัญหานี้ด้วยการผสานรวมคลังกับ Gemini 1.5 Pro และสร้างการทำงานอัตโนมัติด้วย AI เพื่อสนับสนุนงานในการทำให้เอกสารประกอบเป็นปัจจุบันอยู่เสมอและระบุจุดที่ต้องปรับปรุง
"ทั้งหมดนี้เกิดขึ้นเพราะหน้าต่างบริบทขนาดใหญ่ของ Gemini ช่วยให้คุณมีเวลาลองใช้ไอเดียใหม่ๆ โดยไม่ต้องกังวลกับการติดตั้งใช้งานที่ซับซ้อนและได้รับการเพิ่มประสิทธิภาพตั้งแต่ต้น"
กระบวนการมีดังนี้
ทุกครั้งที่มีการผสาน PR เข้ากับที่เก็บ Sublayer หลัก ระบบจะทริกเกอร์ให้ตัวแทนเริ่มอัปเดตเอกสารประกอบ
ตัวแทนจะสร้างพรอมต์ที่มีเนื้อหาทั้งหมดของไลบรารี เนื้อหาทั้งหมดของเอกสารประกอบ และเนื้อหาที่เกี่ยวข้องทั้งหมดของ PR พร้อมวิธีการอธิบายงานและส่งไปยัง Gemini
จากนั้น Gemini จะตอบกลับด้วยเอาต์พุตที่มีโครงสร้างซึ่งมีเส้นทาง ชื่อ และเนื้อหาของไฟล์ที่คลังเลเยอร์ย่อยแปลงเป็นออบเจ็กต์เพื่อใช้งาน
สุดท้าย ตัวแทนจะนำ Structured Data ที่ได้รับมาใช้สร้างสาขาใหม่ ทำการเปลี่ยนแปลงที่ขอในไฟล์ และส่ง PR ใหม่
# Get the diff from the PR
diff = GithubGetDiffAction.new(repo: repo, pr_number: pr_number).call
# Get the contents of the library repository and docs repository
code_context = GetContextAction.new(path: code_repo_path).call
doc_context = GetContextAction.new(path: doc_repo_path).call
# Use Gemini 1.5 Pro to decide whether this PR requires a documentation update
result = DocUpdateNecessityGenerator.new(
code_context: code_context,
doc_context: doc_context,
diff: diff
).generate
# Use Gemini 1.5 Pro to generate suggested changes to the documentation
doc_update_suggestions = DocUpdateSuggestionGenerator.new(
code_context: code_context,
doc_context: doc_context,
context_ignore_list: context_ignore_list,
diff: diff
).generate
# Use Gemini 1.5 Pro to generate the changes to the suggested files
file_updates = DocUpdateGenerator.new(
code_context: code_context,
suggestions: suggestions,
doc_context: doc_context,
context_ignore_list: context_ignore_list
).generate
# Update each of the files returned by Gemini 1.5 Pro and create a new PR
ดูโค้ดเวิร์กโฟลว์ที่สมบูรณ์ในตัวอย่างโอเพนซอร์สของ Sublayer
หลังจากโปรเจ็กต์แรกประสบความสำเร็จ บริษัทได้ขยายการให้บริการเป็นตัวแทนที่ตรวจสอบที่เก็บทรัพยากรแยกต่างหากเพื่อมุ่งเน้นที่การอัปเดตหน้าแคตตาล็อกที่เฉพาะเจาะจงของเอกสารให้ทันสมัยอยู่เสมอ นอกจากนี้ยังมีงานที่คล้ายกันซึ่งทำงานข้ามคืน โดย Gemini จะวิเคราะห์เอกสารประกอบปัจจุบัน ระบุขอบเขตการปรับปรุง 2-3 ด้าน จัดอันดับตามผลกระทบ และสร้าง PR รายการเดียวเพื่อให้ทีม Sublayer ตรวจสอบทุกเช้า
การนำ AI มาใช้กับชุมชนนักพัฒนา Ruby ด้วยโมเดล Gemini
นอกจากทำให้โครงสร้างพื้นฐานและเครื่องมือของนักพัฒนาซอฟต์แวร์มีประสิทธิภาพมากขึ้นแล้ว Sublayer ยังรองรับโมเดล Gemini ภายในฟังก์ชันหลักของผลิตภัณฑ์ด้วย
พันธกิจของ Sublayer คือช่วยให้นักพัฒนาซอฟต์แวร์แต่ละคนและทีมเล็กๆ สามารถจัดการโปรเจ็กต์ที่มีความทะเยอทะยานซึ่งก่อนหน้านี้ทำได้ยากเนื่องจากค่าใช้จ่ายหรือความซับซ้อน โดยมุ่งเน้นที่การทำงานซ้ำๆ ที่น่าเบื่อ เสียเวลา และต้องทำซ้ำๆ ซึ่งเหมาะอย่างยิ่งสำหรับกรณีการใช้งาน AI ซึ่งอาจตั้งแต่การย้ายข้อมูลโค้ดขนาดใหญ่ที่ต้องมีการดําเนินการแบบเดียวกันซ้ำหลายพันครั้ง ไปจนถึงการเพิ่มประสิทธิภาพประจําวันด้วยการทำงานเล็กๆ น้อยๆ ในเช็กลิสต์ให้ทำงานอัตโนมัติ ซึ่งช่วยประหยัดเวลาและพลังงาน
ความท้าทายหลักของ Sublayer คือการสนับสนุนชุมชนนักพัฒนาซอฟต์แวร์ Ruby ซึ่งได้รับการสนับสนุนค่อนข้างน้อยในระบบนิเวศ AI การผสานรวม Gemini ช่วยให้พวกเขาตอบสนองดีมานด์ที่เพิ่มขึ้นสำหรับการสนับสนุน Gemini ภายในเครื่องมือได้ การติดตั้งใช้งาน Gemini ของ Sublayer มีประสิทธิภาพสูง โดยใช้โค้ดเพียงประมาณ 60 บรรทัดเท่านั้นเนื่องจากเลเยอร์การแยกความคิด โดยจะใช้เอาต์พุตที่มีโครงสร้างเพื่อโต้ตอบกับโมเดลในกระบวนการซ้ำแบบเทิร์นเดียว แนวทางนี้ช่วยให้การพัฒนาและการแก้ไขข้อบกพร่องง่ายขึ้น ซึ่งช่วยให้นักพัฒนาแอปสร้างแอปพลิเคชันที่มีประสิทธิภาพได้
"เมื่อสร้างแอปที่ใช้ LLM ให้แบ่งปัญหาออกเป็นคอมโพเนนต์ที่เล็กที่สุดเท่าที่จะทำได้" Werner แนะนำ "คุณควรออกแบบโปรแกรมให้จัดการเอาต์พุตของโมเดลได้อย่างมีประสิทธิภาพ ซึ่งอาจหมายถึงการเพิ่มขั้นตอนเพื่อให้ผู้ใช้ตรวจสอบและแก้ไขก่อนดำเนินการต่อ"
LLM ซึ่งเป็นหัวใจสำคัญของโครงสร้างพื้นฐาน AI
สําหรับ Sublayer LLM เช่น Gemini คือโครงสร้างพื้นฐานสําคัญที่คล้ายกับฐานข้อมูล เฟรมเวิร์กนี้ออกแบบมาเพื่อผสานรวมการเรียกใช้ทั้ง Gemini 1.5 Pro และ Gemini 1.5 Flash ได้อย่างราบรื่น โดยดึง Structured Data ที่เวิร์กเกอร์สามารถนำไปใช้ในแอปพลิเคชันของตนได้ทันที แนวทางนี้เปิดโอกาสใหม่ๆ มากมาย ตั้งแต่การดึงข้อมูลเชิงลึกจากแหล่งข้อมูลอันหลากหลาย ไปจนถึงการสร้างโค้ดและการเปลี่ยนรูปแบบโค้ดเบสในภาษาและไลบรารีต่างๆ เลเยอร์ย่อยยังใช้โมเดล Gemini เพื่อให้ผู้ใช้สร้างคอมโพเนนต์ใหม่ที่มีฟังก์ชันการทำงานภายในเฟรมเวิร์กได้อีกด้วย ลักษณะ "การประกอบตัวเอง" นี้ส่งเสริมให้ทดลองและช่วยให้ผู้ใช้สำรวจแนวคิดใหม่ๆ ได้อย่างรวดเร็ว
"Gemini แก้ปัญหาทั้งหมดที่เฟรมเวิร์กของเราออกแบบมาเพื่อทำให้ง่ายขึ้นได้ ไม่ว่าจะเป็นการสร้างโค้ด การแยกงานย่อย การทำตามวิธีการ และการสร้างโครงสร้างข้อมูลใหม่ตามตัวอย่าง"
ขั้นตอนถัดไป
ในอนาคต Sublayer เตรียมเปิดตัว Augmentations.ai ซึ่งเป็นแพลตฟอร์มที่ช่วยให้ทีมพัฒนาซอฟต์แวร์ทุกทีมสามารถใช้การทำงานอัตโนมัติที่ Sublayer สร้างขึ้นได้ เวอร์ชันแรกจะมีเครื่องมือ 2 รายการที่ทำงานด้วย Gemini 1.5 Pro ได้แก่ Semantic Linting ซึ่งช่วยให้ทีมสร้างกฎการตรวจสอบโค้ดที่ทำงานด้วยระบบ AI ซึ่งเข้าใจบริบทและบังคับใช้แนวทางปฏิบัติแนะนำที่พัฒนาอยู่ และสรุปรายสัปดาห์ ซึ่งเปลี่ยนกิจกรรมการพัฒนาในรีโพซิทอรี่และเครื่องมือการจัดการผลิตภัณฑ์หลายรายการให้กลายเป็นข้อมูลเชิงลึกที่นําไปใช้ได้จริงสําหรับผู้นำ
ทีมวางแผนที่จะใช้ Gemini 1.5 Pro ร่วมกับ Gemini 1.5 Flash ต่อไปสำหรับงานที่ซับซ้อนมากขึ้นและฟังก์ชันที่แสดงต่อผู้ใช้ซึ่งมีความไวต่อเวลาในการตอบสนองมากขึ้น เมื่อเปิดตัวเครื่องมืออื่นๆ ในแพลตฟอร์มการเพิ่มประสิทธิภาพ การทำงานนี้ยังช่วยพัฒนาเฟรมเวิร์กโอเพนซอร์สของ Ruby ด้วย ซึ่งจะช่วยให้ชุมชน Ruby ใช้ประโยชน์จากฟังก์ชันการทำงานใหม่ๆ ของ Gemini ได้ทันทีที่เปิดตัว และได้รับแรงขับเคลื่อนจากการใช้งานจริงโดยทีม Sublayer
เรื่องราวของ Sublayer แสดงให้เห็นถึงศักยภาพในการปฏิวัติของ Gemini API ซึ่งแสดงให้เห็นว่านักพัฒนาแอปผสานรวม Gemini เข้ากับเวิร์กโฟลว์ของตนได้อย่างง่ายดายเพียงใด ซึ่งเปิดโอกาสให้เกิดความสร้างสรรค์และการทำงานอัตโนมัติ หากต้องการเริ่มสร้างด้วยโมเดล Gemini โปรดอ่านเอกสารประกอบ API