From 3690c4860feb8ef501ff36273dba8439dd05524e Mon Sep 17 00:00:00 2001 From: Trevor Wang Date: Sun, 26 Nov 2023 12:31:29 +0800 Subject: [PATCH] feat: add image url base64 mode support --- lib/src/chat/completion.dart | 32 ++++++++++++++++++++++++++- lib/src/chat/completion.freezed.dart | 20 ++++++++--------- lib/src/chat/completion.g.dart | 11 +++++++-- test/chat_completion_test.dart | 29 +++++++++++++++++------- test/gpt4v-demo.webp | Bin 0 -> 42196 bytes 5 files changed, 71 insertions(+), 21 deletions(-) create mode 100644 test/gpt4v-demo.webp diff --git a/lib/src/chat/completion.dart b/lib/src/chat/completion.dart index 63ff15b..416e60b 100644 --- a/lib/src/chat/completion.dart +++ b/lib/src/chat/completion.dart @@ -364,6 +364,28 @@ class ImageContent with _$ImageContent { _$ImageContentFromJson(json); } +///By controlling the detail parameter, which has three options, low, high, or +///auto, you have control over how the model processes the image and generates +///its textual understanding. By default, the model will use the auto setting +/// which will look at the image input size and decide if it should use the +/// low or high setting. +@JsonEnum(fieldRename: FieldRename.snake) +enum ImageDetail { + auto, + + /// low will disable the “high res” model. The model will receive a low-res + /// 512px x 512px version of the image, and represent the image with a budget + /// of 65 tokens. This allows the API to return faster responses and consume + /// fewer input tokens for use cases that do not require high detail. + low, + + /// high will enable “high res” mode, which first allows the model to see the + /// low res image and then creates detailed crops of input images as 512px + /// squares based on the input image size. Each of the detailed crops uses + /// twice the token budget (65 tokens) for a total of 129 tokens. + high, +} + @freezed class ImageUrl with _$ImageUrl { const factory ImageUrl({ @@ -371,8 +393,16 @@ class ImageUrl with _$ImageUrl { required String url, /// Specifies the detail level of the image. - @Default("auto") String detail, + @Default(ImageDetail.auto) ImageDetail detail, }) = _ImageUrl; + factory ImageUrl.base64({ + required List image, + String mimeType = "image/jpeg", + ImageDetail detail = ImageDetail.auto, + }) { + final url = "data:$mimeType;base64,${base64Encode(image)}"; + return ImageUrl(url: url, detail: detail); + } factory ImageUrl.fromJson(Map json) => _$ImageUrlFromJson(json); diff --git a/lib/src/chat/completion.freezed.dart b/lib/src/chat/completion.freezed.dart index 33a4931..69f05a5 100644 --- a/lib/src/chat/completion.freezed.dart +++ b/lib/src/chat/completion.freezed.dart @@ -3096,7 +3096,7 @@ mixin _$ImageUrl { String get url => throw _privateConstructorUsedError; /// Specifies the detail level of the image. - String get detail => throw _privateConstructorUsedError; + ImageDetail get detail => throw _privateConstructorUsedError; Map toJson() => throw _privateConstructorUsedError; @JsonKey(ignore: true) @@ -3109,7 +3109,7 @@ abstract class $ImageUrlCopyWith<$Res> { factory $ImageUrlCopyWith(ImageUrl value, $Res Function(ImageUrl) then) = _$ImageUrlCopyWithImpl<$Res, ImageUrl>; @useResult - $Res call({String url, String detail}); + $Res call({String url, ImageDetail detail}); } /// @nodoc @@ -3136,7 +3136,7 @@ class _$ImageUrlCopyWithImpl<$Res, $Val extends ImageUrl> detail: null == detail ? _value.detail : detail // ignore: cast_nullable_to_non_nullable - as String, + as ImageDetail, ) as $Val); } } @@ -3149,7 +3149,7 @@ abstract class _$$ImageUrlImplCopyWith<$Res> __$$ImageUrlImplCopyWithImpl<$Res>; @override @useResult - $Res call({String url, String detail}); + $Res call({String url, ImageDetail detail}); } /// @nodoc @@ -3174,7 +3174,7 @@ class __$$ImageUrlImplCopyWithImpl<$Res> detail: null == detail ? _value.detail : detail // ignore: cast_nullable_to_non_nullable - as String, + as ImageDetail, )); } } @@ -3182,7 +3182,7 @@ class __$$ImageUrlImplCopyWithImpl<$Res> /// @nodoc @JsonSerializable() class _$ImageUrlImpl implements _ImageUrl { - const _$ImageUrlImpl({required this.url, this.detail = "auto"}); + const _$ImageUrlImpl({required this.url, this.detail = ImageDetail.auto}); factory _$ImageUrlImpl.fromJson(Map json) => _$$ImageUrlImplFromJson(json); @@ -3194,7 +3194,7 @@ class _$ImageUrlImpl implements _ImageUrl { /// Specifies the detail level of the image. @override @JsonKey() - final String detail; + final ImageDetail detail; @override String toString() { @@ -3229,8 +3229,8 @@ class _$ImageUrlImpl implements _ImageUrl { } abstract class _ImageUrl implements ImageUrl { - const factory _ImageUrl({required final String url, final String detail}) = - _$ImageUrlImpl; + const factory _ImageUrl( + {required final String url, final ImageDetail detail}) = _$ImageUrlImpl; factory _ImageUrl.fromJson(Map json) = _$ImageUrlImpl.fromJson; @@ -3242,7 +3242,7 @@ abstract class _ImageUrl implements ImageUrl { @override /// Specifies the detail level of the image. - String get detail; + ImageDetail get detail; @override @JsonKey(ignore: true) _$$ImageUrlImplCopyWith<_$ImageUrlImpl> get copyWith => diff --git a/lib/src/chat/completion.g.dart b/lib/src/chat/completion.g.dart index 9712b95..b3d1bb2 100644 --- a/lib/src/chat/completion.g.dart +++ b/lib/src/chat/completion.g.dart @@ -308,15 +308,22 @@ Map _$$ImageContentImplToJson(_$ImageContentImpl instance) => _$ImageUrlImpl _$$ImageUrlImplFromJson(Map json) => _$ImageUrlImpl( url: json['url'] as String, - detail: json['detail'] as String? ?? "auto", + detail: $enumDecodeNullable(_$ImageDetailEnumMap, json['detail']) ?? + ImageDetail.auto, ); Map _$$ImageUrlImplToJson(_$ImageUrlImpl instance) => { 'url': instance.url, - 'detail': instance.detail, + 'detail': _$ImageDetailEnumMap[instance.detail]!, }; +const _$ImageDetailEnumMap = { + ImageDetail.auto: 'auto', + ImageDetail.low: 'low', + ImageDetail.high: 'high', +}; + _$MessageToolCallImpl _$$MessageToolCallImplFromJson( Map json) => _$MessageToolCallImpl( diff --git a/test/chat_completion_test.dart b/test/chat_completion_test.dart index 441ddbe..24d6ff9 100644 --- a/test/chat_completion_test.dart +++ b/test/chat_completion_test.dart @@ -1,4 +1,5 @@ import 'dart:convert'; +import 'dart:io'; import 'package:cancellation_token_http/http.dart'; import 'package:cancellation_token_http/testing.dart'; @@ -151,14 +152,26 @@ void main() { "https://pics0.baidu.com/feed/314e251f95cad1c84595a5ad29667204c83d51f7.jpeg@f_auto?token=8ad7fa4a5a222a9039b02f92114bfc07"), ); - final request = - ChatCompletionRequest(model: Models.gpt4_1106VisonPreview, messages: [ - ChatMessage.system(content: "Hello, how are you?"), - ChatMessage.user(content: [ - TextContent(text: "show me what you see in the following image"), - ic, - ]), - ]); + final f = File("test/gpt4v-demo.webp"); + final ic2 = ImageContent( + imageUrl: ImageUrl.base64( + image: f.readAsBytesSync(), + )); + + final request = ChatCompletionRequest( + model: Models.gpt4_1106VisonPreview, + maxTokens: 500, + messages: [ + ChatMessage.system(content: "Hello, how are you?"), + ChatMessage.user(content: [ + TextContent( + text: + "show me what you see in the following image? Are the two images the same?", + ), + ic, + ic2, + ]), + ]); final result = await proxyedClient.sendChatCompletion(request); print(result); }); diff --git a/test/gpt4v-demo.webp b/test/gpt4v-demo.webp new file mode 100644 index 0000000000000000000000000000000000000000..d38c775e9891c051952f5ae12239c0dcd1cfb316 GIT binary patch literal 42196 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 literal 0 HcmV?d00001