14 พ.ย. 2024
การปรับปรุงเครื่องมือสำหรับนักพัฒนาซอฟต์แวร์ที่ทำงานด้วยระบบ AI ด้วย Gemini API

การทำให้ AI เป็นเรื่องที่ทุกคนเข้าถึงได้ในช่วงปีที่ผ่านมาได้เปิดโอกาสที่ยิ่งใหญ่ 2 อย่างสำหรับนักพัฒนาแอป นั่นคือการผสานรวม AI ที่ล้ำสมัยเข้ากับโปรเจ็กต์ของตนได้อย่างง่ายดาย และการนำประสิทธิภาพที่ขับเคลื่อนด้วย AI มาสู่กระบวนการพัฒนา
Sublayer ซึ่งเป็นเฟรมเวิร์กเอเจนต์ AI ที่ใช้ Ruby แสดงให้เห็นถึงประสิทธิภาพและความสามารถของ Gemini API โดยการผสานรวมโมเดล 1.5 ของเราเข้ากับข้อเสนอหลักสำหรับนักพัฒนาแอป รวมถึงภายในเวิร์กโฟลว์เครื่องมือของตนเอง
การอัปเดตเอกสารประกอบของ Sublayer ให้ทันสมัยด้วย Gemini
โอกาสอย่างหนึ่งที่นักพัฒนาแอปจะได้รับจาก AI คือการช่วยให้ทีม โดยเฉพาะอย่างยิ่งทีมในสตาร์ทอัพขนาดเล็กที่อยู่ในช่วงเริ่มต้น ทำงานได้มากขึ้นโดยใช้ทรัพยากรน้อยลง สำหรับหลายๆ คน การปรับปรุงอาจอยู่ในเรื่องที่เรียบง่ายแต่สำคัญ เช่น เอกสารประกอบ ในเวิร์กโฟลว์ของตนเอง Sublayer แก้ปัญหานี้ด้วยการผสานรวมไลบรารีกับ Gemini 1.5 Pro และสร้างระบบอัตโนมัติของ AI เพื่อรองรับการทำงานในการดูแลให้เอกสารเป็นข้อมูลล่าสุดและระบุจุดที่ควรปรับปรุง
"ทั้งหมดนี้เกิดขึ้นได้เพราะหน้าต่างบริบทขนาดใหญ่ของ Gemini ช่วยให้คุณมีพื้นที่ในการลองไอเดียใหม่ๆ โดยไม่ต้องกังวลกับการติดตั้งใช้งานที่ซับซ้อนและได้รับการเพิ่มประสิทธิภาพตั้งแต่แรก"
กระบวนการทำงานมีดังนี้
ทุกครั้งที่มีการผสาน PR เข้ากับที่เก็บ Sublayer หลัก ระบบจะทริกเกอร์เอเจนต์ให้เริ่มอัปเดตเอกสารประกอบ
เอเจนต์จะสร้างพรอมต์ที่มีเนื้อหาทั้งหมดของไลบรารี เนื้อหาทั้งหมดของเอกสารประกอบ และเนื้อหาที่เกี่ยวข้องทั้งหมดของ PR พร้อมกับวิธีการที่อธิบายงาน แล้วส่งไปยัง Gemini
จากนั้น Gemini จะตอบกลับด้วยเอาต์พุตที่มีโครงสร้างซึ่งมีเส้นทาง ชื่อ และเนื้อหาของไฟล์ โดยไลบรารี Sublayer จะแปลงเอาต์พุตเหล่านี้เป็นออบเจ็กต์เพื่อนำไปใช้
สุดท้าย เอเจนต์จะนำข้อมูลที่มีโครงสร้างที่ได้รับมาใช้เพื่อสร้างกิ่งใหม่ ทำการเปลี่ยนแปลงที่ขอในไฟล์ และส่ง 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 ได้ตรวจสอบทุกเช้า
นำโมเดล Gemini มาสู่ชุมชนนักพัฒนา Ruby
นอกเหนือจากการปรับปรุงโครงสร้างพื้นฐานและเครื่องมือสำหรับนักพัฒนาซอฟต์แวร์ของตนเองให้มีประสิทธิภาพมากขึ้นแล้ว 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 ได้อย่างราบรื่น โดยจะดึงข้อมูลที่มีโครงสร้างซึ่งนักพัฒนาแอปสามารถนำไปใช้ในแอปพลิเคชันของตนเองได้อย่างง่ายดาย แนวทางนี้เปิดโลกแห่งความเป็นไปได้ ตั้งแต่การดึงข้อมูลเชิงลึกจากแหล่งข้อมูลที่หลากหลายไปจนถึงการสร้างโค้ดและการแปลงฐานโค้ดในภาษาและไลบรารีต่างๆ Sublayer ยังใช้โมเดล Gemini เพื่อให้ผู้ใช้สร้างคอมโพเนนต์ฟังก์ชันใหม่ๆ ภายในเฟรมเวิร์กได้อีกด้วย ลักษณะ "ประกอบตัวเอง" นี้กระตุ้นให้เกิดการทดลองและช่วยให้ผู้ใช้สำรวจแนวคิดใหม่ๆ ได้อย่างรวดเร็ว
"Gemini ทำได้ดีมากในการแก้ปัญหาทั้งหมดที่เฟรมเวิร์กของเราออกแบบมาให้ง่าย เช่น การสร้างโค้ด การแยกย่อยงาน การปฏิบัติตามคำสั่ง และการสร้างโครงสร้างข้อมูลใหม่ตามตัวอย่าง"
ขั้นตอนถัดไป
ในอนาคต Sublayer เตรียมที่จะเปิดตัว Augmentations.ai ซึ่งเป็นแพลตฟอร์มที่จะทำให้ทีมพัฒนาทั้งหมดสามารถใช้ระบบอัตโนมัติที่ Sublayer สร้างขึ้นได้ การเปิดตัวครั้งแรกจะมีเครื่องมือ 2 อย่างที่ทำงานด้วย Gemini 1.5 Pro ได้แก่ Semantic Linting ซึ่งช่วยให้ทีมสร้างกฎการตรวจสอบโค้ดที่ทำงานด้วยระบบ AI ซึ่งเข้าใจบริบทและบังคับใช้แนวทางปฏิบัติแนะนำที่พัฒนาขึ้น และสรุปรายสัปดาห์ ซึ่งจะเปลี่ยนกิจกรรมการพัฒนาในที่เก็บหลายแห่งและเครื่องมือการจัดการผลิตภัณฑ์ให้เป็นข้อมูลเชิงลึกที่นำไปใช้ได้จริงสำหรับผู้นำ
โดยวางแผนที่จะใช้ทั้ง Gemini 1.5 Pro สำหรับงานที่ซับซ้อนมากขึ้น และ Gemini 1.5 Flash สำหรับฟังก์ชันการทำงานที่ต้องคำนึงถึงเวลาในการตอบสนองมากขึ้นและหันมาเน้นผู้ใช้เป็นหลัก ขณะที่เปิดตัวเครื่องมือเพิ่มเติมบนแพลตฟอร์ม Augmentations นอกจากนี้ งานนี้จะช่วยป้อนข้อมูลกลับไปยังเฟรมเวิร์กโอเพนซอร์สของทีม Sublayer ด้วย ซึ่งจะช่วยให้ชุมชน Ruby ใช้ประโยชน์จากฟังก์ชันการทำงานใหม่ๆ ของ Gemini ได้เมื่อเปิดตัว โดยมีทีม Sublayer เป็นผู้ขับเคลื่อนการใช้งานในโลกแห่งความเป็นจริง
เรื่องราวของ Sublayer แสดงให้เห็นถึงศักยภาพในการเปลี่ยนแปลงของ Gemini API ซึ่งแสดงให้เห็นว่านักพัฒนาแอปสามารถผสานรวม Gemini เข้ากับเวิร์กโฟลว์ของตนเองได้อย่างง่ายดาย และเปิดโอกาสมากมายสำหรับการสร้างสรรค์นวัตกรรมและการทำงานอัตโนมัติ หากต้องการเริ่มสร้างด้วยโมเดล Gemini ให้อ่านเอกสารประกอบ API