AIMindTool

Description

The AIMindTool is a wrapper around AI-Minds provided by MindsDB. It allows you to query data sources in natural language by simply configuring their connection parameters. This tool is useful when you need answers to questions from your data stored in various data sources including PostgreSQL, MySQL, MariaDB, ClickHouse, Snowflake, and Google BigQuery.

Minds are AI systems that work similarly to large language models (LLMs) but go beyond by answering any question from any data. This is accomplished by:

  • Selecting the most relevant data for an answer using parametric search
  • Understanding the meaning and providing responses within the correct context through semantic search
  • Delivering precise answers by analyzing data and using machine learning (ML) models

Installation

To incorporate this tool into your project, you need to install the Minds SDK:

uv add minds-sdk

Steps to Get Started

To effectively use the AIMindTool, follow these steps:

  1. Package Installation: Confirm that the crewai[tools] and minds-sdk packages are installed in your Python environment.
  2. API Key Acquisition: Sign up for a Minds account here, and obtain an API key.
  3. Environment Configuration: Store your obtained API key in an environment variable named MINDS_API_KEY to facilitate its use by the tool.

Example

The following example demonstrates how to initialize the tool and execute a query:

Code
from crewai_tools import AIMindTool

# Initialize the AIMindTool
aimind_tool = AIMindTool(
    datasources=[
        {
            "description": "house sales data",
            "engine": "postgres",
            "connection_data": {
                "user": "demo_user",
                "password": "demo_password",
                "host": "samples.mindsdb.com",
                "port": 5432,
                "database": "demo",
                "schema": "demo_data"
            },
            "tables": ["house_sales"]
        }
    ]
)

# Run a natural language query
result = aimind_tool.run("How many 3 bedroom houses were sold in 2008?")
print(result)

Parameters

The AIMindTool accepts the following parameters:

  • api_key: Optional. Your Minds API key. If not provided, it will be read from the MINDS_API_KEY environment variable.
  • datasources: A list of dictionaries, each containing the following keys:
    • description: A description of the data contained in the datasource.
    • engine: The engine (or type) of the datasource.
    • connection_data: A dictionary containing the connection parameters for the datasource.
    • tables: A list of tables that the data source will use. This is optional and can be omitted if all tables in the data source are to be used.

A list of supported data sources and their connection parameters can be found here.

Agent Integration Example

Here’s how to integrate the AIMindTool with a CrewAI agent:

Code
from crewai import Agent
from crewai.project import agent
from crewai_tools import AIMindTool

# Initialize the tool
aimind_tool = AIMindTool(
    datasources=[
        {
            "description": "sales data",
            "engine": "postgres",
            "connection_data": {
                "user": "your_user",
                "password": "your_password",
                "host": "your_host",
                "port": 5432,
                "database": "your_db",
                "schema": "your_schema"
            },
            "tables": ["sales"]
        }
    ]
)

# Define an agent with the AIMindTool
@agent
def data_analyst(self) -> Agent:
    return Agent(
        config=self.agents_config["data_analyst"],
        allow_delegation=False,
        tools=[aimind_tool]
    )

Conclusion

The AIMindTool provides a powerful way to query your data sources using natural language, making it easier to extract insights without writing complex SQL queries. By connecting to various data sources and leveraging AI-Minds technology, this tool enables agents to access and analyze data efficiently.