Waii Tool
This tool connects to database connections managed by Waii, which allows generic SQL queries, do performance analyze, describe a SQL query, and more.
Usage
First you need to create a waii.ai account, you request an account from here.
Initialize the tool with your account credentials:
from llama_index.tools.waii import WaiiToolSpec
waii_tool = WaiiToolSpec(
url="https://tweakit.waii.ai/api/",
# API Key of Waii (not OpenAI API key)
api_key="...",
# Connection key of WAII connected database, see https://github.com/waii-ai/waii-sdk-py#get-connections
database_key="...",
)
Tools
The tools available are:
get_answer: Get answer to natural language question (which generate a SQL query, run it, explain the result)describe_query: Describe a SQL queryperformance_analyze: Analyze performance of a SQL query (by query_id)diff_query: Compare two SQL queriesdescribe_dataset: Describe dataset, such as table, schema, etc.transcode: Transcode SQL query to another SQL dialectget_semantic_contexts: Get semantic contexts of a SQL querygenerate_query_only: Generate SQL query only (not run it)run_query: Run a SQL query
You can also load the data directly call load_data
Examples
Load data
documents = waii_tool.load_data("Get all tables with their number of columns")
index = VectorStoreIndex.from_documents(documents).as_query_engine()
print(index.query("Which table contains most columns?"))
Use as a Tool
Initialize the agent:
from llama_index.core.agent.workflow import FunctionAgent
from llama_index.llms.openai import OpenAI
agent = FunctionAgent(
tools=waii_tool.to_tool_list(), llm=OpenAI(model="gpt-4-1106-preview")
)
Ask simple question
from llama_index.core.workflow import Context
ctx = Context(agent)
print(
await agent.run(
"Give me top 3 countries with the most number of car factory", ctx=ctx
)
)
print(
await agent.run("What are the car factories of these countries", ctx=ctx)
)
Do performance analyze
from llama_index.core.workflow import Context
ctx = Context(agent)
print(
await agent.run(
"Give me top 3 longest running queries, and their duration.", ctx=ctx
)
)
print(await agent.run("analyze the 2nd-longest running query", ctx=ctx))
Diff two queries
previous_query = """
SELECT
employee_id,
department,
salary,
AVG(salary) OVER (PARTITION BY department) AS department_avg_salary,
salary - AVG(salary) OVER (PARTITION BY department) AS diff_from_avg
FROM
employees;
"""
current_query = """
SELECT
employee_id,
department,
salary,
MAX(salary) OVER (PARTITION BY department) AS department_max_salary,
salary - AVG(salary) OVER (PARTITION BY department) AS diff_from_avg
FROM
employees;
LIMIT 100;
"""
print(
await agent.run(
f"tell me difference between {previous_query} and {current_query}",
ctx=ctx,
)
)
Describe dataset
print(await agent.run("Summarize the dataset", ctx=ctx))
print(
await agent.run(
"Give me questions which I can ask about this dataset", ctx=ctx
)
)
Describe a query
q = """
SELECT
employee_id,
department,
salary,
AVG(salary) OVER (PARTITION BY department) AS department_avg_salary,
salary - AVG(salary) OVER (PARTITION BY department) AS diff_from_avg
FROM
employees;
"""
print(await agent.run(f"what this query can do? {q}", ctx=ctx))
Migrate query to another dialect
q = """
from pyspark.sql import SparkSession
from pyspark.sql.functions import avg, col
from pyspark.sql.window import Window
# Initialize Spark session
spark = SparkSession.builder.appName("example").getOrCreate()
# Assuming you have a DataFrame called 'employees'
# If not, you need to read your data into a DataFrame first
# Define window specification
windowSpec = Window.partitionBy("department")
# Perform the query
result = (employees
.select(
col("employee_id"),
col("department"),
col("salary"),
avg("salary").over(windowSpec).alias("department_avg_salary"),
(col("salary") - avg("salary").over(windowSpec)).alias("diff_from_avg")
))
# Show the result
result.show()
"""
print(
await agent.run(f"translate this pyspark query {q}, to Snowflake", ctx=ctx)
)
Use Waii API directly
You can also use Waii API directly, see here
Metadata
Release files for llama-index-tools-waii 0.6.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| llama_index_tools_waii-0.6.0.tar.gz | 6.6 kB | Without provenance | Details for llama_index_tools_waii-0.6.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| llama_index_tools_waii-0.6.0-py3-none-any.whl | Python 3 | none | any | Details for llama_index_tools_waii-0.6.0-py3-none-any.whl |
Total release size: 12.9 kB
Release files / llama_index_tools_waii-0.6.0.tar.gz
| Download URL | llama_index_tools_waii-0.6.0.tar.gz |
|---|---|
| Size | 6.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d73d32071fc0ffa65a8a391bb4d143d9040df2e1f3e76577663281eb95547d9f
|
|
BLAKE2b-256 checksum How to use checksums |
b58ab879cd32b05281e16a28c9bddcaf7d820642dc9a814eba7b48c7dfd60eea
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.7 {"installer":{"name":"uv","version":"0.12.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / llama_index_tools_waii-0.6.0-py3-none-any.whl
| Download URL | llama_index_tools_waii-0.6.0-py3-none-any.whl |
|---|---|
| Size | 6.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d7b3da5a058f77549fcca13efe45f213c01c18cba591ff58c30aecef76317e86
|
|
BLAKE2b-256 checksum How to use checksums |
9f6c8d8792d14d1aa935f79ba71de7af47f5507a007833e3c1cff9f1112a51a4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.7 {"installer":{"name":"uv","version":"0.12.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Security for llama-index-tools-waii 0.6.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.