Skip to content

hediyeorhan/ReActAgentWithTavily

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ReActAgentWithTavily

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.

TAVILY


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.

AGENT


Ç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.

image
Şekil 1. Başlangıç konuşması

Ş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.

image
Şekil 2. Agent tool kullanım örneği

Şekil 3 ve Şekil 4'te ise tool kullanımına gerek olmadığını düşünerek bir cevap verilmiştir.

image
Şekil 3. Tool kullanımı olmadan bir örnek çıktı

image
Şekil 4. Tool kullanımı olmadan bir örnek çıktı

Şekil 5'te ise konuşmanın son kısmı görülmektedir.

image
Şekil 5. Konuşma sonu örnek çıktısı