genkitx-azure-openai
Version:
Genkit AI framework plugin for Azure OpenAI APIs.
76 lines • 2.1 kB
JavaScript
import { embedderRef, z } from "genkit";
const TextEmbeddingConfigSchema = z.object({
dimensions: z.number().optional(),
encodingFormat: z.union([z.literal("float"), z.literal("base64")]).optional()
});
const TextEmbeddingInputSchema = z.string();
const textEmbedding3Small = embedderRef({
name: "azure-openai/text-embedding-3-small",
configSchema: TextEmbeddingConfigSchema,
info: {
dimensions: 1536,
label: "Open AI - Text Embedding 3 Small",
supports: {
input: ["text"]
}
}
});
const textEmbedding3Large = embedderRef({
name: "azure-openai/text-embedding-3-large",
configSchema: TextEmbeddingConfigSchema,
info: {
dimensions: 3072,
label: "Open AI - Text Embedding 3 Large",
supports: {
input: ["text"]
}
}
});
const textEmbeddingAda002 = embedderRef({
name: "azure-openai/text-embedding-ada-002",
configSchema: TextEmbeddingConfigSchema,
info: {
dimensions: 1536,
label: "Open AI - Text Embedding ADA 002",
supports: {
input: ["text"]
}
}
});
const SUPPORTED_EMBEDDING_MODELS = {
"text-embedding-3-small": textEmbedding3Small,
"text-embedding-3-large": textEmbedding3Large,
"text-embedding-ada-002": textEmbeddingAda002
};
function openaiEmbedder(ai, name, client) {
const model = SUPPORTED_EMBEDDING_MODELS[name];
if (!model) throw new Error(`Unsupported model: ${name}`);
return ai.defineEmbedder(
{
info: model.info,
configSchema: TextEmbeddingConfigSchema,
name: model.name
},
async (input, options) => {
const embeddings = await client.embeddings.create({
model: name,
input: input.map((d) => d.text),
dimensions: options?.dimensions,
encoding_format: options?.encodingFormat
});
return {
embeddings: embeddings.data.map((d) => ({ embedding: d.embedding }))
};
}
);
}
export {
SUPPORTED_EMBEDDING_MODELS,
TextEmbeddingConfigSchema,
TextEmbeddingInputSchema,
openaiEmbedder,
textEmbedding3Large,
textEmbedding3Small,
textEmbeddingAda002
};
//# sourceMappingURL=embedder.mjs.map