diff --git a/README.md b/README.md index 2614930..32bfb8e 100644 --- a/README.md +++ b/README.md @@ -8,15 +8,92 @@ ## Overview -[//]: # (TODO: Add overview mentioning the purpose of the module, supported REST API versions, and other high-level details.) +[OpenAI](https://openai.com/), an AI research organization focused on creating friendly AI for humanity, offers the [OpenAI API](https://platform.openai.com/docs/api-reference/introduction) to access its powerful AI models for tasks like natural language processing and image generation. + +The `ballarinax/openai.finetunes` package offers APIs to connect and interact with [the fine-tuning related endpoints of OpenAI REST API v1](https://platform.openai.com/docs/guides/fine-tuning) allowing users to customize OpenAI's AI models to meet specific needs. ## Setup guide -[//]: # (TODO: Add detailed steps to obtain credentials and configure the module.) +To use the OpenAI Connector, you must have access to the OpenAI API through a [OpenAI Platform account](https://platform.openai.com) and a project under it. If you do not have a OpenAI Platform account, you can sign up for one [here](https://platform.openai.com/signup). + +#### Create a OpenAI API Key + +1. Open the [OpenAI Platform Dashboard](https://platform.openai.com). + +2. Navigate to Dashboard -> API keys +OpenAI Platform + +3. Click on the "Create new secret key" button +OpenAI Platform + +4. Fill the details and click on Create secret key +OpenAI Platform + +5. Store the API key securely to use in your application +OpenAI Platform ## Quickstart -[//]: # (TODO: Add a quickstart guide to demonstrate a basic functionality of the module, including sample code snippets.) +To use the `OpenAI Finetunes` connector in your Ballerina application, update the `.bal` file as follows: + +### Step 1: Import the module + +Import the `openai.finetunes` module. + +```ballerina +import ballerinax/openai.finetunes; +import ballerina/io; +``` + +### Step 2: Instantiate a new connector + +Create a `finetunes:ConnectionConfig` with the obtained API Key and initialize the connector. + +```ballerina +configurable string apiKey = ?; + +final finetunes:Client openAIFinetunes = check new({ + auth: { + token: apiKey + } +}); +``` + +### Step 3: Invoke the connector operation + +Now, utilize the available connector operations. + +**Note**: First, create a sample.jsonl file in the same directory. This file should contain the training data formatted according to the guidelines provided [here](https://platform.openai.com/docs/api-reference/files/create). + +#### Fine tuning the gpt-3.5-turbo model + +```ballerina +public function main() returns error? { + + finetunes:CreateFileRequest req = { + file: {fileContent: check io:fileReadBytes("sample.jsonl"), fileName: "sample.jsonl"}, + purpose: "fine-tune" + }; + + finetunes:OpenAIFile fileRes = check openaiFinetunes->/files.post(req); + + string fileId = fileRes.id; + + CreateFineTuningJobRequest fineTuneRequest = { + model: "gpt-3.5-turbo", + training_file: fileId + }; + + FineTuningJob fineTuneResponse = + check openaiFinetunes->/fine_tuning/jobs.post(fineTuneRequest); +} +``` + +### Step 4: Run the Ballerina application + +```bash +bal run +``` ## Examples diff --git a/ballerina/Ballerina.toml b/ballerina/Ballerina.toml index d2c7c22..674f2e2 100644 --- a/ballerina/Ballerina.toml +++ b/ballerina/Ballerina.toml @@ -5,8 +5,8 @@ name = "openai.finetunes" version = "1.0.5" license = ["Apache-2.0"] authors = ["Ballerina"] -keywords = [] # TODO: Add keywords -icon = "icon.png" # TODO: Add icon +keywords = ["AI/Fine-tunes", "OpenAI", "Cost/Paid", "Files", "Models", "Vendor/OpenAI"] +icon = "icon.png" repository = "https://github.com/ballerina-platform/module-ballerinax-openai.finetunes" [build-options] diff --git a/ballerina/Module.md b/ballerina/Module.md index f0b0909..7c59b65 100644 --- a/ballerina/Module.md +++ b/ballerina/Module.md @@ -1,17 +1,95 @@ + ## Overview -[//]: # (TODO: Add overview mentioning the purpose of the module, supported REST API versions, and other high-level details.) +[OpenAI](https://openai.com/), an AI research organization focused on creating friendly AI for humanity, offers the [OpenAI API](https://platform.openai.com/docs/api-reference/introduction) to access its powerful AI models for tasks like natural language processing and image generation. + +The `ballarinax/openai.finetunes` package offers APIs to connect and interact with [the fine-tuning related endpoints of OpenAI REST API v1](https://platform.openai.com/docs/guides/fine-tuning) allowing users to customize OpenAI's AI models to meet specific needs. ## Setup guide -[//]: # (TODO: Add detailed steps to obtain credentials and configure the module.) +To use the OpenAI Connector, you must have access to the OpenAI API through a [OpenAI Platform account](https://platform.openai.com) and a project under it. If you do not have a OpenAI Platform account, you can sign up for one [here](https://platform.openai.com/signup). + +#### Create a OpenAI API Key + +1. Open the [OpenAI Platform Dashboard](https://platform.openai.com). + +2. Navigate to Dashboard -> API keys +OpenAI Platform + +3. Click on the "Create new secret key" button +OpenAI Platform + +4. Fill the details and click on Create secret key +OpenAI Platform + +5. Store the API key securely to use in your application +OpenAI Platform ## Quickstart -[//]: # (TODO: Add a quickstart guide to demonstrate a basic functionality of the module, including sample code snippets.) +To use the `OpenAI Finetunes` connector in your Ballerina application, update the `.bal` file as follows: + +### Step 1: Import the module + +Import the `openai.finetunes` module. + +```ballerina +import ballerinax/openai.finetunes; +import ballerina/io; +``` + +### Step 2: Instantiate a new connector + +Create a `finetunes:ConnectionConfig` with the obtained API Key and initialize the connector. + +```ballerina +configurable string apiKey = ?; + +final finetunes:Client openAIFinetunes = check new({ + auth: { + token: apiKey + } +}); +``` + +### Step 3: Invoke the connector operation + +Now, utilize the available connector operations. + +**Note**: First, create a sample.jsonl file in the same directory. This file should contain the training data formatted according to the guidelines provided [here](https://platform.openai.com/docs/api-reference/files/create). + +#### Fine tuning the gpt-3.5-turbo model + +```ballerina +public function main() returns error? { + + finetunes:CreateFileRequest req = { + file: {fileContent: check io:fileReadBytes("sample.jsonl"), fileName: "sample.jsonl"}, + purpose: "fine-tune" + }; + + finetunes:OpenAIFile fileRes = check openaiFinetunes->/files.post(req); + + string fileId = fileRes.id; + + CreateFineTuningJobRequest fineTuneRequest = { + model: "gpt-3.5-turbo", + training_file: fileId + }; + + FineTuningJob fineTuneResponse = + check openaiFinetunes->/fine_tuning/jobs.post(fineTuneRequest); +} +``` + +### Step 4: Run the Ballerina application + +```bash +bal run +``` ## Examples The `OpenAI Finetunes` connector provides practical examples illustrating usage in various scenarios. Explore these [examples](https://github.com/module-ballerinax-openai.finetunes/tree/main/examples/), covering the following use cases: -[//]: # (TODO: Add examples) \ No newline at end of file +[//]: # (TODO: Add examples) diff --git a/ballerina/Package.md b/ballerina/Package.md index f0b0909..7c59b65 100644 --- a/ballerina/Package.md +++ b/ballerina/Package.md @@ -1,17 +1,95 @@ + ## Overview -[//]: # (TODO: Add overview mentioning the purpose of the module, supported REST API versions, and other high-level details.) +[OpenAI](https://openai.com/), an AI research organization focused on creating friendly AI for humanity, offers the [OpenAI API](https://platform.openai.com/docs/api-reference/introduction) to access its powerful AI models for tasks like natural language processing and image generation. + +The `ballarinax/openai.finetunes` package offers APIs to connect and interact with [the fine-tuning related endpoints of OpenAI REST API v1](https://platform.openai.com/docs/guides/fine-tuning) allowing users to customize OpenAI's AI models to meet specific needs. ## Setup guide -[//]: # (TODO: Add detailed steps to obtain credentials and configure the module.) +To use the OpenAI Connector, you must have access to the OpenAI API through a [OpenAI Platform account](https://platform.openai.com) and a project under it. If you do not have a OpenAI Platform account, you can sign up for one [here](https://platform.openai.com/signup). + +#### Create a OpenAI API Key + +1. Open the [OpenAI Platform Dashboard](https://platform.openai.com). + +2. Navigate to Dashboard -> API keys +OpenAI Platform + +3. Click on the "Create new secret key" button +OpenAI Platform + +4. Fill the details and click on Create secret key +OpenAI Platform + +5. Store the API key securely to use in your application +OpenAI Platform ## Quickstart -[//]: # (TODO: Add a quickstart guide to demonstrate a basic functionality of the module, including sample code snippets.) +To use the `OpenAI Finetunes` connector in your Ballerina application, update the `.bal` file as follows: + +### Step 1: Import the module + +Import the `openai.finetunes` module. + +```ballerina +import ballerinax/openai.finetunes; +import ballerina/io; +``` + +### Step 2: Instantiate a new connector + +Create a `finetunes:ConnectionConfig` with the obtained API Key and initialize the connector. + +```ballerina +configurable string apiKey = ?; + +final finetunes:Client openAIFinetunes = check new({ + auth: { + token: apiKey + } +}); +``` + +### Step 3: Invoke the connector operation + +Now, utilize the available connector operations. + +**Note**: First, create a sample.jsonl file in the same directory. This file should contain the training data formatted according to the guidelines provided [here](https://platform.openai.com/docs/api-reference/files/create). + +#### Fine tuning the gpt-3.5-turbo model + +```ballerina +public function main() returns error? { + + finetunes:CreateFileRequest req = { + file: {fileContent: check io:fileReadBytes("sample.jsonl"), fileName: "sample.jsonl"}, + purpose: "fine-tune" + }; + + finetunes:OpenAIFile fileRes = check openaiFinetunes->/files.post(req); + + string fileId = fileRes.id; + + CreateFineTuningJobRequest fineTuneRequest = { + model: "gpt-3.5-turbo", + training_file: fileId + }; + + FineTuningJob fineTuneResponse = + check openaiFinetunes->/fine_tuning/jobs.post(fineTuneRequest); +} +``` + +### Step 4: Run the Ballerina application + +```bash +bal run +``` ## Examples The `OpenAI Finetunes` connector provides practical examples illustrating usage in various scenarios. Explore these [examples](https://github.com/module-ballerinax-openai.finetunes/tree/main/examples/), covering the following use cases: -[//]: # (TODO: Add examples) \ No newline at end of file +[//]: # (TODO: Add examples) diff --git a/docs/setup/resources/api-key-dashboard.png b/docs/setup/resources/api-key-dashboard.png new file mode 100644 index 0000000..0a66883 Binary files /dev/null and b/docs/setup/resources/api-key-dashboard.png differ diff --git a/docs/setup/resources/create-new-secret-key.png b/docs/setup/resources/create-new-secret-key.png new file mode 100644 index 0000000..5492f4a Binary files /dev/null and b/docs/setup/resources/create-new-secret-key.png differ diff --git a/docs/setup/resources/navigate-api-key-dashboard.png b/docs/setup/resources/navigate-api-key-dashboard.png new file mode 100644 index 0000000..f42cb48 Binary files /dev/null and b/docs/setup/resources/navigate-api-key-dashboard.png differ diff --git a/docs/setup/resources/saved-key.png b/docs/setup/resources/saved-key.png new file mode 100644 index 0000000..7ed28c7 Binary files /dev/null and b/docs/setup/resources/saved-key.png differ