Bu çalışmada Google AI tarafından geliştirilen yapay zekâ Gemini API'ı kullanılarak temel bir ReAct Agent projesi geliştirilmiştir.
Projede .env dosyasında içeriğinde şu veriler bulunmaktadır.
• GEMINI_API_KEY=
• LANGCHAIN_API_KEY=
• LANGCHAIN_TRACING_V2=true
• LANGCHAIN_PROJECT=PROJECT_NAME
• TAVILY_API_KEY=
Projede, Gemini AI ile birlikte Langchain ve Langgraph framework'ü kullanılmıştır. Langchain, büyük dil modelleri ile uygulama geliştirilmesinde kullanılmaktadır. Zincir yapısında LLM'lerin birbirleri ile ve insanlar ile konuşmasını sağlamaktadır. Doküman okuma-yükleme, chat geçmişi tutma, embedding işlemleri ve vektör database işlemleri için langchain framework'ünden faydalanılmıştır. LangChain, LLM'ler ile entegrasyon sağlayarak özelleştirilmiş sorgu yönetimi sunmaktadır. Langgraph ise agent oluşturma, chat hafızasını bellekte / veri tabanında tutma gibi hizmetler sunmaktadır.
Bu çalışmada, Tavily kullanılarak LLM modelinin web sayfası araştırmaları ile entegre bir şekilde bir agent yapısında çalışması sağlanmıştır.
Langgraph kullanılarak chat hafızası bir veri tabanı dosyasına kayıt edilmiştir. Bu sayede eski chat konuşmaları kaybolmamıştır ve geliştirilen model daha tutarlı sonuçlar / cevaplar üretmiştir.
Çalışmada kullanılan agent türü reAct'tır. Bu agent langgraph kullanılarak kod içerisinde oluşturulmuştur. Oluşturulan agent parametre olarak; api kullanılarak oluşturulan llm modelini, tavily search sonuçlarını ve Langchain hub üzerinden çekilen hwchase17/react-chat prompt'unu almaktadır. AgentExecutor metotu ise oluşturulan react agent, tavily search sonuçları ve chat hafızasını parametre olarak almaktadır. Aynı thread id içerisinde chat hafızası tutulmaktadır. Thread id değişirse chat hafızası sıfırlanmaktadır.
Çalışmada agent kendi içerisinde soru - cevap mekanizması çalıştırarak kullanıcının girdiği input'u nasıl değerlendireceğine karar vermektedir. Tool kullanmaya ihtiyacı var mı yok mu inputu değerlendirmektedir. Eğer tool kullanıldıysa oradan gelen cevapları da değerlendirerek bir cevap dönmektedir. Sonrasında kullanıcıya en uygun cevabı vermektedir.
Şekil 1'de başlangıç olarak geliştirilen asistan ile bir giriş konuşması yapılmıştır.
Şekil 2'de bilgi almak istenilen konu belirtilmiştir. Burada agent tool kullanması gerektiğine karar vermiştir ve Tavily ile bir web search gerçekleştirmiştir. Sonuçları llm modeli ile değerlendirerek kullanıcıya mantıklı bir cevap dönmüştür.
Şekil 3 ve Şekil 4'te ise tool kullanımına gerek olmadığını düşünerek bir cevap verilmiştir.
Şekil 4. Tool kullanımı olmadan bir örnek çıktı
Şekil 5'te ise konuşmanın son kısmı görülmektedir.
Şekil 5. Konuşma sonu örnek çıktısı