UNPKG

ai-utils.js

Version:

Build AI applications, chatbots, and agents with JavaScript and TypeScript.

123 lines (122 loc) 4.41 kB
import z from "zod"; import { AbstractModel } from "../../model-function/AbstractModel.js"; import { FunctionOptions } from "../../model-function/FunctionOptions.js"; import { TextEmbeddingModel, TextEmbeddingModelSettings } from "../../model-function/embed-text/TextEmbeddingModel.js"; import { RetryFunction } from "../../util/api/RetryFunction.js"; import { ThrottleFunction } from "../../util/api/ThrottleFunction.js"; import { TikTokenTokenizer } from "./TikTokenTokenizer.js"; export declare const OPENAI_TEXT_EMBEDDING_MODELS: { "text-embedding-ada-002": { contextWindowSize: number; embeddingDimensions: number; tokenCostInMillicents: number; }; }; export type OpenAITextEmbeddingModelType = keyof typeof OPENAI_TEXT_EMBEDDING_MODELS; export declare const isOpenAIEmbeddingModel: (model: string) => model is "text-embedding-ada-002"; export declare const calculateOpenAIEmbeddingCostInMillicents: ({ model, responses, }: { model: OpenAITextEmbeddingModelType; responses: OpenAITextEmbeddingResponse[]; }) => number; export interface OpenAITextEmbeddingModelSettings extends TextEmbeddingModelSettings { model: OpenAITextEmbeddingModelType; baseUrl?: string; apiKey?: string; retry?: RetryFunction; throttle?: ThrottleFunction; isUserIdForwardingEnabled?: boolean; } /** * Create a text embedding model that calls the OpenAI embedding API. * * @see https://platform.openai.com/docs/api-reference/embeddings * * @example * const { embeddings } = await embedTexts( * new OpenAITextEmbeddingModel({ model: "text-embedding-ada-002" }), * [ * "At first, Nox didn't know what to do with the pup.", * "He keenly observed and absorbed everything around him, from the birds in the sky to the trees in the forest.", * ] * ); */ export declare class OpenAITextEmbeddingModel extends AbstractModel<OpenAITextEmbeddingModelSettings> implements TextEmbeddingModel<OpenAITextEmbeddingResponse, OpenAITextEmbeddingModelSettings> { constructor(settings: OpenAITextEmbeddingModelSettings); readonly provider: "openai"; get modelName(): "text-embedding-ada-002"; readonly maxTextsPerCall = 1; readonly embeddingDimensions: number; readonly tokenizer: TikTokenTokenizer; readonly contextWindowSize: number; private get apiKey(); countTokens(input: string): Promise<number>; callAPI(text: string, options?: FunctionOptions<OpenAITextEmbeddingModelSettings>): Promise<OpenAITextEmbeddingResponse>; generateEmbeddingResponse(texts: string[], options?: FunctionOptions<OpenAITextEmbeddingModelSettings>): Promise<{ object: "list"; model: string; data: { object: "embedding"; embedding: number[]; index: number; }[]; usage: { prompt_tokens: number; total_tokens: number; }; }>; extractEmbeddings(response: OpenAITextEmbeddingResponse): number[][]; withSettings(additionalSettings: OpenAITextEmbeddingModelSettings): this; } declare const openAITextEmbeddingResponseSchema: z.ZodObject<{ object: z.ZodLiteral<"list">; data: z.ZodArray<z.ZodObject<{ object: z.ZodLiteral<"embedding">; embedding: z.ZodArray<z.ZodNumber, "many">; index: z.ZodNumber; }, "strip", z.ZodTypeAny, { object: "embedding"; embedding: number[]; index: number; }, { object: "embedding"; embedding: number[]; index: number; }>, "many">; model: z.ZodString; usage: z.ZodObject<{ prompt_tokens: z.ZodNumber; total_tokens: z.ZodNumber; }, "strip", z.ZodTypeAny, { prompt_tokens: number; total_tokens: number; }, { prompt_tokens: number; total_tokens: number; }>; }, "strip", z.ZodTypeAny, { object: "list"; model: string; data: { object: "embedding"; embedding: number[]; index: number; }[]; usage: { prompt_tokens: number; total_tokens: number; }; }, { object: "list"; model: string; data: { object: "embedding"; embedding: number[]; index: number; }[]; usage: { prompt_tokens: number; total_tokens: number; }; }>; export type OpenAITextEmbeddingResponse = z.infer<typeof openAITextEmbeddingResponseSchema>; export {};