14 Kasım 2024
Gemini API ile Yapay Zeka Destekli Geliştirici Araçlarını Geliştirme

Geçtiğimiz yıl yapay zekanın herkesin erişimine açılması, geliştiriciler için iki büyük fırsat yarattı: En yeni yapay zeka teknolojilerini projelerine entegre etmeyi inanılmaz derecede kolaylaştırdı ve geliştirme süreçlerine yapay zeka destekli verimlilikler getirdi.
Ruby tabanlı bir yapay zeka aracısı çerçevesi olan Sublayer, 1.5 modellerimizi temel geliştirici tekliflerine ve kendi araç iş akışlarına entegre ederek Gemini API'nin gücünü ve verimliliğini gösteriyor.
Gemini ile Sublayer belgelerini güncel tutma
Geliştiriciler için yapay zekanın sunduğu fırsatlardan biri, özellikle küçük ve erken aşama startup'lardaki ekiplerin daha az kaynakla daha çok iş yapmasını sağlamaktır. Birçok kişi için bu, dokümanlar gibi basit ama önemli bir şey olabilir. Sublayer, kendi iş akışlarında bu sorunu çözmek için kitaplığını Gemini 1.5 Pro ile entegre ediyor ve dokümanlarını güncel tutma ve iyileştirme alanlarını belirleme çalışmalarını desteklemek için yapay zeka otomasyonları oluşturuyor.
"Her şey, Gemini'ın büyük bağlam penceresi sayesinde yeni fikirleri denemek için yeterli alan sunması ve karmaşık, optimize edilmiş uygulamalarla uğraşmak zorunda kalmamamız sayesinde mümkün oldu."
Süreç şu şekilde işler:
Bir çekme isteği ana Sublayer deposuyla birleştirildiğinde, dokümanları güncellemek için bir aracı tetiklenir.
Aracı, kitaplığın tüm içeriğini, belgelerin tüm içeriğini ve PR'nin tüm ilgili içeriğini içeren bir istem oluşturur. Bu isteme, görevi açıklayan talimatlar da eklenir ve istem Gemini'a gönderilir.
Ardından Gemini, dosya yollarını, adlarını ve içeriklerini içeren yapılandırılmış çıkışlarla yanıt verir. Sublayer kitaplığı, bu çıkışları kullanılacak bir nesneye dönüştürür.
Son olarak, aracı aldığı yapılandırılmış bilgileri kullanarak yeni bir dal oluşturur, dosyalarda istenen değişiklikleri yapar ve yeni bir çekme isteği gönderir.
# 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
İş akışı kodunun tamamını Sublayer'ın açık kaynak örneklerinde görebilirsiniz.
Bu ilk projenin başarısının ardından, belgelerinin belirli bir katalog sayfasını güncel tutmaya odaklanmak için ayrı kaynak depolarını izleyen aracıları da kapsayacak şekilde genişlediler. Hatta gece boyunca çalışan benzer bir görev de var. Bu görevde Gemini, mevcut dokümanları analiz ediyor, geliştirilebilecek birkaç alanı belirliyor, bunları etkiye göre sıralıyor ve Sublayer ekibinin her sabah uyandığında inceleyebileceği tek bir PR oluşturuyor.
Gemini modelleriyle Ruby geliştirici topluluğuna yapay zekayı getirme
Sublayer, kendi geliştirici altyapısını ve araçlarını daha verimli hale getirmenin yanı sıra temel ürün işlevinde Gemini modellerini de destekliyor.
Sublayer'ın misyonu, bireysel geliştiricilerin ve küçük ekiplerin daha önce maliyet veya karmaşıklık nedeniyle ulaşamadıkları iddialı projeleri üstlenmelerini sağlamaktır. Yapay zeka için mükemmel bir kullanım alanı olan sıkıcı, zaman alan ve tekrarlanan görevleri otomatikleştirmeye odaklanıyorlar. Bu, benzer işlemlerin binlerce kez tekrarlanması gereken büyük ölçekli kod taşımalarından, zaman ve enerji harcayan küçük görevlerin otomatikleştirilmesiyle elde edilen günlük verimliliklere kadar değişebilir.
Sublayer'ın temel zorluklarından biri, yapay zeka ekosisteminde nispeten yeterli hizmet alamayan Ruby geliştirici topluluğunu desteklemektir. Gemini'ı entegre ederek araçlarında Gemini desteğine yönelik artan talebi karşılayabildiler. Sublayer'ın Gemini uygulaması, soyutlama katmanı sayesinde yalnızca 60 satırlık kod gerektiren oldukça verimli bir uygulamadır. Tek turlu yinelemeli bir süreçte modellerle etkileşim kurarak yapılandırılmış çıktılar kullanırlar. Bu yaklaşım, geliştirme ve hata ayıklama işlemlerini basitleştirerek geliştiricilerin sağlam uygulamalar oluşturmasına yardımcı olur.
Werner, "LLM tabanlı uygulamalar geliştirirken sorunu mümkün olan en küçük bileşenlere ayırın" diye tavsiyede bulunuyor. "Programlarınızı, model çıkışlarını etkili bir şekilde işleyecek şekilde tasarlamanız gerekir. Bu, hatta bir kişinin inceleyip düzenlemesi için adımları kasıtlı olarak eklemek anlamına gelebilir."
Yapay zeka altyapısı bulmacasının temel parçası olan LLM'ler
Sublayer için Gemini gibi LLM'ler, veritabanlarına benzer şekilde temel altyapı bileşenleridir. Bu çerçeve, hem Gemini 1.5 Pro hem de Gemini 1.5 Flash'e yapılan çağrıları sorunsuz bir şekilde entegre etmek, geliştiricilerin uygulamalarında kolayca kullanabileceği yapılandırılmış verileri almak için tasarlanmıştır. Bu yaklaşım, çeşitli veri kaynaklarından analizler elde etmekten kod oluşturmaya ve kod tabanlarını diller ile kitaplıklar arasında dönüştürmeye kadar birçok olasılığın önünü açıyor. Sublayer, kullanıcıların çerçeve içinde yeni işlevsel bileşenler oluşturmasını sağlamak için Gemini modellerini bile kullanır. Bu "kendini birleştirme" özelliği, denemeleri teşvik eder ve kullanıcıların yeni fikirleri hızlı bir şekilde keşfetmesine olanak tanır.
"Gemini, çerçevemizin kolaylaştırmak için tasarlandığı tüm sorunları çözmede harika bir iş çıkarıyor: kod oluşturma, görev ayrıştırma, talimatları takip etme ve örneklerden yola çıkarak yeni veri yapıları oluşturma"
Sırada ne var?
Sublayer, gelecekte Augmentations.ai'yi kullanıma sunmaya hazırlanıyor. Bu platform, oluşturdukları otomasyonları tüm geliştirme ekiplerinin kullanımına sunacak. İlk sürümde Gemini 1.5 Pro destekli iki araç yer alacak: Semantic Linting (Anlamsal Linting), ekiplerin bağlamı anlayan ve gelişen en iyi uygulamaları zorunlu kılan yapay zeka destekli kod inceleme kuralları oluşturmasına olanak tanır. Weekly Summaries (Haftalık Özetler) ise birden fazla depodaki ve ürün yönetimi araçlarındaki geliştirme etkinliğini yöneticiler için uygulanabilir analizlere dönüştürür.
Augmentations platformunda daha fazla araç yayınladıkça daha karmaşık görevler için Gemini 1.5 Pro'yu, gecikmeye daha duyarlı, kullanıcıya yönelik işlevler için ise Gemini 1.5 Flash'i kullanmaya devam etmeyi planlıyorlar. Bu çalışma, açık kaynak çerçevelerine de geri bildirim sağlayacak. Böylece Ruby topluluğu, Sublayer ekibinin gerçek dünyadaki kullanımından yararlanırken yeni Gemini işlevlerinden de faydalanabilecek.
Sublayer'ın hikayesi, Gemini API'nin dönüştürücü potansiyelini gösteriyor. Bu, geliştiricilerin Gemini'ı iş akışlarına ne kadar kolay entegre edebildiğini gösteren bir kanıt niteliğinde olup inovasyon ve otomasyon için fırsatlar sunar. Gemini modelleriyle geliştirmeye başlamak için API belgelerimizi okuyun.