CarFinanceAgent / chatbot /tools /rag_tool.py
emreceniklioglu
Initial commit: LangGraph multi-agent car finance chatbot
49102bb
Raw
History Blame Contribute Delete
1.42 kB
"""
tools/rag_tool.py — RAG Retrieval Aracı
AGENTIC PATTERN: Tool Use + Long-Term Memory
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
FAQ agent bu tool'u çağırarak ChromaDB'den ilgili chunk'ları getirir.
Tool; embed et → ara → döndür işlemini kapsüller.
FAQ agent'ı sadece READ yetkisine sahiptir; slot okuyamaz/yazamaz.
"""
from langchain_core.tools import tool
from memory.vector_store import search_faq
from config import RAG_TOP_K
@tool
def retrieve_faq(query: str, top_k: int = RAG_TOP_K) -> dict:
"""
Kullanıcı sorusuna en alakalı SSS içeriklerini getirir.
Args:
query: Kullanıcının sorusu
top_k: Kaç chunk getirileceği (varsayılan config'den)
Returns:
{"chunks": [{"text": str, "title": str, "distance": float}],
"context": str} # LLM'e doğrudan verilecek birleşik metin
"""
chunks = search_faq(query, top_k=top_k)
if not chunks:
return {
"chunks": [],
"context": "Bu konuda SSS dokümanında bilgi bulunamadı.",
}
# LLM'e verilecek context metnini oluştur
context_parts = []
for i, chunk in enumerate(chunks, 1):
context_parts.append(f"[{i}] {chunk['title']}\n{chunk['text']}")
return {
"chunks": chunks,
"context": "\n\n".join(context_parts),
}