Skip to content

Commit

Permalink
chore: update tests
Browse files Browse the repository at this point in the history
  • Loading branch information
manekinekko committed Feb 24, 2025
1 parent 185dbe5 commit bc136c3
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 10 deletions.
19 changes: 10 additions & 9 deletions src/resources/embeddings.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,28 +13,29 @@ export class Embeddings extends APIResource {
): Core.APIPromise<CreateEmbeddingResponse> {
Core.debug('request', 'Sending request with arguments:', { body, ...options });

const hasUserProvidedEncodingFormat = body.encoding_format !== undefined;
let encoding_format: 'float' | 'base64' = 'float'; // current API defaults to float
const hasUserProvidedEncodingFormat = !!body.encoding_format;
let encoding_format: EmbeddingCreateParams['encoding_format'] =
hasUserProvidedEncodingFormat ? body.encoding_format : 'base64';

if (hasUserProvidedEncodingFormat === false) {
if (hasUserProvidedEncodingFormat) {
Core.debug('Request', 'User defined encoding_format:', body.encoding_format);
} else {
// No encoding_format specified, defaulting to base64 for performance reasons
// See https://github.com/openai/openai-node/pull/1312
encoding_format = 'base64';
} else {
Core.debug('Request', 'User defined encoding_format:', body.encoding_format);
}

const response = this._client.post<EmbeddingCreateParams, CreateEmbeddingResponse>('/embeddings', {
const response = this._client.post('/embeddings', {
body: {
...body,
encoding_format,
encoding_format: encoding_format as EmbeddingCreateParams['encoding_format'],
},
...options,
});

// if the user specified an encoding_format, return the response as-is
if (hasUserProvidedEncodingFormat) {
return response;
return response as Core.APIPromise<CreateEmbeddingResponse>;
}

// in this stage, we are sure the user did not specify an encoding_format
Expand All @@ -44,7 +45,7 @@ export class Embeddings extends APIResource {
Core.debug('response', `User requested encoding_format=${encoding_format || 'default'}`);
Core.debug('response', 'Decoding base64 embeddings to float32 array');

return response._thenUnwrap((response) => {
return (response as Core.APIPromise<CreateEmbeddingResponse>)._thenUnwrap((response) => {
if (response && response.data) {
response.data.forEach((embeddingBase64Obj) => {
const embeddingBase64Str = embeddingBase64Obj.embedding as unknown as string;
Expand Down
24 changes: 23 additions & 1 deletion tests/api-resources/embeddings.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,13 +33,35 @@ describe('resource embeddings', () => {
});
});

test.only('create: encoding_format=float should create float32 embeddings', async () => {
const responsePromise = client.embeddings.create({
input: 'The quick brown fox jumped over the lazy dog',
model: 'text-embedding-3-small',
});
const response = await responsePromise;

expect(response.data?.at(0)?.embedding).toBeInstanceOf(Array);
expect(Number.isFinite(response.data?.at(0)?.embedding.at(0))).toBe(true);
});

test('create: encoding_format=base64 should create float32 embeddings', async () => {
const responsePromise = client.embeddings.create({
input: 'The quick brown fox jumped over the lazy dog',
model: 'text-embedding-3-small',
encoding_format: 'base64',
});
const response = await responsePromise;

expect(response.data?.at(0)?.embedding).toBeInstanceOf(Array);
expect(Number.isFinite(response.data?.at(0)?.embedding.at(0))).toBe(true);
});

test('create: encoding_format=default should create float32 embeddings', async () => {
const responsePromise = client.embeddings.create({
input: 'The quick brown fox jumped over the lazy dog',
model: 'text-embedding-3-small',
});
const response = await responsePromise;
console.log(response.data?.at(0)?.embedding);

expect(response.data?.at(0)?.embedding).toBeInstanceOf(Array);
expect(Number.isFinite(response.data?.at(0)?.embedding.at(0))).toBe(true);
Expand Down

0 comments on commit bc136c3

Please sign in to comment.