[Edit] fix chat completion & opt.

This commit is contained in:
lollipopkit
2023-12-29 11:33:33 +08:00
parent 1f8e675fc1
commit 292f51519b
5 changed files with 26 additions and 15 deletions

View File

@ -46,7 +46,7 @@ class OpenAIChatCompletionChoiceMessageContentItemModel {
String imageUrl,
) {
return OpenAIChatCompletionChoiceMessageContentItemModel._(
type: 'image',
type: 'image_url',
imageUrl: imageUrl,
);
}
@ -71,9 +71,12 @@ class OpenAIChatCompletionChoiceMessageContentItemModel {
other.imageUrl == imageUrl;
}
//! TODO: make a dynamic toString method for different types of content items.
@override
String toString() {
return 'OpenAIChatCompletionChoiceMessageContentItemModel(type: $type, text: $text, imageUrl: $imageUrl)';
}
String toString() => switch (type) {
'text' =>
'OpenAIChatCompletionChoiceMessageContentItemModel(type: $type, text: $text)',
'image' =>
'OpenAIChatCompletionChoiceMessageContentItemModel(type: $type, imageUrl: $imageUrl)',
_ => 'OpenAIChatCompletionChoiceMessageContentItemModel(type: $type)',
};
}

View File

@ -37,7 +37,7 @@ final class OpenAIFineTuneHyperParamsModel {
promptLossWeight.hashCode;
}
/// {@template openai_fine_tune_hyper_params_model}
/// {@macro openai_fine_tune_hyper_params_model}
const OpenAIFineTuneHyperParamsModel({
required this.batchSize,
required this.learningRateMultiplier,
@ -45,8 +45,9 @@ final class OpenAIFineTuneHyperParamsModel {
required this.promptLossWeight,
});
/// {@template openai_fine_tune_hyper_params_model}
/// {@template openai_fine_tune_hyper_params_model_fromMap}
/// This method is used to convert a [Map<String, dynamic>] object to a [OpenAIFineTuneHyperParamsModel] object.
/// {@endtemplate}
factory OpenAIFineTuneHyperParamsModel.fromMap(Map<String, dynamic> json) {
return OpenAIFineTuneHyperParamsModel(
batchSize: json['batch_size'],

View File

@ -597,11 +597,11 @@ abstract class OpenAINetworkingClient {
var resultBody;
resultBody = responseBody.canBeParsedToJson
? decodeToMap(responseBody)
: responseMapAdapter != null
? responseMapAdapter(responseBody)
: responseBody;
resultBody = switch ((responseBody.canBeParsedToJson, responseMapAdapter)) {
(true, _) => decodeToMap(responseBody),
(_, null) => responseBody,
(_, final func) => func!(responseBody),
};
OpenAILogger.decodedSuccessfully();
if (doesErrorExists(resultBody)) {

View File

@ -9,6 +9,9 @@ import '../constants/strings.dart';
@immutable
@internal
abstract final class OpenAILogger {
/// The valid min length of an api key.
static const int _kValidApiKeyLength = 10;
/// {@template openai_logger_is_active}
/// Wether the to show operations flow logger is active or not.
/// {@endtemplate}
@ -87,7 +90,7 @@ abstract final class OpenAILogger {
static isValidApiKey(String key) {
return key.isNotEmpty &&
key.startsWith("sk-") &&
key.length > 10; //magic number
key.length > _kValidApiKeyLength;
}
/// Logs that an baseUrl key is being set, if the logger is active.

View File

@ -529,9 +529,12 @@ void main() async {
File jsonLFileExample() {
final file = File("example.jsonl");
file.writeAsStringSync(
jsonEncode(
{"prompt": "<prompt text>", "completion": "<ideal generated text>"}),
jsonEncode({
"prompt": "<prompt text>",
"completion": "<ideal generated text>",
}),
);
return file;
}
@ -543,5 +546,6 @@ Future<File> getFileFromUrl(
final uniqueImageName = DateTime.now().microsecondsSinceEpoch;
final file = File("$uniqueImageName.$fileExtension");
await file.writeAsBytes(response.bodyBytes);
return file;
}