LangChain Nedir?
LangChain, LLM tabanlı uygulamalar geliştirmek için kullanılan bir framework'tür. AI agent'lar, RAG sistemleri ve chatbot'lar oluşturmayı kolaylaştırır.
LangChain ile karmaşık AI uygulamalarını modüler bir şekilde geliştirebilirsiniz.
Temel Kavramlar
1. Chains
Birden fazla LLM çağrısını zincirler:
1import { ChatOpenAI } from "@langchain/openai";2import { ChatPromptTemplate } from "@langchain/core/prompts";3import { StringOutputParser } from "@langchain/core/output_parsers";45const model = new ChatOpenAI({ model: "gpt-4" });67const prompt = ChatPromptTemplate.fromMessages([8 ["system", "Sen profesyonel bir yazar olarak {style} tarzında yaz."],9 ["human", "{topic} hakkında kısa bir yazı yaz."],10]);1112const chain = prompt.pipe(model).pipe(new StringOutputParser());1314const result = await chain.invoke({15 style: "samimi ve eğlenceli",16 topic: "yapay zeka",17});2. RAG (Retrieval Augmented Generation)
Kendi verilerinizle zenginleştirilmiş yanıtlar:
1import { OpenAIEmbeddings } from "@langchain/openai";2import { MemoryVectorStore } from "langchain/vectorstores/memory";3import { RecursiveCharacterTextSplitter } from "langchain/text_splitter";45// Dokümanları parçala6const splitter = new RecursiveCharacterTextSplitter({7 chunkSize: 1000,8 chunkOverlap: 200,9});1011const docs = await splitter.createDocuments([documentText]);1213// Vector store oluştur14const vectorStore = await MemoryVectorStore.fromDocuments(15 docs,16 new OpenAIEmbeddings()17);1819// Retriever al20const retriever = vectorStore.asRetriever();2122// RAG chain oluştur23const ragChain = RunnableSequence.from([24 {25 context: retriever.pipe(formatDocs),26 question: new RunnablePassthrough(),27 },28 prompt,29 model,30 new StringOutputParser(),31]);3. Memory
Konuşma geçmişini hatırlama:
1import { BufferMemory } from "langchain/memory";2import { ConversationChain } from "langchain/chains";34const memory = new BufferMemory();56const chain = new ConversationChain({7 llm: model,8 memory: memory,9});1011// İlk mesaj12await chain.call({ input: "Merhaba, benim adım Ahmet." });1314// İkinci mesaj - önceki konuşmayı hatırlar15const response = await chain.call({ input: "Benim adımı hatırlıyor musun?" });16// Output: "Evet, adınız Ahmet."AI Agent Oluşturma
Tool'lar ile akıllı agent:
1import { DynamicTool } from "@langchain/core/tools";2import { AgentExecutor, createOpenAIFunctionsAgent } from "langchain/agents";34// Custom tool tanımla5const weatherTool = new DynamicTool({6 name: "weather",7 description: "Bir şehrin hava durumunu getirir",8 func: async (city: string) => {9 const response = await fetch(10 `https://api.weather.com/${city}`11 );12 return response.json();13 },14});1516const calculatorTool = new DynamicTool({17 name: "calculator",18 description: "Matematiksel işlemler yapar",19 func: async (expression: string) => {20 return eval(expression).toString();21 },22});2324// Agent oluştur25const tools = [weatherTool, calculatorTool];2627const agent = await createOpenAIFunctionsAgent({28 llm: model,29 tools,30 prompt,31});3233const executor = new AgentExecutor({34 agent,35 tools,36});3738// Agent'ı çalıştır39const result = await executor.invoke({40 input: "İstanbul'un hava durumu nedir ve sıcaklığı Fahrenheit'e çevir",41});Production İpuçları
- Streaming: Uzun yanıtlar için streaming kullanın
- Caching: Embedding'leri cache'leyin
- Rate Limiting: API limitlerini yönetin
- Monitoring: LangSmith ile izleme yapın
Sonuç
LangChain, karmaşık AI uygulamalarını modüler ve bakımı kolay bir şekilde geliştirmenizi sağlar. RAG, memory ve agent kavramlarını iyi anlamak, güçlü AI ürünleri oluşturmanın anahtarıdır.
Fribe.co olarak LangChain ve AI çözümleri geliştiriyoruz. Projenizi konuşalım!
İlgili Yazılar
Projeniz İçin Yardıma mı İhtiyacınız Var?
Modern web teknolojileri ile projelerinizi hayata geçiriyoruz. İlk danışmanlık ücretsiz!
Ücretsiz Danışmanlık Al