@adaline/openai 0.6.0 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/configs/language-model/common.config.language-model.openai.ts","../src/configs/language-model/base.config.language-model.openai.ts","../src/configs/language-model/response-schema.language-model.openai.ts","../src/configs/word-embedding/common.config.word-embedding.openai.ts","../src/configs/word-embedding/base.config.word-embedding.openai.ts","../src/configs/configs.openai.ts","../src/models/chat-models/types/roles.chat-model.openai.ts","../src/models/chat-models/types/modalities.chat-model.openai.ts","../src/models/chat-models/types/response.chat-model.openai.ts","../src/models/chat-models/base-language-model.openai.ts","../src/models/chat-models/gpt-4o.openai.ts","../src/models/embedding-models/types/modalitites.embedding-model.openai.ts","../src/models/embedding-models/types/response.embedding-model.openai.ts","../src/models/embedding-models/base-embedding-model.openai.ts","../src/models/embedding-models/text-embedding-ada-002.openai.ts","../src/provider/provider.openai.ts"],"names":["temperature","RangeConfigItem","CONFIG","maxTokens","maxOutputTokens","stop","maxSequences","MultiStringConfigItem","topP","frequencyPenalty","presencePenalty","seed","logProbs","SelectBooleanConfigItem","topLogProbs","responseFormat","SelectStringConfigItem","toolChoice","BaseConfigSchema","z","value","BaseConfigDef","ResponseSchemaTypes","ResponseSchemaTypesLiteral","ResponseSchemaProperty","ResponseSchemaStructure","ResponseSchema","responseSchema","ObjectSchemaConfigItem","ResponseSchemaConfigDef","__spreadProps","__spreadValues","ResponseSchemaConfigSchema","encodingFormat","dimensions","BaseWordEmbeddingConfigSchema","BaseWordEmbeddingConfigDef","OpenAIConfigs","OpenAIWordEmbeddingConfigs","OpenAIChatModelRoles","SystemRoleLiteral","UserRoleLiteral","AssistantRoleLiteral","ToolRoleLiteral","OpenAIChatModelRolesMap","OpenAIChatModelModalities","TextModalityLiteral","ImageModalityLiteral","ToolCallModalityLiteral","ToolResponseModalityLiteral","OpenAIChatModelModalitiesEnum","OpenAIBaseLogProb","OpenAILogProb","OpenAIToolCallsCompleteChatResponse","OpenAICompleteChatResponse","OpenAIToolCallsStreamChatResponse","OpenAIStreamChatResponse","BaseChatModelOptions","BaseChatModel","modelSchema","options","urlWithoutTrailingSlash","messages","acc","message","content","config","tools","_toolChoice","_parsedConfig","InvalidConfigError","parsedConfig","key","transformedConfig","def","paramKey","paramValue","configToolChoice","tool","parsedMessages","parsedMessage","Message","InvalidMessagesError","textContent","toolCalls","imageContent","combinedContent","toolResponse","parsedTool","Tool","InvalidToolsError","__async","resolve","transformedMessages","transformedTools","response","safe","ApiResponseError","parsedResponse","createTextMessage","toolCall","index","createToolCallMessage","usage","_logProbs","logProb","topLogProb","ApiRequestError","chunk","buffer","__asyncGenerator","_a","_b","lines","line","structuredLine","error","partialResponse","createPartialTextMessage","createPartialToolCallMessage","GPT4oLiteral","GPT4oDescription","GPT4oSchema","ChatModelSchema","GPT4oOptions","GPT4o","OpenAIEmbeddingModelModalities","EmbeddingTextModalityLiteral","EmbeddingTokenModalityLiteral","OpenAIEmbeddingModelModalitiesEnum","OpenAIGetEmbeddingsResponse","BaseEmbeddingModelOptions","BaseEmbeddingModel","requests","request","_parsedRequests","EmbeddingRequests","InvalidEmbeddingRequestsError","Base64EmbeddingLiteral","FloatEmbeddingLiteral","embeddings","item","TextEmbeddingAda002Literal","TextEmbeddingAda002Description","TextEmbeddingAda002Schema","EmbeddingModelSchema","TextEmbeddingAda002Options","TextEmbeddingAda002","ProviderLiteral","OpenAI","name","model","modelOptions","parsedOptions"],"mappings":"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","file":"index.js","sourcesContent":["import { CONFIG, MultiStringConfigItem, RangeConfigItem, SelectStringConfigItem, SelectBooleanConfigItem } from \"@adaline/provider\";\n\nconst temperature = RangeConfigItem({\n param: \"temperature\",\n title: CONFIG.TEMPERATURE.title,\n description: CONFIG.TEMPERATURE.description,\n min: 0,\n max: 2,\n step: 0.01,\n default: 1,\n});\n\nconst maxTokens = (maxOutputTokens: number) =>\n RangeConfigItem({\n param: \"max_tokens\",\n title: CONFIG.MAX_TOKENS.title,\n description: CONFIG.MAX_TOKENS.description,\n min: 0,\n max: maxOutputTokens,\n step: 1,\n default: 0,\n });\n\nconst stop = (maxSequences: number) =>\n MultiStringConfigItem({\n param: \"stop\",\n title: CONFIG.STOP(maxSequences).title,\n description: CONFIG.STOP(maxSequences).description,\n max: maxSequences,\n });\n\nconst topP = RangeConfigItem({\n param: \"top_p\",\n title: CONFIG.TOP_P.title,\n description: CONFIG.TOP_P.description,\n min: 0,\n max: 1,\n step: 0.01,\n default: 1,\n});\n\nconst frequencyPenalty = RangeConfigItem({\n param: \"frequency_penalty\",\n title: CONFIG.FREQUENCY_PENALTY.title,\n description: CONFIG.FREQUENCY_PENALTY.description,\n min: -2,\n max: 2,\n step: 0.01,\n default: 0,\n});\n\nconst presencePenalty = RangeConfigItem({\n param: \"presence_penalty\",\n title: CONFIG.PRESENCE_PENALTY.title,\n description: CONFIG.PRESENCE_PENALTY.description,\n min: -2,\n max: 2,\n step: 0.01,\n default: 0,\n});\n\nconst seed = RangeConfigItem({\n param: \"seed\",\n title: \"Seed\",\n description: \"This is in BETA. Set a seed to get reproducible results. Determinism is not guaranteed. Set to 0 to disable.\",\n min: 0,\n max: 1000000,\n step: 1,\n default: 0,\n});\n\nconst logProbs = SelectBooleanConfigItem({\n param: \"logprobs\",\n title: \"LogProbs\",\n description:\n \"Whether to return log probabilities of the output tokens or not. If true, returns the log probabilities of each output token returned.\",\n default: false,\n});\n\nconst topLogProbs = RangeConfigItem({\n param: \"top_logprobs\",\n title: \"Top logprobs\",\n description:\n \"The number of most likely tokens to return at each token position, each with an associated log probability. 'logprobs' must be set to true if this parameter is used.\",\n min: 0,\n max: 20,\n step: 1,\n default: 0,\n});\n\nconst responseFormat = SelectStringConfigItem({\n param: \"response_format\",\n title: \"Response format\",\n description:\n \"Choose the response format of your model. For JSON, you must include the string 'JSON' in some form within your system / user prompt.\",\n default: \"text\",\n choices: [\"text\", \"json_object\"],\n});\n\nconst toolChoice = SelectStringConfigItem({\n param: \"tool_choice\",\n title: \"Tool choice\",\n description:\n \"Controls which (if any) tool is called by the model. 'none' means the model will not call a function. 'auto' means the model can pick between generating a message or calling a tool.\",\n default: \"auto\",\n choices: [\"auto\", \"required\", \"none\"],\n});\n\nexport { frequencyPenalty, logProbs, maxTokens, presencePenalty, responseFormat, seed, stop, temperature, toolChoice, topLogProbs, topP };\n","import { z } from \"zod\";\n\nimport {\n frequencyPenalty,\n logProbs,\n maxTokens,\n presencePenalty,\n responseFormat,\n seed,\n stop,\n temperature,\n toolChoice,\n topLogProbs,\n topP,\n} from \"./common.config.language-model.openai\";\n\nconst BaseConfigSchema = (maxOutputTokens: number, maxSequences: number) =>\n z.object({\n temperature: temperature.schema,\n maxTokens: maxTokens(maxOutputTokens).schema,\n stop: stop(maxSequences).schema,\n topP: topP.schema,\n frequencyPenalty: frequencyPenalty.schema,\n presencePenalty: presencePenalty.schema,\n seed: seed.schema.transform((value) => (value === 0 ? undefined : value)),\n logProbs: logProbs.schema,\n topLogProbs: topLogProbs.schema,\n responseFormat: responseFormat.schema,\n toolChoice: toolChoice.schema,\n });\n\nconst BaseConfigDef = (maxOutputTokens: number, maxSequences: number) =>\n ({\n temperature: temperature.def,\n maxTokens: maxTokens(maxOutputTokens).def,\n stop: stop(maxSequences).def,\n topP: topP.def,\n frequencyPenalty: frequencyPenalty.def,\n presencePenalty: presencePenalty.def,\n seed: seed.def,\n responseFormat: responseFormat.def,\n logProbs: logProbs.def,\n topLogProbs: topLogProbs.def,\n toolChoice: toolChoice.def,\n }) as const;\n\nexport { BaseConfigDef, BaseConfigSchema };\n","import { z } from \"zod\";\n\nimport { SelectStringConfigItem, ObjectSchemaConfigItem } from \"@adaline/provider\";\n\nimport { BaseConfigDef, BaseConfigSchema } from \"./base.config.language-model.openai\";\n\n// TODO: move to json schema 7 type and validator when implemented for tool types\nconst ResponseSchemaTypes = [\"object\", \"array\", \"number\", \"string\", \"boolean\", \"enum\"] as const;\nconst ResponseSchemaTypesLiteral = z.enum(ResponseSchemaTypes);\n// type ResponseSchemaTypesType = z.infer<typeof ResponseSchemaTypesLiteral>;\n\nconst ResponseSchemaProperty = z.object({\n anyOf: z.array(z.any()).optional(),\n type: z.union([\n ResponseSchemaTypesLiteral, \n z.array(z.union([ResponseSchemaTypesLiteral, z.literal(\"null\")]))\n ]).optional(),\n default: z.any().optional(),\n title: z.string().optional(),\n description: z.string().max(4096).optional(),\n properties: z.record(z.any()).optional(),\n required: z.array(z.string()).optional(),\n minItems: z.number().int().min(0).optional(),\n maxItems: z.number().int().optional(),\n items: z.record(z.any()).optional(), // Recursive structure to handle nested arrays and objects\n enum: z.array(z.union([z.string(), z.number(), z.boolean(), z.null()])).optional(), // Enum for allowed values\n minimum: z.number().optional(), // Minimum value for number\n maximum: z.number().optional(), // Maximum value for number\n minLength: z.number().int().min(0).optional(), // Minimum length for string\n maxLength: z.number().int().optional(), // Maximum length for string\n $ref: z.string().optional(), // Reference to another schema\n});\n// type ResponseSchemaPropertyType = z.infer<typeof ResponseSchemaProperty>;\n\nconst ResponseSchemaStructure = z.object({\n type: z.enum([\"object\"]),\n required: z.array(z.string()),\n $defs: z.record(z.any()).optional(),\n properties: z.record(ResponseSchemaProperty),\n additionalProperties: z.literal(false),\n});\n// type ResponseSchemaStructureType = z.infer<typeof ResponseSchemaStructure>;\n\nconst ResponseSchema = z.object({\n name: z\n .string()\n .regex(/^[a-zA-Z0-9_]{1,64}$/)\n .max(64),\n description: z.string().max(4096),\n strict: z.boolean().optional(),\n schema: ResponseSchemaStructure,\n}).optional();\n// type ResponseSchemaType = z.infer<typeof ResponseSchema>;\n\nconst responseSchema = ObjectSchemaConfigItem({\n param: \"response_schema\",\n title: \"Response schema\",\n description: \"When response format is set to 'json_schema', the model will return a JSON object of the specified schema.\",\n objectSchema: ResponseSchema,\n});\n\nconst responseFormat = SelectStringConfigItem({\n param: \"response_format\",\n title: \"Response format\",\n description:\n \"Choose the response format of your model. 'json_object' colloquially known as JSON mode, instructs the model to respond with a valid \\\n JSON (must include the term 'json' in prompt). 'json_schema' colloquially known as structured outputs, allows you to specify a strict \\\n response schema that the model will adhere to.\",\n default: \"text\",\n choices: [\"text\", \"json_object\", \"json_schema\"],\n});\n\nconst ResponseSchemaConfigDef = (maxOutputTokens: number, maxSequences: number) => ({\n ...BaseConfigDef(maxOutputTokens, maxSequences),\n responseFormat: responseFormat.def,\n responseSchema: responseSchema.def,\n});\n\nconst ResponseSchemaConfigSchema = (maxOutputTokens: number, maxSequences: number) =>\n BaseConfigSchema(maxOutputTokens, maxSequences).extend({\n responseFormat: responseFormat.schema,\n responseSchema: responseSchema.schema,\n });\n\nexport { ResponseSchemaConfigDef, ResponseSchemaConfigSchema };","import { RangeConfigItem, SelectStringConfigItem } from \"@adaline/provider\";\n\nconst encodingFormat = SelectStringConfigItem({\n param: \"encoding_format\",\n title: \"Encoding format\",\n description:\n \"Select the encoding format for the word embedding.\",\n default: \"float\",\n choices: [\"float\", \"base64\"],\n});\n\nconst dimensions = RangeConfigItem({\n param: \"dimensions\",\n title: \"Dimensions\",\n description: \"Select the number of dimensions for the word embedding.\",\n min: 1,\n max: 1024, // TODO: check if this is the base max\n step: 1,\n default: 1024, // TODO: check if this is the base default\n});\n\nexport { \n encodingFormat, \n dimensions \n};\n","import { z } from \"zod\";\n\nimport {\n encodingFormat,\n dimensions,\n} from \"./common.config.word-embedding.openai\";\n\nconst BaseWordEmbeddingConfigSchema = () =>\n z.object({\n encodingFormat: encodingFormat.schema,\n dimensions: dimensions.schema, // TODO: only supported for text-embedding-3 and later models\n });\n\nconst BaseWordEmbeddingConfigDef = () =>\n ({\n encodingFormat: encodingFormat.def,\n dimensions: dimensions.def,\n }) as const;\n\nexport { \n BaseWordEmbeddingConfigDef, \n BaseWordEmbeddingConfigSchema \n};\n","import { BaseConfigDef, BaseConfigSchema, ResponseSchemaConfigDef, ResponseSchemaConfigSchema } from \"./language-model\";\nimport { BaseWordEmbeddingConfigDef, BaseWordEmbeddingConfigSchema } from \"./word-embedding\";\n\nconst OpenAIConfigs = {\n base: (maxOutputTokens: number, maxSequences: number) => ({\n def: BaseConfigDef(maxOutputTokens, maxSequences),\n schema: BaseConfigSchema(maxOutputTokens, maxSequences),\n }),\n responseSchema: (maxOutputTokens: number, maxSequences: number) => ({\n def: ResponseSchemaConfigDef(maxOutputTokens, maxSequences),\n schema: ResponseSchemaConfigSchema(maxOutputTokens, maxSequences),\n }),\n} as const;\n\nconst OpenAIWordEmbeddingConfigs = {\n base: () => ({\n def: BaseWordEmbeddingConfigDef(),\n schema: BaseWordEmbeddingConfigSchema(),\n }),\n} as const;\n\nexport { \n OpenAIConfigs, \n OpenAIWordEmbeddingConfigs \n};\n","import { z } from \"zod\";\n\nimport { AssistantRoleLiteral, SystemRoleLiteral, ToolRoleLiteral, UserRoleLiteral } from \"@adaline/types\";\n\nconst OpenAIChatModelRoles = z.enum([SystemRoleLiteral, UserRoleLiteral, AssistantRoleLiteral, ToolRoleLiteral]);\n\nconst OpenAIChatModelRolesMap = {\n system: SystemRoleLiteral,\n user: UserRoleLiteral,\n assistant: AssistantRoleLiteral,\n tool: ToolRoleLiteral,\n} as const;\n\nexport { OpenAIChatModelRoles, OpenAIChatModelRolesMap };\n","import { z } from \"zod\";\n\nimport { ChatModelSchemaType } from \"@adaline/provider\";\nimport { ImageModalityLiteral, TextModalityLiteral, ToolCallModalityLiteral, ToolResponseModalityLiteral } from \"@adaline/types\";\n\nconst OpenAIChatModelModalities: ChatModelSchemaType[\"modalities\"] = [\n TextModalityLiteral,\n ImageModalityLiteral,\n ToolCallModalityLiteral,\n ToolResponseModalityLiteral,\n];\n\nconst OpenAIChatModelModalitiesEnum = z.enum([\n TextModalityLiteral,\n ImageModalityLiteral,\n ToolCallModalityLiteral,\n ToolResponseModalityLiteral,\n]);\n\nexport { OpenAIChatModelModalitiesEnum, OpenAIChatModelModalities };\n","import { z } from \"zod\";\n\nconst OpenAIBaseLogProb = z.object({\n token: z.string(),\n logprob: z.number(),\n bytes: z.array(z.number()).nullable(),\n});\n\nconst OpenAILogProb = z.object({\n content: z.array(OpenAIBaseLogProb.extend({\n top_logprobs: z.array(OpenAIBaseLogProb),\n })).nullable(),\n refusal: z.array(OpenAIBaseLogProb.extend({\n top_logprobs: z.array(OpenAIBaseLogProb),\n })).nullable(),\n}).nullable();\n\nconst OpenAIToolCallsCompleteChatResponse = z.array(\n z.object({\n id: z.string().min(1),\n type: z.enum([\"function\"]),\n function: z.object({\n name: z.string(),\n arguments: z.string(),\n }),\n })\n);\n\nconst OpenAICompleteChatResponse = z.object({\n id: z.string(),\n object: z.literal(\"chat.completion\"),\n created: z.number(),\n model: z.string(),\n system_fingerprint: z.string(),\n choices: z.array(\n z.object({\n index: z.number(),\n message: z.object({\n role: z.string(),\n content: z.string().nullable().optional(),\n tool_calls: OpenAIToolCallsCompleteChatResponse.optional(),\n refusal: z.string().nullable().optional(),\n }),\n logprobs: OpenAILogProb,\n finish_reason: z.string(),\n })\n ),\n usage: z.object({\n prompt_tokens: z.number(),\n completion_tokens: z.number(),\n total_tokens: z.number(),\n }),\n});\ntype OpenAICompleteChatResponseType = z.infer<typeof OpenAICompleteChatResponse>;\n\nconst OpenAIToolCallsStreamChatResponse = z.array(\n z.object({\n index: z.number().int(),\n id: z.string().min(1).optional(),\n type: z.enum([\"function\"]).optional(),\n function: z\n .object({\n name: z.string().min(1).optional(),\n arguments: z.string().optional(),\n })\n .optional(),\n })\n);\n\nconst OpenAIStreamChatResponse = z.object({\n id: z.string(),\n object: z.string(),\n created: z.number(),\n model: z.string(),\n system_fingerprint: z.string().nullable(),\n choices: z.array(\n z.object({\n index: z.number(),\n delta: z\n .object({\n content: z.string().nullable().optional(),\n tool_calls: OpenAIToolCallsStreamChatResponse.optional(),\n refusal: z.string().nullable().optional(),\n })\n .or(z.object({})),\n logprobs: OpenAILogProb,\n finish_reason: z.string().nullable(),\n })\n ),\n usage: z.object({\n prompt_tokens: z.number(),\n completion_tokens: z.number(),\n total_tokens: z.number(),\n }).nullable().optional(),\n});\ntype OpenAIStreamChatResponseType = z.infer<typeof OpenAIStreamChatResponse>;\n\nexport {\n OpenAIStreamChatResponse,\n OpenAICompleteChatResponse,\n OpenAIToolCallsStreamChatResponse,\n OpenAIToolCallsCompleteChatResponse,\n type OpenAIStreamChatResponseType,\n type OpenAICompleteChatResponseType,\n}","import { z } from \"zod\";\n\nimport {\n HeadersType,\n ParamsType,\n UrlType,\n ChatModelV1,\n ChatModelSchemaType,\n SelectStringConfigItemDefType,\n ApiRequestError,\n ApiResponseError,\n InvalidConfigError,\n InvalidMessagesError,\n InvalidToolsError,\n urlWithoutTrailingSlash,\n} from \"@adaline/provider\";\n\nimport {\n SystemRoleLiteral,\n UserRoleLiteral,\n AssistantRoleLiteral,\n ToolRoleLiteral,\n TextModalityLiteral,\n ToolCallModalityLiteral,\n ToolResponseModalityLiteral,\n ImageModalityLiteral,\n Message,\n Tool,\n ConfigType,\n MessageType,\n PartialMessageType,\n ToolType,\n ToolResponseContentType,\n ChatUsageType,\n ChatLogProbsType,\n ChatResponseType,\n PartialChatResponseType,\n createTextMessage,\n createToolCallMessage,\n createPartialTextMessage,\n createPartialToolCallMessage,\n} from \"@adaline/types\";\n\nimport { \n OpenAICompleteChatResponse, \n OpenAIStreamChatResponse, \n OpenAICompleteChatResponseType,\n OpenAIStreamChatResponseType,\n} from \"./types/response.chat-model.openai\";\n\nconst BaseChatModelOptions = z.object({\n apiKey: z.string(),\n baseUrl: z.string().url(),\n completeChatUrl: z.string().url().optional(),\n streamChatUrl: z.string().url().optional(),\n organization: z.string().optional(),\n});\ntype BaseChatModelOptionsType = z.infer<typeof BaseChatModelOptions>;\n\nclass BaseChatModel implements ChatModelV1<ChatModelSchemaType> {\n readonly version = \"v1\" as const;\n modelSchema: ChatModelSchemaType;\n\n private readonly apiKey: string;\n private readonly baseUrl: string;\n private readonly streamChatUrl: string;\n private readonly completeChatUrl: string;\n private readonly organization: string | undefined;\n\n constructor(modelSchema: ChatModelSchemaType, options: BaseChatModelOptionsType) {\n this.modelSchema = modelSchema;\n this.apiKey = options.apiKey;\n this.baseUrl = urlWithoutTrailingSlash(options.baseUrl);\n this.streamChatUrl = urlWithoutTrailingSlash(options.streamChatUrl || `${this.baseUrl}/chat/completions`);\n this.completeChatUrl = urlWithoutTrailingSlash(options.completeChatUrl || `${this.baseUrl}/chat/completions`);\n this.organization = options.organization;\n };\n\n // TODO: add support for non-text modalities\n // TODO: add support for tools if tools are counted as tokens\n // TODO: should validate messages and tools before counting tokens?\n getTokenCount(messages: MessageType[]): number {\n return messages.reduce((acc, message) => {\n return acc + message.content.map((content) => (content.modality === \"text\" ? content.value : \"\")).join(\" \").length;\n }, 0);\n };\n\n getDefaultBaseUrl(): UrlType {\n return this.baseUrl;\n };\n\n getDefaultHeaders(): HeadersType {\n return {\n Authorization: `Bearer ${this.apiKey}`,\n \"Content-Type\": \"application/json\",\n ...(this.organization ? { \"OpenAI-Organization\": this.organization } : {}),\n };\n };\n\n getDefaultParams(): ParamsType {\n return {\n model: this.modelSchema.name,\n };\n };\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n transformConfig(config: ConfigType, messages?: MessageType[], tools?: ToolType[]): ParamsType {\n const _toolChoice = config.toolChoice;\n delete config.toolChoice; // can have a specific tool name that is not in the model schema, validated at transformation \n\n // TODO: why is safeParse coercing Record to modelSchema.config.schema type rather than returning error?\n const _parsedConfig = this.modelSchema.config.schema.safeParse(config);\n if (!_parsedConfig.success) {\n throw new InvalidConfigError({ info: this.modelSchema.name, error: _parsedConfig.error })\n }\n\n const parsedConfig = _parsedConfig.data as ConfigType;\n if (_toolChoice !== undefined) {\n parsedConfig.toolChoice = _toolChoice;\n }\n\n Object.keys(parsedConfig).forEach((key) => {\n if (!(key in this.modelSchema.config.def)) {\n throw new InvalidConfigError({ \n info: this.modelSchema.name, \n error: new Error(`Invalid config key: '${key}'`) \n });\n }\n });\n\n const transformedConfig = Object.keys(parsedConfig).reduce(\n (acc, key) => {\n const def = this.modelSchema.config.def[key];\n const paramKey = def.param;\n const paramValue = (parsedConfig as ConfigType)[key];\n\n if (paramKey === \"max_tokens\" && def.type === \"range\" && paramValue === 0) {\n acc[paramKey] = def.max;\n } else {\n acc[paramKey] = paramValue;\n }\n\n return acc;\n },\n {} as ParamsType\n );\n\n // TODO: check if logProbs is set to true for topLogProbs to be set\n\n if (\"tool_choice\" in transformedConfig && transformedConfig.tool_choice !== undefined) {\n const toolChoice = transformedConfig.tool_choice as string;\n if (!tools || (tools && tools.length === 0)) {\n throw new InvalidConfigError({ \n info: this.modelSchema.name, \n error: new Error(\"'tools' are required when 'toolChoice' is specified\") \n });\n } else if (tools && tools.length > 0) {\n const configToolChoice = this.modelSchema.config.def.toolChoice as SelectStringConfigItemDefType;\n if (!configToolChoice.choices.includes(toolChoice)) {\n if (tools.map((tool) => tool.definition.schema.name).includes(toolChoice)) {\n transformedConfig.tool_choice = { type: \"function\", function: { name: toolChoice } };\n } else {\n throw new InvalidConfigError({ \n info: this.modelSchema.name, \n error: new Error(`Invalid 'toolChoice': '${toolChoice}' is not part of provided tools or \n one of '${configToolChoice.choices.join(\", \")}'`) \n });\n }\n }\n }\n }\n\n if (\"response_format\" in transformedConfig && transformedConfig.response_format !== undefined) {\n const responseFormat = transformedConfig.response_format as string;\n if (responseFormat === \"json_schema\") {\n if (!(\"response_schema\" in transformedConfig)) {\n throw new InvalidConfigError({ \n info: this.modelSchema.name, \n error: new Error(\"'responseSchema' is required in config when 'responseFormat' is 'json_schema'\") \n });\n } else {\n transformedConfig.response_format = { \n type: \"json_schema\",\n json_schema: transformedConfig.response_schema,\n };\n delete transformedConfig.response_schema;\n }\n } else {\n transformedConfig.response_format = { type: responseFormat };\n }\n }\n\n return transformedConfig;\n };\n\n transformMessages(messages: MessageType[]): ParamsType {\n if (!messages || (messages && messages.length === 0)) {\n return { messages: [] };\n }\n\n const parsedMessages = messages.map((message) => {\n const parsedMessage = Message().safeParse(message);\n if (!parsedMessage.success) {\n throw new InvalidMessagesError({ info: this.modelSchema.name, error: parsedMessage.error });\n }\n return parsedMessage.data;\n });\n\n parsedMessages.forEach((message) => {\n message.content.forEach((content) => {\n if (!this.modelSchema.modalities.includes(content.modality)) {\n throw new InvalidMessagesError({ \n info: this.modelSchema.name, \n error: new Error(`model: '${this.modelSchema.name}' does not support modality: '${content.modality}'`) \n });\n }\n });\n });\n\n // TODO: add role not supported by model error\n\n const transformedMessages = parsedMessages.map((message) => {\n switch (message.role) {\n case SystemRoleLiteral: {\n const textContent: { type: \"text\", text: string }[] = [];\n message.content.forEach((content) => {\n if (content.modality === TextModalityLiteral) {\n textContent.push({ type: \"text\", text: content.value });\n } else {\n throw new InvalidMessagesError({ \n info: this.modelSchema.name, \n error: new Error(`role: '${SystemRoleLiteral}' cannot have content with modality '${content.modality}'`) \n });\n }\n });\n\n return {\n role: this.modelSchema.roles[message.role],\n content: textContent,\n };\n }\n\n case AssistantRoleLiteral: {\n const textContent: { type: \"text\", text: string }[] = [];\n const toolCalls: { id: string, type: \"function\", function: { name: string, arguments: string } }[] = [];\n message.content.forEach((content) => {\n if (content.modality === TextModalityLiteral) {\n textContent.push({ type: \"text\", text: content.value });\n } else if (content.modality === ToolCallModalityLiteral) {\n toolCalls.push({\n id: content.id,\n type: \"function\",\n function: { name: content.name, arguments: content.arguments }\n });\n } else {\n throw new InvalidMessagesError({ \n info: this.modelSchema.name, \n error: new Error(`role: '${AssistantRoleLiteral}' cannot have content with modality '${content.modality}'`) \n });\n }\n });\n \n return {\n role: this.modelSchema.roles[message.role],\n content: textContent,\n ...(toolCalls.length > 0 ? { tool_calls: toolCalls } : {}),\n };\n }\n\n case UserRoleLiteral: {\n const textContent: { type: \"text\", text: string }[] = [];\n const imageContent: { type: \"image_url\", image_url: { url: string, detail: string } }[] = [];\n message.content.forEach((content) => {\n if (content.modality === TextModalityLiteral) {\n textContent.push({ type: \"text\", text: content.value });\n } else if (content.modality === ImageModalityLiteral) {\n imageContent.push({ \n type: \"image_url\", \n image_url: { \n url: content.value.type === \"url\" ? content.value.url : content.value.base64, \n detail: content.detail,\n } \n });\n } else {\n throw new InvalidMessagesError({ \n info: this.modelSchema.name, \n error: new Error(`role: '${UserRoleLiteral}' cannot have content with modality '${content.modality}'`) \n });\n }\n });\n\n const combinedContent = [...textContent, ...imageContent];\n\n return {\n role: this.modelSchema.roles[message.role],\n content: combinedContent,\n }; \n }\n\n case ToolRoleLiteral: {\n if (message.content.length !== 1) {\n throw new InvalidMessagesError({ \n info: this.modelSchema.name, \n error: new Error(`role: '${ToolRoleLiteral}' must have exactly one content item`) \n });\n }\n\n if (message.content[0].modality !== ToolResponseModalityLiteral) {\n throw new InvalidMessagesError({ \n info: this.modelSchema.name, \n error: new Error(`role: '${ToolRoleLiteral}' must have content with modality '${ToolResponseModalityLiteral}'`) \n });\n }\n\n const toolResponse = message.content[0] as ToolResponseContentType;\n return {\n role: this.modelSchema.roles[message.role],\n tool_call_id: toolResponse.id,\n content: toolResponse.data,\n };\n }\n\n default: {\n throw new InvalidMessagesError({ \n info: this.modelSchema.name, \n error: new Error(`Invalid role: '${message.role}'`) \n });\n }\n }\n });\n\n return { messages: transformedMessages };\n };\n\n transformTools(tools: ToolType[]): ParamsType {\n if (!tools || (tools && tools.length === 0)) {\n return { tools: [] as ToolType[] };\n }\n\n const parsedTools = tools.map((tool) => {\n const parsedTool = Tool().safeParse(tool);\n if (!parsedTool.success) {\n throw new InvalidToolsError({ info: this.modelSchema.name, error: parsedTool.error });\n }\n return parsedTool.data;\n });\n\n const transformedTools = parsedTools.map((tool) => ({\n type: \"function\",\n function: tool.definition.schema,\n }));\n\n return { tools: transformedTools };\n };\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n getCompleteChatUrl(config?: ConfigType, messages?: MessageType[], tools?: ToolType[]): UrlType {\n return this.completeChatUrl;\n };\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n async getCompleteChatHeaders(config?: ConfigType, messages?: MessageType[], tools?: ToolType[]): Promise<HeadersType> {\n return new Promise((resolve) => {\n resolve(this.getDefaultHeaders());\n });\n };\n\n getCompleteChatData(config: ConfigType, messages: MessageType[], tools?: ToolType[]): ParamsType {\n const transformedConfig = this.transformConfig(config, messages, tools);\n const transformedMessages = this.transformMessages(messages);\n if (transformedMessages.messages && (transformedMessages.messages as MessageType[]).length === 0) {\n throw new InvalidMessagesError({ \n info: this.modelSchema.name, \n error: new Error(\"Messages are required\") \n });\n }\n\n const transformedTools = tools ? this.transformTools(tools) : {};\n\n return {\n ...this.getDefaultParams(),\n ...transformedConfig,\n ...transformedMessages,\n ...transformedTools,\n };\n };\n\n transformCompleteChatResponse(response: any): ChatResponseType {\n const safe = OpenAICompleteChatResponse.safeParse(response);\n if (safe.success) {\n if (safe.data.choices.length === 0) {\n throw new ApiResponseError({ \n info: this.modelSchema.name, \n error: new Error(\"No choices in response\") \n });\n }\n\n const parsedResponse: OpenAICompleteChatResponseType = safe.data;\n const messages: MessageType[] = [];\n const message = parsedResponse.choices[0].message;\n if (message.content) {\n messages.push(createTextMessage(AssistantRoleLiteral, message.content));\n } \n \n if (message.refusal) {\n messages.push(createTextMessage(AssistantRoleLiteral, message.refusal));\n } \n \n if (message.tool_calls) {\n message.tool_calls.forEach((toolCall, index) => {\n messages.push(createToolCallMessage(\n AssistantRoleLiteral, \n index, \n toolCall.id, \n toolCall.function.name, \n toolCall.function.arguments\n ));\n });\n }\n\n const usage: ChatUsageType = {\n promptTokens: parsedResponse.usage.prompt_tokens,\n completionTokens: parsedResponse.usage.completion_tokens,\n totalTokens: parsedResponse.usage.total_tokens,\n };\n\n const logProbs: ChatLogProbsType = [];\n const _logProbs = parsedResponse.choices[0].logprobs;\n if (_logProbs) {\n if (_logProbs.content) {\n logProbs.push(..._logProbs.content.map((logProb) => ({\n token: logProb.token,\n logProb: logProb.logprob,\n bytes: logProb.bytes,\n topLogProbs: logProb.top_logprobs.map((topLogProb) => ({\n token: topLogProb.token,\n logProb: topLogProb.logprob,\n bytes: topLogProb.bytes,\n })),\n })));\n }\n if (_logProbs.refusal) {\n // TODO: duplicate logic, can be a helper function\n // TODO: should content and refusal be merged?\n logProbs.push(..._logProbs.refusal.map((logProb) => ({\n token: logProb.token,\n logProb: logProb.logprob,\n bytes: logProb.bytes,\n topLogProbs: logProb.top_logprobs.map((topLogProb) => ({\n token: topLogProb.token,\n logProb: topLogProb.logprob,\n bytes: topLogProb.bytes,\n })),\n })));\n }\n }\n\n return { \n messages: messages,\n usage: usage,\n logProbs: logProbs,\n };\n } \n\n throw new ApiRequestError({ info: this.modelSchema.name, error: safe.error });\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n getStreamChatUrl(config?: ConfigType, messages?: MessageType[], tools?: ToolType[]): UrlType {\n return this.streamChatUrl;\n };\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n async getStreamChatHeaders(config?: ConfigType, messages?: MessageType[], tools?: ToolType[]): Promise<HeadersType> {\n return new Promise((resolve) => {\n resolve(this.getDefaultHeaders());\n });\n };\n\n getStreamChatData(config: ConfigType, messages: MessageType[], tools?: ToolType[]): ParamsType {\n const transformedConfig = this.transformConfig(config, messages, tools);\n const transformedMessages = this.transformMessages(messages);\n if (transformedMessages.messages && (transformedMessages.messages as MessageType[]).length === 0) {\n throw new InvalidMessagesError({ \n info: this.modelSchema.name, \n error: new Error(\"Messages are required\") \n });\n }\n\n const transformedTools = tools ? this.transformTools(tools) : {};\n\n return {\n stream: true,\n stream_options: { include_usage: true },\n ...this.getDefaultParams(),\n ...transformedConfig,\n ...transformedMessages,\n ...transformedTools,\n };\n };\n\n async *transformStreamChatResponseChunk(\n chunk: string, \n buffer: string\n ): AsyncGenerator<{ partialResponse: PartialChatResponseType; buffer: string }> {\n // merge last buffer message and split into lines\n const lines = (buffer + chunk).split(\"\\n\").filter((line) => line.trim() !== \"\");\n for (const line of lines) {\n if (line === \"data: [DONE]\") {\n // end of stream\n return;\n } else if (line.startsWith(\"data: {\") && line.endsWith(\"}\")) {\n // line contains message\n let structuredLine: any;\n try {\n // remove the 'data :' prefix from string JSON\n structuredLine = JSON.parse(line.substring(\"data: \".length));\n } catch (error) {\n // malformed JSON error\n throw new ApiResponseError({ \n info: this.modelSchema.name, \n error: new Error(`malformed JSON received in stream : ${line}`) \n });\n }\n\n const safe = OpenAIStreamChatResponse.safeParse(structuredLine);\n if (safe.success) {\n const partialResponse: PartialChatResponseType = { partialMessages: [] };\n const parsedResponse: OpenAIStreamChatResponseType = safe.data;\n if (parsedResponse.choices.length > 0) {\n const message = parsedResponse.choices[0].delta;\n if (message !== undefined && Object.keys(message).length !== 0) {\n if (\"content\" in message && message.content !== null) {\n partialResponse.partialMessages.push(createPartialTextMessage(AssistantRoleLiteral, message.content as string));\n } else if (\"refusal\" in message && message.refusal !== null) {\n partialResponse.partialMessages.push(createPartialTextMessage(AssistantRoleLiteral, message.refusal as string));\n } else if (\"tool_calls\" in message && message.tool_calls !== undefined) {\n const toolCall = message.tool_calls.at(0)!;\n partialResponse.partialMessages.push(createPartialToolCallMessage(\n AssistantRoleLiteral,\n toolCall.index,\n toolCall.id,\n toolCall.function?.name,\n toolCall.function?.arguments\n ));\n }\n }\n }\n\n if (parsedResponse.usage) {\n partialResponse.usage = {\n promptTokens: parsedResponse.usage.prompt_tokens,\n completionTokens: parsedResponse.usage.completion_tokens,\n totalTokens: parsedResponse.usage.total_tokens,\n };\n }\n\n yield { partialResponse: partialResponse, buffer: buffer };\n } else {\n throw new ApiResponseError({ info: this.modelSchema.name, error: safe.error });\n }\n } else {\n // line starts with unknown event\n // TODO: should throw an error or ignore ?\n }\n }\n };\n}\n\nexport { \n BaseChatModel, \n BaseChatModelOptions, \n type BaseChatModelOptionsType \n};\n","import { z } from \"zod\";\n\nimport { ChatModelSchema } from \"@adaline/provider\";\n\nimport { OpenAIConfigs } from \"../../configs\";\nimport { BaseChatModel, BaseChatModelOptions } from \"./base-language-model.openai\";\nimport { OpenAIChatModelRoles, OpenAIChatModelRolesMap, OpenAIChatModelModalities, OpenAIChatModelModalitiesEnum } from \"./types\";\n\nconst GPT4oLiteral = \"gpt-4o\";\n// TODO: recheck description\nconst GPT4oDescription = \"GPT-4o is a large-scale multimodal model trained by OpenAI. \\\nIt is the successor to GPT-4 and is designed to be more powerful and capable than its predecessor.\";\n\nconst GPT4oSchema = ChatModelSchema(OpenAIChatModelRoles, OpenAIChatModelModalitiesEnum).parse({\n name: GPT4oLiteral,\n description: GPT4oDescription,\n maxInputTokens: 128000,\n maxOutputTokens: 128000,\n roles: OpenAIChatModelRolesMap,\n modalities: OpenAIChatModelModalities,\n config: {\n def: OpenAIConfigs.base(128000, 4).def,\n schema: OpenAIConfigs.base(128000, 4).schema,\n },\n});\n\nconst GPT4oOptions = BaseChatModelOptions;\ntype GPT4oOptionsType = z.infer<typeof GPT4oOptions>;\n\nclass GPT4o extends BaseChatModel {\n constructor(options: GPT4oOptionsType) {\n super(GPT4oSchema, options);\n }\n}\n\nexport { GPT4o, GPT4oOptions, GPT4oSchema, type GPT4oOptionsType };\n","import { z } from \"zod\";\n\nimport { EmbeddingModelSchemaType } from \"@adaline/provider\";\nimport { EmbeddingTextModalityLiteral, EmbeddingTokenModalityLiteral } from \"@adaline/types\";\n\nconst OpenAIEmbeddingModelModalities: EmbeddingModelSchemaType[\"modalities\"] = [\n EmbeddingTextModalityLiteral,\n EmbeddingTokenModalityLiteral,\n];\n\nconst OpenAIEmbeddingModelModalitiesEnum = z.enum([\n EmbeddingTextModalityLiteral,\n EmbeddingTokenModalityLiteral,\n]);\n\nexport { OpenAIEmbeddingModelModalitiesEnum, OpenAIEmbeddingModelModalities };\n","import { z } from \"zod\";\n\nconst OpenAIGetEmbeddingsResponse = z.object({\n object: z.literal(\"list\"),\n model: z.string(),\n data: z.array(\n z.object({\n index: z.number(),\n object: z.literal(\"embedding\"),\n embedding: z.array(z.number()).or(z.string().base64()),\n })\n ),\n usage: z.object({\n prompt_tokens: z.number().nonnegative(),\n total_tokens: z.number().nonnegative(),\n }),\n});\n\nexport { OpenAIGetEmbeddingsResponse };","import { z } from \"zod\";\n\nimport { \n ConfigType, \n FloatEmbeddingType,\n Base64EmbeddingType,\n EmbeddingRequests,\n EmbeddingsUsageType,\n EmbeddingRequestsType,\n EmbeddingResponseType,\n FloatEmbeddingLiteral,\n Base64EmbeddingLiteral,\n} from \"@adaline/types\";\n\nimport { \n EmbeddingModelV1,\n EmbeddingModelSchemaType,\n HeadersType, \n ParamsType, \n UrlType, \n urlWithoutTrailingSlash,\n ApiRequestError,\n InvalidConfigError,\n InvalidEmbeddingRequestsError, \n} from \"@adaline/provider\";\n\nimport { OpenAIGetEmbeddingsResponse } from \"./types\";\n\nconst BaseEmbeddingModelOptions = z.object({\n apiKey: z.string(),\n baseUrl: z.string().url(),\n getEmbeddingsUrl: z.string().url().optional(),\n});\ntype BaseEmbeddingModelOptionsType = z.infer<typeof BaseEmbeddingModelOptions>;\n\nclass BaseEmbeddingModel implements EmbeddingModelV1<EmbeddingModelSchemaType> {\n readonly version = \"v1\" as const;\n modelSchema: EmbeddingModelSchemaType;\n\n private readonly apiKey: string;\n private readonly baseUrl: string;\n private readonly getEmbeddingsUrl: string;\n\n constructor(modelSchema: EmbeddingModelSchemaType, options: BaseEmbeddingModelOptionsType) {\n this.modelSchema = modelSchema;\n this.apiKey = options.apiKey;\n this.baseUrl = urlWithoutTrailingSlash(options.baseUrl);\n this.getEmbeddingsUrl = urlWithoutTrailingSlash(options.getEmbeddingsUrl || `${this.baseUrl}/embeddings`);\n };\n\n getDefaultBaseUrl = (): UrlType => {\n return this.baseUrl;\n };\n\n getDefaultHeaders = (): HeadersType => {\n return {\n Authorization: `Bearer ${this.apiKey}`,\n \"Content-Type\": \"application/json\",\n };\n };\n\n getDefaultParams = (): ParamsType => {\n return {\n model: this.modelSchema.name,\n };\n };\n\n // TODO: should validate requests before counting tokens?\n getTokenCount = (requests: EmbeddingRequestsType): number => {\n return requests.requests.reduce((acc, request) => acc + request.length, 0);\n };\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n transformConfig = (config: ConfigType, requests?: EmbeddingRequestsType): ParamsType => {\n const _parsedConfig = this.modelSchema.config.schema.safeParse(config);\n if (!_parsedConfig.success) {\n throw new InvalidConfigError({ info: this.modelSchema.name, error: _parsedConfig.error })\n }\n\n const parsedConfig = _parsedConfig.data as ConfigType;\n // TODO: check if this is still needed if safeParse already checks for that?\n Object.keys(parsedConfig as ConfigType).forEach((key) => {\n if (!this.modelSchema.config.def[key]) {\n throw new InvalidConfigError({ \n info: this.modelSchema.name, \n error: new Error(`Invalid config key: '${key}'`) \n });\n }\n });\n\n const transformedConfig = Object.keys(parsedConfig).reduce(\n (acc, key) => {\n const def = this.modelSchema.config.def[key];\n const paramKey = def.param;\n const paramValue = parsedConfig[key];\n acc[paramKey] = paramValue;\n return acc;\n },\n {} as ParamsType\n );\n\n return transformedConfig;\n };\n\n transformEmbeddingRequests = (requests: EmbeddingRequestsType): ParamsType => {\n const _parsedRequests = EmbeddingRequests().safeParse(requests);\n if (!_parsedRequests.success) {\n throw new InvalidEmbeddingRequestsError({ info: this.modelSchema.name, error: _parsedRequests.error })\n }\n\n // Note from OpenAI API Reference: \n // The input must not exceed the max input tokens for the model (8192 tokens for text-embedding-ada-002), \n // cannot be an empty string, and any array must be 2048 dimensions or less.\n // TODO: add max tokens check in requests based on model schema when token calculation is accurate\n\n const parsedRequests = _parsedRequests.data as EmbeddingRequestsType;\n return {\n input: parsedRequests.requests\n }\n };\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n getGetEmbeddingsUrl = (config?: ConfigType, requests?: EmbeddingRequestsType): UrlType => {\n return this.getEmbeddingsUrl;\n };\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n getGetEmbeddingsHeaders = (config?: ConfigType, requests?: EmbeddingRequestsType): HeadersType => {\n return this.getDefaultHeaders();\n };\n\n getGetEmbeddingsData = (config: ConfigType, requests: EmbeddingRequestsType): ParamsType => {\n return {\n ...this.getDefaultParams(),\n ...this.transformConfig(config, requests),\n ...this.transformEmbeddingRequests(requests),\n };\n };\n\n transformGetEmbeddingsResponse = (response: any): EmbeddingResponseType => {\n let encodingFormat: typeof Base64EmbeddingLiteral | typeof FloatEmbeddingLiteral;\n const safe = OpenAIGetEmbeddingsResponse.safeParse(response);\n if (safe.success) {\n const parsedResponse = safe.data;\n encodingFormat = typeof parsedResponse.data[0].embedding === \"string\" ? Base64EmbeddingLiteral : FloatEmbeddingLiteral;\n const embeddings = parsedResponse.data.map((item) => {\n if (typeof item.embedding === \"string\") {\n return {\n index: item.index,\n embedding: item.embedding,\n } as Base64EmbeddingType;\n } else {\n return {\n index: item.index,\n embedding: item.embedding,\n } as FloatEmbeddingType;\n }\n });\n\n return {\n encodingFormat:encodingFormat,\n embeddings: embeddings,\n usage: {\n totalTokens: parsedResponse.usage.total_tokens,\n }\n } as EmbeddingResponseType;\n }\n\n throw new ApiRequestError({ info: this.modelSchema.name, error: safe.error });\n };\n}\n\nexport { \n BaseEmbeddingModel, \n BaseEmbeddingModelOptions,\n type BaseEmbeddingModelOptionsType \n};","import { z } from \"zod\";\n\nimport { EmbeddingModelSchema } from \"@adaline/provider\";\n\nimport { OpenAIWordEmbeddingConfigs } from \"../../configs\";\nimport { BaseEmbeddingModel, BaseEmbeddingModelOptions } from \"./base-embedding-model.openai\";\nimport { OpenAIEmbeddingModelModalities, OpenAIEmbeddingModelModalitiesEnum } from \"./types\";\n\nconst TextEmbeddingAda002Literal = \"text-embedding-ada-002\";\nconst TextEmbeddingAda002Description = \"some description\"; // TODO: add proper description\n\nconst TextEmbeddingAda002Schema = EmbeddingModelSchema(OpenAIEmbeddingModelModalitiesEnum).parse({\n name: TextEmbeddingAda002Literal,\n description: TextEmbeddingAda002Description,\n modalities: OpenAIEmbeddingModelModalities,\n maxInputTokens: 8192,\n maxOutputTokens: 8192,\n config: {\n def: OpenAIWordEmbeddingConfigs.base().def,\n schema: OpenAIWordEmbeddingConfigs.base().schema,\n },\n});\n\nconst TextEmbeddingAda002Options = BaseEmbeddingModelOptions;\ntype TextEmbeddingAda002OptionsType = z.infer<typeof TextEmbeddingAda002Options>;\n\nclass TextEmbeddingAda002 extends BaseEmbeddingModel {\n constructor(options: TextEmbeddingAda002OptionsType) {\n super(TextEmbeddingAda002Schema, options);\n }\n}\n\nexport { TextEmbeddingAda002, TextEmbeddingAda002Options, TextEmbeddingAda002Schema, type TextEmbeddingAda002OptionsType };\n","import { z } from \"zod\";\n\nimport { ChatModelV1, ChatModelSchemaType, EmbeddingModelV1, EmbeddingModelSchemaType, ProviderV1 } from \"@adaline/provider\";\n\nimport { GPT4o, GPT4oOptions, GPT4oSchema } from \"../models/chat-models/gpt-4o.openai\";\nimport { TextEmbeddingAda002, TextEmbeddingAda002Options, TextEmbeddingAda002Schema } from \"../models/embedding-models/text-embedding-ada-002.openai\";\n\nconst ProviderLiteral = \"openai\";\n\nclass OpenAI<O extends Record<string, any> = Record<string, any>> implements ProviderV1<O> {\n readonly version = \"v1\" as const;\n readonly name = ProviderLiteral;\n private readonly baseUrl: string = \"https://api.openai.com/v1\";\n\n private readonly chatModelFactories: \n Record<string, { \n model: { new (options: any): ChatModelV1 },\n modelOptions: z.ZodType<any>,\n modelSchema: ChatModelSchemaType\n }> = {\n \"gpt-4o\": { model: GPT4o, modelOptions: GPT4oOptions, modelSchema: GPT4oSchema },\n };\n\n private readonly embeddingModelFactories: \n Record<string, { \n model: { new (options: any): EmbeddingModelV1 },\n modelOptions: z.ZodType<any>,\n modelSchema: EmbeddingModelSchemaType\n }> = {\n \"text-embedding-ada-002\": { model: TextEmbeddingAda002, modelOptions: TextEmbeddingAda002Options, modelSchema: TextEmbeddingAda002Schema },\n };\n\n chatModelLiterals(): string[] {\n return Object.keys(this.chatModelFactories);\n }\n\n chatModel(name: string, options: O): ChatModelV1 {\n if (!(name in this.chatModelFactories)) {\n throw new Error(`Model ${name} not found`); // TODO: move to custom error type\n }\n\n const model = this.chatModelFactories[name].model;\n const modelOptions = {\n ...options,\n baseUrl: options.baseUrl ?? this.baseUrl\n };\n const parsedOptions = this.chatModelFactories[name].modelOptions.parse(modelOptions);\n return new model(parsedOptions);\n }\n\n chatModelSchema(name: string): ChatModelSchemaType {\n if (!(name in this.chatModelFactories)) {\n throw new Error(`Model ${name} not found`); // TODO: move to custom error type\n }\n return this.chatModelFactories[name].modelSchema;\n }\n\n chatModelSchemas(): Record<string, ChatModelSchemaType> {\n return Object.keys(this.chatModelFactories).reduce((acc, key) => {\n acc[key] = this.chatModelFactories[key].modelSchema;\n return acc;\n }, {} as Record<string, ChatModelSchemaType>);\n }\n\n embeddingModelLiterals(): string[] {\n return Object.keys(this.embeddingModelFactories);\n }\n\n embeddingModel(name: string, options: O): EmbeddingModelV1 {\n if (!(name in this.embeddingModelFactories)) {\n throw new Error(`Model ${name} not found`); // TODO: move to custom error type\n }\n\n const model = this.embeddingModelFactories[name].model;\n const modelOptions = { \n ...options,\n baseUrl: options.baseUrl ?? this.baseUrl\n };\n const parsedOptions = this.embeddingModelFactories[name].modelOptions.parse(modelOptions);\n return new model(parsedOptions);\n }\n\n embeddingModelSchema(name: string): EmbeddingModelSchemaType {\n if (!(name in this.embeddingModelFactories)) {\n throw new Error(`Model ${name} not found`); // TODO: move to custom error type\n }\n return this.embeddingModelFactories[name].modelSchema;\n }\n\n embeddingModelSchemas(): Record<string, EmbeddingModelSchemaType> {\n return Object.keys(this.embeddingModelFactories).reduce((acc, key) => {\n acc[key] = this.embeddingModelFactories[key].modelSchema;\n return acc;\n }, {} as Record<string, EmbeddingModelSchemaType>);\n }\n}\n\nexport { OpenAI, ProviderLiteral };\n"]}
1
+ {"version":3,"sources":["../src/configs/chat-model/base.config.chat-model.openai.ts","../src/configs/chat-model/common.config.chat-model.openai.ts","../src/configs/chat-model/response-schema.chat-model.openai.ts","../src/configs/embedding-model/common.config.embedding-model.openai.ts","../src/configs/embedding-model/base.config.embedding-model.openai.ts","../src/configs/configs.openai.ts","../src/models/chat-models/types/roles.chat-model.openai.ts","../src/models/chat-models/types/modalities.chat-model.openai.ts","../src/models/chat-models/types/response.chat-model.openai.ts","../src/models/chat-models/types/request.chat-model.openai.ts","../src/models/chat-models/base-chat-model.openai.ts","../src/models/chat-models/gpt-4o.openai.ts","../src/models/embedding-models/types/modalitites.embedding-model.openai.ts","../src/models/embedding-models/types/response.embedding-model.openai.ts","../src/models/embedding-models/types/request.embedding-model.openai.ts","../src/models/embedding-models/base-embedding-model.openai.ts","../src/models/embedding-models/text-embedding-ada-002.openai.ts","../src/provider/provider.openai.ts"],"names":["temperature","RangeConfigItem","CONFIG","maxTokens","maxOutputTokens","stop","maxSequences","MultiStringConfigItem","topP","frequencyPenalty","presencePenalty","seed","logProbs","SelectBooleanConfigItem","topLogProbs","responseFormat","SelectStringConfigItem","toolChoice","ChatModelBaseConfigSchema","z","value","ChatModelBaseConfigDef","ResponseSchemaTypes","ResponseSchemaTypesLiteral","ResponseSchemaProperty","ResponseSchemaStructure","ResponseSchema","responseSchema","ObjectSchemaConfigItem","ChatModelResponseSchemaConfigDef","__spreadProps","__spreadValues","ChatModelResponseSchemaConfigSchema","encodingFormat","dimensions","EmbeddingModelBaseConfigSchema","EmbeddingModelBaseConfigDef","OpenAIChatModelConfigs","OpenAIEmbeddingModelConfigs","OpenAIChatModelRoles","SystemRoleLiteral","UserRoleLiteral","AssistantRoleLiteral","ToolRoleLiteral","OpenAIChatModelRolesMap","OpenAIChatModelModalities","TextModalityLiteral","ImageModalityLiteral","ToolCallModalityLiteral","ToolResponseModalityLiteral","OpenAIChatModelModalitiesEnum","OpenAIBaseLogProb","OpenAILogProb","OpenAIToolCallsCompleteChatResponse","OpenAICompleteChatResponse","OpenAIToolCallsStreamChatResponse","OpenAIStreamChatResponse","OpenAIChatRequestTool","OpenAIChatRequestToolChoiceEnum","OpenAIChatRequestToolChoiceFunction","OpenAIChatRequestResponseFormat","OpenAIChatRequestTextContent","OpenAIChatRequestImageContent","OpenAIChatRequestToolCallContent","OpenAIChatRequestSystemMessage","OpenAIChatRequestUserMessage","OpenAIChatRequestAssistantMessage","data","OpenAIChatRequestToolMessage","OpenAIChatRequestMessage","OpenAIChatRequest","BaseChatModelOptions","BaseChatModel","modelSchema","options","parsedOptions","urlWithoutTrailingSlash","responseHeaders","parseDuration","duration","regex","timeUnits","match","totalMs","unit","resetRequestsDelayMs","resetTokensDelayMs","shouldRetry","delayMs","messages","acc","message","content","request","safeRequest","InvalidModelRequestError","parsedRequest","modelName","_config","config","Config","removeUndefinedEntries","toolCallMap","role","_content","c","UrlImageContentTypeLiteral","assistantContent","toolCall","index","toolCallContent","toolResponse","tools","tool","_toolChoice","_parsedConfig","InvalidConfigError","parsedConfig","key","transformedConfig","def","paramKey","paramValue","configToolChoice","parsedMessages","parsedMessage","Message","InvalidMessagesError","textContent","toolCalls","imageContent","combinedContent","InvalidToolsError","parsedTool","Tool","__async","resolve","transformedMessages","transformedTools","response","safe","ModelResponseError","parsedResponse","createTextMessage","createToolCallMessage","usage","_logProbs","logProb","topLogProb","chunk","buffer","__asyncGenerator","_a","_b","lines","line","structuredLine","error","partialResponse","createPartialTextMessage","createPartialToolCallMessage","GPT4oLiteral","GPT4oDescription","GPT4oSchema","ChatModelSchema","GPT4oOptions","GPT4o","OpenAIEmbeddingModelModalities","EmbeddingTextModalityLiteral","EmbeddingTokenModalityLiteral","OpenAIEmbeddingModelModalitiesEnum","OpenAIGetEmbeddingsResponse","OpenAIEmbeddingRequestInput","OpenAIEmbeddingRequest","BaseEmbeddingModelOptions","BaseEmbeddingModel","requests","embeddingRequests","embeddingFormat","_parsedRequests","EmbeddingRequests","InvalidEmbeddingRequestsError","Base64EmbeddingLiteral","FloatEmbeddingLiteral","embeddings","item","TextEmbeddingAda002Literal","TextEmbeddingAda002Description","TextEmbeddingAda002Schema","EmbeddingModelSchema","TextEmbeddingAda002Options","TextEmbeddingAda002","ProviderLiteral","OpenAI","name","ProviderError","model","modelOptions"],"mappings":"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","file":"index.js","sourcesContent":["import { z } from \"zod\";\n\nimport {\n frequencyPenalty,\n logProbs,\n maxTokens,\n presencePenalty,\n responseFormat,\n seed,\n stop,\n temperature,\n toolChoice,\n topLogProbs,\n topP,\n} from \"./common.config.chat-model.openai\";\n\nconst ChatModelBaseConfigSchema = (maxOutputTokens: number, maxSequences: number) =>\n z.object({\n temperature: temperature.schema,\n maxTokens: maxTokens(maxOutputTokens).schema,\n stop: stop(maxSequences).schema,\n topP: topP.schema,\n frequencyPenalty: frequencyPenalty.schema,\n presencePenalty: presencePenalty.schema,\n seed: seed.schema.transform((value) => (value === 0 ? undefined : value)),\n logProbs: logProbs.schema,\n topLogProbs: topLogProbs.schema,\n responseFormat: responseFormat.schema,\n toolChoice: toolChoice.schema,\n });\n\nconst ChatModelBaseConfigDef = (maxOutputTokens: number, maxSequences: number) =>\n ({\n temperature: temperature.def,\n maxTokens: maxTokens(maxOutputTokens).def,\n stop: stop(maxSequences).def,\n topP: topP.def,\n frequencyPenalty: frequencyPenalty.def,\n presencePenalty: presencePenalty.def,\n seed: seed.def,\n responseFormat: responseFormat.def,\n logProbs: logProbs.def,\n topLogProbs: topLogProbs.def,\n toolChoice: toolChoice.def,\n }) as const;\n\nexport { ChatModelBaseConfigDef, ChatModelBaseConfigSchema };\n","import { CONFIG, MultiStringConfigItem, RangeConfigItem, SelectStringConfigItem, SelectBooleanConfigItem } from \"@adaline/provider\";\n\nconst temperature = RangeConfigItem({\n param: \"temperature\",\n title: CONFIG.TEMPERATURE.title,\n description: CONFIG.TEMPERATURE.description,\n min: 0,\n max: 2,\n step: 0.01,\n default: 1,\n});\n\nconst maxTokens = (maxOutputTokens: number) =>\n RangeConfigItem({\n param: \"max_tokens\",\n title: CONFIG.MAX_TOKENS.title,\n description: CONFIG.MAX_TOKENS.description,\n min: 0,\n max: maxOutputTokens,\n step: 1,\n default: 0,\n });\n\nconst stop = (maxSequences: number) =>\n MultiStringConfigItem({\n param: \"stop\",\n title: CONFIG.STOP(maxSequences).title,\n description: CONFIG.STOP(maxSequences).description,\n max: maxSequences,\n });\n\nconst topP = RangeConfigItem({\n param: \"top_p\",\n title: CONFIG.TOP_P.title,\n description: CONFIG.TOP_P.description,\n min: 0,\n max: 1,\n step: 0.01,\n default: 1,\n});\n\nconst frequencyPenalty = RangeConfigItem({\n param: \"frequency_penalty\",\n title: CONFIG.FREQUENCY_PENALTY.title,\n description: CONFIG.FREQUENCY_PENALTY.description,\n min: -2,\n max: 2,\n step: 0.01,\n default: 0,\n});\n\nconst presencePenalty = RangeConfigItem({\n param: \"presence_penalty\",\n title: CONFIG.PRESENCE_PENALTY.title,\n description: CONFIG.PRESENCE_PENALTY.description,\n min: -2,\n max: 2,\n step: 0.01,\n default: 0,\n});\n\nconst seed = RangeConfigItem({\n param: \"seed\",\n title: \"Seed\",\n description: \"This is in BETA. Set a seed to get reproducible results. Determinism is not guaranteed. Set to 0 to disable.\",\n min: 0,\n max: 1000000,\n step: 1,\n default: 0,\n});\n\nconst logProbs = SelectBooleanConfigItem({\n param: \"logprobs\",\n title: \"LogProbs\",\n description:\n \"Whether to return log probabilities of the output tokens or not. If true, returns the log probabilities of each output token returned.\",\n default: false,\n});\n\nconst topLogProbs = RangeConfigItem({\n param: \"top_logprobs\",\n title: \"Top logprobs\",\n description:\n \"The number of most likely tokens to return at each token position, each with an associated log probability. 'logprobs' must be set to true if this parameter is used.\",\n min: 0,\n max: 20,\n step: 1,\n default: 0,\n});\n\nconst responseFormat = SelectStringConfigItem({\n param: \"response_format\",\n title: \"Response format\",\n description:\n \"Choose the response format of your model. For JSON, you must include the string 'JSON' in some form within your system / user prompt.\",\n default: \"text\",\n choices: [\"text\", \"json_object\"],\n});\n\nconst toolChoice = SelectStringConfigItem({\n param: \"tool_choice\",\n title: \"Tool choice\",\n description:\n \"Controls which (if any) tool is called by the model. 'none' means the model will not call a function. 'auto' means the model can pick between generating a message or calling a tool.\",\n default: \"auto\",\n choices: [\"auto\", \"required\", \"none\"],\n});\n\nexport { frequencyPenalty, logProbs, maxTokens, presencePenalty, responseFormat, seed, stop, temperature, toolChoice, topLogProbs, topP };\n","import { z } from \"zod\";\n\nimport { ObjectSchemaConfigItem, SelectStringConfigItem } from \"@adaline/provider\";\n\nimport { ChatModelBaseConfigDef, ChatModelBaseConfigSchema } from \"./base.config.chat-model.openai\";\n\n// TODO: move to json schema 7 type and validator when implemented for tool types\nconst ResponseSchemaTypes = [\"object\", \"array\", \"number\", \"string\", \"boolean\", \"enum\"] as const;\nconst ResponseSchemaTypesLiteral = z.enum(ResponseSchemaTypes);\n// type ResponseSchemaTypesType = z.infer<typeof ResponseSchemaTypesLiteral>;\n\nconst ResponseSchemaProperty = z.object({\n anyOf: z.array(z.any()).optional(),\n type: z.union([ResponseSchemaTypesLiteral, z.array(z.union([ResponseSchemaTypesLiteral, z.literal(\"null\")]))]).optional(),\n default: z.any().optional(),\n title: z.string().optional(),\n description: z.string().max(4096).optional(),\n properties: z.record(z.any()).optional(),\n required: z.array(z.string()).optional(),\n minItems: z.number().int().min(0).optional(),\n maxItems: z.number().int().optional(),\n items: z.record(z.any()).optional(), // Recursive structure to handle nested arrays and objects\n enum: z.array(z.union([z.string(), z.number(), z.boolean(), z.null()])).optional(), // Enum for allowed values\n minimum: z.number().optional(), // Minimum value for number\n maximum: z.number().optional(), // Maximum value for number\n minLength: z.number().int().min(0).optional(), // Minimum length for string\n maxLength: z.number().int().optional(), // Maximum length for string\n $ref: z.string().optional(), // Reference to another schema\n});\n// type ResponseSchemaPropertyType = z.infer<typeof ResponseSchemaProperty>;\n\nconst ResponseSchemaStructure = z.object({\n type: z.enum([\"object\"]),\n required: z.array(z.string()),\n $defs: z.record(z.any()).optional(),\n properties: z.record(ResponseSchemaProperty),\n additionalProperties: z.literal(false),\n});\n// type ResponseSchemaStructureType = z.infer<typeof ResponseSchemaStructure>;\n\nconst ResponseSchema = z\n .object({\n name: z\n .string()\n .regex(/^[a-zA-Z0-9_]{1,64}$/)\n .max(64),\n description: z.string().max(4096),\n strict: z.boolean().optional(),\n schema: ResponseSchemaStructure,\n })\n .optional();\n// type ResponseSchemaType = z.infer<typeof ResponseSchema>;\n\nconst responseSchema = ObjectSchemaConfigItem({\n param: \"response_schema\",\n title: \"Response schema\",\n description: \"When response format is set to 'json_schema', the model will return a JSON object of the specified schema.\",\n objectSchema: ResponseSchema,\n});\n\nconst responseFormat = SelectStringConfigItem({\n param: \"response_format\",\n title: \"Response format\",\n description:\n \"Choose the response format of your model. 'json_object' colloquially known as JSON mode, instructs the model to respond with a valid \\\n JSON (must include the term 'json' in prompt). 'json_schema' colloquially known as structured outputs, allows you to specify a strict \\\n response schema that the model will adhere to.\",\n default: \"text\",\n choices: [\"text\", \"json_object\", \"json_schema\"],\n});\n\nconst ChatModelResponseSchemaConfigDef = (maxOutputTokens: number, maxSequences: number) => ({\n ...ChatModelBaseConfigDef(maxOutputTokens, maxSequences),\n responseFormat: responseFormat.def,\n responseSchema: responseSchema.def,\n});\n\nconst ChatModelResponseSchemaConfigSchema = (maxOutputTokens: number, maxSequences: number) =>\n ChatModelBaseConfigSchema(maxOutputTokens, maxSequences).extend({\n responseFormat: responseFormat.schema,\n responseSchema: responseSchema.schema,\n });\n\nexport { ChatModelResponseSchemaConfigDef, ChatModelResponseSchemaConfigSchema };\n","import { RangeConfigItem, SelectStringConfigItem } from \"@adaline/provider\";\n\nconst encodingFormat = SelectStringConfigItem({\n param: \"encoding_format\",\n title: \"Encoding format\",\n description:\n \"Select the encoding format for the word embedding.\",\n default: \"float\",\n choices: [\"float\", \"base64\"],\n});\n\nconst dimensions = RangeConfigItem({\n param: \"dimensions\",\n title: \"Dimensions\",\n description: \"Select the number of dimensions for the word embedding.\",\n min: 1,\n max: 1024, // TODO: check if this is the base max\n step: 1,\n default: 1024, // TODO: check if this is the base default\n});\n\nexport { \n encodingFormat, \n dimensions \n};\n","import { z } from \"zod\";\n\nimport { dimensions, encodingFormat } from \"./common.config.embedding-model.openai\";\n\nconst EmbeddingModelBaseConfigSchema = () =>\n z.object({\n encodingFormat: encodingFormat.schema,\n dimensions: dimensions.schema, // TODO: only supported for text-embedding-3 and later models\n });\n\nconst EmbeddingModelBaseConfigDef = () =>\n ({\n encodingFormat: encodingFormat.def,\n dimensions: dimensions.def,\n }) as const;\n\nexport { EmbeddingModelBaseConfigDef, EmbeddingModelBaseConfigSchema };\n","import { ChatModelBaseConfigDef, ChatModelBaseConfigSchema, ChatModelResponseSchemaConfigDef, ChatModelResponseSchemaConfigSchema } from \"./chat-model\";\nimport { EmbeddingModelBaseConfigDef, EmbeddingModelBaseConfigSchema } from \"./embedding-model\";\n\nconst OpenAIChatModelConfigs = {\n base: (maxOutputTokens: number, maxSequences: number) => ({\n def: ChatModelBaseConfigDef(maxOutputTokens, maxSequences),\n schema: ChatModelBaseConfigSchema(maxOutputTokens, maxSequences),\n }),\n responseSchema: (maxOutputTokens: number, maxSequences: number) => ({\n def: ChatModelResponseSchemaConfigDef(maxOutputTokens, maxSequences),\n schema: ChatModelResponseSchemaConfigSchema(maxOutputTokens, maxSequences),\n }),\n} as const;\n\nconst OpenAIEmbeddingModelConfigs = {\n base: () => ({\n def: EmbeddingModelBaseConfigDef(),\n schema: EmbeddingModelBaseConfigSchema(),\n }),\n} as const;\n\nexport { OpenAIChatModelConfigs, OpenAIEmbeddingModelConfigs };\n","import { z } from \"zod\";\n\nimport { AssistantRoleLiteral, SystemRoleLiteral, ToolRoleLiteral, UserRoleLiteral } from \"@adaline/types\";\n\nconst OpenAIChatModelRoles = z.enum([SystemRoleLiteral, UserRoleLiteral, AssistantRoleLiteral, ToolRoleLiteral]);\n\nconst OpenAIChatModelRolesMap = {\n system: SystemRoleLiteral,\n user: UserRoleLiteral,\n assistant: AssistantRoleLiteral,\n tool: ToolRoleLiteral,\n} as const;\n\nexport { OpenAIChatModelRoles, OpenAIChatModelRolesMap };\n","import { z } from \"zod\";\n\nimport { ChatModelSchemaType } from \"@adaline/provider\";\nimport { ImageModalityLiteral, TextModalityLiteral, ToolCallModalityLiteral, ToolResponseModalityLiteral } from \"@adaline/types\";\n\nconst OpenAIChatModelModalities: ChatModelSchemaType[\"modalities\"] = [\n TextModalityLiteral,\n ImageModalityLiteral,\n ToolCallModalityLiteral,\n ToolResponseModalityLiteral,\n];\n\nconst OpenAIChatModelModalitiesEnum = z.enum([\n TextModalityLiteral,\n ImageModalityLiteral,\n ToolCallModalityLiteral,\n ToolResponseModalityLiteral,\n]);\n\nexport { OpenAIChatModelModalitiesEnum, OpenAIChatModelModalities };\n","import { z } from \"zod\";\n\nconst OpenAIBaseLogProb = z.object({\n token: z.string(),\n logprob: z.number(),\n bytes: z.array(z.number()).nullable(),\n});\n\nconst OpenAILogProb = z.object({\n content: z.array(OpenAIBaseLogProb.extend({\n top_logprobs: z.array(OpenAIBaseLogProb),\n })).nullable(),\n refusal: z.array(OpenAIBaseLogProb.extend({\n top_logprobs: z.array(OpenAIBaseLogProb),\n })).nullable(),\n}).nullable();\n\nconst OpenAIToolCallsCompleteChatResponse = z.array(\n z.object({\n id: z.string().min(1),\n type: z.enum([\"function\"]),\n function: z.object({\n name: z.string(),\n arguments: z.string(),\n }),\n })\n);\n\nconst OpenAICompleteChatResponse = z.object({\n id: z.string(),\n object: z.literal(\"chat.completion\"),\n created: z.number(),\n model: z.string(),\n system_fingerprint: z.string(),\n choices: z.array(\n z.object({\n index: z.number(),\n message: z.object({\n role: z.string(),\n content: z.string().nullable().optional(),\n tool_calls: OpenAIToolCallsCompleteChatResponse.optional(),\n refusal: z.string().nullable().optional(),\n }),\n logprobs: OpenAILogProb,\n finish_reason: z.string(),\n })\n ),\n usage: z.object({\n prompt_tokens: z.number(),\n completion_tokens: z.number(),\n total_tokens: z.number(),\n }),\n});\ntype OpenAICompleteChatResponseType = z.infer<typeof OpenAICompleteChatResponse>;\n\nconst OpenAIToolCallsStreamChatResponse = z.array(\n z.object({\n index: z.number().int(),\n id: z.string().min(1).optional(),\n type: z.enum([\"function\"]).optional(),\n function: z\n .object({\n name: z.string().min(1).optional(),\n arguments: z.string().optional(),\n })\n .optional(),\n })\n);\n\nconst OpenAIStreamChatResponse = z.object({\n id: z.string(),\n object: z.string(),\n created: z.number(),\n model: z.string(),\n system_fingerprint: z.string().nullable(),\n choices: z.array(\n z.object({\n index: z.number(),\n delta: z\n .object({\n content: z.string().nullable().optional(),\n tool_calls: OpenAIToolCallsStreamChatResponse.optional(),\n refusal: z.string().nullable().optional(),\n })\n .or(z.object({})),\n logprobs: OpenAILogProb,\n finish_reason: z.string().nullable(),\n })\n ),\n usage: z.object({\n prompt_tokens: z.number(),\n completion_tokens: z.number(),\n total_tokens: z.number(),\n }).nullable().optional(),\n});\ntype OpenAIStreamChatResponseType = z.infer<typeof OpenAIStreamChatResponse>;\n\nexport {\n OpenAIStreamChatResponse,\n OpenAICompleteChatResponse,\n OpenAIToolCallsStreamChatResponse,\n OpenAIToolCallsCompleteChatResponse,\n type OpenAIStreamChatResponseType,\n type OpenAICompleteChatResponseType,\n}","import { z } from \"zod\";\n\nconst OpenAIChatRequestTool = z.object({\n type: z.literal(\"function\"),\n function: z.object({\n name: z.string().min(1),\n description: z.string().min(1).optional(),\n strict: z.boolean().optional(),\n parameters: z.any(), // TODO: should be more strict\n }),\n});\ntype OpenAIChatRequestToolType = z.infer<typeof OpenAIChatRequestTool>;\n\nconst OpenAIChatRequestToolChoiceEnum = z.enum([\"none\", \"auto\", \"required\"]);\ntype OpenAIChatRequestToolChoiceEnumType = z.infer<typeof OpenAIChatRequestToolChoiceEnum>;\n\nconst OpenAIChatRequestToolChoiceFunction = z.object({\n type: z.literal(\"function\"),\n function: z.object({\n name: z.string().min(1),\n }),\n});\ntype OpenAIChatRequestToolChoiceFunctionType = z.infer<typeof OpenAIChatRequestToolChoiceFunction>;\n\nconst OpenAIChatRequestResponseFormat = z\n .object({\n type: z.enum([\"text\", \"json_object\"]),\n })\n .or(\n z.object({\n type: z.literal(\"json_schema\"),\n json_schema: z.object({\n name: z.string().min(1),\n description: z.string().min(1).optional(),\n strict: z.boolean().optional(),\n schema: z.any(), // TODO: should be more strict\n }),\n })\n );\ntype OpenAIChatRequestResponseFormatType = z.infer<typeof OpenAIChatRequestResponseFormat>;\n\nconst OpenAIChatRequestTextContent = z.object({\n text: z.string().min(1),\n type: z.literal(\"text\"),\n});\ntype OpenAIChatRequestTextContentType = z.infer<typeof OpenAIChatRequestTextContent>;\n\nconst OpenAIChatRequestImageContent = z.object({\n type: z.literal(\"image_url\"),\n image_url: z.object({\n url: z.string().url().min(1),\n detail: z.enum([\"low\", \"high\", \"auto\"]).optional(),\n }),\n});\ntype OpenAIChatRequestImageContentType = z.infer<typeof OpenAIChatRequestImageContent>;\n\nconst OpenAIChatRequestToolCallContent = z.object({\n id: z.string().min(1),\n type: z.literal(\"function\"),\n function: z.object({\n name: z.string().min(1),\n arguments: z.string().min(1),\n }),\n});\ntype OpenAIChatRequestToolCallContentType = z.infer<typeof OpenAIChatRequestToolCallContent>;\n\nconst OpenAIChatRequestSystemMessage = z.object({\n role: z.literal(\"system\"),\n content: z.string().min(1).or(z.array(OpenAIChatRequestTextContent).min(1)),\n});\ntype OpenAIChatRequestSystemMessageType = z.infer<typeof OpenAIChatRequestSystemMessage>;\n\nconst OpenAIChatRequestUserMessage = z.object({\n role: z.literal(\"user\"),\n content: z\n .string().min(1)\n .or(z.array(z.union([OpenAIChatRequestTextContent, OpenAIChatRequestImageContent])).min(1)),\n});\ntype OpenAIChatRequestUserMessageType = z.infer<typeof OpenAIChatRequestUserMessage>;\n\nconst OpenAIChatRequestAssistantMessage = z\n .object({\n role: z.literal(\"assistant\"),\n content: z.string().min(1).or(z.array(OpenAIChatRequestTextContent).min(1)).optional(),\n tool_calls: z.array(OpenAIChatRequestToolCallContent).min(1).optional(),\n })\n .refine(\n (data) => {\n if (!data.content && !data.tool_calls) {\n return false;\n }\n return true;\n },\n {\n message: \"one of 'content' or 'tool_calls' must be provided\",\n path: [\"content\", \"tool_calls\"],\n }\n );\ntype OpenAIChatRequestAssistantMessageType = z.infer<typeof OpenAIChatRequestAssistantMessage>;\n\nconst OpenAIChatRequestToolMessage = z.object({\n role: z.literal(\"tool\"),\n tool_call_id: z.string().min(1),\n content: z.string().min(1),\n});\ntype OpenAIChatRequestToolMessageType = z.infer<typeof OpenAIChatRequestToolMessage>;\n\nconst OpenAIChatRequestMessage = z.union([\n OpenAIChatRequestSystemMessage,\n OpenAIChatRequestUserMessage,\n OpenAIChatRequestAssistantMessage,\n OpenAIChatRequestToolMessage,\n]);\ntype OpenAIChatRequestMessageType = z.infer<typeof OpenAIChatRequestMessage>;\n\nconst OpenAIChatRequest = z.object({\n model: z.string().min(1).optional(),\n messages: z.array(OpenAIChatRequestMessage).min(1).optional(),\n frequency_penalty: z.number().min(-2).max(2).nullable().optional(),\n // logit_bias: z.record(z.number(), z.number()).nullable().optional(),\n logprobs: z.boolean().nullable().optional(),\n top_logprobs: z.number().min(0).max(20).nullable().optional(),\n max_tokens: z.number().min(0).nullable().optional(),\n // n: z.number().min(1).nullable().optional(),\n presence_penalty: z.number().min(-2).max(2).nullable().optional(),\n response_format: OpenAIChatRequestResponseFormat.optional(),\n seed: z.number().nullable().optional(),\n stop: z.string().or(z.array(z.string()).max(4)).nullable().optional(),\n // stream: z.boolean().nullable().optional(),\n // stream_options: z\n // .object({\n // include_usage: z.boolean().optional(),\n // })\n // .nullable()\n // .optional(),\n temperature: z.number().min(0).max(2).nullable().optional(),\n top_p: z.number().min(0).max(1).nullable().optional(),\n tools: z.array(OpenAIChatRequestTool).optional(),\n tool_choice: OpenAIChatRequestToolChoiceEnum.or(OpenAIChatRequestToolChoiceFunction).optional(),\n})\n// .refine(\n// (data) => {\n// if (data.stream_options) {\n// return data.stream === true;\n// }\n// return true;\n// },\n// {\n// message: \"'stream' must be 'true' if 'stream_options' is provided\",\n// path: [\"stream\"],\n// }\n// )\n.refine(\n (data) => {\n if (data.tool_choice) {\n if (!data.tools || data.tools.length === 0) {\n return false;\n }\n }\n return true;\n },\n {\n message: \"'tools' must be provided if 'tool_choice' is provided\",\n path: [\"tools\"],\n }\n);\n// .refine(\n// (data) => {\n// if (data.tool_choice && data.tools) {\n// if (\n// typeof data.tool_choice === \"object\" &&\n// data.tools.some((tool) => tool.function.name === (data.tool_choice as OpenAIRequestToolChoiceFunctionType).function.name)\n// ) {\n// return true;\n// }\n// }\n// return false;\n// },\n// {\n// message: \"'tools' must be provided if 'tool_choice' is provided\",\n// path: [\"tools\"],\n// }\n// )\ntype OpenAIChatRequestType = z.infer<typeof OpenAIChatRequest>;\n\nexport {\n OpenAIChatRequest,\n OpenAIChatRequestMessage,\n OpenAIChatRequestSystemMessage,\n OpenAIChatRequestUserMessage,\n OpenAIChatRequestAssistantMessage,\n OpenAIChatRequestToolMessage,\n OpenAIChatRequestTextContent,\n OpenAIChatRequestImageContent,\n OpenAIChatRequestToolCallContent,\n OpenAIChatRequestTool,\n OpenAIChatRequestToolChoiceEnum,\n OpenAIChatRequestToolChoiceFunction,\n OpenAIChatRequestResponseFormat,\n type OpenAIChatRequestType,\n type OpenAIChatRequestMessageType,\n type OpenAIChatRequestSystemMessageType,\n type OpenAIChatRequestUserMessageType,\n type OpenAIChatRequestAssistantMessageType,\n type OpenAIChatRequestToolMessageType,\n type OpenAIChatRequestTextContentType,\n type OpenAIChatRequestImageContentType,\n type OpenAIChatRequestToolCallContentType,\n type OpenAIChatRequestToolType,\n type OpenAIChatRequestToolChoiceEnumType,\n type OpenAIChatRequestToolChoiceFunctionType,\n type OpenAIChatRequestResponseFormatType,\n};\n","import { z } from \"zod\";\n\nimport {\n HeadersType,\n ParamsType,\n UrlType,\n ChatModelV1,\n ChatModelSchemaType,\n SelectStringConfigItemDefType,\n ModelResponseError,\n InvalidConfigError,\n InvalidMessagesError,\n InvalidToolsError,\n InvalidModelRequestError,\n urlWithoutTrailingSlash,\n removeUndefinedEntries\n} from \"@adaline/provider\";\n\nimport {\n SystemRoleLiteral,\n UserRoleLiteral,\n AssistantRoleLiteral,\n ToolRoleLiteral,\n TextModalityLiteral,\n ToolCallModalityLiteral,\n ToolResponseModalityLiteral,\n ImageModalityLiteral,\n UrlImageContentTypeLiteral,\n Config,\n Message,\n Tool,\n ConfigType,\n ContentType,\n MessageType,\n ToolType,\n ToolCallContentType,\n ToolResponseContentType,\n ChatUsageType,\n ChatLogProbsType,\n ChatResponseType,\n PartialChatResponseType,\n createTextMessage,\n createToolCallMessage,\n createPartialTextMessage,\n createPartialToolCallMessage,\n} from \"@adaline/types\";\n\nimport { \n OpenAICompleteChatResponse, \n OpenAIStreamChatResponse, \n OpenAICompleteChatResponseType,\n OpenAIStreamChatResponseType,\n} from \"./types\";\n\nimport { \n OpenAIChatRequest, \n OpenAIChatRequestType,\n OpenAIChatRequestTextContentType,\n OpenAIChatRequestImageContentType,\n OpenAIChatRequestToolType,\n} from \"./types\";\n\nconst BaseChatModelOptions = z.object({\n apiKey: z.string(),\n baseUrl: z.string().url(),\n completeChatUrl: z.string().url().optional(),\n streamChatUrl: z.string().url().optional(),\n organization: z.string().optional(),\n});\ntype BaseChatModelOptionsType = z.infer<typeof BaseChatModelOptions>;\n\nclass BaseChatModel implements ChatModelV1<ChatModelSchemaType> {\n readonly version = \"v1\" as const;\n modelSchema: ChatModelSchemaType;\n\n private readonly apiKey: string;\n private readonly baseUrl: string;\n private readonly streamChatUrl: string;\n private readonly completeChatUrl: string;\n private readonly organization: string | undefined;\n\n constructor(modelSchema: ChatModelSchemaType, options: BaseChatModelOptionsType) {\n const parsedOptions = BaseChatModelOptions.parse(options);\n this.modelSchema = modelSchema;\n this.apiKey = parsedOptions.apiKey;\n this.baseUrl = urlWithoutTrailingSlash(parsedOptions.baseUrl);\n this.streamChatUrl = urlWithoutTrailingSlash(parsedOptions.streamChatUrl || `${this.baseUrl}/chat/completions`);\n this.completeChatUrl = urlWithoutTrailingSlash(parsedOptions.completeChatUrl || `${this.baseUrl}/chat/completions`);\n this.organization = parsedOptions.organization;\n };\n\n getDefaultBaseUrl(): UrlType {\n return this.baseUrl;\n };\n\n getDefaultHeaders(): HeadersType {\n return {\n Authorization: `Bearer ${this.apiKey}`,\n \"Content-Type\": \"application/json\",\n ...(this.organization ? { \"OpenAI-Organization\": this.organization } : {}),\n };\n };\n\n getDefaultParams(): ParamsType {\n return {\n model: this.modelSchema.name,\n };\n };\n\n // TODO: test full header implementation\n // x-ratelimit-limit-requests\tThe maximum number of requests that are permitted before exhausting the rate limit.\n // x-ratelimit-limit-tokens\tThe maximum number of tokens that are permitted before exhausting the rate limit.\n // x-ratelimit-remaining-requests The remaining number of requests that are permitted before exhausting the rate limit.\n // x-ratelimit-remaining-tokens\tThe remaining number of tokens that are permitted before exhausting the rate limit.\n // x-ratelimit-reset-requests\tThe time until the rate limit (based on requests) resets to its initial state.\n // x-ratelimit-reset-tokens\tThe time until the rate limit (based on tokens) resets to its initial state.\n getRetryDelay(responseHeaders: HeadersType): { shouldRetry: boolean, delayMs: number } {\n // parse duration from header value of format \"6m0s\" or \"21s\" or \"41ms\" or \"2s81ms\" or \"5h50m30ms\" and such\n const parseDuration = (duration: string): number => {\n const regex = /(\\d+)(h|m|s|ms)/g;\n const timeUnits: { [unit: string]: number } = {\n h: 3600000, // 1 hour = 60 * 60 * 1000 ms\n m: 60000, // 1 minute = 60 * 1000 ms\n s: 1000, // 1 second = 1000 ms\n ms: 1 // milliseconds\n };\n \n let match;\n let totalMs = 0; \n while ((match = regex.exec(duration)) !== null) {\n const value = parseInt(match[1]);\n const unit = match[2];\n totalMs += value * timeUnits[unit];\n }\n \n return totalMs;\n }\n\n let resetRequestsDelayMs = 0;\n let resetTokensDelayMs = 0;\n const shouldRetry = true;\n if (responseHeaders[\"x-ratelimit-reset-requests\"]) {\n resetRequestsDelayMs = parseDuration(responseHeaders[\"x-ratelimit-reset-requests\"]);\n }\n if (responseHeaders[\"x-ratelimit-reset-tokens\"]) {\n resetTokensDelayMs = parseDuration(responseHeaders[\"x-ratelimit-reset-tokens\"]);\n }\n\n // if rate limited by requests, then it's reset must be the higher of two and visa versa\n const delayMs = Math.max(resetRequestsDelayMs, resetTokensDelayMs);\n return { shouldRetry, delayMs };\n };\n\n // TODO: add support for non-text modalities\n // TODO: add support for tools if tools are counted as tokens\n // TODO: should validate messages and tools before counting tokens?\n getTokenCount(messages: MessageType[]): number {\n return messages.reduce((acc, message) => {\n return acc + message.content.map((content) => (content.modality === \"text\" ? content.value : \"\")).join(\" \").length;\n }, 0);\n };\n\n // TODO: convert to a static method\n transformModelRequest(request: OpenAIChatRequestType): { \n modelName: string | undefined, \n config: ConfigType | undefined, \n messages: MessageType[] | undefined, \n tools: ToolType[] | undefined \n } {\n const safeRequest = OpenAIChatRequest.safeParse(request);\n if (!safeRequest.success) {\n throw new InvalidModelRequestError({ info: \"Invalid model request\", cause: safeRequest.error });\n }\n\n const parsedRequest = safeRequest.data;\n\n const modelName = parsedRequest.model;\n\n const _config = {\n seed: parsedRequest.seed,\n maxTokens: parsedRequest.max_tokens,\n temperature: parsedRequest.temperature,\n topP: parsedRequest.top_p,\n presencePenalty: parsedRequest.presence_penalty,\n frequencyPenalty: parsedRequest.frequency_penalty,\n stop: parsedRequest.stop,\n logProbs: parsedRequest.logprobs,\n topLogProbs: parsedRequest.top_logprobs,\n toolChoice: parsedRequest.tool_choice,\n responseFormat: parsedRequest.response_format,\n };\n\n const config = Config().parse(removeUndefinedEntries(_config));\n if (config.responseFormat && config.responseFormat.type === \"json_schema\" && !config.responseFormat.json_schema) {\n config.responseSchema = {\n name: config.responseFormat.json_schema.name,\n description: config.responseFormat.json_schema.description || \"\",\n strict: config.responseFormat.json_schema.strict,\n schema: config.responseFormat.json_schema.parameters,\n }\n }\n\n //TODO: invoke transformConfig only to catch validation errors, maybe even assert that response is equal to input of this method?\n\n const messages: MessageType[] = [];\n const toolCallMap: { [id: string] : ToolCallContentType } = {};\n if (parsedRequest.messages) {\n parsedRequest.messages.forEach((message) => {\n const role = message.role;\n switch (role) {\n case \"system\": {\n const content = message.content as string | OpenAIChatRequestTextContentType[];\n if (typeof content === \"string\") {\n messages.push({\n role: role,\n content: [{ modality: TextModalityLiteral, value: content }],\n });\n } else {\n const _content = content.map((c) => {\n return { modality: TextModalityLiteral, value: c.text }\n });\n messages.push({ role: role, content: _content });\n }\n }\n break;\n \n case \"user\": {\n const content = message.content as string | (OpenAIChatRequestTextContentType | OpenAIChatRequestImageContentType)[];\n if (typeof content === \"string\") {\n messages.push({\n role: role,\n content: [{ modality: TextModalityLiteral, value: content }],\n });\n } else {\n const _content = content.map((c) => {\n if (c.type === \"text\") {\n return { modality: TextModalityLiteral, value: c.text }\n } else {\n // TODO: add support for base64 image content\n return {\n modality: ImageModalityLiteral,\n detail: c.image_url.detail || \"auto\",\n value: { type: UrlImageContentTypeLiteral, url: c.image_url.url }\n }\n }\n });\n messages.push({ role: role, content: _content });\n }\n }\n break;\n \n case \"assistant\": {\n const assistantContent: ContentType[] = [];\n if (message.content) {\n const content = message.content as string | OpenAIChatRequestTextContentType[];\n if (typeof content === \"string\") {\n assistantContent.push({ modality: TextModalityLiteral, value: content });\n } else {\n content.forEach((c) => {\n assistantContent.push({ modality: TextModalityLiteral, value: c.text });\n });\n }\n }\n\n if (message.tool_calls) {\n const toolCalls = message.tool_calls;\n toolCalls.forEach((toolCall, index) => {\n const toolCallContent: ToolCallContentType = {\n modality: ToolCallModalityLiteral,\n id: toolCall.id,\n index: index,\n name: toolCall.function.name,\n arguments: toolCall.function.arguments,\n };\n assistantContent.push(toolCallContent);\n toolCallMap[toolCallContent.id] = toolCallContent;\n });\n }\n messages.push({ role: role, content: assistantContent });\n }\n break;\n \n case \"tool\": {\n const toolResponse = message;\n messages.push({\n role: role,\n content: [{\n modality: ToolResponseModalityLiteral,\n id: toolResponse.tool_call_id,\n index: toolCallMap[toolResponse.tool_call_id].index,\n name: toolCallMap[toolResponse.tool_call_id].name,\n data: toolResponse.content,\n }],\n });\n }\n break;\n }\n });\n }\n\n const tools: ToolType[] = [];\n if (parsedRequest.tools) {\n parsedRequest.tools.forEach((tool: OpenAIChatRequestToolType) => {\n tools.push({\n type: \"function\",\n definition: {\n schema: {\n name: tool.function.name,\n description: tool.function.description || \"\",\n strict: tool.function.strict,\n parameters: tool.function.parameters,\n }\n }\n });\n });\n }\n\n return {\n modelName,\n config,\n messages,\n tools,\n };\n };\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n transformConfig(config: ConfigType, messages?: MessageType[], tools?: ToolType[]): ParamsType {\n const _toolChoice = config.toolChoice;\n delete config.toolChoice; // can have a specific tool name that is not in the model schema, validated at transformation \n\n // TODO: why is safeParse coercing Record to modelSchema.config.schema type rather than returning error?\n const _parsedConfig = this.modelSchema.config.schema.safeParse(config);\n if (!_parsedConfig.success) {\n throw new InvalidConfigError({ \n info: `Invalid config for model : '${this.modelSchema.name}'`, \n cause: _parsedConfig.error \n });\n }\n\n const parsedConfig = _parsedConfig.data as ConfigType;\n if (_toolChoice !== undefined) {\n parsedConfig.toolChoice = _toolChoice;\n }\n\n Object.keys(parsedConfig).forEach((key) => {\n if (!(key in this.modelSchema.config.def)) {\n throw new InvalidConfigError({\n info: `Invalid config for model : '${this.modelSchema.name}'`, \n cause: new Error(`Invalid config key : '${key}', \n available keys : [${Object.keys(this.modelSchema.config.def).join(\", \")}]`),\n });\n }\n });\n\n const transformedConfig = Object.keys(parsedConfig).reduce(\n (acc, key) => {\n const def = this.modelSchema.config.def[key];\n const paramKey = def.param;\n const paramValue = (parsedConfig as ConfigType)[key];\n\n if (paramKey === \"max_tokens\" && def.type === \"range\" && paramValue === 0) {\n acc[paramKey] = def.max;\n } else {\n acc[paramKey] = paramValue;\n }\n\n return acc;\n },\n {} as ParamsType\n );\n\n // TODO: check if logProbs is set to true for topLogProbs to be set\n\n if (\"tool_choice\" in transformedConfig && transformedConfig.tool_choice !== undefined) {\n const toolChoice = transformedConfig.tool_choice as string;\n if (!tools || (tools && tools.length === 0)) {\n throw new InvalidConfigError({\n info: `Invalid config for model : '${this.modelSchema.name}'`, \n cause: new Error(\"'tools' are required when 'toolChoice' is specified\"),\n });\n } else if (tools && tools.length > 0) {\n const configToolChoice = this.modelSchema.config.def.toolChoice as SelectStringConfigItemDefType;\n if (!configToolChoice.choices.includes(toolChoice)) {\n if (tools.map((tool) => tool.definition.schema.name).includes(toolChoice)) {\n transformedConfig.tool_choice = { type: \"function\", function: { name: toolChoice } };\n } else {\n throw new InvalidConfigError({\n info: `Invalid config for model : '${this.modelSchema.name}'`,\n cause: new Error(`toolChoice : '${toolChoice}' is not part of provided 'tools' names or \n one of [${configToolChoice.choices.join(\", \")}]`),\n });\n }\n }\n }\n }\n\n if (\"response_format\" in transformedConfig && transformedConfig.response_format !== undefined) {\n const responseFormat = transformedConfig.response_format as string;\n if (responseFormat === \"json_schema\") {\n if (!(\"response_schema\" in transformedConfig)) {\n throw new InvalidConfigError({ \n info: `Invalid config for model : '${this.modelSchema.name}'`, \n cause: new Error(\"'responseSchema' is required in config when 'responseFormat' is 'json_schema'\") \n });\n } else {\n transformedConfig.response_format = { \n type: \"json_schema\",\n json_schema: transformedConfig.response_schema,\n };\n delete transformedConfig.response_schema;\n }\n } else {\n transformedConfig.response_format = { type: responseFormat };\n }\n }\n\n return transformedConfig;\n };\n\n transformMessages(messages: MessageType[]): ParamsType {\n if (!messages || (messages && messages.length === 0)) {\n return { messages: [] };\n }\n\n const parsedMessages = messages.map((message) => {\n const parsedMessage = Message().safeParse(message);\n if (!parsedMessage.success) {\n throw new InvalidMessagesError({ info: \"Invalid messages\", cause: parsedMessage.error });\n }\n return parsedMessage.data;\n });\n\n parsedMessages.forEach((message) => {\n message.content.forEach((content) => {\n if (!this.modelSchema.modalities.includes(content.modality)) {\n throw new InvalidMessagesError({\n info: `Invalid message content for model : '${this.modelSchema.name}'`,\n cause: new Error(`model : '${this.modelSchema.name}' does not support modality : '${content.modality}', \n available modalities : [${this.modelSchema.modalities.join(\", \")}]`),\n });\n }\n });\n });\n\n // TODO: add role not supported by model error\n\n const transformedMessages = parsedMessages.map((message) => {\n switch (message.role) {\n case SystemRoleLiteral: {\n const textContent: { type: \"text\", text: string }[] = [];\n message.content.forEach((content) => {\n if (content.modality === TextModalityLiteral) {\n textContent.push({ type: \"text\", text: content.value });\n } else {\n throw new InvalidMessagesError({\n info: `Invalid message 'role' and 'modality' combination for model : ${this.modelSchema.name}`,\n cause: new Error(`role : '${message.role}' cannot have content with modality : '${content.modality}'`),\n });\n }\n });\n\n return {\n role: this.modelSchema.roles[message.role],\n content: textContent,\n };\n }\n\n case AssistantRoleLiteral: {\n const textContent: { type: \"text\", text: string }[] = [];\n const toolCalls: { id: string, type: \"function\", function: { name: string, arguments: string } }[] = [];\n message.content.forEach((content) => {\n if (content.modality === TextModalityLiteral) {\n textContent.push({ type: \"text\", text: content.value });\n } else if (content.modality === ToolCallModalityLiteral) {\n toolCalls.push({\n id: content.id,\n type: \"function\",\n function: { name: content.name, arguments: content.arguments }\n });\n } else {\n throw new InvalidMessagesError({\n info: `Invalid message 'role' and 'modality' combination for model : ${this.modelSchema.name}`,\n cause: new Error(`role : '${message.role}' cannot have content with modality : '${content.modality}'`),\n });\n }\n });\n \n return {\n role: this.modelSchema.roles[message.role],\n content: textContent,\n ...(toolCalls.length > 0 ? { tool_calls: toolCalls } : {}),\n };\n }\n\n case UserRoleLiteral: {\n const textContent: { type: \"text\", text: string }[] = [];\n const imageContent: { type: \"image_url\", image_url: { url: string, detail: string } }[] = [];\n message.content.forEach((content) => {\n if (content.modality === TextModalityLiteral) {\n textContent.push({ type: \"text\", text: content.value });\n } else if (content.modality === ImageModalityLiteral) {\n imageContent.push({ \n type: \"image_url\", \n image_url: { \n url: content.value.type === \"url\" ? content.value.url : content.value.base64, \n detail: content.detail,\n } \n });\n } else {\n throw new InvalidMessagesError({\n info: `Invalid message 'role' and 'modality' combination for model : ${this.modelSchema.name}`,\n cause: new Error(`role : '${message.role}' cannot have content with modality : '${content.modality}'`),\n });\n }\n });\n\n const combinedContent = [...textContent, ...imageContent];\n\n return {\n role: this.modelSchema.roles[message.role],\n content: combinedContent,\n }; \n }\n\n case ToolRoleLiteral: {\n if (message.content.length !== 1) {\n throw new InvalidMessagesError({ \n info: `Invalid message for role : '${message.role}'`,\n cause: new Error(`role : '${message.role}' must have exactly one content item`),\n });\n }\n\n if (message.content[0].modality !== ToolResponseModalityLiteral) {\n throw new InvalidMessagesError({ \n info: `Invalid message 'role' and 'modality' combination for model : ${this.modelSchema.name}`,\n cause: new Error(`role : '${message.role}' must have content with modality : '${ToolResponseModalityLiteral}'`) \n });\n }\n\n const toolResponse = message.content[0] as ToolResponseContentType;\n return {\n role: this.modelSchema.roles[message.role],\n tool_call_id: toolResponse.id,\n content: toolResponse.data,\n };\n }\n\n default: {\n throw new InvalidMessagesError({\n info: `Invalid message 'role' for model : ${this.modelSchema.name}`,\n cause: new Error(`role : '${message.role}' is not supported, \n available roles : [${Object.keys(this.modelSchema.roles).join(\", \")}]`),\n });\n }\n }\n });\n\n return { messages: transformedMessages };\n };\n\n transformTools(tools: ToolType[]): ParamsType {\n if (!this.modelSchema.modalities.includes(ToolCallModalityLiteral)) {\n throw new InvalidToolsError({\n info: `Invalid tool 'modality' for model : ${this.modelSchema.name}`,\n cause: new Error(`model : '${this.modelSchema.name}' does not support tool modality : '${ToolCallModalityLiteral}'`),\n });\n }\n\n if (!tools || (tools && tools.length === 0)) {\n return { tools: [] as ToolType[] };\n }\n\n const parsedTools = tools.map((tool) => {\n const parsedTool = Tool().safeParse(tool);\n if (!parsedTool.success) {\n throw new InvalidToolsError({ info: \"Invalid tools\", cause: parsedTool.error });\n }\n return parsedTool.data;\n });\n\n const transformedTools = parsedTools.map((tool) => ({\n type: \"function\",\n function: tool.definition.schema,\n }));\n\n return { tools: transformedTools };\n };\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n async getCompleteChatUrl(config?: ConfigType, messages?: MessageType[], tools?: ToolType[]): Promise<UrlType> {\n return new Promise((resolve) => {\n resolve(this.completeChatUrl);\n });\n };\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n async getCompleteChatHeaders(config?: ConfigType, messages?: MessageType[], tools?: ToolType[]): Promise<HeadersType> {\n return new Promise((resolve) => {\n resolve(this.getDefaultHeaders());\n });\n };\n\n async getCompleteChatData(config: ConfigType, messages: MessageType[], tools?: ToolType[]): Promise<ParamsType> {\n const transformedConfig = this.transformConfig(config, messages, tools);\n const transformedMessages = this.transformMessages(messages);\n if (transformedMessages.messages && (transformedMessages.messages as MessageType[]).length === 0) {\n throw new InvalidMessagesError({\n info: \"Messages are required\",\n cause: new Error(\"Messages are required\"),\n });\n }\n\n const transformedTools = tools ? this.transformTools(tools) : {};\n\n return new Promise((resolve) => {\n resolve({\n ...this.getDefaultParams(),\n ...transformedConfig,\n ...transformedMessages,\n ...transformedTools,\n });\n });\n };\n\n transformCompleteChatResponse(response: any): ChatResponseType {\n const safe = OpenAICompleteChatResponse.safeParse(response);\n if (safe.success) {\n if (safe.data.choices.length === 0) {\n throw new ModelResponseError({ \n info: \"Invalid response from model\", \n cause: new Error(`No choices in response : ${JSON.stringify(safe.data)}`) \n });\n }\n\n const parsedResponse: OpenAICompleteChatResponseType = safe.data;\n const messages: MessageType[] = [];\n const message = parsedResponse.choices[0].message;\n if (message.content) {\n messages.push(createTextMessage(AssistantRoleLiteral, message.content));\n } \n \n if (message.refusal) {\n messages.push(createTextMessage(AssistantRoleLiteral, message.refusal));\n } \n \n if (message.tool_calls) {\n message.tool_calls.forEach((toolCall, index) => {\n messages.push(createToolCallMessage(\n AssistantRoleLiteral, \n index, \n toolCall.id, \n toolCall.function.name, \n toolCall.function.arguments\n ));\n });\n }\n\n const usage: ChatUsageType = {\n promptTokens: parsedResponse.usage.prompt_tokens,\n completionTokens: parsedResponse.usage.completion_tokens,\n totalTokens: parsedResponse.usage.total_tokens,\n };\n\n const logProbs: ChatLogProbsType = [];\n const _logProbs = parsedResponse.choices[0].logprobs;\n if (_logProbs) {\n if (_logProbs.content) {\n logProbs.push(..._logProbs.content.map((logProb) => ({\n token: logProb.token,\n logProb: logProb.logprob,\n bytes: logProb.bytes,\n topLogProbs: logProb.top_logprobs.map((topLogProb) => ({\n token: topLogProb.token,\n logProb: topLogProb.logprob,\n bytes: topLogProb.bytes,\n })),\n })));\n }\n if (_logProbs.refusal) {\n // TODO: duplicate logic, can be a helper function\n // TODO: should content and refusal be merged?\n logProbs.push(..._logProbs.refusal.map((logProb) => ({\n token: logProb.token,\n logProb: logProb.logprob,\n bytes: logProb.bytes,\n topLogProbs: logProb.top_logprobs.map((topLogProb) => ({\n token: topLogProb.token,\n logProb: topLogProb.logprob,\n bytes: topLogProb.bytes,\n })),\n })));\n }\n }\n\n return { \n messages: messages,\n usage: usage,\n logProbs: logProbs,\n };\n } \n\n throw new ModelResponseError({ info: \"Invalid response from model\", cause: safe.error });\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n async getStreamChatUrl(config?: ConfigType, messages?: MessageType[], tools?: ToolType[]): Promise<UrlType> {\n return new Promise((resolve) => {\n resolve(this.streamChatUrl);\n });\n };\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n async getStreamChatHeaders(config?: ConfigType, messages?: MessageType[], tools?: ToolType[]): Promise<HeadersType> {\n return new Promise((resolve) => {\n resolve(this.getDefaultHeaders());\n });\n };\n\n async getStreamChatData(config: ConfigType, messages: MessageType[], tools?: ToolType[]): Promise<ParamsType> {\n const transformedConfig = this.transformConfig(config, messages, tools);\n const transformedMessages = this.transformMessages(messages);\n if (transformedMessages.messages && (transformedMessages.messages as MessageType[]).length === 0) {\n throw new InvalidMessagesError({\n info: \"Messages are required\",\n cause: new Error(\"Messages are required\"),\n });\n }\n\n const transformedTools = tools ? this.transformTools(tools) : {};\n\n return new Promise((resolve) => {\n resolve({\n stream: true,\n stream_options: { include_usage: true },\n ...this.getDefaultParams(),\n ...transformedConfig,\n ...transformedMessages,\n ...transformedTools,\n });\n });\n };\n\n async *transformStreamChatResponseChunk(\n chunk: string, \n buffer: string\n ): AsyncGenerator<{ partialResponse: PartialChatResponseType; buffer: string }> {\n // merge last buffer message and split into lines\n const lines = (buffer + chunk).split(\"\\n\").filter((line) => line.trim() !== \"\");\n for (const line of lines) {\n if (line === \"data: [DONE]\") {\n // end of stream\n return;\n } else if (line.startsWith(\"data: {\") && line.endsWith(\"}\")) {\n // line contains message\n let structuredLine: any;\n try {\n // remove the 'data :' prefix from string JSON\n structuredLine = JSON.parse(line.substring(\"data: \".length));\n } catch (error) {\n // malformed JSON error\n throw new ModelResponseError({ \n info: \"Malformed JSON received in stream\", \n cause: new Error(`Malformed JSON received in stream : ${structuredLine}`) \n });\n }\n\n const safe = OpenAIStreamChatResponse.safeParse(structuredLine);\n if (safe.success) {\n const partialResponse: PartialChatResponseType = { partialMessages: [] };\n const parsedResponse: OpenAIStreamChatResponseType = safe.data;\n if (parsedResponse.choices.length > 0) {\n const message = parsedResponse.choices[0].delta;\n if (message !== undefined && Object.keys(message).length !== 0) {\n if (\"content\" in message && message.content !== null) {\n partialResponse.partialMessages.push(createPartialTextMessage(AssistantRoleLiteral, message.content as string));\n } else if (\"refusal\" in message && message.refusal !== null) {\n partialResponse.partialMessages.push(createPartialTextMessage(AssistantRoleLiteral, message.refusal as string));\n } else if (\"tool_calls\" in message && message.tool_calls !== undefined) {\n const toolCall = message.tool_calls.at(0)!;\n partialResponse.partialMessages.push(createPartialToolCallMessage(\n AssistantRoleLiteral,\n toolCall.index,\n toolCall.id,\n toolCall.function?.name,\n toolCall.function?.arguments\n ));\n }\n }\n }\n\n if (parsedResponse.usage) {\n partialResponse.usage = {\n promptTokens: parsedResponse.usage.prompt_tokens,\n completionTokens: parsedResponse.usage.completion_tokens,\n totalTokens: parsedResponse.usage.total_tokens,\n };\n }\n\n yield { partialResponse: partialResponse, buffer: buffer };\n } else {\n throw new ModelResponseError({ info: \"Invalid response from model\", cause: safe.error });\n }\n } else {\n // line starts with unknown event -- ignore\n }\n }\n };\n}\n\nexport { \n BaseChatModel, \n BaseChatModelOptions, \n type BaseChatModelOptionsType \n};\n","import { z } from \"zod\";\n\nimport { ChatModelSchema } from \"@adaline/provider\";\n\nimport { OpenAIChatModelConfigs } from \"../../configs\";\nimport { BaseChatModel, BaseChatModelOptions } from \"./base-chat-model.openai\";\nimport { OpenAIChatModelModalities, OpenAIChatModelModalitiesEnum, OpenAIChatModelRoles, OpenAIChatModelRolesMap } from \"./types\";\n\nconst GPT4oLiteral = \"gpt-4o\";\n// TODO: recheck description\nconst GPT4oDescription =\n \"GPT-4o is a large-scale multimodal model trained by OpenAI. \\\nIt is the successor to GPT-4 and is designed to be more powerful and capable than its predecessor.\";\n\nconst GPT4oSchema = ChatModelSchema(OpenAIChatModelRoles, OpenAIChatModelModalitiesEnum).parse({\n name: GPT4oLiteral,\n description: GPT4oDescription,\n maxInputTokens: 128000,\n maxOutputTokens: 128000,\n roles: OpenAIChatModelRolesMap,\n modalities: OpenAIChatModelModalities,\n config: {\n def: OpenAIChatModelConfigs.base(128000, 4).def,\n schema: OpenAIChatModelConfigs.base(128000, 4).schema,\n },\n});\n\nconst GPT4oOptions = BaseChatModelOptions;\ntype GPT4oOptionsType = z.infer<typeof GPT4oOptions>;\n\nclass GPT4o extends BaseChatModel {\n constructor(options: GPT4oOptionsType) {\n super(GPT4oSchema, options);\n }\n}\n\nexport { GPT4o, GPT4oOptions, GPT4oSchema, type GPT4oOptionsType };\n","import { z } from \"zod\";\n\nimport { EmbeddingModelSchemaType } from \"@adaline/provider\";\nimport { EmbeddingTextModalityLiteral, EmbeddingTokenModalityLiteral } from \"@adaline/types\";\n\nconst OpenAIEmbeddingModelModalities: EmbeddingModelSchemaType[\"modalities\"] = [\n EmbeddingTextModalityLiteral,\n EmbeddingTokenModalityLiteral,\n];\n\nconst OpenAIEmbeddingModelModalitiesEnum = z.enum([\n EmbeddingTextModalityLiteral,\n EmbeddingTokenModalityLiteral,\n]);\n\nexport { OpenAIEmbeddingModelModalitiesEnum, OpenAIEmbeddingModelModalities };\n","import { z } from \"zod\";\n\nconst OpenAIGetEmbeddingsResponse = z.object({\n object: z.literal(\"list\"),\n model: z.string(),\n data: z.array(\n z.object({\n index: z.number(),\n object: z.literal(\"embedding\"),\n embedding: z.array(z.number()).or(z.string().base64()),\n })\n ),\n usage: z.object({\n prompt_tokens: z.number().nonnegative(),\n total_tokens: z.number().nonnegative(),\n }),\n});\n\nexport { OpenAIGetEmbeddingsResponse };","import { z } from \"zod\";\n\nconst OpenAIEmbeddingRequestInput = z\n .string().min(1)\n .or(z.array(z.string().min(1)).min(1))\n .or(z.array(z.number().int().nonnegative()).min(1))\n .or(z.array(z.array(z.number().int().nonnegative()).min(1)).min(1));\ntype OpenAIEmbeddingRequestInputType = z.infer<typeof OpenAIEmbeddingRequestInput>;\n\nconst OpenAIEmbeddingRequest = z.object({\n model: z.string().min(1).optional(),\n input: OpenAIEmbeddingRequestInput.optional(),\n encoding_format: z.enum([\"float\", \"base64\"]).optional(),\n dimensions: z.number().int().min(1).optional(),\n});\ntype OpenAIEmbeddingRequestType = z.infer<typeof OpenAIEmbeddingRequest>;\n\nexport {\n OpenAIEmbeddingRequest,\n OpenAIEmbeddingRequestInput,\n type OpenAIEmbeddingRequestType,\n type OpenAIEmbeddingRequestInputType,\n};","import { z } from \"zod\";\n\nimport { \n Config,\n ConfigType, \n FloatEmbeddingType,\n Base64EmbeddingType,\n EmbeddingRequests,\n EmbeddingRequestsType,\n EmbeddingResponseType,\n FloatEmbeddingLiteral,\n Base64EmbeddingLiteral,\n EmbeddingTextModalityLiteral,\n EmbeddingTokenModalityLiteral,\n} from \"@adaline/types\";\n\nimport { \n EmbeddingModelV1,\n EmbeddingModelSchemaType,\n HeadersType, \n ParamsType, \n UrlType, \n ModelResponseError,\n InvalidConfigError,\n InvalidEmbeddingRequestsError, \n InvalidModelRequestError,\n urlWithoutTrailingSlash,\n removeUndefinedEntries,\n} from \"@adaline/provider\";\n\nimport { \n OpenAIGetEmbeddingsResponse, \n OpenAIEmbeddingRequest,\n} from \"./types\";\n\nconst BaseEmbeddingModelOptions = z.object({\n apiKey: z.string(),\n baseUrl: z.string().url(),\n getEmbeddingsUrl: z.string().url().optional(),\n});\ntype BaseEmbeddingModelOptionsType = z.infer<typeof BaseEmbeddingModelOptions>;\n\nclass BaseEmbeddingModel implements EmbeddingModelV1<EmbeddingModelSchemaType> {\n readonly version = \"v1\" as const;\n modelSchema: EmbeddingModelSchemaType;\n\n private readonly apiKey: string;\n private readonly baseUrl: string;\n private readonly getEmbeddingsUrl: string;\n\n constructor(modelSchema: EmbeddingModelSchemaType, options: BaseEmbeddingModelOptionsType) {\n const parsedOptions = BaseEmbeddingModelOptions.parse(options);\n this.modelSchema = modelSchema;\n this.apiKey = parsedOptions.apiKey;\n this.baseUrl = urlWithoutTrailingSlash(parsedOptions.baseUrl);\n this.getEmbeddingsUrl = urlWithoutTrailingSlash(parsedOptions.getEmbeddingsUrl || `${this.baseUrl}/embeddings`);\n };\n\n getDefaultBaseUrl(): UrlType {\n return this.baseUrl;\n };\n\n getDefaultHeaders(): HeadersType {\n return {\n Authorization: `Bearer ${this.apiKey}`,\n \"Content-Type\": \"application/json\",\n };\n };\n\n getDefaultParams(): ParamsType {\n return {\n model: this.modelSchema.name,\n };\n };\n\n // TODO: test full header implementation\n // x-ratelimit-limit-requests\tThe maximum number of requests that are permitted before exhausting the rate limit.\n // x-ratelimit-limit-tokens\tThe maximum number of tokens that are permitted before exhausting the rate limit.\n // x-ratelimit-remaining-requests The remaining number of requests that are permitted before exhausting the rate limit.\n // x-ratelimit-remaining-tokens\tThe remaining number of tokens that are permitted before exhausting the rate limit.\n // x-ratelimit-reset-requests\tThe time until the rate limit (based on requests) resets to its initial state.\n // x-ratelimit-reset-tokens\tThe time until the rate limit (based on tokens) resets to its initial state.\n getRetryDelay(responseHeaders: HeadersType): { shouldRetry: boolean, delayMs: number } {\n // parse duration from header value of format \"6m0s\" or \"21s\" or \"41ms\" or \"2s81ms\" or \"5h50m30ms\" and such\n const parseDuration = (duration: string): number => {\n const regex = /(\\d+)(h|m|s|ms)/g;\n const timeUnits: { [unit: string]: number } = {\n h: 3600000, // 1 hour = 60 * 60 * 1000 ms\n m: 60000, // 1 minute = 60 * 1000 ms\n s: 1000, // 1 second = 1000 ms\n ms: 1 // milliseconds\n };\n \n let match;\n let totalMs = 0; \n while ((match = regex.exec(duration)) !== null) {\n const value = parseInt(match[1]);\n const unit = match[2];\n totalMs += value * timeUnits[unit];\n }\n \n return totalMs;\n }\n\n let resetRequestsDelayMs = 0;\n let resetTokensDelayMs = 0;\n const shouldRetry = true;\n if (responseHeaders[\"x-ratelimit-reset-requests\"]) {\n resetRequestsDelayMs = parseDuration(responseHeaders[\"x-ratelimit-reset-requests\"]);\n }\n if (responseHeaders[\"x-ratelimit-reset-tokens\"]) {\n resetTokensDelayMs = parseDuration(responseHeaders[\"x-ratelimit-reset-tokens\"]);\n }\n\n // if rate limited by requests, then it's reset must be the higher of two and visa versa\n const delayMs = Math.max(resetRequestsDelayMs, resetTokensDelayMs);\n return { shouldRetry, delayMs };\n };\n\n // TODO: should validate requests before counting tokens?\n getTokenCount(requests: EmbeddingRequestsType): number {\n return requests.requests.reduce((acc, request) => acc + request.length, 0);\n };\n\n transformModelRequest(request: any): { \n modelName: string | undefined, \n config: ConfigType | undefined, \n embeddingRequests: EmbeddingRequestsType | undefined, \n } {\n const safeRequest = OpenAIEmbeddingRequest.safeParse(request);\n if (!safeRequest.success) {\n throw new InvalidModelRequestError({ info: \"Invalid model request\", cause: safeRequest.error });\n }\n\n const parsedRequest = safeRequest.data;\n\n const modelName = parsedRequest.model;\n\n const _config = {\n encodingFormat: parsedRequest.encoding_format,\n dimensions: parsedRequest.dimensions,\n };\n const config = Config().parse(removeUndefinedEntries(_config));\n\n //TODO: invoke transformConfig only to catch validation errors, maybe even assert that response is equal to input of this method?\n\n let embeddingRequests: EmbeddingRequestsType | undefined;\n let embeddingFormat: typeof EmbeddingTextModalityLiteral | typeof EmbeddingTokenModalityLiteral;\n if(parsedRequest.input) {\n if (typeof parsedRequest.input === \"string\") {\n embeddingFormat = EmbeddingTextModalityLiteral;\n } else {\n if (typeof parsedRequest.input[0] === \"string\") {\n embeddingFormat = EmbeddingTextModalityLiteral;\n } else {\n embeddingFormat = EmbeddingTokenModalityLiteral;\n }\n }\n\n if(embeddingFormat === EmbeddingTextModalityLiteral) {\n if (typeof parsedRequest.input === \"string\") {\n embeddingRequests = {\n modality: embeddingFormat,\n requests: [parsedRequest.input],\n }\n } else {\n embeddingRequests = {\n modality: embeddingFormat,\n requests: parsedRequest.input as string[],\n }\n }\n } else {\n if (typeof parsedRequest.input[0] === \"number\") {\n embeddingRequests = {\n modality: embeddingFormat,\n requests: [parsedRequest.input as number[]],\n }\n } else {\n embeddingRequests = {\n modality: embeddingFormat,\n requests: parsedRequest.input as number[][],\n }\n }\n }\n }\n\n return {\n modelName,\n config,\n embeddingRequests,\n };\n };\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n transformConfig(config: ConfigType, requests?: EmbeddingRequestsType): ParamsType {\n const _parsedConfig = this.modelSchema.config.schema.safeParse(config);\n if (!_parsedConfig.success) {\n throw new InvalidConfigError({ \n info: `Invalid config for model : '${this.modelSchema.name}'`, \n cause: _parsedConfig.error \n });\n }\n\n const parsedConfig = _parsedConfig.data as ConfigType;\n // TODO: check if this is still needed if safeParse already checks for that?\n Object.keys(parsedConfig as ConfigType).forEach((key) => {\n if (!this.modelSchema.config.def[key]) {\n throw new InvalidConfigError({ \n info: `Invalid config for model : '${this.modelSchema.name}'`, \n cause: new Error(`Invalid config key : '${key}', \n available keys : [${Object.keys(this.modelSchema.config.def).join(\", \")}]`) \n });\n }\n });\n\n const transformedConfig = Object.keys(parsedConfig).reduce(\n (acc, key) => {\n const def = this.modelSchema.config.def[key];\n const paramKey = def.param;\n const paramValue = parsedConfig[key];\n acc[paramKey] = paramValue;\n return acc;\n },\n {} as ParamsType\n );\n\n return transformedConfig;\n };\n\n transformEmbeddingRequests(requests: EmbeddingRequestsType): ParamsType {\n const _parsedRequests = EmbeddingRequests().safeParse(requests);\n if (!_parsedRequests.success) {\n throw new InvalidEmbeddingRequestsError({ info: \"Invalid embedding requests\", cause: _parsedRequests.error });\n }\n\n // Note from OpenAI API Reference: \n // The input must not exceed the max input tokens for the model (8192 tokens for text-embedding-ada-002), \n // cannot be an empty string, and any array must be 2048 dimensions or less.\n // TODO: add max tokens check in requests based on model schema when token calculation is accurate\n\n const parsedRequests = _parsedRequests.data as EmbeddingRequestsType;\n return {\n input: parsedRequests.requests\n }\n };\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n async getGetEmbeddingsUrl(config?: ConfigType, requests?: EmbeddingRequestsType): Promise<UrlType> {\n return new Promise((resolve) => {\n resolve(this.getEmbeddingsUrl);\n });\n };\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n async getGetEmbeddingsHeaders(config?: ConfigType, requests?: EmbeddingRequestsType): Promise<HeadersType> {\n return new Promise((resolve) => {\n resolve(this.getDefaultHeaders());\n });\n };\n\n async getGetEmbeddingsData(config: ConfigType, requests: EmbeddingRequestsType): Promise<ParamsType> {\n return new Promise((resolve) => {\n resolve({\n ...this.getDefaultParams(),\n ...this.transformConfig(config, requests),\n ...this.transformEmbeddingRequests(requests),\n });\n });\n };\n\n transformGetEmbeddingsResponse(response: any): EmbeddingResponseType {\n let encodingFormat: typeof Base64EmbeddingLiteral | typeof FloatEmbeddingLiteral;\n const safe = OpenAIGetEmbeddingsResponse.safeParse(response);\n if (safe.success) {\n const parsedResponse = safe.data;\n encodingFormat = typeof parsedResponse.data[0].embedding === \"string\" ? Base64EmbeddingLiteral : FloatEmbeddingLiteral;\n const embeddings = parsedResponse.data.map((item) => {\n if (typeof item.embedding === \"string\") {\n return {\n index: item.index,\n embedding: item.embedding,\n } as Base64EmbeddingType;\n } else {\n return {\n index: item.index,\n embedding: item.embedding,\n } as FloatEmbeddingType;\n }\n });\n\n return {\n encodingFormat:encodingFormat,\n embeddings: embeddings,\n usage: {\n totalTokens: parsedResponse.usage.total_tokens,\n }\n } as EmbeddingResponseType;\n }\n\n throw new ModelResponseError({ info: \"Invalid response from model\", cause: safe.error });\n };\n}\n\nexport { \n BaseEmbeddingModel, \n BaseEmbeddingModelOptions,\n type BaseEmbeddingModelOptionsType \n};","import { z } from \"zod\";\n\nimport { EmbeddingModelSchema } from \"@adaline/provider\";\n\nimport { OpenAIEmbeddingModelConfigs } from \"../../configs\";\nimport { BaseEmbeddingModel, BaseEmbeddingModelOptions } from \"./base-embedding-model.openai\";\nimport { OpenAIEmbeddingModelModalities, OpenAIEmbeddingModelModalitiesEnum } from \"./types\";\n\nconst TextEmbeddingAda002Literal = \"text-embedding-ada-002\";\nconst TextEmbeddingAda002Description = \"some description\"; // TODO: add proper description\n\nconst TextEmbeddingAda002Schema = EmbeddingModelSchema(OpenAIEmbeddingModelModalitiesEnum).parse({\n name: TextEmbeddingAda002Literal,\n description: TextEmbeddingAda002Description,\n modalities: OpenAIEmbeddingModelModalities,\n maxInputTokens: 8192,\n maxOutputTokens: 8192,\n config: {\n def: OpenAIEmbeddingModelConfigs.base().def,\n schema: OpenAIEmbeddingModelConfigs.base().schema,\n },\n});\n\nconst TextEmbeddingAda002Options = BaseEmbeddingModelOptions;\ntype TextEmbeddingAda002OptionsType = z.infer<typeof TextEmbeddingAda002Options>;\n\nclass TextEmbeddingAda002 extends BaseEmbeddingModel {\n constructor(options: TextEmbeddingAda002OptionsType) {\n super(TextEmbeddingAda002Schema, options);\n }\n}\n\nexport { TextEmbeddingAda002, TextEmbeddingAda002Options, TextEmbeddingAda002Schema, type TextEmbeddingAda002OptionsType };\n","import { z } from \"zod\";\n\nimport { \n ChatModelV1, \n ChatModelSchemaType, \n EmbeddingModelV1, \n EmbeddingModelSchemaType, \n ProviderV1, \n ProviderError \n} from \"@adaline/provider\";\n\nimport {\n GPT4o,\n GPT4oOptions,\n GPT4oSchema,\n} from \"../models\";\nimport {\n TextEmbeddingAda002,\n TextEmbeddingAda002Options, \n TextEmbeddingAda002Schema \n} from \"../models\";\n\nconst ProviderLiteral = \"openai\";\nclass OpenAI<O extends Record<string, any> = Record<string, any>> implements ProviderV1<O> {\n readonly version = \"v1\" as const;\n readonly name = ProviderLiteral;\n private readonly baseUrl: string = \"https://api.openai.com/v1\";\n\n private readonly chatModelFactories: \n Record<string, { \n model: { new (options: any): ChatModelV1 },\n modelOptions: z.ZodType<any>,\n modelSchema: ChatModelSchemaType\n }> = {\n \"gpt-4o\": { \n model: GPT4o, \n modelOptions: GPT4oOptions, \n modelSchema: GPT4oSchema \n },\n };\n\n private readonly embeddingModelFactories: \n Record<string, { \n model: { new (options: any): EmbeddingModelV1 },\n modelOptions: z.ZodType<any>,\n modelSchema: EmbeddingModelSchemaType\n }> = {\n \"text-embedding-ada-002\": { \n model: TextEmbeddingAda002, \n modelOptions: TextEmbeddingAda002Options, \n modelSchema: TextEmbeddingAda002Schema \n },\n };\n\n chatModelLiterals(): string[] {\n return Object.keys(this.chatModelFactories);\n }\n\n chatModel(name: string, options: O): ChatModelV1 {\n if (!(name in this.chatModelFactories)) {\n throw new ProviderError({\n info: `OpenAI chat model: ${name} not found`,\n cause: new Error(`OpenAI chat model: ${name} not found, available chat models: \n ${this.chatModelLiterals().join(\", \")}`),\n });\n }\n\n const model = this.chatModelFactories[name].model;\n const modelOptions = {\n ...options,\n baseUrl: options.baseUrl ?? this.baseUrl\n };\n const parsedOptions = this.chatModelFactories[name].modelOptions.parse(modelOptions);\n return new model(parsedOptions);\n }\n\n chatModelSchema(name: string): ChatModelSchemaType {\n if (!(name in this.chatModelFactories)) {\n throw new ProviderError({\n info: `OpenAI chat model: ${name} not found`,\n cause: new Error(`OpenAI chat model: ${name} not found, available chat models: \n ${this.chatModelLiterals().join(\", \")}`),\n });\n }\n return this.chatModelFactories[name].modelSchema;\n }\n\n chatModelSchemas(): Record<string, ChatModelSchemaType> {\n return Object.keys(this.chatModelFactories).reduce((acc, key) => {\n acc[key] = this.chatModelFactories[key].modelSchema;\n return acc;\n }, {} as Record<string, ChatModelSchemaType>);\n }\n\n embeddingModelLiterals(): string[] {\n return Object.keys(this.embeddingModelFactories);\n }\n\n embeddingModel(name: string, options: O): EmbeddingModelV1 {\n if (!(name in this.embeddingModelFactories)) {\n throw new ProviderError({\n info: `OpenAI embedding model: ${name} not found`,\n cause: new Error(`OpenAI embedding model: ${name} not found, available embedding models: \n ${this.embeddingModelLiterals().join(\", \")}`),\n });\n }\n\n const model = this.embeddingModelFactories[name].model;\n const modelOptions = { \n ...options,\n baseUrl: options.baseUrl ?? this.baseUrl\n };\n const parsedOptions = this.embeddingModelFactories[name].modelOptions.parse(modelOptions);\n return new model(parsedOptions);\n }\n\n embeddingModelSchema(name: string): EmbeddingModelSchemaType {\n if (!(name in this.embeddingModelFactories)) {\n throw new ProviderError({\n info: `OpenAI embedding model: ${name} not found`,\n cause: new Error(`OpenAI embedding model: ${name} not found, available embedding models: \n ${this.embeddingModelLiterals().join(\", \")}`),\n });\n }\n return this.embeddingModelFactories[name].modelSchema;\n }\n\n embeddingModelSchemas(): Record<string, EmbeddingModelSchemaType> {\n return Object.keys(this.embeddingModelFactories).reduce((acc, key) => {\n acc[key] = this.embeddingModelFactories[key].modelSchema;\n return acc;\n }, {} as Record<string, EmbeddingModelSchemaType>);\n }\n}\n\nexport { OpenAI, ProviderLiteral };\n"]}