Agent Frameworks

LangGraph'i Ustalıkla Kullanma: Döngüsel Mantıkla Sağlam, Durum Bilgisine Sahip AI Ajanları Oluşturma

Büyük Dil Modelleri (LLM'ler) basit sohbet arayüzlerinden karmaşık otonom ajanlara doğru evrilirken, sağlam durum yönetimi ve kontrol akışına olan ihtiyaç hayati önem kazanıyor. Geleneksel ajan çerçeveleri genellikle sonsuz döngüler, gözlemlenebilirlik eksikliği veya katı doğrusal yürütme yollarıyla mücadele eder. LangGraph sahneye çıkıyor; LangChain'in üzerine inşa edilmiş, geliştiricilerin LLM'ler kullanarak doğrusal olmayan grafiklerle durum bilgisi taşıyan, çok aktörlü uygulamalar oluşturmasını sağlayan bir kütüphanedir. Bu yazıda, LangGraph'ın neden üretim seviyesinde ajan geliştirme için altın standart haline geldiğini ve onu nasıl kullanabileceğinizi keşfedeceğiz.

Geleneksel Zincirlere Karşı Neden LangGraph?

Çoğu LLM uygulaması bir zincir olarak inşa edilir: Çıktı A'nın Girdi B'ye beslendiği adımların doğrusal bir dizisi. Ancak gerçek dünya sorunları nadiren düz bir çizgi izler. Döngüler, dallanma mantığı ve insan onayı için yürütmeyi durdurma yeteneği gerektirirler. LangGraph, ajanınızın mantığını bir grafik olarak ele alır; düğümler hesaplamayı (bir LLM çağrısı veya bir araç yürütme gibi), kenarlar ise kontrol akışını temsil eder.

Temel ayırt edici özellik durum (state) bilgisidir. LangGraph'ta her düğüme paylaşılan bir durum nesnesi üzerinde çalışır. Bu, grafiğin hafızaya sahip olduğu ve karmaşık manuel bağlantılar olmadan adımlar arasında bilgi aktarabildiği anlamına gelir. Ayrıca LangGraph, döngüsel grafikleri destekleyerek ajanların adımları tekrar etmesine, kendini düzeltmesine veya çok adımlı muhakeme yapmasına olanak tanır.

Temel Kavramlar: Durum, Düğümler ve Kenarlar

LangGraph ile bir ajan oluşturmak için üç temel bileşeni tanımlamanız gerekir:

  1. Durum Şeması: Grafik boyunca hangi verilerin kalıcı olduğunu tanımlayan bir TypedDict veya Pydantic modeli.
  2. Düğümler: Mevcut durumu alan, iş yapan ve güncellenmiş bir durum döndüren fonksiyonlar.
  3. Kenarlar: Mevcut duruma göre hangi düğümün bir sonraki adım olarak çalıştırılacağını belirleyen kurallar.

Pratik Örnek: Kendini Düzeltme Arama Ajanı

Pratik bir örnek oluşturalım: Bilgi arayan ve cevabın eksiksiz olup olmadığını doğrulayan bir ajan. Sonuç yetersizse, tekrar aramak için geri döngüye girer. Bu, döngüsel kontrol akışının gücünü gösterir.

from langchain_core.messages import HumanMessage, AIMessage
from langgraph.graph import StateGraph, END
from typing import TypedDict, Annotated, List
import operator

# 1. Durumu Tanımla
class AgentState(TypedDict):
    messages: Annotated[List, operator.add]
    is_answer_complete: bool

# 2. Düğümleri Tanımla (Mantık Fonksiyonları)
def search_node(state: AgentState) -> dict:
    # Bir arama işlemini simüle et
    return {
        "messages": [AIMessage(content="Arama sonuçları: Paris, Fransa'nın başkentidir.")],
        "is_answer_complete": True
    }

def verify_node(state: AgentState) -> dict:
    # Son mesajda yeterli bilgi olup olmadığını kontrol et
    # Gerçek bir senaryoda, bunu bir LLM'e iletirdiniz
    messages = state["messages"]
    last_msg = messages[-1].content
    if "Fransa" in last_msg:
        return {"is_answer_complete": True}
    return {"is_answer_complete": False}

# 3. Grafiği Oluştur
graph_builder = StateGraph(AgentState)

# Düğümleri ekle
graph_builder.add_node("search", search_node)
graph_builder.add_node("verify", verify_node)

# Giriş noktasını ayarla
graph_builder.set_entry_point("search")

# Döngü için koşullu kenarlar ekle
def route_after_search(state: AgentState) -> str:
    if state["is_answer_complete"]:
        return "end"
    return "search" # Eksikse tekrar aramaya dön

# Aramadan doğrulamaya kenar
graph_builder.add_edge("search", "verify")

# Doğrulama sonucuna dayalı koşullu kenar
graph_builder.add_conditional_edges(
    "verify",
    route_after_search,
    {
        "end": END,
        "search": "search"
    }
)

# Grafiği derle
app = graph_builder.compile()

İnsan Döngüsü (Human-in-the-Loop) Özellikleri

LangGraph'in en güçlü özelliklerinden biri, insan döngüsü (HITL) iş akışlarına yerel desteğidir. Grafik durumu kalıcı olduğu için, herhangi bir düğümde yürütmeyi duraklatabilir ve insan müdahalesini bekleyebilirsiniz. Bu, finansal işlemler veya içerik moderasyonu gibi hassas işlemler için kritik öneme sahiptir.

Bunu interrupt fonksiyonunu kullanarak veya bir insan API çağrısı aracılığıyla durumu güncellemeden grafiği duraklatan belirli bir durum bayrağı kontrol ederek elde edebilirsiniz. Bu, ajanınızı siyah kutu bir betikten etkileşimli ve denetlenebilir bir sürece dönüştürür.

Sonuç

LangGraph, LLM uygulamalarını nasıl inşa ettiğimizde önemli bir sıçramayı temsil eder. Grafik teorisini ve açık durum yönetimini benimseyerek, geliştiricilerin sadece daha akıllı değil, aynı zamanda daha güvenilir ve hata ayıklanabilir ajanlar oluşturmasını sağlar. Basit RAG (Retrieval-Augmented Generation) hatlarından öteye geçip, otonom, döngüsel ve çok adımlı ajanlar inşa etmek isteyen orta ve ileri düzey geliştiriciler için LangGraph, modern AI yığınında vazgeçilmez bir araçtır. Mantığınızı bir grafik olarak modellemeye başlayın ve karmaşıklığın yönetilebilir hale geldiğini göreceksiniz.

Share: