Skip to content

Commit

Permalink
feat: Support Together AI Embeddings API in openai_dart client (#301)
Browse files Browse the repository at this point in the history
  • Loading branch information
davidmigloz committed Jan 20, 2024
1 parent 1a4ccd1 commit 4a6e104
Show file tree
Hide file tree
Showing 7 changed files with 53 additions and 34 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ class CreateEmbeddingResponse with _$CreateEmbeddingResponse {
required CreateEmbeddingResponseObject object,

/// The usage information for the request.
required EmbeddingUsage usage,
@JsonKey(includeIfNull: false) EmbeddingUsage? usage,
}) = _CreateEmbeddingResponse;

/// Object construction from a JSON representation
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ class _EmbeddingVectorConverter

@override
EmbeddingVector fromJson(Object? data) {
if (data is List && data.every((item) => item is double)) {
if (data is List && data.every((item) => item is num)) {
return EmbeddingVectorListDouble(data.cast());
}
if (data is String) {
Expand Down
48 changes: 28 additions & 20 deletions packages/openai_dart/lib/src/generated/schema/schema.freezed.dart
Original file line number Diff line number Diff line change
Expand Up @@ -12014,7 +12014,8 @@ mixin _$CreateEmbeddingResponse {
throw _privateConstructorUsedError;

/// The usage information for the request.
EmbeddingUsage get usage => throw _privateConstructorUsedError;
@JsonKey(includeIfNull: false)
EmbeddingUsage? get usage => throw _privateConstructorUsedError;

Map<String, dynamic> toJson() => throw _privateConstructorUsedError;
@JsonKey(ignore: true)
Expand All @@ -12032,9 +12033,9 @@ abstract class $CreateEmbeddingResponseCopyWith<$Res> {
{List<Embedding> data,
String model,
CreateEmbeddingResponseObject object,
EmbeddingUsage usage});
@JsonKey(includeIfNull: false) EmbeddingUsage? usage});

$EmbeddingUsageCopyWith<$Res> get usage;
$EmbeddingUsageCopyWith<$Res>? get usage;
}

/// @nodoc
Expand All @@ -12054,7 +12055,7 @@ class _$CreateEmbeddingResponseCopyWithImpl<$Res,
Object? data = null,
Object? model = null,
Object? object = null,
Object? usage = null,
Object? usage = freezed,
}) {
return _then(_value.copyWith(
data: null == data
Expand All @@ -12069,17 +12070,21 @@ class _$CreateEmbeddingResponseCopyWithImpl<$Res,
? _value.object
: object // ignore: cast_nullable_to_non_nullable
as CreateEmbeddingResponseObject,
usage: null == usage
usage: freezed == usage
? _value.usage
: usage // ignore: cast_nullable_to_non_nullable
as EmbeddingUsage,
as EmbeddingUsage?,
) as $Val);
}

@override
@pragma('vm:prefer-inline')
$EmbeddingUsageCopyWith<$Res> get usage {
return $EmbeddingUsageCopyWith<$Res>(_value.usage, (value) {
$EmbeddingUsageCopyWith<$Res>? get usage {
if (_value.usage == null) {
return null;
}

return $EmbeddingUsageCopyWith<$Res>(_value.usage!, (value) {
return _then(_value.copyWith(usage: value) as $Val);
});
}
Expand All @@ -12098,10 +12103,10 @@ abstract class _$$CreateEmbeddingResponseImplCopyWith<$Res>
{List<Embedding> data,
String model,
CreateEmbeddingResponseObject object,
EmbeddingUsage usage});
@JsonKey(includeIfNull: false) EmbeddingUsage? usage});

@override
$EmbeddingUsageCopyWith<$Res> get usage;
$EmbeddingUsageCopyWith<$Res>? get usage;
}

/// @nodoc
Expand All @@ -12120,7 +12125,7 @@ class __$$CreateEmbeddingResponseImplCopyWithImpl<$Res>
Object? data = null,
Object? model = null,
Object? object = null,
Object? usage = null,
Object? usage = freezed,
}) {
return _then(_$CreateEmbeddingResponseImpl(
data: null == data
Expand All @@ -12135,10 +12140,10 @@ class __$$CreateEmbeddingResponseImplCopyWithImpl<$Res>
? _value.object
: object // ignore: cast_nullable_to_non_nullable
as CreateEmbeddingResponseObject,
usage: null == usage
usage: freezed == usage
? _value.usage
: usage // ignore: cast_nullable_to_non_nullable
as EmbeddingUsage,
as EmbeddingUsage?,
));
}
}
Expand All @@ -12150,7 +12155,7 @@ class _$CreateEmbeddingResponseImpl extends _CreateEmbeddingResponse {
{required final List<Embedding> data,
required this.model,
required this.object,
required this.usage})
@JsonKey(includeIfNull: false) this.usage})
: _data = data,
super._();

Expand Down Expand Up @@ -12178,7 +12183,8 @@ class _$CreateEmbeddingResponseImpl extends _CreateEmbeddingResponse {

/// The usage information for the request.
@override
final EmbeddingUsage usage;
@JsonKey(includeIfNull: false)
final EmbeddingUsage? usage;

@override
String toString() {
Expand Down Expand Up @@ -12218,10 +12224,11 @@ class _$CreateEmbeddingResponseImpl extends _CreateEmbeddingResponse {

abstract class _CreateEmbeddingResponse extends CreateEmbeddingResponse {
const factory _CreateEmbeddingResponse(
{required final List<Embedding> data,
required final String model,
required final CreateEmbeddingResponseObject object,
required final EmbeddingUsage usage}) = _$CreateEmbeddingResponseImpl;
{required final List<Embedding> data,
required final String model,
required final CreateEmbeddingResponseObject object,
@JsonKey(includeIfNull: false) final EmbeddingUsage? usage}) =
_$CreateEmbeddingResponseImpl;
const _CreateEmbeddingResponse._() : super._();

factory _CreateEmbeddingResponse.fromJson(Map<String, dynamic> json) =
Expand All @@ -12242,7 +12249,8 @@ abstract class _CreateEmbeddingResponse extends CreateEmbeddingResponse {
@override

/// The usage information for the request.
EmbeddingUsage get usage;
@JsonKey(includeIfNull: false)
EmbeddingUsage? get usage;
@override
@JsonKey(ignore: true)
_$$CreateEmbeddingResponseImplCopyWith<_$CreateEmbeddingResponseImpl>
Expand Down
27 changes: 19 additions & 8 deletions packages/openai_dart/lib/src/generated/schema/schema.g.dart

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion packages/openai_dart/oas/openapi_curated.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2229,7 +2229,7 @@ components:
- object
- model
- data
- usage
# - usage # Made nullable to support Together AI API which doesn't return this field with some models
Embedding:
type: object
description: |
Expand Down
2 changes: 1 addition & 1 deletion packages/openai_dart/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -30,5 +30,5 @@ dev_dependencies:
openapi_spec:
git:
url: https://github.com/davidmigloz/openapi_spec.git
ref: 52bd544753980267da6d4b299cbf1067a0d07131
ref: e14c0adaac69e9482e9b57f68fc7964032cdd44c
test: ^1.24.3
4 changes: 2 additions & 2 deletions packages/openai_dart/test/openai_client_embeddings_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,8 @@ void main() {
expect(res.data.first.object, EmbeddingObject.embedding);
expect(res.model, startsWith('text-embedding-ada-002'));
expect(res.object, CreateEmbeddingResponseObject.list);
expect(res.usage.promptTokens, greaterThan(0));
expect(res.usage.totalTokens, greaterThan(0));
expect(res.usage?.promptTokens, greaterThan(0));
expect(res.usage?.totalTokens, greaterThan(0));
});

test('Test call embeddings API with encoding base64', () async {
Expand Down

0 comments on commit 4a6e104

Please sign in to comment.