llama-index-tools-waii


Namellama-index-tools-waii JSON
Version 0.2.0 PyPI version JSON
download
home_pageNone
Summaryllama-index tools waii integration
upload_time2024-08-22 07:42:57
maintainerwangdatan
docs_urlNone
authorYour Name
requires_python<4.0,>=3.8.1
licenseMIT
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # 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](https://waii.ai/).

Initialize the tool with your account credentials:

```python
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 query
- `performance_analyze`: Analyze performance of a SQL query (by query_id)
- `diff_query`: Compare two SQL queries
- `describe_dataset`: Describe dataset, such as table, schema, etc.
- `transcode`: Transcode SQL query to another SQL dialect
- `get_semantic_contexts`: Get semantic contexts of a SQL query
- `generate_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

```python
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:

```python
from llama_index.agent.openai import OpenAIAgent
from llama_index.llms.openai import OpenAI

agent = OpenAIAgent.from_tools(
    waii_tool.to_tool_list(), llm=OpenAI(model="gpt-4-1106-preview")
)
```

#### Ask simple question

```python
agent.chat("Give me top 3 countries with the most number of car factory")
agent.chat("What are the car factories of these countries")
```

#### Do performance analyze

```python
agent.chat("Give me top 3 longest running queries, and their duration.")
agent.chat("analyze the 2nd-longest running query")
```

#### Diff two queries

```python
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;
"""
agent.chat(f"tell me difference between {previous_query} and {current_query}")
```

#### Describe dataset

```python
agent.chat("Summarize the dataset")
agent.chat("Give me questions which I can ask about this dataset")
```

#### Describe a query

```python
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;
"""
agent.chat(f"what this query can do? {q}")
```

#### Migrate query to another dialect

```python
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()
"""
agent.chat(f"translate this pyspark query {q}, to Snowflake")
```

### Use Waii API directly

You can also use Waii API directly, see [here](https://github.com/waii-ai/waii-sdk-py)

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "llama-index-tools-waii",
    "maintainer": "wangdatan",
    "docs_url": null,
    "requires_python": "<4.0,>=3.8.1",
    "maintainer_email": null,
    "keywords": null,
    "author": "Your Name",
    "author_email": "you@example.com",
    "download_url": "https://files.pythonhosted.org/packages/81/42/dfef0475622ecb866fae8880f758e2e4f001bf57ed02de096eede838505a/llama_index_tools_waii-0.2.0.tar.gz",
    "platform": null,
    "description": "# Waii Tool\n\nThis tool connects to database connections managed by Waii, which allows generic SQL queries, do performance analyze, describe a SQL query, and more.\n\n## Usage\n\nFirst you need to create a waii.ai account, you request an account from [here](https://waii.ai/).\n\nInitialize the tool with your account credentials:\n\n```python\nfrom llama_index.tools.waii import WaiiToolSpec\n\nwaii_tool = WaiiToolSpec(\n    url=\"https://tweakit.waii.ai/api/\",\n    # API Key of Waii (not OpenAI API key)\n    api_key=\"...\",\n    # Connection key of WAII connected database, see https://github.com/waii-ai/waii-sdk-py#get-connections\n    database_key=\"...\",\n)\n```\n\n## Tools\n\nThe tools available are:\n\n- `get_answer`: Get answer to natural language question (which generate a SQL query, run it, explain the result)\n- `describe_query`: Describe a SQL query\n- `performance_analyze`: Analyze performance of a SQL query (by query_id)\n- `diff_query`: Compare two SQL queries\n- `describe_dataset`: Describe dataset, such as table, schema, etc.\n- `transcode`: Transcode SQL query to another SQL dialect\n- `get_semantic_contexts`: Get semantic contexts of a SQL query\n- `generate_query_only`: Generate SQL query only (not run it)\n- `run_query`: Run a SQL query\n\nYou can also load the data directly call `load_data`\n\n## Examples\n\n### Load data\n\n```python\ndocuments = waii_tool.load_data(\"Get all tables with their number of columns\")\nindex = VectorStoreIndex.from_documents(documents).as_query_engine()\n\nprint(index.query(\"Which table contains most columns?\"))\n```\n\n### Use as a Tool\n\n#### Initialize the agent:\n\n```python\nfrom llama_index.agent.openai import OpenAIAgent\nfrom llama_index.llms.openai import OpenAI\n\nagent = OpenAIAgent.from_tools(\n    waii_tool.to_tool_list(), llm=OpenAI(model=\"gpt-4-1106-preview\")\n)\n```\n\n#### Ask simple question\n\n```python\nagent.chat(\"Give me top 3 countries with the most number of car factory\")\nagent.chat(\"What are the car factories of these countries\")\n```\n\n#### Do performance analyze\n\n```python\nagent.chat(\"Give me top 3 longest running queries, and their duration.\")\nagent.chat(\"analyze the 2nd-longest running query\")\n```\n\n#### Diff two queries\n\n```python\nprevious_query = \"\"\"\nSELECT\n    employee_id,\n    department,\n    salary,\n    AVG(salary) OVER (PARTITION BY department) AS department_avg_salary,\n    salary - AVG(salary) OVER (PARTITION BY department) AS diff_from_avg\nFROM\n    employees;\n\"\"\"\ncurrent_query = \"\"\"\nSELECT\n    employee_id,\n    department,\n    salary,\n    MAX(salary) OVER (PARTITION BY department) AS department_max_salary,\n    salary - AVG(salary) OVER (PARTITION BY department) AS diff_from_avg\nFROM\n    employees;\nLIMIT 100;\n\"\"\"\nagent.chat(f\"tell me difference between {previous_query} and {current_query}\")\n```\n\n#### Describe dataset\n\n```python\nagent.chat(\"Summarize the dataset\")\nagent.chat(\"Give me questions which I can ask about this dataset\")\n```\n\n#### Describe a query\n\n```python\nq = \"\"\"\nSELECT\n    employee_id,\n    department,\n    salary,\n    AVG(salary) OVER (PARTITION BY department) AS department_avg_salary,\n    salary - AVG(salary) OVER (PARTITION BY department) AS diff_from_avg\nFROM\n    employees;\n\"\"\"\nagent.chat(f\"what this query can do? {q}\")\n```\n\n#### Migrate query to another dialect\n\n```python\nq = \"\"\"\nfrom pyspark.sql import SparkSession\nfrom pyspark.sql.functions import avg, col\nfrom pyspark.sql.window import Window\n\n# Initialize Spark session\nspark = SparkSession.builder.appName(\"example\").getOrCreate()\n\n# Assuming you have a DataFrame called 'employees'\n# If not, you need to read your data into a DataFrame first\n\n# Define window specification\nwindowSpec = Window.partitionBy(\"department\")\n\n# Perform the query\nresult = (employees\n          .select(\n              col(\"employee_id\"),\n              col(\"department\"),\n              col(\"salary\"),\n              avg(\"salary\").over(windowSpec).alias(\"department_avg_salary\"),\n              (col(\"salary\") - avg(\"salary\").over(windowSpec)).alias(\"diff_from_avg\")\n          ))\n\n# Show the result\nresult.show()\n\"\"\"\nagent.chat(f\"translate this pyspark query {q}, to Snowflake\")\n```\n\n### Use Waii API directly\n\nYou can also use Waii API directly, see [here](https://github.com/waii-ai/waii-sdk-py)\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "llama-index tools waii integration",
    "version": "0.2.0",
    "project_urls": null,
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "24ff9b9404558cb707d75f35549750f251244fcedeb1ace6d3d215449c142968",
                "md5": "097f9b0bd8533ceae6e574d76df67098",
                "sha256": "e78a0d633cda1093af268cc8a71c1d4bb427c388f2cef285e9a5b48389a7e89a"
            },
            "downloads": -1,
            "filename": "llama_index_tools_waii-0.2.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "097f9b0bd8533ceae6e574d76df67098",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": "<4.0,>=3.8.1",
            "size": 5404,
            "upload_time": "2024-08-22T07:42:56",
            "upload_time_iso_8601": "2024-08-22T07:42:56.869294Z",
            "url": "https://files.pythonhosted.org/packages/24/ff/9b9404558cb707d75f35549750f251244fcedeb1ace6d3d215449c142968/llama_index_tools_waii-0.2.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "8142dfef0475622ecb866fae8880f758e2e4f001bf57ed02de096eede838505a",
                "md5": "d90e2eaff05a81ed9abc138b1896540c",
                "sha256": "5c9f977382561b8cf7c25acdc333d3ca3b59b4138c177e0f5ad7cd90c8ae844c"
            },
            "downloads": -1,
            "filename": "llama_index_tools_waii-0.2.0.tar.gz",
            "has_sig": false,
            "md5_digest": "d90e2eaff05a81ed9abc138b1896540c",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "<4.0,>=3.8.1",
            "size": 5158,
            "upload_time": "2024-08-22T07:42:57",
            "upload_time_iso_8601": "2024-08-22T07:42:57.765457Z",
            "url": "https://files.pythonhosted.org/packages/81/42/dfef0475622ecb866fae8880f758e2e4f001bf57ed02de096eede838505a/llama_index_tools_waii-0.2.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-08-22 07:42:57",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "llama-index-tools-waii"
}
        
Elapsed time: 0.38633s