|
from langchain.agents import tool
|
|
import requests
|
|
import os
|
|
from dotenv import load_dotenv
|
|
from urllib.parse import urljoin
|
|
|
|
load_dotenv()
|
|
|
|
API_URL = os.getenv("API_DATABASE_VECTORIAL_URL")
|
|
ENDPOINTS = {
|
|
"base": "/db_vectorial",
|
|
"list": "/list",
|
|
"search": "/search",
|
|
"exists": "/exists",
|
|
}
|
|
|
|
|
|
@tool
|
|
def exists_database(database_name: str) -> str:
|
|
"""Check if a database exists."""
|
|
url = urljoin(API_URL, f"{ENDPOINTS['base']}{ENDPOINTS['exists']}/{database_name}")
|
|
return str(requests.get(url).json())
|
|
|
|
|
|
@tool
|
|
def list_databases() -> str:
|
|
"""List databases."""
|
|
url = urljoin(API_URL, f"{ENDPOINTS['base']}{ENDPOINTS['list']}")
|
|
return str(requests.get(url).json())
|
|
|
|
|
|
@tool
|
|
def search_database(
|
|
database_name: str, query: str, k: int = 5, source: str = None
|
|
) -> str:
|
|
"""Search in a database."""
|
|
url = urljoin(API_URL, f"{ENDPOINTS['base']}{ENDPOINTS['search']}")
|
|
data = {"database_name": database_name, "query": query, "k": k, "source": source}
|
|
response = requests.post(url, json=data)
|
|
return str(response.json())
|
|
|