Skip to content

Commit 7011bc7

Browse files
committed
[ Edit ] exposed more enums for chat, audio, umage for better developer experience and refactored and added more docs
1 parent 9ca9db0 commit 7011bc7

File tree

12 files changed

+60
-48
lines changed

12 files changed

+60
-48
lines changed

README.md

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -219,7 +219,10 @@ Creates a completion for the chat message, note you need to set each message as
219219
OpenAIChatCompletionModel chatCompletion = await OpenAI.instance.chat.create(
220220
model: "gpt-3.5-turbo",
221221
messages: [
222-
OpenAIChatCompletionChoiceMessageModel(content: "hello, what is Flutter and Dart ?", role: "user"),
222+
OpenAIChatCompletionChoiceMessageModel(
223+
content: "hello, what is Flutter and Dart ?",
224+
role: OpenAIChatMessageRole.user,
225+
),
223226
],
224227
);
225228
```
@@ -234,7 +237,7 @@ OpenAIStreamChatCompletionModel chatStream = OpenAI.instance.chat.createStream(
234237
messages: [
235238
OpenAIChatCompletionChoiceMessageModel(
236239
content: "hello",
237-
role: "user",
240+
role: OpenAIChatMessageRole.user,
238241
)
239242
],
240243
);
@@ -277,7 +280,7 @@ Generates a new image based on a prompt given.
277280
prompt: 'an astronaut on the sea',
278281
n: 1,
279282
size: OpenAIImageSize.size1024,
280-
responseFormat: OpenAIResponseFormat.url,
283+
responseFormat: OpenAIImageResponseFormat.url,
281284
);
282285
```
283286

@@ -292,7 +295,7 @@ OpenAiImageEditModel imageEdit = await OpenAI.instance.image.edit(
292295
prompt: "mask the image with a dinosaur",
293296
n: 1,
294297
size: OpenAIImageSize.size1024,
295-
responseFormat: OpenAIResponseFormat.url,
298+
responseFormat: OpenAIImageResponseFormat.url,
296299
);
297300
```
298301

@@ -305,7 +308,7 @@ OpenAIImageVariationModel imageVariation = await OpenAI.instance.image.variation
305308
image: File(/* IMAGE PATH HERE */),
306309
n: 1,
307310
size: OpenAIImageSize.size1024,
308-
responseFormat: OpenAIResponseFormat.url,
311+
responseFormat: OpenAIImageResponseFormat.url,
309312
);
310313
```
311314

example/lib/chat_campletion_stream_example.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ void main() {
1212
messages: [
1313
OpenAIChatCompletionChoiceMessageModel(
1414
content: "hello",
15-
role: "user",
15+
role: OpenAIChatMessageRole.user,
1616
)
1717
],
1818
);

example/lib/chat_completion_example.dart

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,13 @@ void main() async {
66
// Set the OpenAI API key from the .env file.
77
OpenAI.apiKey = Env.apiKey;
88

9-
OpenAIChatCompletionModel chatCompletion = await OpenAI.instance.chat.create(
10-
model: "gpt-3.5-turbo",
11-
messages: [
12-
OpenAIChatCompletionChoiceMessageModel(content: "hello", role: "user")
13-
]);
9+
OpenAIChatCompletionModel chatCompletion =
10+
await OpenAI.instance.chat.create(model: "gpt-3.5-turbo", messages: [
11+
OpenAIChatCompletionChoiceMessageModel(
12+
content: "hello",
13+
role: OpenAIChatMessageRole.user,
14+
)
15+
]);
1416

1517
print(chatCompletion.id);
1618
print(chatCompletion.choices.first.message);

example/lib/image_variation_example.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ Future<void> main() async {
1313
image: File("example.png"),
1414
n: 1,
1515
size: OpenAIImageSize.size256,
16-
responseFormat: OpenAIResponseFormat.b64Json,
16+
responseFormat: OpenAIImageResponseFormat.b64Json,
1717
);
1818

1919
// Prints the result.

lib/src/core/base/images/base.dart

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,12 @@ extension SizeToStingExtension on OpenAIImageSize {
2525
}
2626
}
2727

28-
extension ResponseFormatToStingExtension on OpenAIResponseFormat {
28+
extension ResponseFormatToStingExtension on OpenAIImageResponseFormat {
2929
String get value {
3030
switch (this) {
31-
case OpenAIResponseFormat.url:
31+
case OpenAIImageResponseFormat.url:
3232
return "url";
33-
case OpenAIResponseFormat.b64Json:
33+
case OpenAIImageResponseFormat.b64Json:
3434
return "b64_json";
3535
}
3636
}

lib/src/core/base/images/interfaces/create.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ abstract class CreateInterface {
66
required String prompt,
77
int? n,
88
OpenAIImageSize? size,
9-
OpenAIResponseFormat? responseFormat,
9+
OpenAIImageResponseFormat? responseFormat,
1010
String? user,
1111
});
1212
}

lib/src/core/base/images/interfaces/edit.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ abstract class EditInterface {
99
required String prompt,
1010
int? n,
1111
OpenAIImageSize? size,
12-
OpenAIResponseFormat? responseFormat,
12+
OpenAIImageResponseFormat? responseFormat,
1313
String? user,
1414
});
1515
}

lib/src/core/base/images/interfaces/variations.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ abstract class VariationInterface {
77
required File image,
88
int? n,
99
OpenAIImageSize? size,
10-
OpenAIResponseFormat? responseFormat,
10+
OpenAIImageResponseFormat? responseFormat,
1111
String? user,
1212
});
1313
}

lib/src/core/models/chat/sub_models/choices/sub_models/message.dart

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
1+
import '../../../../image/enum.dart';
2+
13
/// {@template openai_chat_completion_choice_message_model}
24
/// This represents the message of the [OpenAIChatCompletionChoiceModel] model of the OpenAI API, which is used and get returned while using the [OpenAIChat] methods.
35
/// {@endtemplate}
46
class OpenAIChatCompletionChoiceMessageModel {
57
/// The [role] of the message.
6-
final String role;
8+
final OpenAIChatMessageRole role;
79

810
/// The [content] of the message.
911
final String content;
@@ -24,15 +26,16 @@ class OpenAIChatCompletionChoiceMessageModel {
2426
Map<String, dynamic> json,
2527
) {
2628
return OpenAIChatCompletionChoiceMessageModel(
27-
role: json['role'],
29+
role: OpenAIChatMessageRole.values
30+
.firstWhere((role) => role.name == json['role']),
2831
content: json['content'],
2932
);
3033
}
3134

3235
/// This method used to convert the [OpenAIChatCompletionChoiceMessageModel] to a [Map<String, dynamic>] object.
3336
Map<String, dynamic> toMap() {
3437
return {
35-
"role": role,
38+
"role": role.name,
3639
"content": content,
3740
};
3841
}
Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
enum OpenAIImageSize { size256, size512, size1024 }
22

3-
enum OpenAIResponseFormat { url, b64Json }
3+
enum OpenAIImageResponseFormat { url, b64Json }
44

55
enum OpenAIAudioResponseFormat { json, text, srt, verbose_json, vtt }
6+
7+
enum OpenAIChatMessageRole { system, user, assistant }

0 commit comments

Comments
 (0)