aboutsummaryrefslogtreecommitdiff
path: root/apps/cf-ai-backend/src/utils/OpenAIEmbedder.ts
diff options
context:
space:
mode:
Diffstat (limited to 'apps/cf-ai-backend/src/utils/OpenAIEmbedder.ts')
-rw-r--r--apps/cf-ai-backend/src/utils/OpenAIEmbedder.ts24
1 files changed, 18 insertions, 6 deletions
diff --git a/apps/cf-ai-backend/src/utils/OpenAIEmbedder.ts b/apps/cf-ai-backend/src/utils/OpenAIEmbedder.ts
index 3514f579..be5839b1 100644
--- a/apps/cf-ai-backend/src/utils/OpenAIEmbedder.ts
+++ b/apps/cf-ai-backend/src/utils/OpenAIEmbedder.ts
@@ -1,3 +1,5 @@
+import { z } from "zod";
+
interface OpenAIEmbeddingsParams {
apiKey: string;
modelName: string;
@@ -32,12 +34,22 @@ export class OpenAIEmbeddings {
}),
});
- const data = (await response.json()) as {
- data: {
- embedding: number[];
- }[];
- };
+ const data = await response.json();
+
+ const zodTypeExpected = z.object({
+ data: z.array(
+ z.object({
+ embedding: z.array(z.number()),
+ }),
+ ),
+ });
+
+ const json = zodTypeExpected.safeParse(data);
+
+ if (!json.success) {
+ throw new Error("Invalid response from OpenAI: " + json.error.message);
+ }
- return data.data[0].embedding;
+ return json.data.data[0].embedding;
}
}