OpenAI GPT, Google Bert ve Meta LLaMA gibi büyük dil modelleri (LLM’ler), pazarlama metninden veri bilimi koduna ve şiire kadar hayal edebileceğiniz neredeyse her metni üretme güçleriyle her sektörde devrim yaratıyor. Sezgisel sohbet arayüzü sayesinde ChatGPT dikkatlerin çoğunu üzerine çekmiş olsa da, LLM’leri başka yazılımlara entegre ederek onlardan yararlanmanın çok daha fazla yolu var.
Örneğin, DataLab, analizinizdeki kodu ve metni yazmanıza veya iyileştirmenize olanak tanıyan bir Yapay Zeka Asistanı içerir ve DataCamp’in etkileşimli kurslarında yaptığınız hatayı anlamanıza yardımcı olan “hata mı açıkla” özelliği bulunur. Bu özellikler GPT tarafından desteklenir ve OpenAI API’si üzerinden erişilir.
LangChain, çeşitli LLM API’lerinin üzerine bir çerçeve sağlar. Amaç, LLM tabanlı yapay zekayı uygulamalarına ve veri hatlarına entegre eden yazılım geliştiricilerin ve veri mühendislerinin verimliliğini artırmaktır.
Bu eğitim, LangChain’in çözdüğü sorunları ve başlıca kullanım alanlarını ayrıntılandırarak neden ve nerede kullanmanız gerektiğini anlamanıza yardımcı olur. Okumadan önce, bir LLM’in temel fikrini anlamak faydalıdır. NLP Veri Biliminin Geleceğini Nasıl Değiştiriyor eğitimi bilgilerinizi tazelemek için iyi bir başlangıçtır.
LangChain hangi sorunları çözüyor?
LLM’lerle etkileşim kurmak için temelde iki iş akışı vardır.
- “Sohbet” bir istem yazmayı, bunu yapay zekaya göndermeyi ve metin yanıtı almayı içerir.
- “Gömme” bir istem yazmayı, bunu yapay zekaya göndermeyi ve sayısal bir dizi (array) yanıtı almayı içerir.
Hem sohbet hem de gömme iş akışlarında, LangChain’in ele almaya çalıştığı bazı sorunlar vardır.
İstemler Kalıp Metinle Dolu
Sohbet ve gömme ile ilgili sorunlardan biri, iyi bir istem oluşturmanın yalnızca tamamlanacak görevi tanımlamaktan ibaret olmamasıdır. Ayrıca yapay zekanın kişiliğini ve yazı stilini tarif etmeniz ve olgusal doğruluğu teşvik edecek talimatlar eklemeniz gerekir. Yani, basit bir görev tanımlayan yalın bir istem yazmak isteyebilirsiniz:
Write an outline for a 500-word blog post targeted at teenagers about the health benefits of doing yoga.
Ancak iyi bir yanıt almak için aşağıdakine benzer bir şey yazmanız gerekir:
You are an expert sports scientist. Your writing style is casual but terse.
Write an outline for a 500-word blog post targeted at teenagers about the health benefits of doing yoga.
Only include factually correct information. Explain your reasoning.
İstemdeki bu kalıp metnin büyük bölümü, bir istemden diğerine aynı olacaktır. İdeal olarak bunu bir kez yazmak ve istediğiniz istemlere otomatik olarak dahil edilmesini sağlamak istersiniz.
LangChain, istem şablonları sunarak istemlerdeki kalıp metin sorununu çözer. Bunlar, faydalı istem girdisini (bu durumda yoganın sağlık faydaları hakkında bir blog yazısı yazma metni) kalıp metinle (yazı stili ve olgusal olarak doğru bilgi talebi) birleştirir.
Yanıtlar Yapılandırılmamış
Sohbet iş akışlarında, modelden gelen yanıt sadece metindir. Ancak yapay zekanın yazılım içinde kullanıldığı durumlarda, programlanabilir bir yapılandırılmış çıktı elde etmek sıklıkla tercih edilir. Örneğin, amaç bir veri kümesi üretmekse, yanıtın CSV veya JSON gibi belirli bir formatta sağlanmasını istersiniz.
Yapay zekanın uygun formatta tutarlı bir yanıt vermesini sağlayacak bir istem yazabildiğinizi varsayarsak, bu çıktıyı işlemenin bir yoluna ihtiyaç duyarsınız. LangChain, tam da bu amaçla çıktı ayrıştırıcı araçları sağlar.
LLM’ler Arasında Geçiş Yapmak Zor
GPT son derece başarılı olsa da, çok sayıda başka LLM mevcuttur. Doğrudan tek bir şirketin API’sine göre programlamak, yazılımınızı o ekosisteme kilitler. GPT üzerinde yapay zeka özelliklerinizi geliştirdikten sonra, ürününüz için daha güçlü çok dilli yeteneklerin gerekli olduğunu fark etmeniz gayet olasıdır. O zaman Polyglot’a geçmek ya da yapay zekayı ürününüze dahil ederken Stability AI’nin StableLM’i gibi daha kompakt bir modele ihtiyaç duymak isteyebilirsiniz.
LangChain bir LLM sınıfı sunar ve bu soyutlama, bir modeli başka bir modelle değiş tokuş etmeyi veya yazılımınız içinde birden çok modeli kullanmayı çok daha kolay hale getirir.
LLM’lerin Hafızası Kısadır
Bir LLM’in yanıtı, önceki konuşmaya (kullanıcı istemleri ve önceki yanıtları) dayanarak üretilir. Ancak LLM’lerin hafızası oldukça kısadır. En gelişmiş GPT-4 bile varsayılan olarak 8.000 token (yaklaşık 6.000 kelime) hafızaya sahiptir.
Sohbet iş akışında, konuşma hafıza sınırlarını aşarsa yapay zekadan gelen yanıtlar tutarsız hale gelebilir (çünkü konuşmanın başını hatırlamaz). Sohbet botları bu durumun sorun olabildiği bir örnektir. İdeal olarak, çelişkili bilgi vermemek için sohbet botunun müşteriyle yapılan tüm konuşmayı hatırlamasını istersiniz.
LangChain, sohbet mesaj geçmişi araçları sunarak hafıza sorununu çözer. Bunlar, önceki mesajları LLM’e geri besleyip ne hakkında konuşulduğunu hatırlatmanıza olanak tanır.
LLM Kullanımını Hatlara Entegre Etmek Zordur
Veri hatlarında veya yazılım uygulamalarında kullanıldığında yapay zeka çoğunlukla büyük bir işlevin yalnızca bir parçasıdır. Örneğin, bir veritabanından bazı verileri almak, bunu LLM’e iletmek, ardından yanıtı işleyip başka bir sisteme aktarmak isteyebilirsiniz.
LangChain, zincirler ve ajanlar aracılığıyla hat (pipeline) türü iş akışları için araçlar sağlar. Zincirler, temelde birden fazla bileşeni birbirine ekleyen (doğrusal hatlar için) basit nesnelerdir. Ajanlar ise daha gelişmiştir ve iş mantığıyla bileşenlerin nasıl etkileşeceğini seçmenize olanak tanır. Örneğin, bir sonraki adımı belirlemek için bir LLM’den gelen çıktıya bağlı koşullu mantık isteyebilirsiniz.
Veriyi LLM’e Aktarmak Zordur
LLM’lerin metin tabanlı doğası, verilerin modele nasıl aktarılacağı konusunda çoğu zaman netlik sağlamaz. Sorunun iki yönü vardır.
Öncelikle, verileri veri kümesinin hangi bölümlerinin LLM’e gönderileceğini kontrol etmenize olanak tanıyacak bir formatta saklamanız gerekir. (DataFrame veya SQL tablo gibi dikdörtgen veri kümelerinde, veriyi genellikle satır satır göndermek istersiniz.)
İkincisi, bu verileri isteme nasıl dahil edeceğinizi belirlemelisiniz. En basit yaklaşım, veri kümesini doğrudan isteme eklemektir (“prompt stuffing”), ancak daha gelişmiş seçenekler de mevcuttur.
LangChain, bunun ilk kısmını indeksler ile çözer. Bunlar, veritabanları, JSON dosyaları, pandas DataFrame’leri, CSV dosyaları ve diğer formatlardan veri içe aktarma ve bunları LLM’e satır bazında sunmaya uygun bir formatta saklama işlevselliği sağlar.
LangChain, sorunun ikinci kısmını çözmek için indeks ilişkili zincirler sunar ve veriyi LLM’e aktarmak için dört tekniğe yönelik sınıflar içerir.
Prompt stuffing, tüm veri setini isteme ekler. Çok basittir ancak yalnızca küçük veri setlerinde çalışır.
Map-reduce veriyi parçalara böler, verinin her parçasında LLM’i ilk bir istemle çağırır (“map” kısmı), ardından bu kez ilk turdaki yanıtları içeren farklı bir istemle LLM’i yeniden çağırır. Bu, “group by” komutu kullanmayı düşüneceğiniz her durumda uygundur.
Refine, yinelemeli Bayesyen tarzda bir yaklaşımdır; önce verinin ilk parçasında bir istem çalıştırır, ardından her ek veri parçası için LLM’den yeni veri kümesine dayanarak sonucu iyileştirmesini isteyen bir istem kullanırsınız. Bu yaklaşım, yanıtı belirli bir çıktıya yakınsamak istediğinizde iyi çalışır.
Map-rerank, map-reduce’un bir varyasyonudur. Akışın ilk kısmı aynıdır: veriyi parçalara bölün ve her parçada bir istem çalıştırın. Fark, LLM’den yanıtı için bir güven puanı istemenizdir; böylece çıktıları sıralayabilirsiniz. Bu yaklaşım, sonucun tek bir “en iyi” yanıt olduğu öneri türü görevler için iyi çalışır.
LangChain Hangi Programlama Dillerini Destekliyor?
LangChain, langchain node paketi aracılığıyla JavaScript’ten kullanılabilir. Bu, yapay zekayı web uygulamalarına gömmek için uygundur.
Ayrıca langchain (PyPI, conda) paketi aracılığıyla Python’dan da kullanılabilir. Bu, yapay zekayı veri hatlarına veya Python tabanlı yazılımlara dahil etmek için uygundur.
LangChain’in Başlıca Kullanım Alanları Nelerdir?
LangChain, bir LLM kullanmak isteyebileceğiniz her yerde kullanılabilir. Burada, LangChain’in hangi özelliklerinin ilgili olduğunu açıklayarak veriye yönelik birkaç örneği ele alacağız.
Doğal Dille Veri Kümelerini Sorgulama
LLM’in veri analizi için en dönüştürücü kullanım alanlarından biri, doğal dille SQL sorguları (veya eşdeğer Python ya da R kodu) yazabilme yeteneğidir. Bu, keşif amaçlı veri analizini kodlama becerisi olmayan kişiler için erişilebilir kılar.
İş akışının birkaç varyasyonu vardır. Küçük veri setlerinde, LLM’den doğrudan sonuç üretmesini isteyebilirsiniz. Bu, veriyi LangChain’in belge yükleyicilerini kullanarak uygun bir formata yüklemeyi, veriyi indeks ilişkili zincirlerle LLM’e aktarmayı ve yanıtı bir çıktı ayrıştırıcı ile ayrıştırmayı içerir.
Daha yaygın olarak, veri yapısının ayrıntılarını (örneğin tablo adları, sütun adları ve türleri ve hangi sütunlarda eksik değerler olduğu gibi ayrıntılar) LLM’e iletir ve sizden SQL/Python/R kodu üretmesini istersiniz. Ardından ortaya çıkan kodu çalıştırırsınız. Bu akış, veri aktarmayı gerektirmediği için daha basittir; yine de LangChain adımları modülerleştirebildiği için faydalıdır.
Başka bir varyasyon olarak, sonuçları yorumlaması için LLM’e ikinci bir çağrı ekleyebilirsiniz. LLM’e birden çok çağrı içeren bu tür iş akışlarında LangChain gerçekten yardımcı olur. Bu durumda, sonuçların yorumunun daha önce sağladığınız veri yapısıyla tutarlı olmasını sağlamak için sohbet mesaj geçmişi araçlarını kullanabilirsiniz.
API’lerle Etkileşim
Bir veri hattı oluşturma gibi veri kullanım durumlarında, bir LLM’den yapay zekayı dahil etmek genellikle diğer API çağrılarını içeren daha uzun bir iş akışının parçasıdır. Örneğin, bir API kullanarak hisse verisi almak veya bir bulut platformuyla etkileşime girmek isteyebilirsiniz.
LangChain’in adımları sırayla birbirine bağlamanıza olanak tanıyan zincir ve ajan özellikleri (ve dallanan hatlar için ek iş mantığı kullanımı) bu kullanım durumu için idealdir.
Bir Sohbet Botu Oluşturma
Sohbet botları, yapay zekanın en popüler kullanım alanlarından biridir ve üretken yapay zeka, daha gerçekçi davranan sohbet botları için büyük bir potansiyel taşır. Ancak sohbet botunun kişiliğini kontrol etmek ve konuşmanın bağlamını hatırlamasını sağlamak zahmetli olabilir.
LangChain’in istem şablonları, hem sohbet botunun kişiliği (ses tonu ve iletişim tarzı) hem de verdiği yanıtlar üzerinde kontrol sağlar.
Ayrıca, mesaj geçmişi araçları, LLM’lerin varsayılan olarak sunduğu birkaç yüz ya da bin kelimeden daha uzun bir hafıza kazandırmak için kullanışlıdır; bu da tek bir konuşma içinde ve hatta birden fazla konuşma boyunca daha yüksek tutarlılık sağlar.
Diğer Kullanımlar
Bu eğitim, olasılıkların yalnızca yüzeyine değiniyor. Veri profesyonelleri için LLM’lerin çok daha fazla kullanım alanı var. İster kişisel bir asistan oluşturmak, ister raporları özetlemek ya da destek dokümanları veya bir bilgi tabanı hakkında soruları yanıtlamakla ilgilenin, LangChain aklınıza gelebilecek her veri hattına veya veri uygulamasına yapay zekayı dahil etmek için bir çerçeve sunar.
Bir Sonraki Seviyeye Taşıyın
LangChain içeriği yakında DataCamp’te olacak. Bu arada, burada ele alınan kullanım alanlarından biri hakkında bilgi edinmek için Python’da Sohbet Botları Oluşturma kursunu alabilirsiniz.
