Türkçe dilinde AI & ML Haberleri

Mentat kodlama yardımcısına derin dalış

Aider kodlama asistanıyla oynadıktan sonra, son birkaç haftadır Mentat ile kod yazıyorum. Aider ile karşılaştırma Çalışma şekli benzer. Terminalde metinli bir arayüze sahip ve hatta ışık ve karanlık moda renk şemalarını ayarlamayı mümkün kılıyor. Kodlama oturumları, ilgili dosyaları bağlam için eklemeyi içeriyor. Sohbet kutusunda dileklerinizi belirtiyorsunuz ve kod değişiklikleri için eylem planı oluşturuyor. Onaylarsanız değişiklikler yapılır. Genel olarak, Aider'den biraz farklı olan deneyimin bir parçası, Aider'in her değişiklik için bir git-commit oluşturmasıdır (bu seçeneği iptal edebilirsiniz). Mentat ise sürüm yönetimini size bırakıyor. Dileklerinizi nasıl ifade ettiğiniz, çalıştırılan işin kalitesini belirler. LLM'in seçimine göre oldukça uzun ömürlü olmanız gerekir. Hangisini kullanırsanız kullanın, onlara hala cahil bir stajyer gibi konuşmak zorunda olduğunuz için. Bağlam sınırı Kutudan çıkan Mentat, Aider'a göre oldukça az sayıda LLM'yi destekler (bu belki de değişebilir). Bu sorunu benim için çözmedim, Together.ai'de kodlama LLM'sini kullanarak Mentat'a bağladım. Ama önemli değildi; hemen bağlam pencere sınırına takıldım. Verdiğim dosyaların bazıları üretime uzun, ancak çok fazla dosya eklememiştim. Hatta onu henüz akıllı bir şey yapmamıştım bile. Bu çalıştırma şansı elde etmek için çok kararlıydım, ancak bağlam sınırı araya giriyor. Çözüm, sadece bağlam sınırına sahip olan bir LLM'yi kullanarak değildir. Her zaman bir üst sınır vardır ve sonunda onu sürekli olarak vururdunuz. Kendi RAG'ımı inşa ettim RAG'ın çözüm olduğunu duyduğum için, Mentat ve LLM arasında çalıştırılan bir middleware oluşturdum. Bu, OpenAI uyumlu bir REST API'dir (http://localhost:<port>/chat/completions) ve lokal olarak çalıştırılır, hepsi tek bir Python dosyasında barındırılır. Bunu kolay referans için Broken Sword olarak adlandırıyorum. Mentat için Broken Sword, gerçek bir LLM hizmetidir. Broken Sword'da Mentat'ın taleplerini yakalıyorum, girişleri masaj yapıyorum, herhangi bir LLM'ye gönderiyorum ve OpenAI uyumlu bir şekilde geri dönüşümüyorum. Bunu yaparken, Mentat'ın verdiği ayrıntılı direktifleri görüyorum, bu da prompt-mühendisliği gibi görünüyor. Sadece bunu yaparak, Mentat'ı herhangi bir LLM hizmetini kullanarak güçlendirdim. Devam ettim ve Google Gemini 1.5'i kullanarak Broken Sword'u güçlendirdim, büyük ölçüde kalite ve maliyet dengesi nedeniyle. Ancak bu, bağlam pencere sınırını çözmez. Bu, sadece bir boru hattıdır. Mentat'tan gelen büyük miktardaki bağlam yerine, bu bağlamın vektör veritabanına depolanmasını ve LLM'ye sayısal olarak gönderilmesini mümkün kılıyorum. LLM'ler için orijinal metinler yerine çok daha küçük olan bu sayısal verilerle çalışıyorlar. LangChain'i kullanarak (bu süreçlerin soyutlandığını düşünüyorum) ve Flask'i kullanarak basit bir API oluşturmak için çalıştım. Bu, LangChain'in sihirli gücünden çok şey öğrenecek olan bir gün için çalışmak gibi hissetti, ancak o gün için acele ettim. LangChain'in gerekli olmadığını biliyorum, ancak şu anda çalıştırıyorum. Çalıştırıldığında, Mentat'ın olması gerektiği gibi çalıştığını gördüm. Üniversite sınavları yazdırmasını istedim, tutarlı bir şekilde yazılmıştı. GitHub Actions iş akışını yazdırmasını istedim, elde ettiğim sonuç mantıklıydı. Çalıştırıldığında tatmin ediciydi. Broken Sword'u kullanarak çalıştırabildiğim için çift kat tatmin ediciydi. Bu beni şu soruya yöneltti, neden Mentat, RAG veya vektör veritabanını benim gibi kullanarak çalıştırıyor? Bu, sanki kolaymış gibi hissediyordu. Mentat kod tabanına göz attım, Chroma DB'nin de kullanıldığını gördüm (kullandığım vektör veritabanı). Belki de RAG'ı şu anda benim için önemli olan şekillerde kullanarak çalıştırıyorlar. Ancak bu, kaba Mentat'ı daha fazla çalıştırıkça, kabalık ortaya çıkıyor. Bazen, LLM'nin istediğini yapmadığında veya benim için bilinmeyen nedenlerle çalışmayı durduruyor. Kibar başarısızlık, gücünden biri değildir. Mentat'ın, bir talepte bulunduktan sonra çalışmayı durdurduğu zamanlar oldu. Dosyaları tekrar ekleyerek ve talepleri yineleyerek (şükür ki sohbet geçmişini tutuyorlar) her şey yolunda gidiyordu. Elle kodlama ve kombinezon Bu macerada cevaplamak istediğim bir soru, bu şekilde kod asistanını kullanarak ve direkt olarak dosyaları değiştirerek bir sorunu çözerken doğru karışımın ne olduğudur. Bu, eğer mümkün ise, tüm kodlamanın sadece kod asistanından yapılması gerektiğinde soruluyor. Benim durumumda, ekranın yarısını Mentat için, diğer yarısını emacs için ayırıyorum. Mentat'ın, ne istediğimin büyük kısmını sağladığını ve kalan kısmını elle emacs'ta değiştirdiğimi bekliyordum. Mentat-stil kod asistanlarının gelecekteki yeri varsa, bu şekilde olması gerektiğinde merak ediyorum.
dev.to
Deep dive into Mentat coding assistant
Create attached notes ...