IntegrationsLlamaIndex

LlamaIndex

LlamaIndex tools for Hotdata — give your agents SQL execution and managed database access in a few lines of code.

Install

pip install hotdata-llamaindex

Authentication

Set HOTDATA_API_KEY in your environment. Optionally set HOTDATA_WORKSPACE to pin a specific workspace.

Quickstart

from hotdata_runtime import from_env
from hotdata_llamaindex import make_hotdata_tools
from llama_index.llms.openai import OpenAI
from llama_index.core.agent import ReActAgent

client = from_env()
tools = make_hotdata_tools(client)

agent = ReActAgent.from_tools(tools, llm=OpenAI(model="gpt-4o"), verbose=True)
response = agent.chat("How many orders are in the database?")
print(response)

Tools

make_hotdata_tools returns four FunctionTool objects ready to pass to any LlamaIndex agent:

ToolDescription
hotdata_execute_sqlRun SQL and return JSON rows
hotdata_list_managed_databasesList Hotdata-managed databases
hotdata_create_managed_databaseCreate a database and declare tables
hotdata_load_managed_tableLoad a local parquet file into a table
tools = make_hotdata_tools(
    client,
    max_rows=50,       # rows returned to the agent per query (default 100)
    database=None,     # pin to a specific database id (optional)
)

Run SQL directly

from hotdata_llamaindex import execute_sql_json, result_rows_for_llm

# Returns a JSON string — useful for building custom tool wrappers
json_str = execute_sql_json(client, "SELECT * FROM orders LIMIT 5")

# Returns list[dict] from a QueryResult, trimmed to max_rows
result = client.execute_sql("SELECT * FROM orders LIMIT 100")
rows = result_rows_for_llm(result, max_rows=20)

Managed databases

from hotdata_llamaindex.databases import (
    create_managed_database,
    list_managed_databases_json,
    load_managed_table,
)

# Create a database and declare tables
db = create_managed_database(
    client,
    name="sales",
    schema="public",
    tables=["orders", "customers"],
)

# Load a local parquet file into a declared table
loaded = load_managed_table(
    client,
    database=db.id,
    table="orders",
    file="orders.parquet",
)
print(f"Loaded {loaded.row_count} rows → {loaded.full_name}")

# Get all databases as a JSON string (for agents)
print(list_managed_databases_json(client))

See also