Büyük Dil Modellerinin (LLM) hızlı evrimi, odağı basit sohbet botlarından akıl yürütme, araç kullanımı ve çok adımlı planlama yapabilen karmaşık, otonom ajanlara kaydırdı. Ancak, sağlam ajan sistemleri oluşturmak genellikle modellerin olasılıksal doğasıyla savaşmak gibi hissettirir. İşte LangGraph burada devreye giriyor. LangChain tarafından geliştirilen LangGraph, LLM'lerin etrafına sarılmış basit bir sarmalayıcı değil; durumlu, çok aktörlü uygulamaları oluşturmak, yönetmek ve dağıtmak için tasarlanmış düşük seviyeli bir orkestrasyon çerçevesidir.
Geleneksel doğrusal zincirlerin aksine LangGraph, geliştiricilere uygulamaları grafikler olarak modellemelerine olanak tanır. Bu paradigma değişikliği, yürütme akışı üzerinde ince ayar kontrolü sağlayarak döngüler, koşullu mantık ve kalıcı durum yönetimine olanak tanır. Bu yazıda, dayanıklı yapay zeka sistemleri oluşturmak için LangGraph'ı nasıl kullanacağımızı keşfedeceğiz.
Neden Doğrusal Zincirlerin Ötesine Geçmeli?
Geleneksel LLM uygulama çerçeveleri genellikle "zincir"lere dayanır; bu, her adımın çıktısını bir sonrakine ileten bir adım dizisidir. Sezgisel olsa da, ajanların yineleme yapması, hataları düzeltmesi veya önceki adımlara geri dönmesi gerektiğinde zincirler başarısız olur. Örneğin, bir araştırma ajanı şunları gerektirebilir: Web'de ara → Bir makaleyi oku → Bilginin yetersiz olduğunu fark et → Tekrar ara → Nihai bir yanıt sentezle.
LangGraph, açık döngülere izin vererek bunu çözer. Uygulama, düğümlerin işlevleri (mantık veya LLM çağrıları) temsil ettiği ve kenarların kontrol akışını tanımladığı bir StateGraph olarak tanımlanır. Bu açık tanım, hata ayıklamayı kolaylaştırır ve belirli noktalarda insan müdahalesine olanak tanır.
Temel Kavramlar: Durum ve Düğümler
LangGraph'ın kalbinde Paylaşılan Durum kavramı yer alır. İşlev çağrıları arasında değişken geçişinin aksine, LangGraph, tüm düğümlerin okuyup güncelleyebileceği paylaşılan bir durum nesnesi sürdürür. Bu durum genellikle TypedDict veya bir Pydantic modeli olarak tanımlanır, bu da tür güvenliğini ve netliği sağlar.
Basit bir destek botu için durum şemasını düşünün:
from typing import TypedDict
class AgentState(TypedDict):
messages: list
intent: str
resolution: str
Her düğüm, mevcut durumu alır ve kısmi bir güncelleme döndüren bir işlevdir. Bu endişelerin ayrımı, orkestrasyon mantığını yeniden yazmadan bireysel bileşenleri (örneğin, LLM modelini veya vektör veritabanını değiştirmek) değiştirmenize olanak tanır.
İlk Ajan Grafiğinizi Oluşturma
Pratik bir örneğe bakalım: Kullanıcı sorgularını niyete dayalı olarak "Yardımcı Asistan"a veya "İade İşleyici"ye yönlendiren basit bir triyaj ajanı.
from langgraph.graph import StateGraph, END
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(model="gpt-4")
def triage_agent(state: AgentState):
prompt = f"Classify the intent of this message: {state['messages'][-1].content}\nReturn only 'help' or 'refund'."
response = llm.invoke(prompt)
intent = response.content.strip().lower()
return {"intent": intent}
def help_agent(state: AgentState):
prompt = "You are a helpful assistant. Answer: " + state['messages'][-1].content
response = llm.invoke(prompt)
return {"resolution": response.content}
def refund_agent(state: AgentState):
return {"resolution": "Your refund request has been logged."}
# Define the graph
graph = StateGraph(AgentState)
# Add nodes
graph.add_node("triage", triage_agent)
graph.add_node("help", help_agent)
graph.add_node("refund", refund_agent)
# Set entry point
graph.set_entry_point("triage")
# Define conditional edges
def route_by_intent(state: AgentState):
if state["intent"] == "refund":
return "refund"
return "help"
graph.add_conditional_edges(
"triage",
route_by_intent,
["help", "refund"]
)
# Finish the graph
graph.add_edge("help", END)
graph.add_edge("refund", END)
# Compile
app = graph.compile()
Bu kod, LangGraph'ın gücünü göstermektedir: triage_agent bir yönlendirici olarak hareket eder ve sonraki yol, dinamik durum güncellemesine bağlıdır. Bu yapıyı LangGraph Studio veya belgeleme için bir Mermaid diyagramı üreten yerleşik .get_graph() yöntemi kullanarak görselleştirebilirsiniz.
Üretim Düşünceleri: Kalıcılık ve Bellek
LangGraph'ın en önemli avantajlarından biri kalıcılık desteğidir. LangGraph Platform ile entegre ederek veya yerel depolama kullanarak, her adımdan sonra durumu noktalayabilirsiniz. Bu şunlara olanak tanır:
- Devam Etme: Bir ajan, API hatası nedeniyle görevin ortasında başarısız olursa, baştan başlamak yerine son başarılı kontrol noktasından yeniden başlayabilirsiniz.
- İnsan Döngüde (Human-in-the-Loop): Grafik yürütmesini duraklatabilir, ara sonuçları onay için bir insana sunabilir ve girdi sağlandığında otomatik olarak devam edebilirsiniz.
- Hata Ayıklama: Belirli bir kontrol noktası durumunu yükleyerek herhangi bir konuşmayı yeniden oynatabilirsiniz.
Sonuç
LangGraph, yapay zeka ajanı alanındaki bir olgunlaşmayı temsil eder. Otomatik zincirlemenin "sihirinden" öteye geçer ve kurumsal düzeyde uygulamalar için gerekli yapısal katırlığı sağlar. Ajan mantığınızı bir grafik olarak ele alarak, gözlemlenebilirlik, kontrol ve dayanıklılık kazanırsınız. LLM yetenekleri büyümeye devam ettikçe, bu yetenekleri hassasiyetle orkestramıza izin veren çerçeveler (LangGraph gibi), güvenilir ve ölçeklenebilir yapay zeka sistemleri oluşturmak için vazgeçilmez olacaktır.