Introduction

In this blog post, we present how to create OpenAI models within MindsDB. This example is a sentiment analysis where we infer emotions behind a text. The input data is taken from our sample MySQL database.

Prerequisites

To follow along, install MindsDB locally via Docker or Docker Desktop.

Tutorial

In this tutorial, we create a predictive model to infer emotions behind a text, a task also known as sentiment analysis.

We use a table from our MySQL public demo database, so let’s start by connecting MindsDB to it:

CREATE DATABASE mysql_demo_db
WITH ENGINE = 'mysql',
PARAMETERS = {
    "user": "user",
    "password": "MindsDBUser123!",
    "host": "samples.mindsdb.com",
    "port": "3306",
    "database": "public"
};

Now that we’ve connected our database to MindsDB, let’s query the data to be used in the example:

SELECT *
FROM mysql_demo_db.amazon_reviews
LIMIT 3;

Here is the output:

+-----------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------+
| product_name                                                                            | review                                                                                               |
+-----------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------+
| All-New Fire HD 8 Tablet, 8 HD Display, Wi-Fi, 16 GB - Includes Special Offers, Magenta | Late gift for my grandson. He is very happy with it. Easy for him (9yo ).                            |
| All-New Fire HD 8 Tablet, 8 HD Display, Wi-Fi, 16 GB - Includes Special Offers, Magenta | I'm not super thrilled with the proprietary OS on this unit, but it does work okay and does what I n |
| All-New Fire HD 8 Tablet, 8 HD Display, Wi-Fi, 16 GB - Includes Special Offers, Magenta | I purchased this Kindle Fire HD 8 was purchased for use by 5 and 8 yer old grandchildren. They basic |
+-----------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------+

Let’s create a model table to identify sentiment for all reviews:

Before creating an OpenAI model, please create an engine, providing your OpenAI API key:

CREATE ML_ENGINE openai_engine
FROM openai
USING
	openai_api_key = 'your-openai-api-key';
CREATE MODEL sentiment_classifier_model
PREDICT sentiment
USING
  engine = 'openai_engine',
  prompt_template = 'describe the sentiment of the reviews
                     strictly as "positive", "neutral", or "negative".
                     "I love the product":positive
                     "It is a scam":negative
                     "{{review}}.":';

In practice, the CREATE MODEL statement triggers MindsDB to generate an AI table called sentiment_classifier_model that uses the OpenAI integration to predict a column named sentiment. The model lives inside the default mindsdb project. In MindsDB, projects are a natural way to keep artifacts, such as models or views, separate according to what predictive task they solve. You can learn more about MindsDB projects here.

The USING clause specifies the parameters that this handler requires.

  • The engine parameter defines that we use the openai engine.
  • The prompt_template parameter conveys the structure of a message that is to be completed with additional text generated by the model.

Follow this instruction to set up the OpenAI integration in MindsDB.

Once the CREATE MODEL statement has started execution, we can check the status of the creation process with the following query:

DESCRIBE sentiment_classifier_model;

It may take a while to register as complete depending on the internet connection. Once the creation is complete, the behavior is the same as with any other AI table – you can query it either by specifying synthetic data in the actual query:

SELECT review, sentiment
FROM sentiment_classifier_model
WHERE review = 'It is ok.';

Here is the output data:

+-----------+-----------+
| review    | sentiment |
+-----------+-----------+
| It is ok. | neutral   |
+-----------+-----------+

Or by joining with another table for batch predictions:

SELECT input.review, output.sentiment
FROM mysql_demo_db.amazon_reviews AS input
JOIN sentiment_classifier_model AS output
LIMIT 3;

Here is the output data:

+------------------------------------------------------------------------------------------------------+-----------+
| review                                                                                               | sentiment |
+------------------------------------------------------------------------------------------------------+-----------+
| Late gift for my grandson. He is very happy with it. Easy for him (9yo ).                            | positive  |
| I'm not super thrilled with the proprietary OS on this unit, but it does work okay and does what I n | positive  |
| I purchased this Kindle Fire HD 8 was purchased for use by 5 and 8 yer old grandchildren. They basic | positive  |
+------------------------------------------------------------------------------------------------------+-----------+

The amazon_reviews table is used to make batch predictions. Upon joining the sentiment_classifier_model model with the amazon_reviews table, the model uses all values from the review column.

Leverage the NLP Capabilities with MindsDB

By integrating databases and OpenAI using MindsDB, developers can easily extract insights from text data with just a few SQL commands. These powerful natural language processing (NLP) models are capable of answering questions with or without context and completing general prompts.

Furthermore, these models are powered by large pre-trained language models from OpenAI, so there is no need for manual development work. Ultimately, this provides developers with an easy way to incorporate powerful NLP capabilities into their applications while saving time and resources compared to traditional ML development pipelines and methods. All in all, MindsDB makes it possible for developers to harness the power of OpenAI efficiently!

MindsDB is now the fastest-growing open-source applied machine-learning platform in the world. Its community continues to contribute to more than 70 data-source and ML-framework integrations. Stay tuned for the upcoming features - including more control over the interface parameters and fine-tuning models directly from MindsDB!

Experiment with OpenAI models within MindsDB and unlock the ML capability over your data in minutes.

Finally, if MindsDB’s vision to democratize ML sounds exciting, head to our community Slack, where you can get help and find people to chat about using other available data sources, ML frameworks, or writing a handler to bring your own!

Follow our introduction to MindsDB’s OpenAI integration here. Also, we’ve got a variety of tutorials that use MySQL and MongoDB:

What’s Next?

Have fun while trying it out yourself!

If this tutorial was helpful, please give us a GitHub star here.