müfettiş
Moderatör
- Katılım
- 20 Ocak 2024
- Mesajlar
- 325
- Tepkime puanı
- 1
- Puanları
- 18
Yapay zeka dünyası, ChatGPT'nin hayatımıza girmesiyle büyük bir kırılma yaşadı. Ancak bir Large Language Model (LLM - Büyük Dil Modeli) ile basitçe sohbet etmekle, bu modelleri kullanarak kurumsal düzeyde bir uygulama geliştirmek arasında devasa bir fark vardır. İşte tam bu noktada LangChain devreye giriyor.
LangChain, geliştiricilerin LLM'leri (GPT-4o, Claude, Llama vb.) harici veri kaynakları, yazılım araçları ve karmaşık iş akışlarıyla birleştirmesine olanak tanıyan en popüler açık kaynaklı çerçevedir (framework).
LangChain, geliştiricilerin LLM'leri (GPT-4o, Claude, Llama vb.) harici veri kaynakları, yazılım araçları ve karmaşık iş akışlarıyla birleştirmesine olanak tanıyan en popüler açık kaynaklı çerçevedir (framework).
LangChain Nedir?
2022'nin sonlarında Harrison Chase tarafından başlatılan LangChain, "dil modelleriyle güçlendirilmiş uygulamalar oluşturma" sürecini standartlaştıran bir kütüphanedir. Temel amacı, bir LLM'i sadece bir metin kutusu olmaktan çıkarıp, gerçek dünyadaki verilere erişebilen ve bu verilerle işlem yapabilen "akıllı bir ajan" haline getirmektir.Neden Sadece API Kullanmıyoruz?
Doğrudan OpenAI veya Anthropic API'lerini kullanmak, basit görevler için yeterlidir. Ancak şu senaryoları düşünün:- Modelin kendi eğitim verisinde olmayan (örneğin şirket içi PDF dökümanları) verilerle çalışması.
- Bir işlemin sonucuna göre bir sonraki adıma karar vermesi (Mantıksal zincirleme).
- Kullanıcı ile geçmiş konuşmaların devasa bir bellekte (Memory) tutulması.
LangChain’in Temel Bileşenleri (6 Ana Sütun)
LangChain'i anlamak için onun yapı taşlarını tanımak gerekir. Bu kütüphane, "zincirleme" (chaining) mantığı üzerine kuruludur.1. Model I/O (Girdi ve Çıktı Yönetimi)
Dil modelleriyle etkileşimi yönetir. Prompt (istem) şablonları oluşturmanıza, farklı LLM sağlayıcıları arasında kolayca geçiş yapmanıza ve modelden gelen yanıtları (JSON gibi) yapılandırılmış verilere dönüştürmenize olanak tanır.2. Data Connection (Veri Bağlantısı)
LLM'lerin en büyük zayıflığı, eğitim verilerinin bir kesilme tarihi olmasıdır. LangChain; PDF, CSV, SQL veritabanları veya web siteleri gibi harici kaynaklardan veri çekmenizi sağlar.- Document Loaders: Veriyi sisteme yükler.
- Vector Stores: Veriyi sayısal vektörlere dönüştürerek hızlı arama yapılabilir hale getirir.
3. Chains (Zincirler)
İsmini buradan alan bu bileşen, birden fazla bileşeni birbirine bağlar. Örneğin: "Bir soruyu al -> İlgili dökümanı bul -> Yanıtı özetle -> Yanıtı Fransızca'ya çevir." Bu adımların her biri bir zincir halkasıdır.4. Memory (Hafıza)
LLM'ler doğası gereği "durumsuz" (stateless) çalışır; yani bir önceki mesajı hatırlamazlar. LangChain, geçmiş konuşmaları depolamak ve her yeni soruda bu bağlamı modele sunmak için gelişmiş hafıza mekanizmaları sunar.5. Agents (Ajanlar)
Ajanlar, hangi adımın atılacağına modelin kendisinin karar verdiği yapılardır. Model, elindeki araçlara (Google Arama, Hesap Makinesi, Python Konsolu) bakarak "Bu soruyu cevaplamak için önce şu aracı kullanmalıyım" diyebilir.6. Callbacks (Geri Çağırmalar)
Uygulamanın ara adımlarını izlemenizi, günlüklemenizi (logging) ve performans ölçümü yapmanızı sağlar.Adım Adım LLM Uygulaması Geliştirme Rehberi
Bir LangChain projesine başlarken izlemeniz gereken standart bir yol haritası vardır. Gelin, popüler bir RAG (Retrieval-Augmented Generation) uygulaması üzerinden gidelim.Adım 1: Ortamın Hazırlanması
Python ortamınızda gerekli paketleri yükleyerek başlayın:
Kod:
pip install langchain langchain-openai chromadb pypdf
Adım 2: Veri Yükleme ve Parçalama (Chunking)
Uzun bir dökümanı modele doğrudan gönderemezsiniz (token sınırları nedeniyle). Veriyi küçük parçalara bölmek gerekir.
Kod:
from langchain_community.document_loaders import PyPDFLoader
from langchain_text_splitters import RecursiveCharacterTextSplitter
loader = PyPDFLoader("sirket_politikasi.pdf")
docs = loader.load()
text_splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=200)
splits = text_splitter.split_documents(docs)
Adım 3: Embedding ve Vektör Veritabanı
Metinleri, yapay zekanın anlayabileceği sayılara (embedding) dönüştürüp bir veritabanına kaydediyoruz.Adım 4: Soru-Cevap Zinciri Kurma
Artık kullanıcı soru sorduğunda, sistem önce veritabanında arama yapar ve bulduğu bilgiyi LLM'e sunar.
Kod:
from langchain.chains import RetrievalQA
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(model_name="gpt-4o", temperature=0)
qa_chain = RetrievalQA.from_chain_type(llm, retriever=vectorstore.as_retriever())
print(qa_chain.run("Yıllık izin politikamız nedir?"))
LangChain Kullanmanın Avantajları
- Esneklik: Bugün OpenAI kullanırken yarın kodunuzda minimum değişiklikle yerel bir Llama-3 modeline geçebilirsiniz.
- Hız: Karmaşık mantıksal akışları sıfırdan yazmak yerine hazır "Chain" yapılarını kullanırsınız.
- Topluluk Desteği: En yeni AI teknikleri (örneğin Self-Reflection veya Chain-of-Thought) hızla LangChain'e entegre edilir.