This system aims to generate sql queries based in the context of a question or instruction.
- Receives a text input and checks if the input is valid.
- If the input is in Portuguese, it translates it to English.
- With the input processed, the Vanna AI service is used to generate a SQL query.
It's necessary to create an account on the Vanna AI platform and also obtain a key for Google Gemini.
Vanna AI (https://vanna.ai/)
Google Gemini (https://ai.google.dev/aistudio)
In Vanna platform, create a new model, which will be used in the configuration (VANNA_MODEL).
- Python 3.11 with FastAPI
- MySQL 8.0.32
Create a build/mysql folder, to hold a volume for the database.
$ mkdir -t build/mysql
$ chmod -R 777 build/mysql
Create a copy of .env.example and fill the variables with the values of your choice (i.e. your database credentials, etc)
$ cp .env.example .env
Make shell script files executable
$ chmod +x start.sh
Run at project root
$ ./start.sh
Run the tests to verify that the installation completed successfully.
$ docker exec -it api pytest
$ ./commit.sh
$ docker compose up -d
Create tables in an Access database (named "northwind_test" as specified in your .env configuration file). This is ideal for local testing.
$ docker exec -it api mysql -u root -p -D northwind_test
After access the docker with above command, at the MySQL prompt type:
$ source /tmp/scripts/schema.sql
$ source /tmp/scripts/data.sql
After setting up the database connection, run the following script:
$ docker exec -it api python /api/scripts/vanna_mysql_training.py
$ docker exec -it api python scripts/vanna_mysql_question.py \
"What are the top 10 customers by sales ? (Include the customer's full name)"
In the browser, access http://0.0.0.0:8003/docs, for access to API methods in OpenAPI format.
$ docker exec -it api pytest