@adaline/openai 0.5.0 → 0.6.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.d.mts +654 -73
- package/dist/index.d.ts +654 -73
- package/dist/index.js +46 -44
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +6 -6
- package/dist/index.mjs.map +1 -1
- package/package.json +3 -3
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","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","OpenAIToolCallsCompleteChatResponse","OpenAICompleteChatResponse","OpenAIToolCallsStreamChatResponse","OpenAIStreamChatResponse","BaseChatModelOptions","BaseChatModel","modelSchema","options","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","transformedMessages","transformedTools","response","safe","ApiResponseError","createTextMessage","toolCall","index","createToolCallMessage","ApiRequestError","chunk","buffer","__asyncGenerator","_a","_b","lines","line","structuredLine","error","partialMessages","createPartialTextMessage","createPartialToolCallMessage","urlWithoutTrailingSlash","GPT4oLiteral","GPT4oDescription","GPT4oSchema","ChatModelSchema","GPT4oOptions","GPT4o","OpenAIEmbeddingModelModalities","EmbeddingTextModalityLiteral","EmbeddingTokenModalityLiteral","OpenAIEmbeddingModelModalitiesEnum","OpenAIGetEmbeddingsResponse","BaseEmbeddingModelOptions","BaseEmbeddingModel","requests","parsedRequests","EmbeddingRequests","InvalidEmbeddingRequestsError","request","validatedConfig","parsedResponse","Base64EmbeddingLiteral","FloatEmbeddingLiteral","embeddings","item","TextEmbeddingAda002Literal","TextEmbeddingAda002Description","TextEmbeddingAda002Schema","EmbeddingModelSchema","TextEmbeddingAda002Options","TextEmbeddingAda002","ProviderLiteral","OpenAI","name","model","modelOptions"],"mappings":"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","file":"index.js","sourcesContent":["import { CONFIG, MultiStringConfigItem, RangeConfigItem, SelectStringConfigItem } 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 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, maxTokens, presencePenalty, responseFormat, seed, stop, temperature, toolChoice, topP };\n","import { z } from \"zod\";\n\nimport {\n frequencyPenalty,\n maxTokens,\n presencePenalty,\n responseFormat,\n seed,\n stop,\n temperature,\n toolChoice,\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 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 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 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.any(),\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: z.any(),\n finish_reason: z.any(),\n })\n ),\n usage: z.object({\n prompt_tokens: z.number(),\n completion_tokens: z.number(),\n total_tokens: z.number(),\n }),\n});\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.any().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 finish_reason: z.any().nullable(),\n logprobs: z.any().nullable(),\n })\n ),\n});\n\nexport {\n OpenAIStreamChatResponse,\n OpenAICompleteChatResponse,\n OpenAIToolCallsStreamChatResponse,\n OpenAIToolCallsCompleteChatResponse,\n}","import { z } from \"zod\";\n\nimport {\n HeadersType,\n ParamsType,\n UrlType,\n urlWithoutTrailingSlash,\n ChatModelV1,\n ChatModelSchemaType,\n SelectStringConfigItemDefType,\n ApiRequestError,\n ApiResponseError,\n InvalidConfigError,\n InvalidMessagesError,\n InvalidToolsError,\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 createTextMessage,\n createToolCallMessage,\n createPartialTextMessage,\n createPartialToolCallMessage,\n} from \"@adaline/types\";\n\nimport { OpenAICompleteChatResponse, OpenAIStreamChatResponse } from \"./types/response.chat-model.openai\";\n\nconst BaseChatModelOptions = z.object({\n apiKey: z.string(), // TODO: add min and max length ?\n proxyUrl: z.string().optional(), // TODO: use strict url type\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 = \"https://api.openai.com/v1\"; // TODO: move to options coming from Provider\n\n constructor(modelSchema: ChatModelSchemaType, options: BaseChatModelOptionsType) {\n this.modelSchema = modelSchema;\n this.apiKey = options.apiKey;\n if (options.proxyUrl) this.baseUrl = urlWithoutTrailingSlash(options.proxyUrl);\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 };\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 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 const transformedMessages = parsedMessages.map((message) => {\n switch (message.role) {\n case SystemRoleLiteral: {\n const textContent: string[] = [];\n message.content.forEach((content) => {\n if (content.modality === TextModalityLiteral) {\n textContent.push(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: 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(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.baseUrl}/chat/completions`;\n };\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n getCompleteChatHeaders = (config: ConfigType, messages: MessageType[], tools?: ToolType[]): HeadersType => {\n return this.getDefaultHeaders();\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 model: this.modelSchema.name,\n ...transformedConfig,\n ...transformedMessages,\n ...transformedTools,\n };\n };\n\n transformCompleteChatResponse = (response: any): MessageType[] => {\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 messages: MessageType[] = [];\n const message = safe.data.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 return messages;\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.baseUrl}/chat/completions`;\n };\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n getStreamChatHeaders = (config: ConfigType, messages: MessageType[], tools?: ToolType[]): HeadersType => {\n return this.getDefaultHeaders();\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 model: this.modelSchema.name,\n ...transformedConfig,\n ...transformedMessages,\n ...transformedTools,\n };\n };\n\n // TODO: OpenAI streaming is ideally always a proper JSON, shouldn't need a buffer and rather throw an error when a non-JSON line is encountered\n transformStreamChatResponseChunk = async function* (\n chunk: string, \n buffer: string\n ): AsyncGenerator<{ partialMessages: PartialMessageType[]; 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 let structuredLine: any;\n if (line === \"data: [DONE]\") {\n // end of stream\n return;\n } else if (line.startsWith(\"data: {\")) {\n // line contains message\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, must be the end of loop\n if (error instanceof SyntaxError) {\n // append to buffer\n buffer += line;\n continue;\n } else {\n // non JSON parse error, re-raise\n throw error;\n }\n }\n\n buffer = \"\"; // reset buffer\n const partialMessages: PartialMessageType[] = [];\n const safe = OpenAIStreamChatResponse.safeParse(structuredLine);\n if (safe.success) {\n // TODO: figure out how to access 'this' object in async function*\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 message = safe.data.choices[0].delta;\n if (message !== undefined && Object.keys(message).length !== 0) {\n if (\"content\" in message && message.content !== null) {\n partialMessages.push(createPartialTextMessage(AssistantRoleLiteral, message.content as string));\n } else if (\"refusal\" in message && message.refusal !== null) {\n partialMessages.push(createPartialTextMessage(AssistantRoleLiteral, message.refusal as string));\n } else if (\"tool_calls\" in message && message.tool_calls !== undefined) {\n // only 1 tool call per chunk in streaming\n const toolCall = message.tool_calls.at(0)!;\n partialMessages.push(createPartialToolCallMessage(\n AssistantRoleLiteral,\n toolCall.index,\n toolCall.id,\n toolCall.function?.name,\n toolCall.function?.arguments\n ));\n }\n }\n } \n yield { partialMessages: partialMessages, buffer: buffer };\n } else {\n // buffer doesn't start with 'data: {'\n // TODO: should throw an error when 'this' object access is implemented\n }\n }\n\n yield { partialMessages: [], buffer: buffer };\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\";\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(),\n total_tokens: z.number(),\n }),\n});\n\nexport { OpenAIGetEmbeddingsResponse };","import { z } from \"zod\";\n\nimport { \n ConfigType, \n EmbeddingsType,\n FloatEmbeddingType,\n Base64EmbeddingType,\n EmbeddingRequests,\n EmbeddingRequestsType,\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 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(), // TODO: add min and max length ?\n proxyUrl: z.string().optional(), // TODO: use strict url type\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 = \"https://api.openai.com/v1\"; // TODO: move to options coming from Provider\n\n constructor(modelSchema: EmbeddingModelSchemaType, options: BaseEmbeddingModelOptionsType) {\n this.modelSchema = modelSchema;\n this.apiKey = options.apiKey;\n if (options.proxyUrl) this.baseUrl = urlWithoutTrailingSlash(options.proxyUrl);\n };\n\n private validateConfig = (config: ConfigType): ConfigType => {\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 // TODO: check if this is still needed if safeParse already checks for that?\n Object.keys(parsedConfig.data as ConfigType).forEach((key) => {\n if (!this.modelSchema.config.def[key]) {\n throw new InvalidConfigError({ info: this.modelSchema.name, error: new Error(`Invalid config key: '${key}'`) });\n }\n });\n\n return parsedConfig.data as ConfigType;\n };\n\n private validateEmbeddingRequests = (requests: EmbeddingRequestsType): EmbeddingRequestsType => {\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 return parsedRequests.data as EmbeddingRequestsType;\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 getTokenCount = (requests: EmbeddingRequestsType): number => {\n const validatedRequests = this.validateEmbeddingRequests(requests);\n return validatedRequests.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 validatedConfig = this.validateConfig(config);\n const transformedConfig = Object.keys(validatedConfig).reduce(\n (acc, key) => {\n const def = this.modelSchema.config.def[key];\n const paramKey = def.param;\n const paramValue = validatedConfig[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 return {\n input: requests.requests\n }\n };\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n getGetEmbeddingsUrl = (config: ConfigType, requests: EmbeddingRequestsType): UrlType => {\n return `${this.baseUrl}/embeddings`;\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 model: this.modelSchema.name,\n ...this.transformConfig(config, requests),\n ...this.transformEmbeddingRequests(requests),\n };\n };\n\n transformGetEmbeddingsResponse = (response: any): EmbeddingsType => {\n let encodingFormat: typeof Base64EmbeddingLiteral | typeof FloatEmbeddingLiteral;\n const parsedResponse = OpenAIGetEmbeddingsResponse.safeParse(response);\n if (parsedResponse.success) {\n encodingFormat = typeof parsedResponse.data.data[0].embedding === \"string\" ? Base64EmbeddingLiteral : FloatEmbeddingLiteral;\n const embeddings = parsedResponse.data.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 return {\n encodingFormat,\n embeddings,\n } as EmbeddingsType;\n }\n\n throw new ApiRequestError({ info: this.modelSchema.name, error: parsedResponse.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\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 = this.chatModelFactories[name].modelOptions.parse(options);\n return new model(modelOptions);\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 = this.embeddingModelFactories[name].modelOptions.parse(options);\n return new model(modelOptions);\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/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"]}
|
package/dist/index.mjs
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { RangeConfigItem, CONFIG, SelectStringConfigItem, ObjectSchemaConfigItem, ChatModelSchema, EmbeddingModelSchema, MultiStringConfigItem, InvalidConfigError, InvalidMessagesError, InvalidToolsError, ApiResponseError, ApiRequestError,
|
|
2
|
-
import { z } from 'zod';
|
|
1
|
+
import { RangeConfigItem, CONFIG, SelectBooleanConfigItem, SelectStringConfigItem, ObjectSchemaConfigItem, ChatModelSchema, EmbeddingModelSchema, MultiStringConfigItem, urlWithoutTrailingSlash, InvalidConfigError, InvalidMessagesError, InvalidToolsError, ApiResponseError, ApiRequestError, InvalidEmbeddingRequestsError } from '@adaline/provider';
|
|
2
|
+
import { z as z$1 } from 'zod';
|
|
3
3
|
import { SystemRoleLiteral, UserRoleLiteral, AssistantRoleLiteral, ToolRoleLiteral, TextModalityLiteral, ImageModalityLiteral, ToolCallModalityLiteral, ToolResponseModalityLiteral, EmbeddingTextModalityLiteral, EmbeddingTokenModalityLiteral, Message, Tool, createTextMessage, createToolCallMessage, EmbeddingRequests, Base64EmbeddingLiteral, FloatEmbeddingLiteral, createPartialTextMessage, createPartialToolCallMessage } from '@adaline/types';
|
|
4
4
|
|
|
5
|
-
var qe=Object.defineProperty,Ue=Object.defineProperties;var Be=Object.getOwnPropertyDescriptors;var W=Object.getOwnPropertySymbols;var $e=Object.prototype.hasOwnProperty,ke=Object.prototype.propertyIsEnumerable;var De=(i,e)=>(e=Symbol[i])?e:Symbol.for("Symbol."+i);var J=(i,e,o)=>e in i?qe(i,e,{enumerable:!0,configurable:!0,writable:!0,value:o}):i[e]=o,h=(i,e)=>{for(var o in e||(e={}))$e.call(e,o)&&J(i,o,e[o]);if(W)for(var o of W(e))ke.call(e,o)&&J(i,o,e[o]);return i},Y=(i,e)=>Ue(i,Be(e));var ze=function(i,e){this[0]=i,this[1]=e;},Z=(i,e,o)=>{var s=(m,l,d,p)=>{try{var c=o[m](l),u=(l=c.value)instanceof ze,E=c.done;Promise.resolve(u?l[0]:l).then(T=>u?s(m==="return"?m:"next",l[1]?{done:T.done,value:T.value}:T,d,p):d({value:T,done:E})).catch(T=>s("throw",T,d,p));}catch(T){p(T);}},n=m=>t[m]=l=>new Promise((d,p)=>s(m,l,d,p)),t={};return o=o.apply(i,e),t[De("asyncIterator")]=()=>t,n("next"),n("throw"),n("return"),t};var _=RangeConfigItem({param:"temperature",title:CONFIG.TEMPERATURE.title,description:CONFIG.TEMPERATURE.description,min:0,max:2,step:.01,default:1}),j=i=>RangeConfigItem({param:"max_tokens",title:CONFIG.MAX_TOKENS.title,description:CONFIG.MAX_TOKENS.description,min:0,max:i,step:1,default:0}),A=i=>MultiStringConfigItem({param:"stop",title:CONFIG.STOP(i).title,description:CONFIG.STOP(i).description,max:i}),I=RangeConfigItem({param:"top_p",title:CONFIG.TOP_P.title,description:CONFIG.TOP_P.description,min:0,max:1,step:.01,default:1}),v=RangeConfigItem({param:"frequency_penalty",title:CONFIG.FREQUENCY_PENALTY.title,description:CONFIG.FREQUENCY_PENALTY.description,min:-2,max:2,step:.01,default:0}),F=RangeConfigItem({param:"presence_penalty",title:CONFIG.PRESENCE_PENALTY.title,description:CONFIG.PRESENCE_PENALTY.description,min:-2,max:2,step:.01,default:0}),L=RangeConfigItem({param:"seed",title:"Seed",description:"This is in BETA. Set a seed to get reproducible results. Determinism is not guaranteed. Set to 0 to disable.",min:0,max:1e6,step:1,default:0}),q=SelectStringConfigItem({param:"response_format",title:"Response format",description:"Choose the response format of your model. For JSON, you must include the string 'JSON' in some form within your system / user prompt.",default:"text",choices:["text","json_object"]}),U=SelectStringConfigItem({param:"tool_choice",title:"Tool choice",description:"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.",default:"auto",choices:["auto","required","none"]});var S=(i,e)=>z.object({temperature:_.schema,maxTokens:j(i).schema,stop:A(e).schema,topP:I.schema,frequencyPenalty:v.schema,presencePenalty:F.schema,seed:L.schema.transform(o=>o===0?void 0:o),responseFormat:q.schema,toolChoice:U.schema}),w=(i,e)=>({temperature:_.def,maxTokens:j(i).def,stop:A(e).def,topP:I.def,frequencyPenalty:v.def,presencePenalty:F.def,seed:L.def,responseFormat:q.def,toolChoice:U.def});var Ve=["object","array","number","string","boolean","enum"],X=z.enum(Ve),We=z.object({anyOf:z.array(z.any()).optional(),type:z.union([X,z.array(z.union([X,z.literal("null")]))]).optional(),default:z.any().optional(),title:z.string().optional(),description:z.string().max(4096).optional(),properties:z.record(z.any()).optional(),required:z.array(z.string()).optional(),minItems:z.number().int().min(0).optional(),maxItems:z.number().int().optional(),items:z.record(z.any()).optional(),enum:z.array(z.union([z.string(),z.number(),z.boolean(),z.null()])).optional(),minimum:z.number().optional(),maximum:z.number().optional(),minLength:z.number().int().min(0).optional(),maxLength:z.number().int().optional(),$ref:z.string().optional()}),Je=z.object({type:z.enum(["object"]),required:z.array(z.string()),$defs:z.record(z.any()).optional(),properties:z.record(We),additionalProperties:z.literal(!1)}),Ye=z.object({name:z.string().regex(/^[a-zA-Z0-9_]{1,64}$/).max(64),description:z.string().max(4096),strict:z.boolean().optional(),schema:Je}).optional(),ee=ObjectSchemaConfigItem({param:"response_schema",title:"Response schema",description:"When response format is set to 'json_schema', the model will return a JSON object of the specified schema.",objectSchema:Ye}),oe=SelectStringConfigItem({param:"response_format",title:"Response format",description:"Choose the response format of your model. 'json_object' colloquially known as JSON mode, instructs the model to respond with a valid JSON (must include the term 'json' in prompt). 'json_schema' colloquially known as structured outputs, allows you to specify a strict response schema that the model will adhere to.",default:"text",choices:["text","json_object","json_schema"]}),te=(i,e)=>Y(h({},w(i,e)),{responseFormat:oe.def,responseSchema:ee.def}),ne=(i,e)=>S(i,e).extend({responseFormat:oe.schema,responseSchema:ee.schema});var B=SelectStringConfigItem({param:"encoding_format",title:"Encoding format",description:"Select the encoding format for the word embedding.",default:"float",choices:["float","base64"]}),$=RangeConfigItem({param:"dimensions",title:"Dimensions",description:"Select the number of dimensions for the word embedding.",min:1,max:1024,step:1,default:1024});var se=()=>z.object({encodingFormat:B.schema,dimensions:$.schema}),re=()=>({encodingFormat:B.def,dimensions:$.def});var k={base:(i,e)=>({def:w(i,e),schema:S(i,e)}),responseSchema:(i,e)=>({def:te(i,e),schema:ne(i,e)})},D={base:()=>({def:re(),schema:se()})};var le=z.enum([SystemRoleLiteral,UserRoleLiteral,AssistantRoleLiteral,ToolRoleLiteral]),ce={system:SystemRoleLiteral,user:UserRoleLiteral,assistant:AssistantRoleLiteral,tool:ToolRoleLiteral};var ue=[TextModalityLiteral,ImageModalityLiteral,ToolCallModalityLiteral,ToolResponseModalityLiteral],ye=z.enum([TextModalityLiteral,ImageModalityLiteral,ToolCallModalityLiteral,ToolResponseModalityLiteral]);var to=z.array(z.object({id:z.string().min(1),type:z.enum(["function"]),function:z.object({name:z.string(),arguments:z.string()})})),Te=z.object({id:z.string(),object:z.literal("chat.completion"),created:z.number(),model:z.string(),system_fingerprint:z.any(),choices:z.array(z.object({index:z.number(),message:z.object({role:z.string(),content:z.string().nullable().optional(),tool_calls:to.optional(),refusal:z.string().nullable().optional()}),logprobs:z.any(),finish_reason:z.any()})),usage:z.object({prompt_tokens:z.number(),completion_tokens:z.number(),total_tokens:z.number()})}),no=z.array(z.object({index:z.number().int(),id:z.string().min(1).optional(),type:z.enum(["function"]).optional(),function:z.object({name:z.string().min(1).optional(),arguments:z.string().optional()}).optional()})),be=z.object({id:z.string(),object:z.string(),created:z.number(),model:z.string(),system_fingerprint:z.any().nullable(),choices:z.array(z.object({index:z.number(),delta:z.object({content:z.string().nullable().optional(),tool_calls:no.optional(),refusal:z.string().nullable().optional()}).or(z.object({})),finish_reason:z.any().nullable(),logprobs:z.any().nullable()}))});var xe=z.object({apiKey:z.string(),proxyUrl:z.string().optional()}),x=class{constructor(e,o){this.version="v1";this.baseUrl="https://api.openai.com/v1";this.getTokenCount=e=>e.reduce((o,s)=>o+s.content.map(n=>n.modality==="text"?n.value:"").join(" ").length,0);this.getDefaultBaseUrl=()=>this.baseUrl;this.getDefaultHeaders=()=>({Authorization:`Bearer ${this.apiKey}`,"Content-Type":"application/json"});this.getDefaultParams=()=>({model:this.modelSchema.name});this.transformConfig=(e,o,s)=>{let n=e.toolChoice;delete e.toolChoice;let t=this.modelSchema.config.schema.safeParse(e);if(!t.success)throw new InvalidConfigError({info:this.modelSchema.name,error:t.error});let m=t.data;n!==void 0&&(m.toolChoice=n),Object.keys(m).forEach(d=>{if(!(d in this.modelSchema.config.def))throw new InvalidConfigError({info:this.modelSchema.name,error:new Error(`Invalid config key: '${d}'`)})});let l=Object.keys(m).reduce((d,p)=>{let c=this.modelSchema.config.def[p],u=c.param,E=m[p];return u==="max_tokens"&&c.type==="range"&&E===0?d[u]=c.max:d[u]=E,d},{});if("tool_choice"in l&&l.tool_choice!==void 0){let d=l.tool_choice;if(!s||s&&s.length===0)throw new InvalidConfigError({info:this.modelSchema.name,error:new Error("'tools' are required when 'toolChoice' is specified")});if(s&&s.length>0){let p=this.modelSchema.config.def.toolChoice;if(!p.choices.includes(d))if(s.map(c=>c.definition.schema.name).includes(d))l.tool_choice={type:"function",function:{name:d}};else throw new InvalidConfigError({info:this.modelSchema.name,error:new Error(`Invalid 'toolChoice': '${d}' is not part of provided tools or
|
|
6
|
-
one of '${p.choices.join(", ")}'`)})}}if("response_format"in
|
|
7
|
-
`).filter(
|
|
5
|
+
var Ne=Object.defineProperty,He=Object.defineProperties;var Ke=Object.getOwnPropertyDescriptors;var oe=Object.getOwnPropertySymbols;var Ve=Object.prototype.hasOwnProperty,We=Object.prototype.propertyIsEnumerable;var Je=(l,e)=>(e=Symbol[l])?e:Symbol.for("Symbol."+l);var te=(l,e,o)=>e in l?Ne(l,e,{enumerable:!0,configurable:!0,writable:!0,value:o}):l[e]=o,h=(l,e)=>{for(var o in e||(e={}))Ve.call(e,o)&&te(l,o,e[o]);if(oe)for(var o of oe(e))We.call(e,o)&&te(l,o,e[o]);return l},E=(l,e)=>He(l,Ke(e));var k=(l,e,o)=>new Promise((a,t)=>{var n=i=>{try{m(o.next(i));}catch(p){t(p);}},r=i=>{try{m(o.throw(i));}catch(p){t(p);}},m=i=>i.done?a(i.value):Promise.resolve(i.value).then(n,r);m((o=o.apply(l,e)).next());}),Ye=function(l,e){this[0]=l,this[1]=e;},se=(l,e,o)=>{var a=(r,m,i,p)=>{try{var c=o[r](m),g=(m=c.value)instanceof Ye,b=c.done;Promise.resolve(g?m[0]:m).then(T=>g?a(r==="return"?r:"next",m[1]?{done:T.done,value:T.value}:T,i,p):i({value:T,done:b})).catch(T=>a("throw",T,i,p));}catch(T){p(T);}},t=r=>n[r]=m=>new Promise((i,p)=>a(r,m,i,p)),n={};return o=o.apply(l,e),n[Je("asyncIterator")]=()=>n,t("next"),t("throw"),t("return"),n};var U=RangeConfigItem({param:"temperature",title:CONFIG.TEMPERATURE.title,description:CONFIG.TEMPERATURE.description,min:0,max:2,step:.01,default:1}),v=l=>RangeConfigItem({param:"max_tokens",title:CONFIG.MAX_TOKENS.title,description:CONFIG.MAX_TOKENS.description,min:0,max:l,step:1,default:0}),L=l=>MultiStringConfigItem({param:"stop",title:CONFIG.STOP(l).title,description:CONFIG.STOP(l).description,max:l}),F=RangeConfigItem({param:"top_p",title:CONFIG.TOP_P.title,description:CONFIG.TOP_P.description,min:0,max:1,step:.01,default:1}),B=RangeConfigItem({param:"frequency_penalty",title:CONFIG.FREQUENCY_PENALTY.title,description:CONFIG.FREQUENCY_PENALTY.description,min:-2,max:2,step:.01,default:0}),q=RangeConfigItem({param:"presence_penalty",title:CONFIG.PRESENCE_PENALTY.title,description:CONFIG.PRESENCE_PENALTY.description,min:-2,max:2,step:.01,default:0}),z=RangeConfigItem({param:"seed",title:"Seed",description:"This is in BETA. Set a seed to get reproducible results. Determinism is not guaranteed. Set to 0 to disable.",min:0,max:1e6,step:1,default:0}),D=SelectBooleanConfigItem({param:"logprobs",title:"LogProbs",description:"Whether to return log probabilities of the output tokens or not. If true, returns the log probabilities of each output token returned.",default:!1}),$=RangeConfigItem({param:"top_logprobs",title:"Top logprobs",description:"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.",min:0,max:20,step:1,default:0}),G=SelectStringConfigItem({param:"response_format",title:"Response format",description:"Choose the response format of your model. For JSON, you must include the string 'JSON' in some form within your system / user prompt.",default:"text",choices:["text","json_object"]}),N=SelectStringConfigItem({param:"tool_choice",title:"Tool choice",description:"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.",default:"auto",choices:["auto","required","none"]});var R=(l,e)=>z$1.object({temperature:U.schema,maxTokens:v(l).schema,stop:L(e).schema,topP:F.schema,frequencyPenalty:B.schema,presencePenalty:q.schema,seed:z.schema.transform(o=>o===0?void 0:o),logProbs:D.schema,topLogProbs:$.schema,responseFormat:G.schema,toolChoice:N.schema}),w=(l,e)=>({temperature:U.def,maxTokens:v(l).def,stop:L(e).def,topP:F.def,frequencyPenalty:B.def,presencePenalty:q.def,seed:z.def,responseFormat:G.def,logProbs:D.def,topLogProbs:$.def,toolChoice:N.def});var to=["object","array","number","string","boolean","enum"],re=z$1.enum(to),so=z$1.object({anyOf:z$1.array(z$1.any()).optional(),type:z$1.union([re,z$1.array(z$1.union([re,z$1.literal("null")]))]).optional(),default:z$1.any().optional(),title:z$1.string().optional(),description:z$1.string().max(4096).optional(),properties:z$1.record(z$1.any()).optional(),required:z$1.array(z$1.string()).optional(),minItems:z$1.number().int().min(0).optional(),maxItems:z$1.number().int().optional(),items:z$1.record(z$1.any()).optional(),enum:z$1.array(z$1.union([z$1.string(),z$1.number(),z$1.boolean(),z$1.null()])).optional(),minimum:z$1.number().optional(),maximum:z$1.number().optional(),minLength:z$1.number().int().min(0).optional(),maxLength:z$1.number().int().optional(),$ref:z$1.string().optional()}),no=z$1.object({type:z$1.enum(["object"]),required:z$1.array(z$1.string()),$defs:z$1.record(z$1.any()).optional(),properties:z$1.record(so),additionalProperties:z$1.literal(!1)}),ro=z$1.object({name:z$1.string().regex(/^[a-zA-Z0-9_]{1,64}$/).max(64),description:z$1.string().max(4096),strict:z$1.boolean().optional(),schema:no}).optional(),ae=ObjectSchemaConfigItem({param:"response_schema",title:"Response schema",description:"When response format is set to 'json_schema', the model will return a JSON object of the specified schema.",objectSchema:ro}),ie=SelectStringConfigItem({param:"response_format",title:"Response format",description:"Choose the response format of your model. 'json_object' colloquially known as JSON mode, instructs the model to respond with a valid JSON (must include the term 'json' in prompt). 'json_schema' colloquially known as structured outputs, allows you to specify a strict response schema that the model will adhere to.",default:"text",choices:["text","json_object","json_schema"]}),me=(l,e)=>E(h({},w(l,e)),{responseFormat:ie.def,responseSchema:ae.def}),le=(l,e)=>R(l,e).extend({responseFormat:ie.schema,responseSchema:ae.schema});var H=SelectStringConfigItem({param:"encoding_format",title:"Encoding format",description:"Select the encoding format for the word embedding.",default:"float",choices:["float","base64"]}),K=RangeConfigItem({param:"dimensions",title:"Dimensions",description:"Select the number of dimensions for the word embedding.",min:1,max:1024,step:1,default:1024});var de=()=>z$1.object({encodingFormat:H.schema,dimensions:K.schema}),pe=()=>({encodingFormat:H.def,dimensions:K.def});var V={base:(l,e)=>({def:w(l,e),schema:R(l,e)}),responseSchema:(l,e)=>({def:me(l,e),schema:le(l,e)})},W={base:()=>({def:pe(),schema:de()})};var ue=z$1.enum([SystemRoleLiteral,UserRoleLiteral,AssistantRoleLiteral,ToolRoleLiteral]),ye={system:SystemRoleLiteral,user:UserRoleLiteral,assistant:AssistantRoleLiteral,tool:ToolRoleLiteral};var Me=[TextModalityLiteral,ImageModalityLiteral,ToolCallModalityLiteral,ToolResponseModalityLiteral],Ee=z$1.enum([TextModalityLiteral,ImageModalityLiteral,ToolCallModalityLiteral,ToolResponseModalityLiteral]);var x=z$1.object({token:z$1.string(),logprob:z$1.number(),bytes:z$1.array(z$1.number()).nullable()}),Oe=z$1.object({content:z$1.array(x.extend({top_logprobs:z$1.array(x)})).nullable(),refusal:z$1.array(x.extend({top_logprobs:z$1.array(x)})).nullable()}).nullable(),co=z$1.array(z$1.object({id:z$1.string().min(1),type:z$1.enum(["function"]),function:z$1.object({name:z$1.string(),arguments:z$1.string()})})),Re=z$1.object({id:z$1.string(),object:z$1.literal("chat.completion"),created:z$1.number(),model:z$1.string(),system_fingerprint:z$1.string(),choices:z$1.array(z$1.object({index:z$1.number(),message:z$1.object({role:z$1.string(),content:z$1.string().nullable().optional(),tool_calls:co.optional(),refusal:z$1.string().nullable().optional()}),logprobs:Oe,finish_reason:z$1.string()})),usage:z$1.object({prompt_tokens:z$1.number(),completion_tokens:z$1.number(),total_tokens:z$1.number()})}),ho=z$1.array(z$1.object({index:z$1.number().int(),id:z$1.string().min(1).optional(),type:z$1.enum(["function"]).optional(),function:z$1.object({name:z$1.string().min(1).optional(),arguments:z$1.string().optional()}).optional()})),we=z$1.object({id:z$1.string(),object:z$1.string(),created:z$1.number(),model:z$1.string(),system_fingerprint:z$1.string().nullable(),choices:z$1.array(z$1.object({index:z$1.number(),delta:z$1.object({content:z$1.string().nullable().optional(),tool_calls:ho.optional(),refusal:z$1.string().nullable().optional()}).or(z$1.object({})),logprobs:Oe,finish_reason:z$1.string().nullable()})),usage:z$1.object({prompt_tokens:z$1.number(),completion_tokens:z$1.number(),total_tokens:z$1.number()}).nullable().optional()});var je=z$1.object({apiKey:z$1.string(),baseUrl:z$1.string().url(),completeChatUrl:z$1.string().url().optional(),streamChatUrl:z$1.string().url().optional(),organization:z$1.string().optional()}),P=class{constructor(e,o){this.version="v1";this.modelSchema=e,this.apiKey=o.apiKey,this.baseUrl=urlWithoutTrailingSlash(o.baseUrl),this.streamChatUrl=urlWithoutTrailingSlash(o.streamChatUrl||`${this.baseUrl}/chat/completions`),this.completeChatUrl=urlWithoutTrailingSlash(o.completeChatUrl||`${this.baseUrl}/chat/completions`),this.organization=o.organization;}getTokenCount(e){return e.reduce((o,a)=>o+a.content.map(t=>t.modality==="text"?t.value:"").join(" ").length,0)}getDefaultBaseUrl(){return this.baseUrl}getDefaultHeaders(){return h({Authorization:`Bearer ${this.apiKey}`,"Content-Type":"application/json"},this.organization?{"OpenAI-Organization":this.organization}:{})}getDefaultParams(){return {model:this.modelSchema.name}}transformConfig(e,o,a){let t=e.toolChoice;delete e.toolChoice;let n=this.modelSchema.config.schema.safeParse(e);if(!n.success)throw new InvalidConfigError({info:this.modelSchema.name,error:n.error});let r=n.data;t!==void 0&&(r.toolChoice=t),Object.keys(r).forEach(i=>{if(!(i in this.modelSchema.config.def))throw new InvalidConfigError({info:this.modelSchema.name,error:new Error(`Invalid config key: '${i}'`)})});let m=Object.keys(r).reduce((i,p)=>{let c=this.modelSchema.config.def[p],g=c.param,b=r[p];return g==="max_tokens"&&c.type==="range"&&b===0?i[g]=c.max:i[g]=b,i},{});if("tool_choice"in m&&m.tool_choice!==void 0){let i=m.tool_choice;if(!a||a&&a.length===0)throw new InvalidConfigError({info:this.modelSchema.name,error:new Error("'tools' are required when 'toolChoice' is specified")});if(a&&a.length>0){let p=this.modelSchema.config.def.toolChoice;if(!p.choices.includes(i))if(a.map(c=>c.definition.schema.name).includes(i))m.tool_choice={type:"function",function:{name:i}};else throw new InvalidConfigError({info:this.modelSchema.name,error:new Error(`Invalid 'toolChoice': '${i}' is not part of provided tools or
|
|
6
|
+
one of '${p.choices.join(", ")}'`)})}}if("response_format"in m&&m.response_format!==void 0){let i=m.response_format;if(i==="json_schema")if("response_schema"in m)m.response_format={type:"json_schema",json_schema:m.response_schema},delete m.response_schema;else throw new InvalidConfigError({info:this.modelSchema.name,error:new Error("'responseSchema' is required in config when 'responseFormat' is 'json_schema'")});else m.response_format={type:i};}return m}transformMessages(e){if(!e||e&&e.length===0)return {messages:[]};let o=e.map(t=>{let n=Message().safeParse(t);if(!n.success)throw new InvalidMessagesError({info:this.modelSchema.name,error:n.error});return n.data});return o.forEach(t=>{t.content.forEach(n=>{if(!this.modelSchema.modalities.includes(n.modality))throw new InvalidMessagesError({info:this.modelSchema.name,error:new Error(`model: '${this.modelSchema.name}' does not support modality: '${n.modality}'`)})});}),{messages:o.map(t=>{switch(t.role){case SystemRoleLiteral:{let n=[];return t.content.forEach(r=>{if(r.modality===TextModalityLiteral)n.push({type:"text",text:r.value});else throw new InvalidMessagesError({info:this.modelSchema.name,error:new Error(`role: '${SystemRoleLiteral}' cannot have content with modality '${r.modality}'`)})}),{role:this.modelSchema.roles[t.role],content:n}}case AssistantRoleLiteral:{let n=[],r=[];return t.content.forEach(m=>{if(m.modality===TextModalityLiteral)n.push({type:"text",text:m.value});else if(m.modality===ToolCallModalityLiteral)r.push({id:m.id,type:"function",function:{name:m.name,arguments:m.arguments}});else throw new InvalidMessagesError({info:this.modelSchema.name,error:new Error(`role: '${AssistantRoleLiteral}' cannot have content with modality '${m.modality}'`)})}),h({role:this.modelSchema.roles[t.role],content:n},r.length>0?{tool_calls:r}:{})}case UserRoleLiteral:{let n=[],r=[];t.content.forEach(i=>{if(i.modality===TextModalityLiteral)n.push({type:"text",text:i.value});else if(i.modality===ImageModalityLiteral)r.push({type:"image_url",image_url:{url:i.value.type==="url"?i.value.url:i.value.base64,detail:i.detail}});else throw new InvalidMessagesError({info:this.modelSchema.name,error:new Error(`role: '${UserRoleLiteral}' cannot have content with modality '${i.modality}'`)})});let m=[...n,...r];return {role:this.modelSchema.roles[t.role],content:m}}case ToolRoleLiteral:{if(t.content.length!==1)throw new InvalidMessagesError({info:this.modelSchema.name,error:new Error(`role: '${ToolRoleLiteral}' must have exactly one content item`)});if(t.content[0].modality!==ToolResponseModalityLiteral)throw new InvalidMessagesError({info:this.modelSchema.name,error:new Error(`role: '${ToolRoleLiteral}' must have content with modality '${ToolResponseModalityLiteral}'`)});let n=t.content[0];return {role:this.modelSchema.roles[t.role],tool_call_id:n.id,content:n.data}}default:throw new InvalidMessagesError({info:this.modelSchema.name,error:new Error(`Invalid role: '${t.role}'`)})}})}}transformTools(e){return !e||e&&e.length===0?{tools:[]}:{tools:e.map(t=>{let n=Tool().safeParse(t);if(!n.success)throw new InvalidToolsError({info:this.modelSchema.name,error:n.error});return n.data}).map(t=>({type:"function",function:t.definition.schema}))}}getCompleteChatUrl(e,o,a){return this.completeChatUrl}getCompleteChatHeaders(e,o,a){return k(this,null,function*(){return new Promise(t=>{t(this.getDefaultHeaders());})})}getCompleteChatData(e,o,a){let t=this.transformConfig(e,o,a),n=this.transformMessages(o);if(n.messages&&n.messages.length===0)throw new InvalidMessagesError({info:this.modelSchema.name,error:new Error("Messages are required")});let r=a?this.transformTools(a):{};return h(h(h(h({},this.getDefaultParams()),t),n),r)}transformCompleteChatResponse(e){let o=Re.safeParse(e);if(o.success){if(o.data.choices.length===0)throw new ApiResponseError({info:this.modelSchema.name,error:new Error("No choices in response")});let a=o.data,t=[],n=a.choices[0].message;n.content&&t.push(createTextMessage(AssistantRoleLiteral,n.content)),n.refusal&&t.push(createTextMessage(AssistantRoleLiteral,n.refusal)),n.tool_calls&&n.tool_calls.forEach((p,c)=>{t.push(createToolCallMessage(AssistantRoleLiteral,c,p.id,p.function.name,p.function.arguments));});let r={promptTokens:a.usage.prompt_tokens,completionTokens:a.usage.completion_tokens,totalTokens:a.usage.total_tokens},m=[],i=a.choices[0].logprobs;return i&&(i.content&&m.push(...i.content.map(p=>({token:p.token,logProb:p.logprob,bytes:p.bytes,topLogProbs:p.top_logprobs.map(c=>({token:c.token,logProb:c.logprob,bytes:c.bytes}))}))),i.refusal&&m.push(...i.refusal.map(p=>({token:p.token,logProb:p.logprob,bytes:p.bytes,topLogProbs:p.top_logprobs.map(c=>({token:c.token,logProb:c.logprob,bytes:c.bytes}))})))),{messages:t,usage:r,logProbs:m}}throw new ApiRequestError({info:this.modelSchema.name,error:o.error})}getStreamChatUrl(e,o,a){return this.streamChatUrl}getStreamChatHeaders(e,o,a){return k(this,null,function*(){return new Promise(t=>{t(this.getDefaultHeaders());})})}getStreamChatData(e,o,a){let t=this.transformConfig(e,o,a),n=this.transformMessages(o);if(n.messages&&n.messages.length===0)throw new InvalidMessagesError({info:this.modelSchema.name,error:new Error("Messages are required")});let r=a?this.transformTools(a):{};return h(h(h(h({stream:!0,stream_options:{include_usage:!0}},this.getDefaultParams()),t),n),r)}transformStreamChatResponseChunk(e,o){return se(this,null,function*(){var t,n;let a=(o+e).split(`
|
|
7
|
+
`).filter(r=>r.trim()!=="");for(let r of a){if(r==="data: [DONE]")return;if(r.startsWith("data: {")&&r.endsWith("}")){let m;try{m=JSON.parse(r.substring(6));}catch(p){throw new ApiResponseError({info:this.modelSchema.name,error:new Error(`malformed JSON received in stream : ${r}`)})}let i=we.safeParse(m);if(i.success){let p={partialMessages:[]},c=i.data;if(c.choices.length>0){let g=c.choices[0].delta;if(g!==void 0&&Object.keys(g).length!==0){if("content"in g&&g.content!==null)p.partialMessages.push(createPartialTextMessage(AssistantRoleLiteral,g.content));else if("refusal"in g&&g.refusal!==null)p.partialMessages.push(createPartialTextMessage(AssistantRoleLiteral,g.refusal));else if("tool_calls"in g&&g.tool_calls!==void 0){let b=g.tool_calls.at(0);p.partialMessages.push(createPartialToolCallMessage(AssistantRoleLiteral,b.index,b.id,(t=b.function)==null?void 0:t.name,(n=b.function)==null?void 0:n.arguments));}}}c.usage&&(p.usage={promptTokens:c.usage.prompt_tokens,completionTokens:c.usage.completion_tokens,totalTokens:c.usage.total_tokens}),yield {partialResponse:p,buffer:o};}else throw new ApiResponseError({info:this.modelSchema.name,error:i.error})}}})}};var Eo="gpt-4o",Oo="GPT-4o is a large-scale multimodal model trained by OpenAI. It is the successor to GPT-4 and is designed to be more powerful and capable than its predecessor.",X=ChatModelSchema(ue,Ee).parse({name:Eo,description:Oo,maxInputTokens:128e3,maxOutputTokens:128e3,roles:ye,modalities:Me,config:{def:V.base(128e3,4).def,schema:V.base(128e3,4).schema}}),ke=je,_=class extends P{constructor(e){super(X,e);}};var Le=[EmbeddingTextModalityLiteral,EmbeddingTokenModalityLiteral],Fe=z$1.enum([EmbeddingTextModalityLiteral,EmbeddingTokenModalityLiteral]);var Be=z$1.object({object:z$1.literal("list"),model:z$1.string(),data:z$1.array(z$1.object({index:z$1.number(),object:z$1.literal("embedding"),embedding:z$1.array(z$1.number()).or(z$1.string().base64())})),usage:z$1.object({prompt_tokens:z$1.number().nonnegative(),total_tokens:z$1.number().nonnegative()})});var De=z$1.object({apiKey:z$1.string(),baseUrl:z$1.string().url(),getEmbeddingsUrl:z$1.string().url().optional()}),I=class{constructor(e,o){this.version="v1";this.getDefaultBaseUrl=()=>this.baseUrl;this.getDefaultHeaders=()=>({Authorization:`Bearer ${this.apiKey}`,"Content-Type":"application/json"});this.getDefaultParams=()=>({model:this.modelSchema.name});this.getTokenCount=e=>e.requests.reduce((o,a)=>o+a.length,0);this.transformConfig=(e,o)=>{let a=this.modelSchema.config.schema.safeParse(e);if(!a.success)throw new InvalidConfigError({info:this.modelSchema.name,error:a.error});let t=a.data;return Object.keys(t).forEach(r=>{if(!this.modelSchema.config.def[r])throw new InvalidConfigError({info:this.modelSchema.name,error:new Error(`Invalid config key: '${r}'`)})}),Object.keys(t).reduce((r,m)=>{let p=this.modelSchema.config.def[m].param,c=t[m];return r[p]=c,r},{})};this.transformEmbeddingRequests=e=>{let o=EmbeddingRequests().safeParse(e);if(!o.success)throw new InvalidEmbeddingRequestsError({info:this.modelSchema.name,error:o.error});return {input:o.data.requests}};this.getGetEmbeddingsUrl=(e,o)=>this.getEmbeddingsUrl;this.getGetEmbeddingsHeaders=(e,o)=>this.getDefaultHeaders();this.getGetEmbeddingsData=(e,o)=>h(h(h({},this.getDefaultParams()),this.transformConfig(e,o)),this.transformEmbeddingRequests(o));this.transformGetEmbeddingsResponse=e=>{let o,a=Be.safeParse(e);if(a.success){let t=a.data;o=typeof t.data[0].embedding=="string"?Base64EmbeddingLiteral:FloatEmbeddingLiteral;let n=t.data.map(r=>typeof r.embedding=="string"?{index:r.index,embedding:r.embedding}:{index:r.index,embedding:r.embedding});return {encodingFormat:o,embeddings:n,usage:{totalTokens:t.usage.total_tokens}}}throw new ApiRequestError({info:this.modelSchema.name,error:a.error})};this.modelSchema=e,this.apiKey=o.apiKey,this.baseUrl=urlWithoutTrailingSlash(o.baseUrl),this.getEmbeddingsUrl=urlWithoutTrailingSlash(o.getEmbeddingsUrl||`${this.baseUrl}/embeddings`);}};var jo="text-embedding-ada-002",ko="some description",ee=EmbeddingModelSchema(Fe).parse({name:jo,description:ko,modalities:Le,maxInputTokens:8192,maxOutputTokens:8192,config:{def:W.base().def,schema:W.base().schema}}),$e=De,j=class extends I{constructor(e){super(ee,e);}};var Uo="openai",Ge=class{constructor(){this.version="v1";this.name=Uo;this.baseUrl="https://api.openai.com/v1";this.chatModelFactories={"gpt-4o":{model:_,modelOptions:ke,modelSchema:X}};this.embeddingModelFactories={"text-embedding-ada-002":{model:j,modelOptions:$e,modelSchema:ee}};}chatModelLiterals(){return Object.keys(this.chatModelFactories)}chatModel(e,o){var r;if(!(e in this.chatModelFactories))throw new Error(`Model ${e} not found`);let a=this.chatModelFactories[e].model,t=E(h({},o),{baseUrl:(r=o.baseUrl)!=null?r:this.baseUrl}),n=this.chatModelFactories[e].modelOptions.parse(t);return new a(n)}chatModelSchema(e){if(!(e in this.chatModelFactories))throw new Error(`Model ${e} not found`);return this.chatModelFactories[e].modelSchema}chatModelSchemas(){return Object.keys(this.chatModelFactories).reduce((e,o)=>(e[o]=this.chatModelFactories[o].modelSchema,e),{})}embeddingModelLiterals(){return Object.keys(this.embeddingModelFactories)}embeddingModel(e,o){var r;if(!(e in this.embeddingModelFactories))throw new Error(`Model ${e} not found`);let a=this.embeddingModelFactories[e].model,t=E(h({},o),{baseUrl:(r=o.baseUrl)!=null?r:this.baseUrl}),n=this.embeddingModelFactories[e].modelOptions.parse(t);return new a(n)}embeddingModelSchema(e){if(!(e in this.embeddingModelFactories))throw new Error(`Model ${e} not found`);return this.embeddingModelFactories[e].modelSchema}embeddingModelSchemas(){return Object.keys(this.embeddingModelFactories).reduce((e,o)=>(e[o]=this.embeddingModelFactories[o].modelSchema,e),{})}};
|
|
8
8
|
|
|
9
|
-
export {
|
|
9
|
+
export { P as BaseChatModel, je as BaseChatModelOptions, w as BaseConfigDef, R as BaseConfigSchema, I as BaseEmbeddingModel, De as BaseEmbeddingModelOptions, pe as BaseWordEmbeddingConfigDef, de as BaseWordEmbeddingConfigSchema, _ as GPT4o, ke as GPT4oOptions, X as GPT4oSchema, Ge as OpenAI, Me as OpenAIChatModelModalities, Ee as OpenAIChatModelModalitiesEnum, ue as OpenAIChatModelRoles, ye as OpenAIChatModelRolesMap, Re as OpenAICompleteChatResponse, V as OpenAIConfigs, Le as OpenAIEmbeddingModelModalities, Fe as OpenAIEmbeddingModelModalitiesEnum, Be as OpenAIGetEmbeddingsResponse, we as OpenAIStreamChatResponse, co as OpenAIToolCallsCompleteChatResponse, ho as OpenAIToolCallsStreamChatResponse, W as OpenAIWordEmbeddingConfigs, Uo as ProviderLiteral, me as ResponseSchemaConfigDef, le as ResponseSchemaConfigSchema, j as TextEmbeddingAda002, $e as TextEmbeddingAda002Options, ee as TextEmbeddingAda002Schema, K as dimensions, H as encodingFormat, B as frequencyPenalty, D as logProbs, v as maxTokens, q as presencePenalty, G as responseFormat, z as seed, L as stop, U as temperature, N as toolChoice, $ as topLogProbs, F as topP };
|
|
10
10
|
//# sourceMappingURL=index.mjs.map
|
|
11
11
|
//# sourceMappingURL=index.mjs.map
|