From 73cc12ecc5bbef4e1f49e87b2efc33cbd52d40d5 Mon Sep 17 00:00:00 2001 From: gsilvestrin Date: Thu, 27 Jul 2023 12:51:59 -0700 Subject: [PATCH] fix(node): Relax EmbeddingFunction type guard (#370) --- node/src/embedding/embedding_function.ts | 3 +-- node/src/test/embedding/openai.ts | 7 +++++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/node/src/embedding/embedding_function.ts b/node/src/embedding/embedding_function.ts index e152d41c..816e861c 100644 --- a/node/src/embedding/embedding_function.ts +++ b/node/src/embedding/embedding_function.ts @@ -28,7 +28,6 @@ export interface EmbeddingFunction { } export function isEmbeddingFunction (value: any): value is EmbeddingFunction { - return Object.keys(value).length === 2 && - typeof value.sourceColumn === 'string' && + return typeof value.sourceColumn === 'string' && typeof value.embed === 'function' } diff --git a/node/src/test/embedding/openai.ts b/node/src/test/embedding/openai.ts index ce51de10..2c07393e 100644 --- a/node/src/test/embedding/openai.ts +++ b/node/src/test/embedding/openai.ts @@ -16,6 +16,7 @@ import { describe } from 'mocha' import { assert } from 'chai' import { OpenAIEmbeddingFunction } from '../../embedding/openai' +import { isEmbeddingFunction } from '../../embedding/embedding_function' // eslint-disable-next-line @typescript-eslint/no-var-requires const { OpenAIApi } = require('openai') @@ -47,4 +48,10 @@ describe('OpenAPIEmbeddings', function () { assert.deepEqual(vectors[1], stubValue.data.data[1].embedding) }) }) + + describe('isEmbeddingFunction', function () { + it('should match the isEmbeddingFunction guard', function () { + assert.isTrue(isEmbeddingFunction(new OpenAIEmbeddingFunction('text', 'sk-key'))) + }) + }) })