An open API service indexing awesome lists of open source software.

https://github.com/hediyeorhan/reactagentwithtavily


https://github.com/hediyeorhan/reactagentwithtavily

agentexecuter gemini-api langchain langchain-agents langchain-hub langgraph react-agent sqlitesaver tavily-search

Last synced: about 2 months ago
JSON representation

Awesome Lists containing this project

README

          

# 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ı