แชร์

14 พ.ย. 2024

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

Scott Werner

CEO ของ Sublayer

Paige Bailey

วิศวกรประสบการณ์ของนักพัฒนา AI

Vishal Dharmadhikari

วิศวกรโซลูชันผลิตภัณฑ์

รูปภาพหลักของ Sublayer Showcase

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

Sublayer ซึ่งเป็นเฟรมเวิร์กเอเจนต์ AI ที่ใช้ Ruby แสดงให้เห็นถึงประสิทธิภาพและความสามารถของ Gemini API โดยการผสานรวมโมเดล 1.5 ของเราเข้ากับข้อเสนอหลักสำหรับนักพัฒนาแอป รวมถึงภายในเวิร์กโฟลว์เครื่องมือของตนเอง

การอัปเดตเอกสารประกอบของ Sublayer ด้วย Gemini

โอกาสอย่างหนึ่งที่นักพัฒนาแอปจะได้รับจาก AI คือการช่วยให้ทีม โดยเฉพาะอย่างยิ่งทีมในสตาร์ทอัพขนาดเล็กที่อยู่ในช่วงเริ่มต้น ทำงานได้มากขึ้นโดยใช้ทรัพยากรน้อยลง สำหรับหลายๆ คน การมีส่วนร่วมอาจเป็นเรื่องง่ายๆ แต่มีความสำคัญ เช่น การจัดทำเอกสาร ในเวิร์กโฟลว์ของตนเอง Sublayer แก้ปัญหานี้ด้วยการผสานรวมไลบรารีกับ Gemini 1.5 Pro และสร้างระบบอัตโนมัติของ AI เพื่อรองรับการทำงานในการดูแลให้เอกสารเป็นข้อมูลล่าสุดและระบุจุดที่ควรปรับปรุง

"ทั้งหมดนี้เกิดขึ้นได้เพราะหน้าต่างบริบทขนาดใหญ่ของ Gemini ช่วยให้คุณมีพื้นที่ในการลองไอเดียใหม่ๆ โดยไม่ต้องกังวลกับการติดตั้งใช้งานที่ซับซ้อนและได้รับการเพิ่มประสิทธิภาพตั้งแต่แรก"

"การอนุมานขยะ" Waste Inferences! ซึ่ง Scott Werner ซีอีโอของ Sublayer เพิ่งเขียนเกี่ยวกับแนวคิดนี้

กระบวนการทำงานมีดังนี้

  1. ทุกครั้งที่มีการผสาน PR เข้ากับที่เก็บ Sublayer หลัก ระบบจะทริกเกอร์เอเจนต์ให้เริ่มอัปเดตเอกสารประกอบ

  2. เอเจนต์จะสร้างพรอมต์ที่มีเนื้อหาทั้งหมดของไลบรารี เนื้อหาทั้งหมดของเอกสารประกอบ และเนื้อหาที่เกี่ยวข้องทั้งหมดของ PR พร้อมกับวิธีการที่อธิบายงาน แล้วส่งไปยัง Gemini

  3. จากนั้น Gemini จะตอบกลับด้วยเอาต์พุตที่มีโครงสร้างซึ่งมีเส้นทาง ชื่อ และเนื้อหาของไฟล์ ซึ่งไลบรารี Sublayer จะแปลงเป็นออบเจ็กต์เพื่อนำไปใช้

  4. สุดท้าย เอเจนต์จะนำข้อมูลที่มีโครงสร้างที่ได้รับมาใช้เพื่อสร้างกิ่งใหม่ ทำการเปลี่ยนแปลงที่ขอในไฟล์ และส่ง 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 จุด จัดอันดับตามผลกระทบ และสร้างคำขอ Pull Request เดียวเพื่อให้ทีม 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 ทำได้ดีในการแก้ปัญหาทั้งหมดที่เฟรมเวิร์กของเราออกแบบมาให้ง่าย เช่น การสร้างโค้ด การแยกย่อยงาน การปฏิบัติตามคำสั่ง และการสร้างโครงสร้างข้อมูลใหม่ตามตัวอย่าง"

— Scott Werner, Sublayer

ขั้นตอนถัดไป

ในอนาคต Sublayer เตรียมที่จะเปิดตัว Augmentations.ai ซึ่งเป็นแพลตฟอร์มที่จะทำให้ทีมพัฒนาทั้งหมดสามารถเข้าถึงระบบอัตโนมัติที่สร้างขึ้น การเปิดตัวครั้งแรกจะมีเครื่องมือ 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