Files
task-6a1864f78a94f887e50d46da/tools.py
T
2026-06-04 09:13:28 +00:00

31 lines
993 B
Python

import os
from typing import Any
from langchain.tools import tool
from langchain_ollama import OllamaEmbeddings
from langchain_chroma import Chroma
from langchain_tavily import TavilySearchResults
from vectorstore import create_vectorstore
# Global vector store instance
VECTORSTORE = create_vectorstore()
@tool
def search_local_kb(query: str, top_k: int = 3) -> str:
"""Semantic search in the local ChromaDB knowledge base."""
retriever = VECTORSTORE.as_retriever(search_kwargs={"k": top_k})
docs = retriever.get_relevant_documents(query)
if not docs:
return "No relevant local knowledge found."
return "\n\n".join(doc.page_content for doc in docs)
@tool
def web_search(query: str) -> str:
"""Web search using Tavily."""
tavily = TavilySearchResults(api_key=os.getenv("TAVILY_API_KEY"))
results = tavily.run(query)
if not results:
return "No web results found."
return "\n\n".join(f"{r['title']}\n{r['content']}" for r in results)