You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
openai-cookbook/examples/third_party/Automated_Finetuning_with_M...

363 lines
33 KiB
Plaintext

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

{
"cells": [
{
"attachments": {
"a746bc32-a593-4599-9ee0-86b4daefdd95.png": {
"image/png": "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"
}
},
"cell_type": "markdown",
"id": "48a102bd-9fac-4422-a966-64c562fddcc9",
"metadata": {},
"source": [
"![image.png](attachment:a746bc32-a593-4599-9ee0-86b4daefdd95.png)"
]
},
{
"cell_type": "markdown",
"id": "dc004d0f-9a2e-41a4-9902-749bf5f45465",
"metadata": {},
"source": [
"[MindsDB](https://github.com/mindsdb/mindsdb) is the platform for customizing AI from enterprise data. With MindsDB and its nearly 200 integrations to data sources and AI/ML frameworks, any developer can deploy, serve, and fine-tune models in real-time, and build AI-powered applications."
]
},
{
"cell_type": "markdown",
"id": "fd1a412b-bfa7-48c2-a92f-cdf81341e064",
"metadata": {},
"source": [
"[MindsDB integrates with OpenAI](https://docs.mindsdb.com/integrations/ai-engines/openai), enabling users to deploy, serve, and fine-tune OpenAI models within MindsDB, making them accessible to numerous data sources.\n",
"\n",
"In this example we are going to teach an OpenAI model, how to write MindsDB AI SQL queries"
]
},
{
"cell_type": "markdown",
"id": "d4f62724-f89d-418e-a3e5-6fe334940d51",
"metadata": {},
"source": [
"## Prerequisites\n",
"Before proceeding, ensure the following prerequisites are met:\n",
"\n",
"- Install MindsDB locally via [Docker.](https://docs.mindsdb.com/setup/self-hosted/docker)\n",
"- Obtain the OpenAI API key required to deploy and use OpenAI models within MindsDB."
]
},
{
"cell_type": "markdown",
"id": "a123da53-94c8-4137-af9b-07dd99484fe0",
"metadata": {},
"source": [
"## Setup\n",
"\n",
"MindsDB provides the [OpenAI handler](https://github.com/mindsdb/mindsdb/tree/staging/mindsdb/integrations/handlers/openai_handler) that enables you to create OpenAI models within MindsDB.\n",
"\n",
"## AI Engine\n",
"\n",
"Before creating a model, it is required to create an AI engine based on the provided handler."
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "fa7ec23f-37d3-4b6b-9884-410d1a399825",
"metadata": {},
"outputs": [],
"source": [
"CREATE ML_ENGINE openai_engine\n",
"FROM openai\n",
"USING\n",
" openai_api_key = 'your-openai-api-key';"
]
},
{
"cell_type": "markdown",
"id": "e055ce51-c94f-4adf-aeee-60da2f82e08a",
"metadata": {},
"source": [
"## AI Model"
]
},
{
"cell_type": "markdown",
"id": "cb50d7f1-d661-42b8-8a9a-144d3ee32d72",
"metadata": {},
"source": [
"Then, create a model to answer questions about MindsDBs custom SQL syntax using this engine:"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "52e5fe9e-8192-4118-ab0d-9240bff73ac1",
"metadata": {},
"outputs": [],
"source": [
"CREATE MODEL openai_davinci\n",
"PREDICT completion\n",
"USING\n",
" engine = 'openai_engine',\n",
" model_name = 'davinci-002',\n",
" prompt_template = 'Return a valid SQL string for the following question about MindsDB in-database machine learning: {{prompt}}';"
]
},
{
"cell_type": "markdown",
"id": "235057a2-45db-456f-9268-5c055e4050a6",
"metadata": {},
"source": [
"You can check model status with this command:"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "e06cb6b9-8ace-43b5-b392-465bdabef80c",
"metadata": {},
"outputs": [],
"source": [
"DESCRIBE openai_davinci;"
]
},
{
"cell_type": "markdown",
"id": "b07b55a4-9427-420d-b793-f0f85b5f0201",
"metadata": {},
"source": [
"Once the status is complete, we can query for predictions:"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "13185a09-20d4-4a29-ac68-eb144a5ab67d",
"metadata": {},
"outputs": [],
"source": [
"SELECT prompt, completion\n",
"FROM openai_davinci as m\n",
"WHERE prompt = 'What is the SQL syntax to join input data with predictions from a MindsDB machine learning model?'\n",
"USING max_tokens=400;"
]
},
{
"cell_type": "markdown",
"id": "64e0d76b-1881-4f93-a152-b2651c08b2f1",
"metadata": {},
"source": [
"On execution, we get:"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "fc3fc557-1aec-4f3c-81de-5fffecbe0d6e",
"metadata": {},
"outputs": [],
"source": [
"+---------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------+\n",
"| prompt | completion |\n",
"+---------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------+\n",
"| What is the SQL syntax to join input data with predictions from a MindsDB machine learning model? | The SQL syntax is: SELECT * FROM input_data INNER JOIN predictions ON input_data.id = predictions.id |\n",
"+---------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------+"
]
},
{
"cell_type": "markdown",
"id": "40c01e12-9f7d-4907-af7c-65d53cafcda9",
"metadata": {},
"source": [
"## Finetune Model"
]
},
{
"cell_type": "markdown",
"id": "16796956-7b36-43ce-908d-c2851c7050d1",
"metadata": {},
"source": [
"Now, well fine-tune our model using a table that stores details about MindsDBs custom SQL syntax.\n",
"\n",
"[Upload](https://docs.mindsdb.com/mindsdb_sql/sql/create/file) this [dataset](https://github.com/mindsdb/mindsdb/blob/staging/docs/use-cases/automated_finetuning/data.csv) as a file which you can use as a table."
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "bc394180-1cc0-4494-88b2-29e05a4af7d1",
"metadata": {},
"outputs": [],
"source": [
"FINETUNE openai_davinci\n",
"FROM files\n",
" (SELECT prompt, completion FROM openai_learninghub_ft);"
]
},
{
"cell_type": "markdown",
"id": "56d6adb5-8adc-4198-882f-56d2cd251922",
"metadata": {},
"source": [
"The `FINETUNE` command creates a new version of the openai_davinci model. You can query all available versions as below:"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "410063cc-9b64-462f-bc16-17b5c0b1583c",
"metadata": {},
"outputs": [],
"source": [
"SELECT *\n",
"FROM models_versions\n",
"WHERE name = 'openai_davinci';"
]
},
{
"cell_type": "markdown",
"id": "3fc43552-7dbd-44da-ba96-6ce626ceefa7",
"metadata": {},
"source": [
"Once the new version status is complete and active, we can query the model again, expecting a more accurate output."
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "c513479e-b8e0-4d6d-b3fd-a20c23c52ab7",
"metadata": {},
"outputs": [],
"source": [
"SELECT prompt, completion\n",
"FROM openai_davinci as m\n",
"WHERE prompt = 'What is the SQL syntax to join input data with predictions from a MindsDB machine learning model?'\n",
"USING max_tokens=400;"
]
},
{
"cell_type": "markdown",
"id": "3e9ece4a-09b8-440c-a9c7-c6f3401f4849",
"metadata": {},
"source": [
"On execution you get:"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "4b3ebaaf-d95a-496a-8318-9ad6f1e8d150",
"metadata": {},
"outputs": [],
"source": [
"+---------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------+\n",
"| prompt | completion |\n",
"+---------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------+\n",
"| What is the SQL syntax to join input data with predictions from a MindsDB machine learning model? | SELECT * FROM mindsdb.models.my_model JOIN mindsdb.input_data_name; |\n",
"+---------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------+"
]
},
{
"cell_type": "markdown",
"id": "2cc7e120-6195-4b89-b673-6766febf5463",
"metadata": {},
"source": [
"If you have dynamic data that gets updated regularly, you can set up an automated fine-tuning as below.\n",
"\n",
"Note that the data source must contain an incremental column, such as timestamp or integer, so MindsDB can pick up only the recently added data.\n",
"\n",
"Create a view to store recently added data with the help of the `LAST` keyword:"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "178e16e6-6243-4414-801f-a024fd7d3ac5",
"metadata": {},
"outputs": [],
"source": [
"CREATE VIEW recent_data (\n",
" SELECT *\n",
" FROM files.openai_learninghub_ft\n",
" WHERE timestamp > LAST\n",
");"
]
},
{
"cell_type": "markdown",
"id": "1cd1446b-b910-47fa-984a-5b1190eeaea5",
"metadata": {},
"source": [
"Create a job to fine-tune the model periodically."
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "2a2c3877-e1ee-4dcd-b0f0-50e3b51643aa",
"metadata": {},
"outputs": [],
"source": [
"CREATE JOB automated_finetuning (\n",
"\n",
" FINETUNE openai_davinci\n",
" FROM mindsdb\n",
" (SELECT * FROM recent_data)\n",
")\n",
"EVERY 1 day;"
]
},
{
"cell_type": "markdown",
"id": "3376252e-fa19-4777-9580-8e3b59138c58",
"metadata": {},
"source": [
"Now your model will be fine-tuned with newly added data every day."
]
},
{
"cell_type": "markdown",
"id": "cbcbf589-061b-46ab-912b-f94526f36e82",
"metadata": {},
"source": [
"See below more Usecases:\n",
"\n",
"- [Text Summarization with MindsDB and OpenAI using SQL](https://docs.mindsdb.com/use-cases/data_enrichment/text-summarization-inside-mysql-with-openai)\n",
"- [Sentiment Analysis with MindsDB and OpenAI using SQL](https://docs.mindsdb.com/use-cases/data_enrichment/sentiment-analysis-inside-mysql-with-openai)\n",
"- [Question Answering with MindsDB and OpenAI using SQL](https://docs.mindsdb.com/use-cases/data_enrichment/question-answering-inside-mysql-with-openai)\n",
"- [Extract JSON from Text](https://docs.mindsdb.com/use-cases/data_enrichment/json-from-text)\n",
"- [Text Summarization with MindsDB and OpenAI using MQL](https://docs.mindsdb.com/use-cases/data_enrichment/text-summarization-inside-mongodb-with-openai)\n",
"- [Sentiment Analysis with MindsDB and OpenAI using MQL](https://docs.mindsdb.com/use-cases/data_enrichment/sentiment-analysis-inside-mongodb-with-openai)\n",
"- [Question Answering with MindsDB and OpenAI using MQL](https://docs.mindsdb.com/use-cases/data_enrichment/question-answering-inside-mongodb-with-openai)"
]
},
{
"cell_type": "markdown",
"id": "dea49252-c6d8-4f49-b0a0-a96a6440a037",
"metadata": {},
"source": [
"Follow MindsDB's [OpenAI documentation](https://docs.mindsdb.com/integrations/ai-engines/openai) for more information."
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.7"
}
},
"nbformat": 4,
"nbformat_minor": 5
}