Skip to content

Commit

Permalink
Merge branch 'main' into example
Browse files Browse the repository at this point in the history
  • Loading branch information
KATTA-00 authored Aug 15, 2024
2 parents d74d6f3 + 549a028 commit 128267e
Show file tree
Hide file tree
Showing 13 changed files with 1,001 additions and 15 deletions.
87 changes: 82 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,21 +2,98 @@

[![Build](https://github.com/ballerina-platform/module-ballerinax-openai.finetunes/actions/workflows/ci.yml/badge.svg)](https://github.com/ballerina-platform/module-ballerinax-openai.finetunes/actions/workflows/ci.yml)
[![Trivy](https://github.com/ballerina-platform/module-ballerinax-openai.finetunes/actions/workflows/trivy-scan.yml/badge.svg)](https://github.com/ballerina-platform/module-ballerinax-openai.finetunes/actions/workflows/trivy-scan.yml)
[![GraalVM Check](https://github.com/ballerina-platform/module-ballerinax-openai.finetunes/actions/workflows/build-with-bal-test-native.yml/badge.svg)](https://github.com/ballerina-platform/module-ballerinax-openai.finetunes/actions/workflows/build-with-bal-test-native.yml)
[![GraalVM Check](https://github.com/ballerina-platform/module-ballerinax-openai.finetunes/actions/workflows/build-with-bal-test-graalvm.yml/badge.svg)](https://github.com/ballerina-platform/module-ballerinax-openai.finetunes/actions/workflows/build-with-bal-test-graalvm.yml)
[![GitHub Last Commit](https://img.shields.io/github/last-commit/ballerina-platform/module-ballerinax-openai.finetunes.svg)](https://github.com/ballerina-platform/module-ballerinax-openai.finetunes/commits/master)
[![GitHub Issues](https://img.shields.io/github/issues/ballerina-platform/ballerina-library/module/openai.finetunes.svg?label=Open%20Issues)](https://github.com/ballerina-platform/ballerina-library/labels/module%openai.finetunes)

## 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
<img src=https://raw.githubusercontent.com/ballerina-platform/module-ballerinax-openai.finetunes/main/docs/setup/resources/navigate-api-key-dashboard.png alt="OpenAI Platform" style="width: 70%;">

3. Click on the "Create new secret key" button
<img src=https://raw.githubusercontent.com/ballerina-platform/module-ballerinax-openai.finetunes/main/docs/setup/resources/api-key-dashboard.png alt="OpenAI Platform" style="width: 70%;">

4. Fill the details and click on Create secret key
<img src=https://raw.githubusercontent.com/ballerina-platform/module-ballerinax-openai.finetunes/main/docs/setup/resources/create-new-secret-key.png alt="OpenAI Platform" style="width: 70%;">

5. Store the API key securely to use in your application
<img src=https://raw.githubusercontent.com/ballerina-platform/module-ballerinax-openai.finetunes/main/docs/setup/resources/saved-key.png alt="OpenAI Platform" style="width: 70%;">

## 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;
finetunes:CreateFineTuningJobRequest fineTuneRequest = {
model: "gpt-3.5-turbo",
training_file: fileId
};
finetunes:FineTuningJob fineTuneResponse =
check openAIFinetunes->/fine_tuning/jobs.post(fineTuneRequest);
}
```

### Step 4: Run the Ballerina application

```bash
bal run
```

## Examples

Expand Down Expand Up @@ -117,4 +194,4 @@ All the contributors are encouraged to read the [Ballerina Code of Conduct](http
* For more information go to the [`openai.finetunes` package](https://central.ballerina.io/ballerinax/openai.finetunes/latest).
* For example demonstrations of the usage, go to [Ballerina By Examples](https://ballerina.io/learn/by-example/).
* Chat live with us via our [Discord server](https://discord.gg/ballerinalang).
* Post all technical questions on Stack Overflow with the [#ballerina](https://stackoverflow.com/questions/tagged/ballerina) tag.
* Post all technical questions on Stack Overflow with the [#ballerina](https://stackoverflow.com/questions/tagged/ballerina) tag.
4 changes: 2 additions & 2 deletions ballerina/Ballerina.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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]
Expand Down
32 changes: 32 additions & 0 deletions ballerina/Dependencies.toml
Original file line number Diff line number Diff line change
Expand Up @@ -144,6 +144,15 @@ dependencies = [
{org = "ballerina", name = "jballerina.java"}
]

[[package]]
org = "ballerina"
name = "lang.error"
version = "0.0.0"
scope = "testOnly"
dependencies = [
{org = "ballerina", name = "jballerina.java"}
]

[[package]]
org = "ballerina"
name = "lang.int"
Expand Down Expand Up @@ -202,6 +211,9 @@ dependencies = [
{org = "ballerina", name = "lang.value"},
{org = "ballerina", name = "observe"}
]
modules = [
{org = "ballerina", packageName = "log", moduleName = "log"}
]

[[package]]
org = "ballerina"
Expand Down Expand Up @@ -245,6 +257,9 @@ dependencies = [
{org = "ballerina", name = "io"},
{org = "ballerina", name = "jballerina.java"}
]
modules = [
{org = "ballerina", packageName = "os", moduleName = "os"}
]

[[package]]
org = "ballerina"
Expand All @@ -255,6 +270,20 @@ dependencies = [
{org = "ballerina", name = "time"}
]

[[package]]
org = "ballerina"
name = "test"
version = "0.0.0"
scope = "testOnly"
dependencies = [
{org = "ballerina", name = "jballerina.java"},
{org = "ballerina", name = "lang.array"},
{org = "ballerina", name = "lang.error"}
]
modules = [
{org = "ballerina", packageName = "test", moduleName = "test"}
]

[[package]]
org = "ballerina"
name = "time"
Expand Down Expand Up @@ -292,7 +321,10 @@ name = "openai.finetunes"
version = "1.0.7"
dependencies = [
{org = "ballerina", name = "http"},
{org = "ballerina", name = "log"},
{org = "ballerina", name = "mime"},
{org = "ballerina", name = "os"},
{org = "ballerina", name = "test"},
{org = "ballerina", name = "url"},
{org = "ballerinai", name = "observe"}
]
Expand Down
86 changes: 82 additions & 4 deletions ballerina/Module.md
Original file line number Diff line number Diff line change
@@ -1,19 +1,97 @@

## 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
<img src=https://raw.githubusercontent.com/ballerina-platform/module-ballerinax-openai.finetunes/main/docs/setup/resources/navigate-api-key-dashboard.png alt="OpenAI Platform" style="width: 70%;">

3. Click on the "Create new secret key" button
<img src=https://raw.githubusercontent.com/ballerina-platform/module-ballerinax-openai.finetunes/main/docs/setup/resources/api-key-dashboard.png alt="OpenAI Platform" style="width: 70%;">

4. Fill the details and click on Create secret key
<img src=https://raw.githubusercontent.com/ballerina-platform/module-ballerinax-openai.finetunes/main/docs/setup/resources/create-new-secret-key.png alt="OpenAI Platform" style="width: 70%;">

5. Store the API key securely to use in your application
<img src=https://raw.githubusercontent.com/ballerina-platform/module-ballerinax-openai.finetunes/main/docs/setup/resources/saved-key.png alt="OpenAI Platform" style="width: 70%;">

## 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;
finetunes:CreateFineTuningJobRequest fineTuneRequest = {
model: "gpt-3.5-turbo",
training_file: fileId
};
finetunes: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:

1. [Sarcastic bot](https://github.com/ballerina-platform/module-ballerinax-openai.finetunes/tree/main/examples/Sarcastic-bot) - Fine-tune the GPT-3.5-turbo model to generate sarcastic responses

2. [Sports headline analyzer](https://github.com/ballerina-platform/module-ballerinax-openai.finetunes/tree/main/examples/Sports-headline-analyzer) - Fine-tune the GPT-4o-mini model to extract structured information (player, team, sport, and gender) from sports headlines.
2. [Sports headline analyzer](https://github.com/ballerina-platform/module-ballerinax-openai.finetunes/tree/main/examples/Sports-headline-analyzer) - Fine-tune the GPT-4o-mini model to extract structured information (player, team, sport, and gender) from sports headlines.
86 changes: 82 additions & 4 deletions ballerina/Package.md
Original file line number Diff line number Diff line change
@@ -1,19 +1,97 @@

## 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
<img src=https://raw.githubusercontent.com/ballerina-platform/module-ballerinax-openai.finetunes/main/docs/setup/resources/navigate-api-key-dashboard.png alt="OpenAI Platform" style="width: 70%;">

3. Click on the "Create new secret key" button
<img src=https://raw.githubusercontent.com/ballerina-platform/module-ballerinax-openai.finetunes/main/docs/setup/resources/api-key-dashboard.png alt="OpenAI Platform" style="width: 70%;">

4. Fill the details and click on Create secret key
<img src=https://raw.githubusercontent.com/ballerina-platform/module-ballerinax-openai.finetunes/main/docs/setup/resources/create-new-secret-key.png alt="OpenAI Platform" style="width: 70%;">

5. Store the API key securely to use in your application
<img src=https://raw.githubusercontent.com/ballerina-platform/module-ballerinax-openai.finetunes/main/docs/setup/resources/saved-key.png alt="OpenAI Platform" style="width: 70%;">

## 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;
finetunes:CreateFineTuningJobRequest fineTuneRequest = {
model: "gpt-3.5-turbo",
training_file: fileId
};
finetunes: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:

1. [Sarcastic bot](https://github.com/ballerina-platform/module-ballerinax-openai.finetunes/tree/main/examples/Sarcastic-bot) - Fine-tune the GPT-3.5-turbo model to generate sarcastic responses

2. [Sports headline analyzer](https://github.com/ballerina-platform/module-ballerinax-openai.finetunes/tree/main/examples/Sports-headline-analyzer) - Fine-tune the GPT-4o-mini model to extract structured information (player, team, sport, and gender) from sports headlines.
2. [Sports headline analyzer](https://github.com/ballerina-platform/module-ballerinax-openai.finetunes/tree/main/examples/Sports-headline-analyzer) - Fine-tune the GPT-4o-mini model to extract structured information (player, team, sport, and gender) from sports headlines.
Loading

0 comments on commit 128267e

Please sign in to comment.