Bu proje, LangGraph ve Tavily (Web Search) kullanılarak geliştirilmiş, çoklu otonom ajanın (Multi-Agent) belirli bir konuyu araştırıp kendi aralarında münazara ettiği (Debate) akıllı bir karar destek sistemidir.
Kullanıcının girdiği konu üzerine 3 farklı jüri ajanı farklı perspektiflerden (Resmi/Tarihi, Sosyal Medya/Kamuoyu, Akademik/Bilimsel) web araştırması yapar. Ajanlar 3 tur boyunca tez ve anti-tezler üreterek birbirlerinin argümanlarını çürütmeye çalışır. Sürecin sonunda Judge Agent (Yargıç Ajan), tüm tartışma geçmişini sentezleyerek nihai bir karar verir ve jüri üyelerini performanslarına göre 1-10 arası puanlar.
📖 Projenin teknik mimarisini, LangGraph döngülerini ve otonom ajanların nasıl çalıştığını tüm detaylarıyla anlattığım Medium makalemi okuyabilirsiniz: LangGraph ile Münazara Yapan Agent'lar: Jüri Agent'ları ve Judge Agent Mimarisi
Aşağıdaki şema, kullanıcı isteğinin ajanlara nasıl dağıtıldığını (Fan-Out), argümanların nasıl birleştirildiğini (Fan-In) ve koşullu döngülerle (Conditional Edges) sürecin nasıl yargıca bağlandığını göstermektedir.
- Dispatcher (Dağıtıcı): Kullanıcı bir konu girer. Soru paralel (eşzamanlı) olarak 3 farklı Juri (Jury) Agent'a iletilir.
- Jury Agent'lar (ReAct System): Her jüri, kendi sistem prompt'unda belirtilen kimliğe bürünür. Tavily arama motorunu kullanarak web üzerinde canlı araştırma yaparlar ve
Structured Output (Pydantic)ile Tez, Anti-Tez, Gerekçeler ve Kaynaklar üretirler. - Round Checker & Conditional Edge: Her tur bitiminde jürilerin verdikleri yanıtlar ortak hafızada (
State) kalıcı olarak birleştirilir. Sistem 3 tam tura ulaşana kadar ajanları birbiriyle tartıştırmaya (Döngü/Loop) devam eder. Sonraki turlarda ajanlar, hafızaya bakarak bir önceki turun argümanlarını çürütmeyi dener! - Judge Agent (Yargıç): Tartışma 3. turun sonuna geldiğinde yönlendirici kapı (router), akışı Yargıç Ajanına çevirir. Yargıç tüm geçmişi okur, bağlamı oluşturur, son kararını verir ve sürece olan katkılarına göre jürileri puanlar. Ortaya tek ve yapılandırılmış bir "Nihai Karar" çıkar.
- LangGraph: Ajan akışını, durum (state) yönetimini ve döngüsel mantığı kurgulamak için.
- LangChain: Otonom araç (Tavily) kullanımını ve ReAct zincirini oluşturmak için.
- Tavily Search API: Yapay zeka ajanlarının kesintisiz dış dünya (İnternet) bağlantısı ve araştırma yeteneği için.
- OpenAI (GPT-4o & GPT-4o-Mini) API: LLM beyni.
- Pydantic: Ajanların çıktılarını mükemmel, yapılandırılmış (%100 garantili JSON) formatlara sokmak için.
- Streamlit: Süreci saniye saniye görselleştiren canlı, kolay ve dinamik web arayüzü için.
- uv: Şimşek hızında ve güvenli Python paket/ortam yönetimi.
1. Depoyu Klonlayın
git clone https://github.com/saribasmetehan/LangGraph_Jury-Judge.git
cd LangGraph_Jury-Judge2. Gerekli Paketleri Yükleyin
Projede uv kullanılmıştır.
uv sync # Veya standart pip kullanıyorsanız requirements/dependecies kurun3. Çevre Değişkenlerini Ayarlayın
.env.example dosyasını ana dizine .env olarak kopyalayın ve içerisindeki API anahtarlarını doldurun:
OPENAI_API_KEY=sk-senin-openai-anahtarin
TAVILY_API_KEY=tvly-senin-tavily-anahtarin4. Projeyi Ayağa Kaldırın Ajanların çalışmasını ve ekranda akmasını anlık takip etmek için terminale şu komutu yazın:
uv run streamlit run app.py(Uygulama tarayıcınızda http://localhost:8501 adresinde başlayacaktır.)
Tartışma başladığında Streamlit sayesinde ajanların hangi turda çalıştığını, ürettikleri Tez ve Karşıt Görüş argümanlarını eşzamanlı izleyebilirsiniz. Süreç bittiğinde Yargıcın 3 ayrı renk kodlanmış jüri metrik skorlamasını görüntüleyebilirsiniz.
Yapay zekanın sınırlarını LangGraph ile test ettiğimiz bu projeyle ilgili daha fazla düşünceniz veya merak ettiğiniz detaylar varsa makaleme göz atmayı unutmayın!
