DSPy ile Prompt Mühendisliği: Yeni Bir Yaklaşım
Giriş
Büyük Dil Modelleri (LLM’ler), doğal dil işleme alanında devrim niteliğinde ilerlemeler sağlayarak, metin üretimi, çeviri, özetleme ve soru yanıtlama gibi birçok görevi otomatikleştirmemize olanak tanımıştır. Ancak, bu modellerden istenen performansı elde etmek, “prompt mühendisliği” adı verilen karmaşık ve çoğu zaman sanatsal bir süreç gerektirir. Geleneksel prompt mühendisliği, LLM’lere verilen komutların (prompt’ların) manuel olarak tasarlanması, test edilmesi ve iyileştirilmesi etrafında döner. Bu yaklaşım, basit görevler için etkili olsa da, karmaşık uygulamalar geliştirmek, farklı modellerle çalışmak veya performansı sistematik olarak optimize etmek söz konusu olduğunda önemli zorluklar ortaya çıkarır.
Bu zorlukların üstesinden gelmek amacıyla geliştirilen DSPy (Declarative Self-improving Language Programs), prompt mühendisliğine programatik ve optimize edilmiş yeni bir yaklaşım sunmaktadır. DSPy, LLM tabanlı uygulamaların bir yazılım programı gibi tasarlanmasını, modüler hale getirilmesini ve veri odaklı optimizasyon teknikleriyle otomatik olarak iyileştirilmesini sağlar. Bu makale, DSPy’nin temel prensiplerini, bileşenlerini, geleneksel prompt mühendisliğine getirdiği yenilikleri ve LLM tabanlı sistemlerin geliştirilmesindeki potansiyelini ayrıntılı bir şekilde inceleyecektir.
Geleneksel Prompt Mühendisliğinin Zorlukları
LLM’lerin yaygınlaşmasıyla birlikte, prompt mühendisliği, modellerden istenen çıktıları almanın anahtarı haline gelmiştir. Ancak, bu süreç kendi içinde önemli zorluklar barındırmaktadır:
Manuel İterasyon ve Deneme-Yanılma
Geleneksel prompt mühendisliği, genellikle manuel deneme-yanılma ve sezgisel yaklaşımlara dayanır. Bir geliştirici, belirli bir görev için bir prompt tasarlar, modeli bu prompt ile test eder ve çıktıyı değerlendirir. Eğer çıktı yetersizse, prompt’u manuel olarak ayarlar ve bu süreci tekrar eder. Bu iteratif süreç, zaman alıcıdır, ölçeklenebilir değildir ve özellikle karmaşık görevler veya büyük ölçekli uygulamalar için verimsizdir. En iyi prompt’u bulmak, çoğu zaman şansa bağlıdır ve sistematik bir yöntemden yoksundur.
Model ve Görev Bağımlılığı
Bir LLM için iyi çalışan bir prompt, başka bir LLM için aynı performansı göstermeyebilir. Modellerin farklı mimarileri, eğitim verileri ve ince ayarları, her birinin farklı prompt’lara farklı tepkiler vermesine neden olur. Benzer şekilde, aynı model üzerinde farklı görevler için ayrı ayrı prompt’lar tasarlamak gerekir. Bu durum, prompt’ların taşınabilirliğini ve yeniden kullanılabilirliğini sınırlar, her yeni model veya görev için baştan bir prompt mühendisliği süreci gerektirir.
Optimizasyon Eksikliği
Geleneksel prompt mühendisliğinde, prompt’ların kalitesini sistematik olarak optimize etmek zordur. Prompt’lar genellikle “sihirli dizeler” olarak kabul edilir ve bunların nasıl daha iyi hale getirileceğine dair açık, ölçülebilir bir yol haritası yoktur. Performans iyileştirmeleri genellikle küçük, inkremental ayarlamalardan ibarettir ve bu ayarlamaların temelinde yatan prensipler belirsizdir. Bu durum, LLM tabanlı uygulamaların performansını belirli bir eşiğin ötesine taşımayı zorlaştırır.
Karmaşıklık Yönetimi
Karmaşık LLM uygulamaları, genellikle birden fazla LLM çağrısını veya “zincirleme” (chaining) prompt’ları içerir. Örneğin, bir soru yanıtlama sistemi önce ilgili bilgiyi bulmak için bir LLM çağrısı yapabilir, ardından bu bilgiyi kullanarak nihai cevabı üretmek için başka bir çağrı yapabilir. Bu tür zincirleme prompt’lar, manuel olarak yönetilmesi ve hatalarını ayıklaması zor olan karmaşık ve iç içe geçmiş yapılar oluşturur. Uygulama büyüdükçe, prompt’ların bakımı ve geliştirilmesi giderek daha karmaşık hale gelir.
DSPy Nedir?
DSPy, bu zorlukların üstesinden gelmek için tasarlanmış, LLM tabanlı programlar yazmaya yönelik bir çerçevedir. Temel amacı, prompt mühendisliğini bir “bilim” haline getirmek, programatik, optimize edilebilir ve veri odaklı bir yaklaşım sunmaktır. DSPy, LLM’leri birer modüler bileşen olarak ele alır ve bu bileşenlerin bir araya getirilerek karmaşık mantık oluşturulmasını sağlar.
Temel Felsefe
DSPy’nin temel felsefesi, LLM tabanlı uygulamaları geleneksel yazılım geliştirme prensipleriyle tasarlamaktır:
* Mantık ve Prompt’un Ayrılması: Uygulamanın iş mantığı (örneğin, “önce belgeyi al, sonra soruyu cevapla”) ile bu mantığı gerçekleştirmek için LLM’lere verilen talimatların (prompt’ların) ayrıştırılması. DSPy’de mantık “programlar” ve “modüller” aracılığıyla ifade edilirken, prompt’lar “imzalar” ve “optimizatörler” aracılığıyla yönetilir.
* Modülerlik ve Yeniden Kullanılabilirlik: LLM çağrılarını yeniden kullanılabilir, soyutlanmış modüller olarak ele almak. Bu, karmaşık sistemlerin küçük, yönetilebilir parçalardan inşa edilmesini sağlar.
* Otomatik Optimizasyon: Prompt’ları ve hatta LLM’lerin dahili parametrelerini, küçük bir eğitim veri kümesi kullanarak otomatik olarak optimize etmek. Bu, manuel prompt mühendisliğinin yerini alarak, performansın sistematik olarak iyileştirilmesini sağlar.
* Veriye Dayalı Geliştirme: Uygulamanın performansını gerçek veriler üzerinde ölçmek ve bu verilere dayanarak prompt’ları ve program akışını iyileştirmek.
Ana Bileşenler
DSPy, bu felsefeyi gerçekleştirmek için bir dizi ana bileşen sunar:
Signatures (İmzalar)
Signatures, DSPy’nin kalbinde yer alır ve bir LLM çağrısının ne yapması gerektiğini bildiren deklaratif tanımlamalardır. Geleneksel prompt’ların aksine, imzalar doğrudan modelin iç prompt’unu içermez. Bunun yerine, bir LLM modülünün alacağı girdileri ve üretmesi beklenen çıktıları soyut bir şekilde tanımlar.
Örnek: Bir soru yanıtlama görevi için bir imza şöyle tanımlanabilir:
input_fields = [('question', str)]
output_fields = [('answer', str)]
Bu imza, modelin bir question almasını ve bir answer üretmesini beklediğini belirtir. DSPy, bu imzayı kullanarak model için en uygun prompt’u (talimatları, birkaç örnek çıktıyı vb.) otomatik olarak oluşturur veya optimize eder. Bu sayede, geliştirici prompt’un tam metniyle uğraşmak yerine, yalnızca giriş ve çıkış formatını tanımlar.
Modules (Modüller)
Modüller, bir veya daha fazla LLM çağrısını kapsayan yeniden kullanılabilir bileşenlerdir. DSPy, çeşitli önceden tanımlanmış modüller sunar ve aynı zamanda özel modüller oluşturmaya olanak tanır.
* dspy.Predict: Belirli bir imza ile basit bir LLM çağrısı yapmak için kullanılır. Örneğin, bir soruya doğrudan cevap vermek için.
* dspy.ChainOfThought: Zincirleme düşünce (Chain-of-Thought) yöntemini uygulayan bir modüldür. Bu, modelin bir cevaba ulaşmadan önce ara adımları veya akıl yürütme süreçlerini üretmesini sağlar. Bu, karmaşık görevlerde performansı önemli ölçüde artırabilir.
* dspy.Retrieve: Harici bir bilgi tabanından (örneğin, bir vektör veritabanı) ilgili belgeleri almak için kullanılır. Bu, RAG (Retrieval-Augmented Generation) sistemlerinin temelini oluşturur.
* dspy.Program: Birden fazla modülü ve/veya başka programları bir araya getirerek karmaşık LLM tabanlı uygulamalar oluşturmak için kullanılır. Bir program, geleneksel bir Python sınıfı gibi tanımlanır ve __init__ ile forward metotlarına sahiptir. Bu, LLM uygulamalarını programatik bir şekilde yapılandırmayı sağlar.
Optimizers (Optimizatörler)
Optimizers (Teleprompters olarak da adlandırılır), DSPy’nin otomatik optimizasyon yeteneğinin merkezindedir. Bunlar, bir programın ve onun içindeki LLM modüllerinin performansını, küçük bir eğitim veri kümesi ve bir metrik kullanarak iyileştiren algoritmalardır. Optimizatörler, imzaları (yani prompt’ları) ve hatta bazen LLM’lerin dahili ağırlıklarını ayarlayabilir.
* dspy.BootstrapFewShot: Küçük bir eğitim veri kümesinden en iyi “birkaç örnek” (few-shot examples) seçerek imzaları otomatik olarak doldurur. Bu, modelin belirli bir görevde daha iyi performans göstermesine yardımcı olan etkili prompt’lar üretir.
* dspy.BayesianSignatureOptimizer: Daha gelişmiş bir optimizatördür ve Bayesian optimizasyonunu kullanarak imzaların yapısını ve içeriğini daha sistematik bir şekilde iyileştirmeye çalışır.
* dspy.DSPyOptimizer: Geniş bir yelpazede optimizasyon stratejilerini kapsayan genel bir optimizatördür.
Metrics (Metrikler)
Metrikler, bir DSPy programının veya modülünün performansını nicel olarak değerlendirmek için kullanılır. Bunlar, optimizasyon sürecine rehberlik eden geri bildirim mekanizmasıdır. Örneğin, bir soru yanıtlama sistemi için “doğruluk” veya “benzerlik” gibi metrikler kullanılabilir. Geliştiriciler, kendi özel metriklerini tanımlayabilirler.
Datasets (Veri Kümeleri)
Optimizers’ın çalışabilmesi için küçük bir “geliştirme seti” (dev set) veya eğitim veri kümesi gereklidir. Bu veri kümesi, programın belirli bir görevde nasıl performans gösterdiğini değerlendirmek ve prompt’ları bu performansa göre ayarlamak için kullanılır. Geleneksel LLM eğitiminde kullanılan milyonlarca örnek yerine, DSPy optimizasyonu için genellikle yalnızca onlarca veya yüzlerce örnek yeterlidir.
DSPy ile Prompt Mühendisliği Yaklaşımı
DSPy, geleneksel prompt mühendisliğinin sınırlamalarını aşarak, LLM tabanlı uygulamaların geliştirilmesinde daha bilimsel, verimli ve ölçeklenebilir bir yol sunar.
Programatik ve Modüler Tasarım
DSPy, LLM tabanlı uygulamaları geleneksel yazılım mühendisliği prensipleriyle tasarlamaya olanak tanır. Bir uygulamayı, ayrı ayrı LLM modüllerinden (örneğin, bilgi alma, özetleme, sınıflandırma modülleri) oluşan bir program olarak düşünebilirsiniz. Bu modüller, belirli bir işlevi yerine getirmek üzere tasarlanır ve daha karmaşık görevler için bir araya getirilebilir. Bu modüler yapı, kodun okunabilirliğini, bakımını ve yeniden kullanılabilirliğini artırır. Geliştiriciler, karmaşık bir sorunu daha küçük, yönetilebilir alt görevlere bölebilir ve her alt görevi bir DSPy modülü ile çözebilir.
Otomatik Prompt Optimizasyonu
DSPy’nin en önemli yeniliklerinden biri, prompt’ların otomatik olarak optimize edilmesidir. Geliştiriciler, manuel olarak en iyi prompt’u bulmak için saatler harcamak yerine, yalnızca bir imza tanımlar ve bir optimizatör kullanır. Optimizatör, verilen küçük bir veri kümesi üzerinde programı çalıştırır, performansını değerlendirir ve model için en uygun talimatları, akıl yürütme adımlarını veya birkaç örnek çıktıyı (few-shot examples) otomatik olarak oluşturur. Bu süreç, prompt’ların sürekli olarak en iyi performansı verecek şekilde ayarlanmasını sağlar ve insan müdahalesine olan ihtiyacı büyük ölçüde azaltır. Örneğin, BootstrapFewShot optimizatörü, modelin en iyi birkaç örnek çıktıyı otomatik olarak bulmasına yardımcı olurken, ChainOfThought modülü ile birleştiğinde, modelin en iyi akıl yürütme adımlarını keşfetmesini sağlayabilir.
Veriye Dayalı Geliştirme
DSPy, LLM uygulamalarının geliştirilmesini, küçük ve temsil edici bir veri kümesine dayandırır. Bu veri kümesi, programın performansını ölçmek ve optimizasyon sürecine rehberlik etmek için kullanılır. Geleneksel prompt mühendisliğinde performans değerlendirmesi genellikle sezgisel ve öznelken, DSPy ile performans metrikler aracılığıyla nesnel olarak ölçülür. Bu, geliştiricilerin hangi prompt ayarlamalarının veya program değişikliklerinin gerçekten işe yaradığını kesin olarak bilmelerini sağlar. Veriye dayalı yaklaşım, LLM uygulamalarının sürekli iyileştirilmesini ve belirli performans hedeflerine ulaşılmasını mümkün kılar.
Model Agnostiklik
DSPy, temel olarak model agnostiktir. Bu, aynı DSPy programının farklı LLM’ler (örneğin, OpenAI GPT modelleri, Llama, Claude vb.) ile kolayca kullanılabilmesi anlamına gelir. Bir DSPy programı bir kez yazıldıktan sonra, geliştiriciler arka plandaki LLM’i değiştirebilir ve programın performansını farklı modellerle karşılaştırabilirler. Optimizasyon süreci, seçilen LLM’ye göre prompt’ları otomatik olarak ayarlayacağından, model değişimi genellikle minimal kod değişikliği gerektirir. Bu özellik, LLM uygulamalarının geleceğe dönük olmasını ve farklı sağlayıcıların veya modellerin avantajlarından yararlanmasını sağlar.
DSPy Kullanım Senaryoları ve Örnekleri
DSPy’nin esnekliği ve gücü, çeşitli LLM tabanlı uygulama senaryolarında kendini gösterir.
Basit Bir Soru Cevaplama Sistemi
En temel DSPy uygulaması, belirli bir soruya cevap vermektir.
1. İmza Tanımlama: Öncelikle, modelin ne alıp ne vermesi gerektiğini belirten bir imza tanımlanır. Örneğin, bir question alıp bir answer döndüren bir imza.
2. Modül Kullanımı: dspy.Predict modülü, bu imzayı kullanarak basit bir LLM çağrısı yapar.
3. Optimizasyon (İsteğe Bağlı): Küçük bir soru-cevap çiftleri veri kümesi (dev set) ile dspy.BootstrapFewShot gibi bir optimizatör kullanılarak, modelin en iyi performansı vermesi için prompt otomatik olarak ayarlanabilir. Bu, modelin prompt’una otomatik olarak birkaç örnek ekleyerek, doğru cevapları üretme yeteneğini artırır.
Zincirleme Düşünce (Chain-of-Thought) ile Karmaşık Akıl Yürütme
Karmaşık sorular, genellikle doğrudan cevap verilemeyecek kadar fazla akıl yürütme gerektirir. DSPy’nin dspy.ChainOfThought modülü, bu tür senaryolar için idealdir.
1. İmza Tanımlama: Bir soru ve cevap imzasının yanı sıra, modelin akıl yürütme adımlarını (örneğin, rationale) da çıktı olarak vermesini bekleyen bir imza tanımlanır.
2. Modül Kullanımı: dspy.ChainOfThought modülü, modelin cevabı vermeden önce dahili bir akıl yürütme süreci (iç prompt’unda “Adım adım düşün” gibi talimatlar) üretmesini sağlar. Bu akıl yürütme adımları, nihai cevabın doğruluğunu artırır ve aynı zamanda modelin nasıl bir sonuca ulaştığını anlamayı kolaylaştırır.
3. Optimizasyon: BootstrapFewShot gibi bir optimizatör, modelin en etkili akıl yürütme stratejilerini ve örneklerini otomatik olarak öğrenmesini sağlayabilir.
Bilgi Çıkarımı ve Yapılandırma
Metinden belirli varlıkları veya yapılandırılmış bilgileri çıkarmak, LLM’lerin güçlü olduğu başka bir alandır.
1. İmza Tanımlama: Çıkarılacak varlıkların (örneğin, kişi adı, tarih, yer) ve bunların tiplerinin (örneğin, name: str, date: str, location: str) belirtildiği bir imza tanımlanır. Bu imza, modelden belirli bir JSON formatında veya başka bir yapılandırılmış formatta çıktı beklediğini gösterir.
2. Modül Kullanımı: dspy.Predict veya dspy.ChainOfThought modülü, bu imzayı kullanarak metinden yapılandırılmış bilgi çıkarımı yapar.
3. Optimizasyon: Optimizatör, modelin farklı metin türlerinden doğru bilgiyi tutarlı bir şekilde çıkarması için prompt’unu ayarlar. Bu, özellikle veri temizleme, otomatik etiketleme veya veritabanı doldurma gibi görevlerde çok değerlidir.
Retrieval-Augmented Generation (RAG) Sistemleri
RAG sistemleri, LLM’lerin güncel veya özel bilgilere erişmesini sağlayarak halüsinasyonları azaltır ve cevapların doğruluğunu artırır. DSPy, RAG pipeline’larının oluşturulmasını ve optimize edilmesini büyük ölçüde basitleştirir.
1. Program Tanımlama: Bir DSPy programı, dspy.Retrieve modülünü (bir vektör veritabanından ilgili belgeleri almak için) ve ardından dspy.Predict veya dspy.ChainOfThought modülünü (alınan belgeleri kullanarak bir soruya cevap vermek için) zincirleyebilir.
2. Akış: Kullanıcı bir soru sorduğunda, dspy.Retrieve önce ilgili belgeleri bulur. Ardından, bu belgeler ve orijinal soru, dspy.Predict modülüne beslenir ve bu modül, belgelerdeki bilgilere dayanarak bir cevap üretir.
3. Optimizasyon: DSPy optimizatörleri, hem dspy.Retrieve modülünün (yani, arama sorgusunun nasıl formüle edileceği) hem de dspy.Predict modülünün (yani, alınan belgeleri kullanarak en iyi cevabın nasıl formüle edileceği) prompt’larını optimize edebilir. Bu, RAG sistemlerinin hem alım doğruluğunu hem de üretim kalitesini artırır.
DSPy’nin Avantajları
DSPy, LLM tabanlı uygulama geliştirme sürecine bir dizi önemli avantaj getirir:
Verimlilik ve Ölçeklenebilirlik
Manuel prompt mühendisliğinin aksine, DSPy otomatik optimizasyon sayesinde geliştirme sürecini hızlandırır. Bir prompt’u manuel olarak deneme-yanılma ile iyileştirmek yerine, DSPy optimizatörleri bu süreci otomatikleştirir. Bu, özellikle birden fazla LLM çağrısı içeren karmaşık uygulamalar için büyük ölçekte verimlilik sağlar.
Geliştirme Hızlandırma
DSPy’nin modüler yapısı ve deklaratif imzaları, geliştiricilerin karmaşık LLM uygulamalarını daha hızlı bir şekilde prototiplemelerini ve inşa etmelerini sağlar. Prompt’ların detaylarıyla uğraşmak yerine, geliştiriciler uygulamanın yüksek seviyeli mantığına odaklanabilirler.
Performans İyileştirme
Veriye dayalı optimizasyon sayesinde, DSPy uygulamaları genellikle manuel olarak tasarlanmış prompt’lardan daha iyi performans gösterir. Optimizatörler, insan gözünden kaçabilecek ince ayarları ve etkileşimleri keşfedebilir, bu da daha doğru ve tutarlı çıktılarla sonuçlanır.
Bakım Kolaylığı
Modüler ve programatik yapı, LLM uygulamalarının bakımını ve hata ayıklamasını kolaylaştırır. Her bir LLM çağrısı bir modül içinde kapsüllendiği için, bir hata veya performans sorunu ortaya çıktığında, sorunun kaynağını bulmak ve düzeltmek daha basittir.
Model Portatifliği
DSPy’nin model agnostik yapısı, geliştiricilerin farklı LLM’ler arasında kolayca geçiş yapmasını sağlar. Bu, en iyi performansı sunan veya maliyet-etkinliği en yüksek olan modeli seçme konusunda büyük esneklik sunar.
Şeffaflık ve Kontrol
Geleneksel prompt mühendisliği genellikle bir “kara kutu” gibidir; en iyi prompt’un neden çalıştığı her zaman açık değildir. DSPy ile, programın mantığı açıkça tanımlanır ve optimizasyon süreci, performans metrikleri aracılığıyla izlenebilir. Bu, geliştiricilere uygulama üzerinde daha fazla şeffaflık ve kontrol sağlar.
DSPy’nin Sınırlamaları ve Geleceği
DSPy, LLM tabanlı uygulama geliştirmede önemli bir ilerleme olsa da, bazı sınırlamaları ve geliştirme alanları bulunmaktadır.
Öğrenme Eğrisi
DSPy, geleneksel prompt mühendisliğinden farklı bir paradigmaya sahiptir. Geliştiricilerin DSPy’nin temel bileşenlerini (imzalar, modüller, optimizatörler) ve bunların nasıl etkileşim kurduğunu anlamaları için belirli bir öğrenme eğrisi vardır. Ancak, bu yatırım, uzun vadede daha verimli ve ölçeklenebilir geliştirme süreçleriyle karşılığını verir.
Veri Bağımlılığı
DSPy’nin otomatik optimizasyon yetenekleri, küçük de olsa bir eğitim veri kümesine (dev set) dayanır. Bazı niş uygulamalar veya hızlı prototipleme senaryoları için bu veri kümesini oluşturmak ek bir çaba gerektirebilir. Veri kümesinin kalitesi ve temsil gücü, optimizasyonun etkinliğini doğrudan etkiler.
Karmaşık Optimizasyonlar
Şu anki optimizatörler oldukça güçlü olsa da, LLM’lerin tüm potansiyelini ortaya çıkaracak daha karmaşık ve adaptif optimizasyon algoritmalarına ihtiyaç duyulabilir. Örneğin, çok adımlı akıl yürütme süreçlerinde veya birden fazla LLM’in koordineli çalıştığı senaryolarda optimizasyon daha zorlayıcı olabilir.
Gelecek Potansiyeli
DSPy’nin geleceği oldukça parlak görünmektedir. Topluluğun hızla büyümesi, daha fazla LLM entegrasyonu, gelişmiş optimizatörler ve daha geniş kullanım senaryoları beklenmektedir. Özellikle, LLM’lerin belirli görevler için “derinlemesine öğrenme” modelleri gibi eğitilebildiği bir çerçeve olarak DSPy’nin rolü artacaktır. Ayrıca, DSPy’nin LLM tabanlı ajanların ve otonom sistemlerin geliştirilmesinde kritik bir araç haline gelmesi muhtemeldir.
Sonuç
DSPy, prompt mühendisliği alanında paradigmatik bir değişim sunarak, LLM tabanlı uygulama geliştirme sürecini bilimsel, programatik ve optimize edilebilir bir hale getirmektedir. Geleneksel manuel deneme-yanılma yaklaşımının getirdiği zorlukların üstesinden gelerek, geliştiricilere daha verimli, ölçeklenebilir ve performanslı çözümler inşa etme gücü verir. İmzaların deklaratif doğası, modüler program tasarımı ve otomatik optimizasyon yetenekleri sayesinde DSPy, LLM’lerin gerçek dünya uygulamalarında tam potansiyellerine ulaşmalarını sağlamada kritik bir rol oynamaktadır.
LLM teknolojileri olgunlaşmaya devam ettikçe, DSPy gibi araçlar, bu modelleri yalnızca bir API çağrısından çok daha fazlası olarak ele alarak, karmaşık ve güvenilir yapay zeka sistemleri oluşturmanın anahtarı olacaktır. DSPy, prompt mühendisliğini bir sanat olmaktan çıkarıp bir mühendislik disiplinine dönüştürerek, LLM tabanlı uygulamaların geleceğini şekillendirme potansiyeline sahip, heyecan verici ve yenilikçi bir yaklaşımdır. Geliştiricilerin bu yeni çerçeveyi benimsemesi, LLM’lerin yeteneklerini daha önce hiç olmadığı kadar etkili bir şekilde kullanmalarını sağlayacaktır.
