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:
| Tool | Description |
|---|---|
hotdata_execute_sql | Run SQL and return JSON rows |
hotdata_list_managed_databases | List Hotdata-managed databases |
hotdata_create_managed_database | Create a database and declare tables |
hotdata_load_managed_table | Load 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
- hotdata-llamaindex on GitHub
- LlamaIndex
- Python SDK — core
HotdataClientreference