LangChain, Large Language Model'leri (LLM) kullanarak gelişmiş AI uygulamaları oluşturmak için tasarlanmış açık kaynaklı bir framework'tür. RAG sistemleri, chatbotlar, AI agent'lar ve zincirlenmiş işlemler için kapsamlı araçlar sunar.
LangChain Nedir?
LangChain, LLM tabanlı uygulamaların karmaşıklığını yönetmek için modüler bir yapı sunar:
- Model I/O: LLM'lerle etkileşim
- Retrieval: Veri getirme ve RAG
- Agents: Otonom karar verme
- Chains: İşlem zincirleri
- Memory: Konuşma geçmişi
Kurulum
pip install langchain langchain-openai langchain-community pip install chromadb faiss-cpu # Vector store için
Temel Kullanım
from langchain_openai import ChatOpenAI
from langchain.prompts import ChatPromptTemplate
# Model oluştur
llm = ChatOpenAI(model="gpt-4-turbo-preview", temperature=0.7)
# Prompt template
prompt = ChatPromptTemplate.from_messages([
("system", "Sen bir {role} uzmanısın."),
("user", "{input}")
])
# Chain oluştur
chain = prompt | llm
# Çalıştır
response = chain.invoke({"role": "Python", "input": "Decorator nedir?"})
print(response.content)
RAG (Retrieval Augmented Generation)
from langchain_community.document_loaders import PyPDFLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain_openai import OpenAIEmbeddings
from langchain_community.vectorstores import Chroma
from langchain.chains import RetrievalQA
# Dokümanları yükle
loader = PyPDFLoader("document.pdf")
documents = loader.load()
# Parçala
text_splitter = RecursiveCharacterTextSplitter(
chunk_size=1000,
chunk_overlap=200
)
splits = text_splitter.split_documents(documents)
# Vector store oluştur
embeddings = OpenAIEmbeddings()
vectorstore = Chroma.from_documents(splits, embeddings)
# RAG chain
qa_chain = RetrievalQA.from_chain_type(
llm=ChatOpenAI(),
retriever=vectorstore.as_retriever(),
chain_type="stuff"
)
answer = qa_chain.invoke("Dokümanda ne anlatılıyor?")
Memory (Konuşma Geçmişi)
from langchain.memory import ConversationBufferMemory
from langchain.chains import ConversationChain
memory = ConversationBufferMemory()
conversation = ConversationChain(
llm=ChatOpenAI(),
memory=memory,
verbose=True
)
conversation.predict(input="Merhaba, ben Ali")
conversation.predict(input="Adımı hatırlıyor musun?") # "Evet, Ali"
Agents
from langchain.agents import create_openai_functions_agent, AgentExecutor
from langchain.tools import Tool
from langchain import hub
# Tool tanımla
def calculator(expression: str) -> str:
return str(eval(expression))
tools = [
Tool(
name="Calculator",
func=calculator,
description="Matematiksel işlemler için kullan"
)
]
# Agent oluştur
prompt = hub.pull("hwchase17/openai-functions-agent")
agent = create_openai_functions_agent(ChatOpenAI(), tools, prompt)
agent_executor = AgentExecutor(agent=agent, tools=tools)
result = agent_executor.invoke({"input": "25 * 48 kaç eder?"})
Output Parsers
from langchain.output_parsers import PydanticOutputParser
from pydantic import BaseModel, Field
class Product(BaseModel):
name: str = Field(description="Ürün adı")
price: float = Field(description="Fiyat")
description: str = Field(description="Açıklama")
parser = PydanticOutputParser(pydantic_object=Product)
prompt = ChatPromptTemplate.from_template(
"Bir ürün bilgisi oluştur:\n{format_instructions}\nÜrün: {product}"
)
chain = prompt | llm | parser
product = chain.invoke({
"product": "akıllı saat",
"format_instructions": parser.get_format_instructions()
})
LangSmith (Monitoring)
# .env LANGCHAIN_TRACING_V2=true LANGCHAIN_API_KEY=your_key # Otomatik olarak tüm chain çağrıları loglanır
Best Practices
- Modüler chain'ler oluşturun
- Error handling ekleyin
- Caching kullanın (LangChain cache)
- Prompt'ları versiyon kontrol edin
- LangSmith ile debug yapın
LangChain, LLM tabanlı uygulamaların karmaşıklığını yönetmenin standart yolu haline geldi. RAG, agents ve chains ile güçlü AI sistemleri oluşturun.