@adaline/open-router 1.3.1 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +6 -6
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +5 -5
- 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/chat-model/base.config.chat-model.open-router.ts","../../../../packages/types/src/message/roles.ts","../../../../packages/types/src/message/content/image-content.ts","../../../../packages/types/src/message/content/pdf-content.ts","../../../../packages/types/src/message/content/reasoning-content.ts","../../../../packages/types/src/message/content/text-content.ts","../../../../packages/types/src/message/content/tool-call-content.ts","../../../../packages/types/src/message/content/tool-response-content.ts","../../../../packages/types/src/message/content/content.ts","../../../../packages/types/src/message/message.ts","../../../../packages/types/src/chat/chat-response.ts","../../../../packages/types/src/config/config.ts","../../../../packages/types/src/config/response-schema.config.ts","../../../../packages/types/src/embedding/embedding-requests.ts","../../../../packages/types/src/embedding/embedding-response.ts","../../../../packages/types/src/errors/gateway-base.error.ts","../../../../packages/types/src/pricing/pricing-tiers.ts","../../../../packages/types/src/tool/function-tool.ts","../../../../packages/types/src/tool/tool.ts","../../../../packages/types/src/utils/create-message.ts","../../../../packages/provider/src/errors/provider.error.ts","../../../../packages/provider/src/errors/model-response.error.ts","../../../../packages/provider/src/errors/invalid-model-request.error.ts","../../../../packages/provider/src/errors/invalid-config.error.ts","../../../../packages/provider/src/errors/invalid-messages.error.ts","../../../../packages/provider/src/errors/invalid-tools.error.ts","../../../../packages/provider/src/types/config/multi-string-config-item.ts","../../../../packages/provider/src/types/config/object-schema-config-item.ts","../../../../packages/provider/src/types/config/range-config-item.ts","../../../../packages/provider/src/types/config/select-boolean-config-item.ts","../../../../packages/provider/src/types/config/select-string-config-item.ts","../../../../packages/provider/src/types/config/config-item.ts","../../../../packages/provider/src/model/chat-model/chat-model.schema.v1.ts","../../../../packages/provider/src/types/headers.ts","../../../../packages/provider/src/types/params.ts","../../../../packages/provider/src/types/url.ts","../../../../packages/provider/src/utils/common-config.def.chat-model.ts","../../../../packages/provider/src/utils/remove-undefined-entries.ts","../../../../packages/provider/src/utils/is-running-in-browser.ts","../../../../packages/provider/src/utils/base64.ts","../../../../packages/provider/src/utils/url.ts","../src/configs/chat-model/common.config.chat-model.open-router.ts","../src/configs/configs.openai-router.ts","../src/provider/provider.open-router.ts","../src/models/pricing.json","../src/models/chat-models/types/roles.chat-model.open-router.ts","../src/models/chat-models/types/modalities.chat-model.open-router.ts","../src/models/chat-models/types/response.chat-model.open-router.ts","../src/models/chat-models/types/request.chat-model.open-router.ts","../src/models/chat-models/base-chat-model.open-router.ts","../src/models/chat-models/base-chat-model-schema.open-router.ts"],"names":["SystemRoleLiteral","UserRoleLiteral","AssistantRoleLiteral","ToolRoleLiteral","RoleLiterals","RoleEnum","z","PartialRoleLiterals","PartialRoleEnum","ImageModalityLiteral","Base64ImageContentTypeLiteral","Base64ImageContentMediaTypeLiterals","Base64ImageContentValue","UrlImageContentTypeLiteral","UrlImageContentValue","ImageContentValue","ImageContentDetails","ImageContentDetailsLiteral","ImageContent","Metadata","PdfModalityLiteral","Base64PdfContentTypeLiteral","Base64PdfContentValue","UrlPdfContentTypeLiteral","UrlPdfContentValue","PdfContentValue","PdfContent","ReasoningModalityLiteral","PartialReasoningModalityLiteral","ReasoningContentTypeLiteral","RedactedReasoningContentTypeLiteral","ReasoningContentValue","RedactedReasoningContentValue","ReasoningContentValueUnion","ReasoningContent","PartialReasoningContentValue","PartialReasoningContentValueUnion","PartialReasoningContent","TextModalityLiteral","TextContent","PartialTextModalityLiteral","PartialTextContent","ToolCallModalityLiteral","ToolCallContent","PartialToolCallModalityLiteral","PartialToolCallContent","ToolResponseModalityLiteral","ToolResponseContent","ModalityLiterals","ModalityEnum","Content","TextContentMetadata","ImageContentMetadata","PdfContentMetadata","ToolCallContentMetadata","ToolResponseContentMetadata","ReasoningContentMetadata","PartialModalityLiterals","PartialContent","PartialTextContentMetadata","PartialToolCallContentMetadata","PartialReasoningContentMetadata","Message","Role","MessageMetadata","PartialMessage","ChatUsage","ChatBaseLogProb","ChatLogProb","ChatLogProbs","PartialChatUsage","Config","ResponseSchemaTypes","ResponseSchemaTypesLiteral","ResponseSchemaProperty","ResponseSchemaStructure","ResponseSchema","EmbeddingTextModalityLiteral","EmbeddingTokenModalityLiteral","EmbeddingModalityLiterals","EmbeddingModalityEnum","TextEmbeddingRequests","TokenEmbeddingRequests","FloatEmbeddingLiteral","FloatEmbedding","Base64EmbeddingLiteral","Base64Embedding","EmbeddingsUsage","safeStringify","obj","seen","key","value","getErrorMessage","error","GatewayBaseErrorLiteral","GatewayBaseError","_GatewayBaseError","info","cause","name","ChatModelTokenPairPrice","ChatModelTokenTypePrice","ChatModelTokenRangePrice","t","ChatModelPrice","data","ctx","tokenRanges","i","prev","curr","last","FunctionToolLiteral","FunctionParameterTypesLiteral","FunctionParameter","FunctionParameters","Function","ToolTypesLiteral","FunctionRequestRetry","FunctionRequestHttp","FunctionRequest","FunctionTool","ToolLiterals","Tool","FunctionToolMetadata","createTextContent","content","createToolCallContent","index","id","args","createPartialTextMessage","role","createPartialToolCallMessage","ProviderErrorLiteral","ProviderError","_ProviderError","ModelResponseErrorLiteral","ModelResponseError","_ModelResponseError","InvalidModelRequestErrorLiteral","InvalidModelRequestError","_InvalidModelRequestError","InvalidConfigErrorLiteral","InvalidConfigError","_InvalidConfigError","InvalidMessagesErrorLiteral","InvalidMessagesError","_InvalidMessagesError","InvalidToolsErrorLiteral","InvalidToolsError","_InvalidToolsError","MultiStringConfigItemTypeLiteral","MultiStringConfigItemDef","MultiStringConfigItemSchema","max","MultiStringConfigItem","__spreadValues","ObjectSchemaConfigItemTypeLiteral","ObjectSchemaConfigItemDef","RangeConfigItemTypeLiteral","RangeConfigItemDef","RangeConfigItemSchema","min","step","defaultValue","RangeConfigItem","SelectBooleanConfigItemTypeLiteral","SelectBooleanConfigItemDef","SelectBooleanConfigItemSchema","SelectBooleanConfigItem","SelectStringConfigItemTypeLiteral","SelectStringConfigItemDef","SelectStringConfigItemSchema","choices","SelectStringConfigItem","ConfigItemLiterals","ConfigItemDef","ChatModelSchema","Roles","Modalities","config","_a","_b","defKeys","schemaKeys","Params","TEMPERATURE","MAX_TOKENS","MAX_REASONING_TOKENS","STOP","TOP_A","TOP_P","TOP_K","MIN_P","FREQUENCY_PENALTY","PRESENCE_PENALTY","SEED","REPETITION_PENALTY","LOG_PROBS","TOP_LOG_PROBS","ECHO","RESPONSE_FORMAT","RESPONSE_FORMAT_WITH_SCHEMA","RESPONSE_SCHEMA","CHAT_CONFIG","removeUndefinedEntries","record","_","getMimeTypeFromBase64","base64","urlWithoutTrailingSlash","url","temperature","ct","Jt","maxTokens","maxOutputTokens","stop","maxSequences","et","topA","topK","topP","minP","frequencyPenalty","presencePenalty","repetitionPenalty","seed","logProbs","ft","topLogProbs","toolChoice","yt","responseFormat","ChatModelBaseConfigSchema","ChatModelBaseConfigDef","OpenRouterChatModelConfigs","ProviderLiteral","OpenRouter","BaseChatModelSchema","options","model","BaseChatModel","parsedOptions","BaseChatModelOptions","acc","j","pricing_default","OpenRouterChatModelRoles","Oe","Ge","D","He","OpenRouterChatModelRolesMap","OpenRouterChatModelModalities","F","O","w","K","OpenRouterChatModelModalitiesEnum","OpenRouterBaseLogProb","OpenRouterLogProb","OpenRouterToolCallsCompleteChatResponse","OpenRouterCompleteChatResponse","OpenRouterToolCallsStreamChatResponse","OpenRouterStreamChatResponse","OpenRouterChatRequestTool","OpenRouterChatRequestToolChoiceEnum","OpenRouterChatRequestToolChoiceFunction","OpenRouterChatRequestResponseFormat","OpenRouterChatRequestTextContent","OpenRouterChatRequestImageContent","OpenRouterChatRequestToolCallContent","OpenRouterChatRequestSystemMessage","OpenRouterChatRequestUserMessage","OpenRouterChatRequestAssistantMessage","OpenRouterChatRequestToolMessage","OpenRouterChatRequestMessage","OpenRouterChatRequest","modelSchema","mn","responseHeaders","messages","message","request","safeRequest","N","parsedRequest","modelName","_config","xt","Vt","toolCallMap","_content","c","se","an","re","assistantContent","toolCall","toolCallContent","toolResponse","tools","tool","_toolChoice","_parsedConfig","parsedConfig","transformedConfig","def","paramKey","paramValue","configToolChoice","parsedMessages","parsedMessage","A","U","textContent","toolCalls","imageContent","combinedContent","Z","parsedTool","Kt","__async","resolve","transformedMessages","transformedTools","response","safe","B","parsedResponse","to","oo","usage","_logProbs","logProb","topLogProb","chunk","buffer","__asyncGenerator","lines","newBuffer","currentIndex","newlineIndex","line","jsonStr","structuredLine","partialResponse","po","yo","headers","query","__yieldStar","sanitizedHeaders","jt"],"mappings":"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","file":"index.js","sourcesContent":["import { z } from \"zod\";\n\nimport {\n frequencyPenalty,\n logProbs,\n maxTokens,\n presencePenalty,\n seed,\n stop,\n temperature,\n toolChoice,\n topLogProbs,\n topP,\n} from \"./common.config.chat-model.open-router\";\n\nconst ChatModelBaseConfigSchema = (maxOutputTokens: number, maxSequences: number) =>\n z.object({\n temperature: temperature.schema,\n maxTokens: maxTokens(maxOutputTokens).schema,\n stop: stop(maxSequences).schema,\n topP: topP.schema,\n frequencyPenalty: frequencyPenalty.schema,\n presencePenalty: presencePenalty.schema,\n seed: seed.schema.transform((value) => (value === 0 ? undefined : value)),\n logProbs: logProbs.schema,\n topLogProbs: topLogProbs.schema,\n toolChoice: toolChoice.schema,\n });\n\nconst ChatModelBaseConfigDef = (maxOutputTokens: number, maxSequences: number) =>\n ({\n temperature: temperature.def,\n maxTokens: maxTokens(maxOutputTokens).def,\n stop: stop(maxSequences).def,\n topP: topP.def,\n frequencyPenalty: frequencyPenalty.def,\n presencePenalty: presencePenalty.def,\n seed: seed.def,\n logProbs: logProbs.def,\n topLogProbs: topLogProbs.def,\n toolChoice: toolChoice.def,\n }) as const;\n\nexport { ChatModelBaseConfigDef, ChatModelBaseConfigSchema };\n","import { z } from \"zod\";\n\nconst SystemRoleLiteral = \"system\" as const;\nconst UserRoleLiteral = \"user\" as const;\nconst AssistantRoleLiteral = \"assistant\" as const;\nconst ToolRoleLiteral = \"tool\" as const;\n\nconst RoleLiterals = [SystemRoleLiteral, UserRoleLiteral, AssistantRoleLiteral, ToolRoleLiteral] as const;\nconst RoleEnum = z.enum(RoleLiterals);\ntype RoleEnumType = z.infer<typeof RoleEnum>;\n\nconst PartialRoleLiterals = [AssistantRoleLiteral] as const;\nconst PartialRoleEnum = z.enum(PartialRoleLiterals);\ntype PartialRoleEnumType = z.infer<typeof PartialRoleEnum>;\n\nexport {\n UserRoleLiteral,\n ToolRoleLiteral,\n SystemRoleLiteral,\n AssistantRoleLiteral,\n RoleEnum,\n RoleLiterals,\n PartialRoleEnum,\n PartialRoleLiterals,\n type RoleEnumType,\n type PartialRoleEnumType,\n};\n","import { z } from \"zod\";\n\nconst ImageModalityLiteral = \"image\" as const;\n\nconst Base64ImageContentTypeLiteral = \"base64\" as const;\nconst Base64ImageContentMediaTypeLiterals = [\"png\", \"jpeg\", \"webp\", \"gif\"] as const;\nconst Base64ImageContentValue = z.object({\n type: z.literal(Base64ImageContentTypeLiteral),\n base64: z.string(),\n mediaType: z.enum(Base64ImageContentMediaTypeLiterals),\n});\ntype Base64ImageContentValueType = z.infer<typeof Base64ImageContentValue>;\n\nconst UrlImageContentTypeLiteral = \"url\" as const;\nconst UrlImageContentValue = z.object({\n type: z.literal(UrlImageContentTypeLiteral),\n url: z.string(),\n});\ntype UrlImageContentValueType = z.infer<typeof UrlImageContentValue>;\n\nconst ImageContentValue = z.discriminatedUnion(\"type\", [Base64ImageContentValue, UrlImageContentValue]);\ntype ImageContentValueType = z.infer<typeof ImageContentValue>;\n\nconst ImageContentDetails = [\"low\", \"medium\", \"high\", \"auto\"] as const;\nconst ImageContentDetailsLiteral = z.enum(ImageContentDetails);\ntype ImageContentDetailsLiteralType = z.infer<typeof ImageContentDetailsLiteral>;\nconst ImageContent = <M extends z.ZodTypeAny = z.ZodUndefined>(Metadata: M = z.undefined() as M) =>\n z.object({\n modality: z.literal(ImageModalityLiteral),\n detail: ImageContentDetailsLiteral,\n value: ImageContentValue,\n metadata: Metadata,\n });\ntype ImageContentType<M extends z.ZodTypeAny = z.ZodUndefined> = z.infer<ReturnType<typeof ImageContent<M>>>;\n\nexport {\n Base64ImageContentValue,\n ImageContent,\n ImageContentDetails,\n ImageContentDetailsLiteral,\n ImageModalityLiteral,\n UrlImageContentValue,\n UrlImageContentTypeLiteral,\n Base64ImageContentTypeLiteral,\n Base64ImageContentMediaTypeLiterals,\n type Base64ImageContentValueType,\n type ImageContentDetailsLiteralType,\n type ImageContentType,\n type ImageContentValueType,\n type UrlImageContentValueType,\n};\n","import { z } from \"zod\";\n\nconst PdfModalityLiteral = \"pdf\" as const;\n\nconst Base64PdfContentTypeLiteral = \"base64\" as const;\nconst Base64PdfContentValue = z.object({\n type: z.literal(Base64PdfContentTypeLiteral),\n base64: z.string(),\n});\ntype Base64PdfContentValueType = z.infer<typeof Base64PdfContentValue>;\n\nconst UrlPdfContentTypeLiteral = \"url\" as const;\nconst UrlPdfContentValue = z.object({\n type: z.literal(UrlPdfContentTypeLiteral),\n url: z.string(),\n});\ntype UrlPdfContentValueType = z.infer<typeof UrlPdfContentValue>;\n\nconst PdfContentValue = z.discriminatedUnion(\"type\", [Base64PdfContentValue, UrlPdfContentValue]);\ntype PdfContentValueType = z.infer<typeof PdfContentValue>;\n\nconst PdfContent = <M extends z.ZodTypeAny = z.ZodUndefined>(Metadata: M = z.undefined() as M) =>\n z.object({\n modality: z.literal(PdfModalityLiteral),\n value: PdfContentValue,\n providerCacheKey: z.string(),\n metadata: Metadata,\n });\ntype PdfContentType<M extends z.ZodTypeAny = z.ZodUndefined> = z.infer<ReturnType<typeof PdfContent<M>>>;\n\nexport {\n Base64PdfContentValue,\n PdfContent,\n PdfModalityLiteral,\n UrlPdfContentValue,\n UrlPdfContentTypeLiteral,\n Base64PdfContentTypeLiteral,\n type Base64PdfContentValueType,\n type PdfContentType,\n type PdfContentValueType,\n type UrlPdfContentValueType,\n};\n","import { z } from \"zod\";\n\nconst ReasoningModalityLiteral = \"reasoning\" as const;\nconst PartialReasoningModalityLiteral = \"partial-reasoning\" as const;\n\nconst ReasoningContentTypeLiteral = \"thinking\" as const;\nconst RedactedReasoningContentTypeLiteral = \"redacted\" as const;\n\nconst ReasoningContentValue = z.object({\n type: z.literal(ReasoningContentTypeLiteral),\n thinking: z.string(),\n signature: z.string(),\n});\ntype ReasoningContentValueType = z.infer<typeof ReasoningContentValue>;\n\nconst RedactedReasoningContentValue = z.object({\n type: z.literal(RedactedReasoningContentTypeLiteral),\n data: z.string()\n});\ntype RedactedReasoningContentValueType = z.infer<typeof RedactedReasoningContentValue>;\n\nconst ReasoningContentValueUnion = z.discriminatedUnion(\"type\", [ ReasoningContentValue, RedactedReasoningContentValue ]);\ntype ReasoningContentValueUnionType = z.infer<typeof ReasoningContentValueUnion>;\n\nconst ReasoningContent = <M extends z.ZodTypeAny = z.ZodUndefined>(Metadata: M = z.undefined() as M) =>\n z.object({\n modality: z.literal(ReasoningModalityLiteral),\n value: ReasoningContentValueUnion,\n metadata: Metadata,\n });\n\ntype ReasoningContentType<M extends z.ZodTypeAny = z.ZodUndefined> = z.infer<ReturnType<typeof ReasoningContent<M>>>;\n\nconst PartialReasoningContentValue = z.object({\n type: z.literal(ReasoningContentTypeLiteral),\n thinking: ReasoningContentValue.shape.thinking.optional(),\n signature: ReasoningContentValue.shape.signature.optional(),\n});\nconst PartialReasoningContentValueUnion = z.discriminatedUnion(\"type\", [ \n PartialReasoningContentValue, \n RedactedReasoningContentValue \n]);\n\nconst PartialReasoningContent = <M extends z.ZodTypeAny = z.ZodUndefined>(Metadata: M = z.undefined() as M) =>\n z.object({\n modality: z.literal(PartialReasoningModalityLiteral),\n value: PartialReasoningContentValueUnion,\n metadata: Metadata,\n });\ntype PartialReasoningContentType<M extends z.ZodTypeAny = z.ZodUndefined> = z.infer<ReturnType<typeof PartialReasoningContent<M>>>;\n\nexport {\n ReasoningContent,\n PartialReasoningContent,\n PartialReasoningModalityLiteral,\n ReasoningContentTypeLiteral,\n ReasoningContentValue,\n PartialReasoningContentValue,\n ReasoningContentValueUnion,\n PartialReasoningContentValueUnion,\n ReasoningModalityLiteral,\n RedactedReasoningContentTypeLiteral,\n RedactedReasoningContentValue,\n type PartialReasoningContentType,\n type ReasoningContentType,\n type ReasoningContentValueType,\n type ReasoningContentValueUnionType,\n type RedactedReasoningContentValueType,\n};\n","import { z } from \"zod\";\n\nconst TextModalityLiteral = \"text\" as const;\n\nconst TextContent = <M extends z.ZodTypeAny = z.ZodUndefined>(Metadata: M = z.undefined() as M) =>\n z.object({\n modality: z.literal(TextModalityLiteral),\n value: z.string(),\n metadata: Metadata,\n });\ntype TextContentType<M extends z.ZodTypeAny = z.ZodUndefined> = z.infer<ReturnType<typeof TextContent<M>>>;\nconst PartialTextModalityLiteral = \"partial-text\" as const;\n\nconst PartialTextContent = <M extends z.ZodTypeAny = z.ZodUndefined>(Metadata: M = z.undefined() as M) =>\n z.object({\n modality: z.literal(PartialTextModalityLiteral),\n value: z.string(),\n metadata: Metadata,\n });\ntype PartialTextContentType<M extends z.ZodTypeAny = z.ZodUndefined> = z.infer<ReturnType<typeof PartialTextContent<M>>>;\n\nexport {\n TextContent,\n PartialTextContent,\n TextModalityLiteral,\n PartialTextModalityLiteral,\n type TextContentType,\n type PartialTextContentType,\n};\n","import { z } from \"zod\";\n\nconst ToolCallModalityLiteral = \"tool-call\" as const;\n\nconst ToolCallContent = <M extends z.ZodTypeAny = z.ZodUndefined>(Metadata: M = z.undefined() as M) =>\n z.object({\n modality: z.literal(ToolCallModalityLiteral),\n index: z.number().int().nonnegative(),\n id: z.string().min(1),\n name: z.string().min(1),\n arguments: z.string(),\n metadata: Metadata,\n });\ntype ToolCallContentType<M extends z.ZodTypeAny = z.ZodUndefined> = z.infer<ReturnType<typeof ToolCallContent<M>>>;\nconst PartialToolCallModalityLiteral = \"partial-tool-call\" as const;\n\nconst PartialToolCallContent = <M extends z.ZodTypeAny = z.ZodUndefined>(Metadata: M = z.undefined() as M) =>\n z.object({\n modality: z.literal(PartialToolCallModalityLiteral),\n index: z.number().int().nonnegative(),\n id: z.string().optional(),\n name: z.string().optional(),\n arguments: z.string().optional(),\n metadata: Metadata,\n });\ntype PartialToolCallContentType<M extends z.ZodTypeAny = z.ZodUndefined> = z.infer<ReturnType<typeof PartialToolCallContent<M>>>;\n\nexport {\n ToolCallContent,\n PartialToolCallContent,\n ToolCallModalityLiteral,\n PartialToolCallModalityLiteral,\n type ToolCallContentType,\n type PartialToolCallContentType,\n};\n","import { z } from \"zod\";\n\nconst ToolResponseModalityLiteral = \"tool-response\" as const;\n\nconst ToolResponseContent = <M extends z.ZodTypeAny = z.ZodUndefined>(Metadata: M = z.undefined() as M) =>\n z.object({\n modality: z.literal(ToolResponseModalityLiteral),\n index: z.number().int().nonnegative(),\n id: z.string().min(1),\n name: z.string().min(1),\n data: z.string(),\n apiResponse: z.object({\n statusCode: z.number().int().nonnegative(),\n }).optional(),\n metadata: Metadata,\n });\ntype ToolResponseContentType<M extends z.ZodTypeAny = z.ZodUndefined> = z.infer<ReturnType<typeof ToolResponseContent<M>>>;\n\nexport { ToolResponseContent, ToolResponseModalityLiteral, type ToolResponseContentType };\n","import { z } from \"zod\";\n\nimport { ImageContent, ImageModalityLiteral } from \"./image-content\";\nimport { PdfContent, PdfModalityLiteral } from \"./pdf-content\";\nimport { PartialReasoningContent, PartialReasoningModalityLiteral, ReasoningContent, ReasoningModalityLiteral } from \"./reasoning-content\";\nimport { PartialTextContent, PartialTextModalityLiteral, TextContent, TextModalityLiteral } from \"./text-content\";\nimport { PartialToolCallContent, PartialToolCallModalityLiteral, ToolCallContent, ToolCallModalityLiteral } from \"./tool-call-content\";\nimport { ToolResponseContent, ToolResponseModalityLiteral } from \"./tool-response-content\";\n\nconst ModalityLiterals = [\n TextModalityLiteral,\n ImageModalityLiteral,\n PdfModalityLiteral,\n ToolCallModalityLiteral,\n ToolResponseModalityLiteral,\n ReasoningModalityLiteral,\n] as const;\nconst ModalityEnum = z.enum(ModalityLiterals);\ntype ModalityEnumType = z.infer<typeof ModalityEnum>;\n\nconst Content = <\n TCM extends z.ZodTypeAny = z.ZodUndefined,\n ICM extends z.ZodTypeAny = z.ZodUndefined,\n PCM extends z.ZodTypeAny = z.ZodUndefined,\n CCM extends z.ZodTypeAny = z.ZodUndefined,\n RCM extends z.ZodTypeAny = z.ZodUndefined,\n TCCM extends z.ZodTypeAny = z.ZodUndefined,\n>(\n TextContentMetadata: TCM = z.undefined() as TCM,\n ImageContentMetadata: ICM = z.undefined() as ICM,\n PdfContentMetadata: PCM = z.undefined() as PCM,\n ToolCallContentMetadata: CCM = z.undefined() as CCM,\n ToolResponseContentMetadata: RCM = z.undefined() as RCM,\n ReasoningContentMetadata: TCCM = z.undefined() as TCCM\n) =>\n z.discriminatedUnion(\"modality\", [\n TextContent(TextContentMetadata),\n ImageContent(ImageContentMetadata),\n PdfContent(PdfContentMetadata),\n ToolCallContent(ToolCallContentMetadata),\n ToolResponseContent(ToolResponseContentMetadata),\n ReasoningContent(ReasoningContentMetadata),\n ]);\ntype ContentType<\n TCM extends z.ZodTypeAny = z.ZodUndefined,\n ICM extends z.ZodTypeAny = z.ZodUndefined,\n CCM extends z.ZodTypeAny = z.ZodUndefined,\n RCM extends z.ZodTypeAny = z.ZodUndefined,\n> = z.infer<ReturnType<typeof Content<TCM, ICM, CCM, RCM>>>;\n\nconst PartialModalityLiterals = [PartialTextModalityLiteral, PartialToolCallModalityLiteral, PartialReasoningModalityLiteral] as const;\nconst PartialModalityEnum = z.enum(PartialModalityLiterals);\ntype PartialModalityEnumType = z.infer<typeof PartialModalityEnum>;\n\nconst PartialContent = <\n TCM extends z.ZodTypeAny = z.ZodUndefined,\n CCM extends z.ZodTypeAny = z.ZodUndefined,\n RCM extends z.ZodTypeAny = z.ZodUndefined,\n>(\n PartialTextContentMetadata: TCM = z.undefined() as TCM,\n PartialToolCallContentMetadata: CCM = z.undefined() as CCM,\n PartialReasoningContentMetadata: z.ZodTypeAny = z.undefined() as z.ZodTypeAny as RCM\n) =>\n z.discriminatedUnion(\"modality\", [\n PartialTextContent(PartialTextContentMetadata),\n PartialToolCallContent(PartialToolCallContentMetadata),\n PartialReasoningContent(PartialReasoningContentMetadata),\n ]);\ntype PartialContentType<TCM extends z.ZodTypeAny = z.ZodUndefined, CCM extends z.ZodTypeAny = z.ZodUndefined> = z.infer<\n ReturnType<typeof PartialContent<TCM, CCM>>\n>;\n\nexport {\n Content,\n ModalityEnum,\n ModalityLiterals,\n PartialContent,\n PartialModalityEnum,\n PartialModalityLiterals,\n type ContentType,\n type ModalityEnumType,\n type PartialContentType,\n type PartialModalityEnumType,\n};\n","import { z } from \"zod\";\n\nimport { Content, PartialContent } from \"./content\";\nimport { PartialRoleEnum, RoleEnum } from \"./roles\";\n\nconst Message = <\n R extends z.ZodEnum<[string, ...string[]]> = typeof RoleEnum,\n TCM extends z.ZodTypeAny = z.ZodUndefined,\n ICM extends z.ZodTypeAny = z.ZodUndefined,\n CCM extends z.ZodTypeAny = z.ZodUndefined,\n RCM extends z.ZodTypeAny = z.ZodUndefined,\n RTCM extends z.ZodTypeAny = z.ZodUndefined,\n PCCM extends z.ZodTypeAny = z.ZodUndefined,\n MM extends z.ZodTypeAny = z.ZodUndefined,\n>(\n Role: R = RoleEnum as unknown as R,\n TextContentMetadata: TCM = z.undefined() as TCM,\n ImageContentMetadata: ICM = z.undefined() as ICM,\n ToolCallContentMetadata: CCM = z.undefined() as CCM,\n ToolResponseContentMetadata: RCM = z.undefined() as RCM,\n PdfContentMetadata: PCCM = z.undefined() as PCCM,\n ReasoningContentMetadata: z.ZodTypeAny = z.undefined() as RTCM,\n MessageMetadata: MM = z.undefined() as MM,\n) =>\n z.object({\n role: Role,\n content: z.array(\n Content(\n TextContentMetadata,\n ImageContentMetadata,\n ToolCallContentMetadata,\n ToolResponseContentMetadata,\n ReasoningContentMetadata,\n PdfContentMetadata,\n )\n ),\n metadata: MessageMetadata,\n });\ntype MessageType<\n R extends z.ZodEnum<[string, ...string[]]> = typeof RoleEnum,\n TCM extends z.ZodTypeAny = z.ZodUndefined,\n ICM extends z.ZodTypeAny = z.ZodUndefined,\n CCM extends z.ZodTypeAny = z.ZodUndefined,\n RCM extends z.ZodTypeAny = z.ZodUndefined,\n RTCM extends z.ZodTypeAny = z.ZodUndefined,\n PCCM extends z.ZodTypeAny = z.ZodUndefined,\n MM extends z.ZodTypeAny = z.ZodUndefined,\n> = z.infer<ReturnType<typeof Message<R, TCM, ICM, CCM, RCM, PCCM, RTCM, MM>>>;\n\nconst PartialMessage = <\n R extends z.ZodEnum<[string, ...string[]]> = typeof PartialRoleEnum,\n TCM extends z.ZodTypeAny = z.ZodUndefined,\n CCM extends z.ZodTypeAny = z.ZodUndefined,\n MM extends z.ZodTypeAny = z.ZodUndefined,\n RTCM extends z.ZodTypeAny = z.ZodUndefined,\n>(\n Role: R = PartialRoleEnum as unknown as R,\n TextContentMetadata: TCM = z.undefined() as TCM,\n ToolCallContentMetadata: CCM = z.undefined() as CCM,\n ReasoningContentMetadata: z.ZodTypeAny = z.undefined() as RTCM,\n MessageMetadata: MM = z.undefined() as MM\n) =>\n z.object({\n role: Role,\n partialContent: PartialContent(TextContentMetadata, ToolCallContentMetadata, ReasoningContentMetadata),\n metadata: MessageMetadata,\n });\ntype PartialMessageType<\n R extends z.ZodEnum<[string, ...string[]]> = typeof PartialRoleEnum,\n TCM extends z.ZodTypeAny = z.ZodUndefined,\n CCM extends z.ZodTypeAny = z.ZodUndefined,\n MM extends z.ZodTypeAny = z.ZodUndefined,\n> = z.infer<ReturnType<typeof PartialMessage<R, TCM, CCM, MM>>>;\n\nexport { Message, PartialMessage, type MessageType, type PartialMessageType };\n","import { z } from \"zod\";\n\nimport { Message, PartialMessage } from \"./../message\";\n\nconst ChatUsage = z.object({\n promptTokens: z.number().nonnegative(),\n completionTokens: z.number().nonnegative(),\n totalTokens: z.number().nonnegative(),\n});\ntype ChatUsageType = z.infer<typeof ChatUsage>;\n\nconst ChatBaseLogProb = z.object({\n token: z.string(),\n logProb: z.number(),\n bytes: z.array(z.number().int()).nullable(),\n});\ntype ChatBaseLogProbType = z.infer<typeof ChatBaseLogProb>;\n\nconst ChatLogProb = ChatBaseLogProb.extend({\n topLogProbs: z.array(ChatBaseLogProb),\n});\ntype ChatLogProbType = z.infer<typeof ChatLogProb>;\n\nconst ChatLogProbs = z.array(ChatLogProb);\ntype ChatLogProbsType = z.infer<typeof ChatLogProbs>;\n\nconst ChatResponse = z.object({\n messages: z.array(Message()),\n usage: ChatUsage.optional(),\n logProbs: ChatLogProbs.optional(),\n});\ntype ChatResponseType = z.infer<typeof ChatResponse>;\n\nconst PartialChatUsage = z.object({\n promptTokens: z.number().nonnegative().optional(),\n completionTokens: z.number().nonnegative().optional(),\n totalTokens: z.number().nonnegative().optional(),\n});\n\ntype PartialChatUsageType = z.infer<typeof PartialChatUsage>;\n\nconst PartialChatResponse = z.object({\n partialMessages: z.array(PartialMessage()),\n usage: PartialChatUsage.optional(),\n logProbs: ChatLogProbs.optional(),\n});\ntype PartialChatResponseType = z.infer<typeof PartialChatResponse>;\n\nexport {\n ChatBaseLogProb,\n ChatLogProb,\n ChatLogProbs,\n ChatResponse,\n ChatUsage,\n PartialChatResponse,\n PartialChatUsage,\n type ChatBaseLogProbType,\n type ChatLogProbsType,\n type ChatLogProbType,\n type ChatResponseType,\n type ChatUsageType,\n type PartialChatResponseType,\n type PartialChatUsageType,\n};\n","import { z } from \"zod\";\n\nconst Config = <C extends z.ZodRecord<z.ZodString, z.ZodAny> = z.ZodRecord<z.ZodString, z.ZodAny>>(\n Config: C = z.record(z.string(), z.any()).optional() as unknown as C\n) => Config;\ntype ConfigType<C extends z.ZodRecord<z.ZodString, z.ZodAny> = z.ZodRecord<z.ZodString, z.ZodAny>> = z.infer<ReturnType<typeof Config<C>>>;\n\nexport { Config, type ConfigType };\n","import { z } from \"zod\";\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);\ntype ResponseSchemaTypesType = z.infer<typeof ResponseSchemaTypesLiteral>;\n\nconst ResponseSchemaProperty = z.object({\n anyOf: z.array(z.any()).optional(),\n type: z.union([ResponseSchemaTypesLiteral, z.array(z.union([ResponseSchemaTypesLiteral, z.literal(\"null\")]))]).optional(),\n default: z.any().optional(),\n title: z.string().optional(),\n description: z.string().max(4096).optional(),\n properties: z.record(z.any()).optional(),\n required: z.array(z.string()).optional(),\n minItems: z.number().int().min(0).optional(),\n maxItems: z.number().int().optional(),\n items: z.record(z.any()).optional(), // Recursive structure to handle nested arrays and objects\n enum: z.array(z.union([z.string(), z.number(), z.boolean(), z.null()])).optional(), // Enum for allowed values\n minimum: z.number().optional(), // Minimum value for number\n maximum: z.number().optional(), // Maximum value for number\n minLength: z.number().int().min(0).optional(), // Minimum length for string\n maxLength: z.number().int().optional(), // Maximum length for string\n $ref: z.string().optional(), // Reference to another schema\n});\ntype 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});\ntype ResponseSchemaStructureType = z.infer<typeof ResponseSchemaStructure>;\n\nconst ResponseSchema = z\n .object({\n name: z\n .string()\n .regex(/^[a-zA-Z0-9_]{1,64}$/)\n .max(64),\n description: z.string().max(4096),\n strict: z.boolean().optional(),\n schema: ResponseSchemaStructure,\n })\n .optional();\ntype ResponseSchemaType = z.infer<typeof ResponseSchema>;\n\nexport {\n ResponseSchema,\n ResponseSchemaProperty,\n ResponseSchemaStructure,\n ResponseSchemaTypes,\n ResponseSchemaTypesLiteral,\n type ResponseSchemaTypesType,\n type ResponseSchemaType,\n type ResponseSchemaPropertyType,\n type ResponseSchemaStructureType,\n};\n","import { z } from \"zod\";\n\nconst EmbeddingTextModalityLiteral = \"text\" as const;\nconst EmbeddingTokenModalityLiteral = \"token\" as const;\n\nconst EmbeddingModalityLiterals = [EmbeddingTextModalityLiteral, EmbeddingTokenModalityLiteral] as const;\nconst EmbeddingModalityEnum = z.enum(EmbeddingModalityLiterals);\ntype EmbeddingModalityEnumType = z.infer<typeof EmbeddingModalityEnum>;\n\nconst TextEmbeddingRequests = z.array(z.string().min(1));\ntype TextEmbeddingRequestsType = z.infer<typeof TextEmbeddingRequests>;\n\nconst TokenEmbeddingRequests = z.array(z.array(z.number().int().nonnegative()));\ntype TokenEmbeddingRequestsType = z.infer<typeof TokenEmbeddingRequests>;\n\nconst EmbeddingRequests = <M extends z.ZodTypeAny = z.ZodUndefined>(Metadata: M = z.undefined() as M) =>\n z.discriminatedUnion(\"modality\", [\n z.object({\n modality: z.literal(EmbeddingTextModalityLiteral),\n metadata: Metadata,\n requests: TextEmbeddingRequests,\n }),\n z.object({\n modality: z.literal(EmbeddingTokenModalityLiteral),\n metadata: Metadata,\n requests: TokenEmbeddingRequests,\n }),\n ]);\ntype EmbeddingRequestsType<M extends z.ZodTypeAny = z.ZodUndefined> = z.infer<ReturnType<typeof EmbeddingRequests<M>>>;\n\nexport {\n EmbeddingTextModalityLiteral,\n EmbeddingTokenModalityLiteral,\n EmbeddingModalityLiterals,\n EmbeddingModalityEnum,\n TextEmbeddingRequests,\n TokenEmbeddingRequests,\n EmbeddingRequests,\n type EmbeddingRequestsType,\n type EmbeddingModalityEnumType,\n type TextEmbeddingRequestsType,\n type TokenEmbeddingRequestsType,\n};\n","import { z } from \"zod\";\n\nconst FloatEmbeddingLiteral = \"float\" as const;\nconst FloatEmbedding = z.object({\n index: z.number().int().nonnegative(),\n embedding: z.array(z.number()),\n});\ntype FloatEmbeddingType = z.infer<typeof FloatEmbedding>;\n\nconst Base64EmbeddingLiteral = \"base64\" as const;\nconst Base64Embedding = z.object({\n index: z.number().int().nonnegative(),\n embedding: z.string().base64(),\n});\ntype Base64EmbeddingType = z.infer<typeof Base64Embedding>;\n\nconst EmbeddingsUsage = z.object({\n totalTokens: z.number().int().nonnegative(),\n});\ntype EmbeddingsUsageType = z.infer<typeof EmbeddingsUsage>;\n\nconst EmbeddingResponse = z.discriminatedUnion(\"encodingFormat\", [\n z.object({\n encodingFormat: z.literal(FloatEmbeddingLiteral),\n embeddings: z.array(FloatEmbedding),\n usage: EmbeddingsUsage.optional(),\n }),\n z.object({\n encodingFormat: z.literal(Base64EmbeddingLiteral),\n embeddings: z.array(Base64Embedding),\n usage: EmbeddingsUsage.optional(),\n }),\n]);\ntype EmbeddingResponseType = z.infer<typeof EmbeddingResponse>;\n\nexport {\n FloatEmbeddingLiteral,\n Base64EmbeddingLiteral,\n FloatEmbedding,\n Base64Embedding,\n EmbeddingsUsage,\n EmbeddingResponse,\n type FloatEmbeddingType,\n type Base64EmbeddingType,\n type EmbeddingsUsageType,\n type EmbeddingResponseType,\n};\n","const safeStringify = (obj: unknown) => {\n const seen = new WeakSet();\n return JSON.stringify(obj, (key, value) => {\n if (typeof value === \"object\" && value !== null) {\n if (seen.has(value)) {\n return; // Skip circular reference\n }\n seen.add(value);\n }\n return value;\n });\n};\n\nconst getErrorMessage = (error: unknown | undefined): string => {\n if (error == null) return \"unknown error\";\n if (typeof error === \"string\") return error;\n if (error instanceof Error) return error.message;\n return safeStringify(error);\n};\n\nconst GatewayBaseErrorLiteral = \"GatewayBaseError\" as const;\nclass GatewayBaseError extends Error {\n readonly name: string = GatewayBaseErrorLiteral;\n readonly info: string;\n readonly cause: unknown;\n\n constructor({ info, cause }: { info: string; cause: unknown }, name?: string) {\n super(`[${name ?? GatewayBaseErrorLiteral}]: ${info}\\nMessage: ${getErrorMessage(cause)}`);\n this.info = info;\n this.cause = cause;\n this.name = name ?? GatewayBaseErrorLiteral;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n\n static isGatewayBaseError(error: unknown): error is GatewayBaseError {\n return error instanceof GatewayBaseError;\n }\n\n toJSON(): object {\n return {\n name: this.name,\n info: this.info,\n cause: this.cause,\n message: this.message,\n stack: this.stack,\n };\n }\n}\n\nexport { GatewayBaseError };\n","import { z } from \"zod\";\n\n/**\n * A pair of per‑million‑token rates for a single price category (e.g., base input/output).\n * Represents the input and output cost for 1 million tokens within a specific category (like 'base') of a pricing tier.\n */\nconst ChatModelTokenPairPrice = z\n .object({\n inputPricePerMillion: z.number().nonnegative().describe(\"Price per 1M input tokens\"),\n outputPricePerMillion: z.number().nonnegative().describe(\"Price per 1M output tokens\"),\n })\n .describe(\"Input/output price pair (per 1M tokens) for a specific category within a ChatModel pricing tier.\");\n\ntype ChatModelTokenPairPriceType = z.infer<typeof ChatModelTokenPairPrice>;\n\n/**\n * Defines the price categories (e.g., base) applicable within a single pricing tier (`ChatModelTokenRangePrice`).\n * Each category holds a `ChatModelTokenPairPrice`.\n */\nconst ChatModelTokenTypePrice = z\n .object({\n base: ChatModelTokenPairPrice.describe(\"Base (uncached, non‑reasoning) rates\"),\n // Add optional 'cached' and 'reasoning' here if they become standard\n })\n .describe(\"Holds the `ChatModelTokenPairPrice` for different categories (e.g., base) within a single pricing tier.\");\n\ntype ChatModelTokenTypePriceType = z.infer<typeof ChatModelTokenTypePrice>;\n\n/**\n * Defines a single tier in a model's pricing schedule (`ChatModelPrice`), based on token count range.\n * - `minTokens`: inclusive lower bound (integer ≥ 0).\n * - `maxTokens`: exclusive upper bound (integer > minTokens), or `null` for ∞.\n * - `prices`: the `ChatModelTokenTypePrice` (categories and their rates) applicable to this tier.\n */\nconst ChatModelTokenRangePrice = z\n .object({\n minTokens: z.number().int().nonnegative().describe(\"Inclusive lower token bound for this tier.\"),\n maxTokens: z.number().int().nullable().optional().describe(\"Exclusive upper token bound; `null` means ∞.\"),\n prices: ChatModelTokenTypePrice.describe(\"Price categories and rates for this specific token range.\"),\n })\n .refine((t) => t.maxTokens === null || (typeof t.maxTokens === \"number\" && t.maxTokens > t.minTokens), {\n message: \"maxTokens must be > minTokens (or null for infinite).\",\n path: [\"maxTokens\"],\n })\n .describe(\"A single pricing tier defined by a token range and associated prices.\");\n\ntype ChatModelTokenRangePriceType = z.infer<typeof ChatModelTokenRangePrice>;\n\n/**\n * Full pricing schedule for a specific chat model, potentially with multiple `ChatModelTokenRangePrice` tiers.\n * Ensures tiers are contiguous and cover the full range from 0 to infinity.\n * - First tier must start at 0 tokens.\n * - `tokenRanges` must be contiguous: each tier.minTokens === previous.maxTokens.\n * - Last `tokenRange` must have maxTokens = null (infinite).\n */\nconst ChatModelPrice = z\n .object({\n modelName: z.string().describe(\"Model name this schedule applies to.\"),\n currency: z.string().default(\"USD\").describe(\"Currency code (e.g., USD).\"),\n tokenRanges: z\n .array(ChatModelTokenRangePrice)\n .min(1)\n .describe(\"Pricing tiers (`ChatModelTokenRangePrice`) schedule, sorted by minTokens.\"),\n })\n .superRefine((data, ctx) => {\n const { tokenRanges } = data;\n\n // 1) First tier starts at 0\n if (tokenRanges[0].minTokens !== 0) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"tokenRanges\", 0, \"minTokens\"],\n message: \"The first tier must have minTokens = 0.\",\n });\n }\n\n // 2) tokenRanges must be sorted and contiguous\n for (let i = 1; i < tokenRanges.length; i++) {\n const prev = tokenRanges[i - 1];\n const curr = tokenRanges[i];\n\n if (prev.maxTokens === null) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"tokenRanges\", i - 1, \"maxTokens\"],\n message: \"Cannot define any tokenRanges after an infinite tier (maxTokens = null).\",\n });\n break; // Stop further checks if structure is already invalid\n }\n\n if (curr.minTokens !== prev.maxTokens) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"tokenRanges\", i, \"minTokens\"],\n message: `Tier ${i} minTokens (${curr.minTokens}) must equal previous tier's maxTokens (${prev.maxTokens}) for contiguity.`,\n });\n }\n\n // Ensure sorting (although contiguity check often implies this)\n if (curr.minTokens < prev.minTokens) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"tokenRanges\", i, \"minTokens\"],\n message: `tokenRanges must be sorted by ascending minTokens. Tier ${i} (${curr.minTokens}) starts before Tier ${i - 1} (${prev.minTokens}).`,\n });\n }\n }\n\n // 3) Last tier must be infinite\n const last = tokenRanges[tokenRanges.length - 1];\n // Check last.maxTokens only if the loop didn't break early due to a previous infinite tier\n if (tokenRanges.every((t) => t.maxTokens !== null || t === last) && last.maxTokens !== null) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"tokenRanges\", tokenRanges.length - 1, \"maxTokens\"],\n message: \"The final tier must have maxTokens = null (representing infinity).\",\n });\n }\n })\n .describe(\"Complete pricing schedule for a single chat model, including all its token-based tiers.\");\n\ntype ChatModelPriceType = z.infer<typeof ChatModelPrice>;\n\n// Export the schemas and types\nexport { ChatModelPrice, ChatModelTokenPairPrice, ChatModelTokenRangePrice, ChatModelTokenTypePrice };\nexport type { ChatModelPriceType, ChatModelTokenPairPriceType, ChatModelTokenRangePriceType, ChatModelTokenTypePriceType };\n","import { z } from \"zod\";\n\nconst FunctionToolLiteral = \"function\" as const;\n\nconst FunctionParameterTypes = [\"object\", \"array\", \"number\", \"string\", \"boolean\", \"null\"];\nconst FunctionParameterTypesLiteral = z.enum([\"object\", \"array\", \"number\", \"string\", \"boolean\", \"null\"]);\ntype FunctionParameterTypesType = z.infer<typeof FunctionParameterTypesLiteral>;\n\nconst FunctionParameter = z.object({\n anyOf: z.array(z.any()).optional(),\n type: FunctionParameterTypesLiteral.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});\ntype FunctionParameterType = z.infer<typeof FunctionParameter>;\n\nconst FunctionParameters = z.object({\n type: z.enum([\"object\"]),\n title: z.string().optional(),\n $defs: z.record(z.any()).optional(),\n properties: z.record(FunctionParameter).optional(),\n required: z.array(z.string()).optional(),\n});\ntype FunctionParametersType = z.infer<typeof FunctionParameters>;\n\nconst Function = 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 parameters: z.any(),\n strict: z.boolean().optional(),\n});\ntype FunctionType = z.infer<typeof Function>;\n\nconst ToolTypes = [\"function\"];\nconst ToolTypesLiteral = z.enum([\"function\"]);\ntype ToolTypesType = z.infer<typeof ToolTypesLiteral>;\n\nconst FunctionRequestRetry = z.object({\n maxAttempts: z.number().int().positive(),\n initialDelay: z.number().int().positive(),\n exponentialFactor: z.number().int().positive(),\n});\n\nconst FunctionRequestHttp = z.object({\n type: z.literal(\"http\"),\n method: z.enum([\"get\", \"post\"]),\n url: z.string().url(),\n headers: z.record(z.string()).optional(),\n query: z.record(z.string()).optional(),\n body: z.record(z.any()).optional(),\n proxyUrl: z.string().url().optional(),\n proxyHeaders: z.record(z.string()).optional(),\n retry: FunctionRequestRetry.optional(),\n});\n\nconst FunctionRequest = z.discriminatedUnion(\"type\", [FunctionRequestHttp]);\n\nconst FunctionTool = z.object({\n type: ToolTypesLiteral,\n definition: z.object({\n schema: Function,\n }),\n request: FunctionRequest.optional(),\n});\ntype FunctionToolType = z.infer<typeof FunctionTool>;\n\nexport {\n Function,\n FunctionParameter,\n FunctionParameters,\n FunctionParameterTypes,\n FunctionParameterTypesLiteral,\n FunctionRequestHttp,\n FunctionRequest,\n FunctionRequestRetry,\n ToolTypes,\n ToolTypesLiteral,\n type FunctionParametersType,\n type FunctionParameterType,\n type FunctionParameterTypesType,\n type FunctionType,\n type ToolTypesType,\n};\n\nexport { FunctionTool, FunctionToolLiteral, type FunctionToolType };\n","import { z } from \"zod\";\n\nimport { FunctionTool, FunctionToolLiteral } from \"./function-tool\";\n\nconst ToolLiterals = [FunctionToolLiteral] as const;\nconst ToolEnum = z.enum(ToolLiterals);\ntype ToolEnumType = z.infer<typeof ToolEnum>;\n\nconst Tool = <FTM extends z.ZodTypeAny>(FunctionToolMetadata: FTM = z.undefined() as FTM) =>\n z.discriminatedUnion(\"type\", [FunctionTool.extend({ metadata: FunctionToolMetadata })]);\ntype ToolType<FTM extends z.ZodTypeAny = z.ZodUndefined> = z.infer<ReturnType<typeof Tool<FTM>>>;\n\nexport { Tool, ToolEnum, ToolLiterals, type ToolEnumType, type ToolType };\n","import {\n Base64ImageContentTypeLiteral,\n ContentType,\n ImageContent,\n ImageContentDetailsLiteralType,\n ImageModalityLiteral,\n Message,\n MessageType,\n PartialMessage,\n PartialMessageType,\n PartialReasoningContent,\n PartialReasoningModalityLiteral,\n PartialTextContent,\n PartialTextModalityLiteral,\n PartialToolCallContent,\n PartialToolCallModalityLiteral,\n ReasoningContent,\n ReasoningContentTypeLiteral,\n ReasoningModalityLiteral,\n RedactedReasoningContentTypeLiteral,\n RoleEnumType,\n TextContent,\n TextModalityLiteral,\n ToolCallContent,\n ToolCallModalityLiteral,\n ToolResponseContent,\n ToolResponseModalityLiteral,\n UrlImageContentTypeLiteral,\n} from \"./../message\";\n\nconst createTextContent = (content: string): ContentType => {\n return TextContent().parse({\n modality: TextModalityLiteral,\n value: content,\n });\n};\n\nconst createToolCallContent = (index: number, id: string, name: string, args: string): ContentType => {\n return ToolCallContent().parse({\n modality: ToolCallModalityLiteral,\n index: index,\n id: id,\n name: name,\n arguments: args,\n });\n};\n\nconst createTextMessage = (role: RoleEnumType, content: string): MessageType => {\n return Message().parse({\n role: role,\n content: [\n TextContent().parse({\n modality: TextModalityLiteral,\n value: content,\n }),\n ],\n });\n};\n\nconst createUrlImageMessage = (role: RoleEnumType, url: string, detail: ImageContentDetailsLiteralType): MessageType => {\n return Message().parse({\n role: role,\n content: [\n ImageContent().parse({\n modality: ImageModalityLiteral,\n detail: detail,\n value: {\n type: UrlImageContentTypeLiteral,\n url: url,\n },\n }),\n ],\n });\n};\n\nconst createBase64ImageMessage = (role: RoleEnumType, base64: string, detail: ImageContentDetailsLiteralType): MessageType => {\n return Message().parse({\n role: role,\n content: [\n ImageContent().parse({\n modality: ImageModalityLiteral,\n detail: detail,\n value: {\n type: Base64ImageContentTypeLiteral,\n base64: base64,\n },\n }),\n ],\n });\n};\n\nconst createToolCallMessage = (role: RoleEnumType, index: number, id: string, name: string, args: string): MessageType => {\n return Message().parse({\n role: role,\n content: [\n ToolCallContent().parse({\n modality: ToolCallModalityLiteral,\n index: index,\n id: id,\n name: name,\n arguments: args,\n }),\n ],\n });\n};\n\nconst createToolResponseMessage = (role: RoleEnumType, index: number, id: string, name: string, data: string): MessageType => {\n return Message().parse({\n role: role,\n content: [\n ToolResponseContent().parse({\n modality: ToolResponseModalityLiteral,\n index: index,\n id: id,\n name: name,\n data: data,\n }),\n ],\n });\n};\n\nconst createPartialTextMessage = (role: RoleEnumType, content: string): PartialMessageType => {\n return PartialMessage().parse({\n role: role,\n partialContent: PartialTextContent().parse({\n modality: PartialTextModalityLiteral,\n value: content,\n }),\n });\n};\n\nconst createPartialToolCallMessage = (role: RoleEnumType, index: number, id?: string, name?: string, args?: string): PartialMessageType => {\n return PartialMessage().parse({\n role: role,\n partialContent: PartialToolCallContent().parse({\n modality: PartialToolCallModalityLiteral,\n index: index,\n id: id,\n name: name,\n arguments: args,\n }),\n });\n};\n\nconst createReasoningContent = (thinking: string, signature: string): ContentType => {\n return ReasoningContent().parse({\n modality: ReasoningModalityLiteral,\n value: {\n type: ReasoningContentTypeLiteral,\n thinking,\n signature,\n },\n });\n};\n\nconst createReasoningMessage = (role: RoleEnumType, thinking: string, signature: string): MessageType => {\n return Message().parse({\n role: role,\n content: [\n ReasoningContent().parse({\n modality: ReasoningModalityLiteral,\n value: {\n type: ReasoningContentTypeLiteral,\n thinking,\n signature,\n },\n }),\n ],\n });\n};\n// Redacted Reasoning Content\nconst createRedactedReasoningContent = (data: string): ContentType => {\n return ReasoningContent().parse({\n modality: ReasoningModalityLiteral,\n value: {\n type: RedactedReasoningContentTypeLiteral,\n data,\n },\n });\n};\n\nconst createRedactedReasoningMessage = (role: RoleEnumType, data: string): MessageType => {\n return Message().parse({\n role: role,\n content: [\n ReasoningContent().parse({\n modality: ReasoningModalityLiteral,\n value: {\n type: RedactedReasoningContentTypeLiteral,\n data,\n },\n }),\n ],\n });\n};\n\nconst createPartialReasoningMessage = (role: RoleEnumType, thinking?: string, signature?: string): PartialMessageType => {\n return PartialMessage().parse({\n role: role,\n partialContent: PartialReasoningContent().parse({\n modality: PartialReasoningModalityLiteral,\n value: {\n type: ReasoningContentTypeLiteral,\n thinking,\n signature,\n },\n // metadata is optional; omit or provide if needed\n }),\n });\n};\n\n// Create a partial redacted reasoning message\nconst createPartialRedactedReasoningMessage = (role: RoleEnumType, data: string): PartialMessageType => {\n return PartialMessage().parse({\n role: role,\n partialContent: PartialReasoningContent().parse({\n modality: PartialReasoningModalityLiteral,\n value: {\n type: RedactedReasoningContentTypeLiteral,\n data,\n },\n // metadata is optional; omit or provide if needed\n }),\n });\n};\n\nexport {\n createBase64ImageMessage,\n createPartialReasoningMessage,\n createPartialRedactedReasoningMessage,\n createPartialTextMessage,\n createPartialToolCallMessage,\n createReasoningContent,\n createReasoningMessage,\n createRedactedReasoningContent,\n createRedactedReasoningMessage,\n createTextContent,\n createTextMessage,\n createToolCallContent,\n createToolCallMessage,\n createToolResponseMessage,\n createUrlImageMessage,\n};\n","import { GatewayBaseError } from \"@adaline/types\";\n\nconst ProviderErrorLiteral = \"ProviderError\" as const;\nexport class ProviderError extends GatewayBaseError {\n readonly name = ProviderErrorLiteral;\n readonly info: string;\n readonly cause: unknown;\n\n constructor({ info, cause }: { info: string; cause: unknown }) {\n super({ info, cause }, ProviderErrorLiteral);\n this.info = info;\n this.cause = cause;\n }\n\n static isProviderError(error: unknown): error is ProviderError {\n return error instanceof ProviderError;\n }\n}\n","import { GatewayBaseError } from \"@adaline/types\";\n\nconst ModelResponseErrorLiteral = \"ModelResponseError\" as const;\nexport class ModelResponseError extends GatewayBaseError {\n readonly name = ModelResponseErrorLiteral;\n readonly info: string;\n readonly cause: unknown;\n\n constructor({ info, cause }: { info: string; cause: unknown }) {\n super({ info, cause }, ModelResponseErrorLiteral);\n this.cause = cause;\n this.info = info;\n }\n\n static isModelResponseError(error: unknown): error is ModelResponseError {\n return error instanceof ModelResponseError;\n }\n}\n","import { GatewayBaseError } from \"@adaline/types\";\n\nconst InvalidModelRequestErrorLiteral = \"InvalidModelRequestError\" as const;\nexport class InvalidModelRequestError extends GatewayBaseError {\n readonly name = InvalidModelRequestErrorLiteral;\n readonly info: string;\n readonly cause: unknown;\n\n constructor({ info, cause }: { info: string; cause: unknown }) {\n super({ info, cause }, InvalidModelRequestErrorLiteral);\n this.cause = cause;\n this.info = info;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n\n static isInvalidModelRequestError(error: unknown): error is InvalidModelRequestError {\n return error instanceof InvalidModelRequestError;\n }\n}\n","import { GatewayBaseError } from \"@adaline/types\";\n\nconst InvalidConfigErrorLiteral = \"InvalidConfigError\" as const;\nexport class InvalidConfigError extends GatewayBaseError {\n readonly name = InvalidConfigErrorLiteral;\n readonly info: string;\n readonly cause: unknown;\n\n constructor({ info, cause }: { info: string; cause: unknown }) {\n super({ info, cause }, InvalidConfigErrorLiteral);\n this.cause = cause;\n this.info = info;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n\n static isInvalidConfigError(error: unknown): error is InvalidConfigError {\n return error instanceof InvalidConfigError;\n }\n}\n","import { GatewayBaseError } from \"@adaline/types\";\n\nconst InvalidMessagesErrorLiteral = \"InvalidMessagesError\" as const;\nexport class InvalidMessagesError extends GatewayBaseError {\n readonly name = InvalidMessagesErrorLiteral;\n readonly info: string;\n readonly cause: unknown;\n\n constructor({ info, cause }: { info: string; cause: unknown }) {\n super({ info, cause }, InvalidMessagesErrorLiteral);\n this.cause = cause;\n this.info = info;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n\n static isInvalidMessagesError(error: unknown): error is InvalidMessagesError {\n return error instanceof InvalidMessagesError;\n }\n}\n","import { GatewayBaseError } from \"@adaline/types\";\n\nconst InvalidToolsErrorLiteral = \"InvalidToolsError\" as const;\nexport class InvalidToolsError extends GatewayBaseError {\n readonly name = InvalidToolsErrorLiteral;\n readonly info: string;\n readonly cause: unknown;\n\n constructor({ info, cause }: { info: string; cause: unknown }) {\n super({ info, cause }, InvalidToolsErrorLiteral);\n this.cause = cause;\n this.info = info;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n\n static isInvalidToolsError(error: unknown): error is InvalidToolsError {\n return error instanceof InvalidToolsError;\n }\n}\n","import { z } from \"zod\";\n\nconst MultiStringConfigItemTypeLiteral = \"multi-string\" as const;\n\nconst MultiStringConfigItemDef = z.object({\n type: z.literal(MultiStringConfigItemTypeLiteral),\n param: z.string().min(1),\n title: z.string().min(1),\n description: z.string().min(1).max(500),\n max: z.number().int().positive(),\n});\ntype MultiStringConfigItemType = z.infer<typeof MultiStringConfigItemDef>;\n\nconst MultiStringConfigItemSchema = (max: number) => z.array(z.string()).max(max).default([]).optional();\ntype MultiStringConfigItemSchemaType = z.infer<ReturnType<typeof MultiStringConfigItemSchema>>;\n\nconst MultiStringConfigItem = (data: Omit<MultiStringConfigItemType, \"type\">) => {\n return {\n def: MultiStringConfigItemDef.parse({\n type: MultiStringConfigItemTypeLiteral,\n ...data,\n }),\n schema: MultiStringConfigItemSchema(data.max),\n };\n};\n\nexport {\n MultiStringConfigItem,\n MultiStringConfigItemDef,\n MultiStringConfigItemSchema,\n MultiStringConfigItemTypeLiteral,\n type MultiStringConfigItemSchemaType,\n type MultiStringConfigItemType,\n};\n","import { z } from \"zod\";\n\nconst ObjectSchemaConfigItemTypeLiteral = \"object-schema\" as const;\n\nconst ObjectSchemaConfigItemDef = z.object({\n type: z.literal(ObjectSchemaConfigItemTypeLiteral),\n param: z.string().min(1),\n title: z.string().min(1),\n description: z.string().min(1).max(500),\n objectSchema: z.any(),\n});\ntype ObjectSchemaConfigItemType = z.infer<typeof ObjectSchemaConfigItemDef>;\n\nconst ObjectSchemaConfigItemSchema = <S extends z.ZodRawShape>(schema: z.ZodObject<S>) => schema.optional();\ntype ObjectSchemaConfigItemSchemaType<S extends z.ZodRawShape = z.ZodRawShape> = z.infer<\n ReturnType<typeof ObjectSchemaConfigItemSchema<S>>\n>;\n\nconst ObjectSchemaConfigItem = (data: Omit<ObjectSchemaConfigItemType, \"type\">) => {\n return {\n def: ObjectSchemaConfigItemDef.parse({\n type: ObjectSchemaConfigItemTypeLiteral,\n ...data,\n }),\n schema: ObjectSchemaConfigItemSchema(data.objectSchema),\n };\n};\n\nexport {\n ObjectSchemaConfigItem,\n ObjectSchemaConfigItemDef,\n ObjectSchemaConfigItemSchema,\n ObjectSchemaConfigItemTypeLiteral,\n type ObjectSchemaConfigItemType,\n type ObjectSchemaConfigItemSchemaType,\n};\n","import { z } from \"zod\";\n\nconst RangeConfigItemTypeLiteral = \"range\" as const;\n\nconst RangeConfigItemDef = z.object({\n type: z.literal(RangeConfigItemTypeLiteral),\n param: z.string().min(1),\n title: z.string().min(1),\n description: z.string().min(1).max(500),\n min: z.number().int(),\n max: z.number().int(),\n step: z.number().positive(),\n default: z.number(),\n});\ntype RangeConfigItemDefType = z.infer<typeof RangeConfigItemDef>;\n\nconst RangeConfigItemSchema = (min: number, max: number, step: number, defaultValue: number) =>\n z.number().min(min).max(max).step(step).default(defaultValue).optional();\ntype RangeConfigItemSchemaType = z.infer<ReturnType<typeof RangeConfigItemSchema>>;\n\nconst RangeConfigItem = (data: Omit<RangeConfigItemDefType, \"type\">) => {\n return {\n def: RangeConfigItemDef.parse({\n type: RangeConfigItemTypeLiteral,\n ...data,\n }),\n schema: RangeConfigItemSchema(data.min, data.max, data.step, data.default),\n };\n};\n\nexport {\n RangeConfigItem,\n RangeConfigItemDef,\n RangeConfigItemSchema,\n RangeConfigItemTypeLiteral,\n type RangeConfigItemDefType,\n type RangeConfigItemSchemaType,\n};\n","import { z } from \"zod\";\n\nconst SelectBooleanConfigItemTypeLiteral = \"select-boolean\" as const;\n\nconst SelectBooleanConfigItemDef = z.object({\n type: z.literal(SelectBooleanConfigItemTypeLiteral),\n param: z.string().min(1),\n title: z.string().min(1),\n description: z.string().min(1).max(500),\n default: z.boolean().nullable(),\n});\ntype SelectBooleanConfigItemDefType = z.infer<typeof SelectBooleanConfigItemDef>;\n\nconst SelectBooleanConfigItemSchema = (defaultValue: boolean | null) => z.boolean().nullable().default(defaultValue).optional();\ntype SelectBooleanConfigItemSchemaType = z.infer<ReturnType<typeof SelectBooleanConfigItemSchema>>;\n\nconst SelectBooleanConfigItem = (data: Omit<SelectBooleanConfigItemDefType, \"type\">) => {\n return {\n def: SelectBooleanConfigItemDef.parse({\n type: SelectBooleanConfigItemTypeLiteral,\n ...data,\n }),\n schema: SelectBooleanConfigItemSchema(data.default),\n };\n};\n\nexport {\n SelectBooleanConfigItem,\n SelectBooleanConfigItemDef,\n SelectBooleanConfigItemSchema,\n SelectBooleanConfigItemTypeLiteral,\n type SelectBooleanConfigItemDefType,\n type SelectBooleanConfigItemSchemaType,\n};\n","import { z } from \"zod\";\n\nconst SelectStringConfigItemTypeLiteral = \"select-string\" as const;\n\nconst SelectStringConfigItemDef = z.object({\n type: z.literal(SelectStringConfigItemTypeLiteral),\n param: z.string().min(1),\n title: z.string().min(1),\n description: z.string().min(1).max(500),\n default: z.string(),\n choices: z.array(z.string()),\n});\ntype SelectStringConfigItemDefType = z.infer<typeof SelectStringConfigItemDef>;\n\nconst SelectStringConfigItemSchema = (defaultValue: string | null, choices: string[]) =>\n z\n .enum(choices as [string, ...string[]])\n .nullable()\n .default(defaultValue)\n .optional();\ntype SelectStringConfigItemSchemaType = z.infer<ReturnType<typeof SelectStringConfigItemSchema>>;\n\nconst SelectStringConfigItem = (data: Omit<SelectStringConfigItemDefType, \"type\">) => {\n return {\n def: SelectStringConfigItemDef.parse({\n type: SelectStringConfigItemTypeLiteral,\n ...data,\n }),\n schema: SelectStringConfigItemSchema(data.default, data.choices),\n };\n};\n\nexport {\n SelectStringConfigItem,\n SelectStringConfigItemDef,\n SelectStringConfigItemSchema,\n SelectStringConfigItemTypeLiteral,\n type SelectStringConfigItemDefType,\n type SelectStringConfigItemSchemaType,\n};\n","import { z } from \"zod\";\n\nimport { MultiStringConfigItemDef, MultiStringConfigItemTypeLiteral } from \"./multi-string-config-item\";\nimport { ObjectSchemaConfigItemDef, ObjectSchemaConfigItemTypeLiteral } from \"./object-schema-config-item\";\nimport { RangeConfigItemDef, RangeConfigItemTypeLiteral } from \"./range-config-item\";\nimport { SelectBooleanConfigItemDef, SelectBooleanConfigItemTypeLiteral } from \"./select-boolean-config-item\";\nimport { SelectStringConfigItemDef, SelectStringConfigItemTypeLiteral } from \"./select-string-config-item\";\n\nconst ConfigItemLiterals = [\n RangeConfigItemTypeLiteral,\n MultiStringConfigItemTypeLiteral,\n SelectStringConfigItemTypeLiteral,\n ObjectSchemaConfigItemTypeLiteral,\n SelectBooleanConfigItemTypeLiteral,\n] as const;\nconst ConfigItemEnum = z.enum(ConfigItemLiterals);\ntype ConfigItemEnumType = z.infer<typeof ConfigItemEnum>;\n\nconst ConfigItemDef = z.discriminatedUnion(\"type\", [\n RangeConfigItemDef,\n MultiStringConfigItemDef,\n SelectStringConfigItemDef,\n SelectBooleanConfigItemDef,\n ObjectSchemaConfigItemDef,\n]);\ntype ConfigItemDefType = z.infer<typeof ConfigItemDef>;\n\nexport { ConfigItemDef, ConfigItemEnum, ConfigItemLiterals, type ConfigItemDefType, type ConfigItemEnumType };\n","import { z } from \"zod\";\n\nimport { ChatModelPriceType, ModalityEnum, RoleEnum } from \"@adaline/types\";\n\nimport { ConfigItemDef } from \"../../types/config\";\n\nconst ChatModelSchema = <\n R extends z.ZodEnum<[string, ...string[]]> = typeof RoleEnum,\n M extends z.ZodEnum<[string, ...string[]]> = typeof ModalityEnum,\n>(\n Roles: R = RoleEnum as unknown as R,\n Modalities: M = ModalityEnum as unknown as M\n) =>\n z.object({\n name: z.string().min(1),\n description: z.string().min(1),\n roles: z.record(Roles, z.string().min(1).optional()),\n modalities: z.array(Modalities).nonempty(),\n maxInputTokens: z.number().int().positive().min(1),\n maxOutputTokens: z.number().int().positive().min(1),\n maxReasoningTokens: z.number().int().positive().min(1).optional(),\n config: z\n .object({\n def: z.record(z.string().min(1), ConfigItemDef),\n schema: z.instanceof(z.ZodObject),\n })\n .refine(\n (config) => {\n const defKeys = Object.keys(config.def);\n const schemaKeys = Object.keys(config.schema?.shape ?? {});\n return defKeys.every((key) => schemaKeys.includes(key)) && schemaKeys.every((key) => defKeys.includes(key));\n },\n {\n message: \"Keys in 'config.def' must exactly match keys in 'config.schema'\",\n }\n ),\n price: z.custom<ChatModelPriceType>(),\n });\ntype ChatModelSchemaType<\n R extends z.ZodEnum<[string, ...string[]]> = typeof RoleEnum,\n M extends z.ZodEnum<[string, ...string[]]> = typeof ModalityEnum,\n> = z.infer<ReturnType<typeof ChatModelSchema<R, M>>>;\n\nexport { ChatModelSchema, type ChatModelSchemaType };\n","import { z } from \"zod\";\n\nconst Headers = z.record(z.string());\ntype HeadersType = z.infer<typeof Headers>;\n\nexport { Headers, type HeadersType };\n","import { z } from \"zod\";\n\nconst Params = z.record(\n z.union([\n z.boolean(),\n z.string(),\n z.number(),\n z.object({}),\n z.array(z.any()),\n z.null(),\n z.undefined(),\n ])\n);\ntype ParamsType = z.infer<typeof Params>;\n\nexport { Params, type ParamsType };\n","import { z } from \"zod\";\n\nconst Url = z.string().url();\ntype UrlType = z.infer<typeof Url>;\n\nexport { Url, type UrlType };\n","const TEMPERATURE = {\n type: \"range\",\n title: \"Temperature\",\n description:\n \"Adjusts the model's creativity level. With a setting of 0, the model strictly picks the most probable next word. \\\n For endeavors that benefit from a dash of inventiveness, consider dialing it up to 0.7 or higher, enabling the model to produce text \\\n that's unexpectedly fresh.\",\n} as const;\n\nconst MAX_TOKENS = {\n type: \"range\",\n title: \"Max tokens\",\n description:\n \"Specify the total tokens for generation, where one token approximates four English characters. \\\n Setting this to 0 defaults to the model's maximum capacity.\",\n} as const;\n\nconst MAX_REASONING_TOKENS = {\n type: \"range\",\n title: \"Max reasoning tokens\",\n description:\n \"Specify the total tokens for reasoning, where one token approximates four English characters.\",\n} as const;\n\nconst STOP = (max: number) =>\n ({\n type: \"multi\",\n title: \"Stop sequence\",\n description: `Enter up to ${max} sequences that will halt additional text output. \\\n The generated text will exclude these sequences.`,\n }) as const;\n\nconst TOP_A = {\n type: \"range\",\n title: \"Top A\",\n description:\n \"Considers only the top tokens that have 'sufficiently high' probabilities relative to the most likely token, \\\n functioning like a dynamic Top-P. \\\n A lower Top-A value narrows down the token choices based on the highest probability token, \\\n while a higher Top-A value refines the filtering without necessarily impacting the creativity of the output.\",\n} as const;\n\nconst TOP_P = {\n type: \"range\",\n title: \"Top P\",\n description:\n \"Selects a subset of likely tokens for generation, restricting choices to the top-P fraction of possibilities, \\\n such as the top 10% when P=0.1. \\\n This approach can limit the variety of the output. By default, it's set to 1, indicating no restriction. \\\n It's advised to adjust this parameter or temperature to modulate output diversity, but not to modify both simultaneously.\",\n} as const;\n\nconst TOP_K = {\n type: \"range\",\n title: \"Top K\",\n description:\n \"Select only from the highest K probabilities for each following word, effectively eliminating the less likely 'long tail' options.\",\n} as const;\n\nconst MIN_P = {\n type: \"range\",\n title: \"Min P\",\n description:\n \"Specifies the minimum probability a token must have to be considered, in relation to the probability of the most likely token. \\\n (This value varies based on the confidence level of the top token.) \\\n For example, if Min-P is set to 0.1, only tokens with at least 1/10th the probability of the highest-ranked token will be considered.\",\n} as const;\n\nconst FREQUENCY_PENALTY = {\n type: \"range\",\n title: \"Frequency penalty\",\n description:\n \"Minimize redundancy.\\\n By assigning a penalty to frequently used tokens within the text, the likelihood of repeating identical phrases is reduced. \\\n The default setting for this penalty is zero.\",\n} as const;\n\nconst PRESENCE_PENALTY = {\n type: \"range\",\n title: \"Presence penalty\",\n description:\n \"Enhance the introduction of novel subjects by reducing the preference for tokens that have already appeared in the text, \\\n thus boosting the chances of exploring fresh topics. \\\n The standard setting for this is zero.\",\n} as const;\n\nconst SEED = {\n type: \"range\",\n title: \"Seed\",\n description:\n \"When seed is fixed to a specific value, the model makes a best effort to provide the same response for repeated requests. \\\n Deterministic output isn't guaranteed. \\\n Also, changing the model or parameter settings, such as the temperature, \\\n can cause variations in the response even when you use the same seed value. \\\n By default, a random seed value is used.\",\n} as const;\n\nconst REPETITION_PENALTY = {\n type: \"range\",\n title: \"Repetition penalty\",\n description:\n \"Reduces the likelihood of repeating tokens from the input. \\\n Increasing this value makes the model less prone to repetition, but setting it too high may lead to less coherent output, \\\n often resulting in run-on sentences missing smaller words. \\\n The token penalty is scaled according to the original token's probability.\",\n} as const;\n\nconst LOG_PROBS = {\n type: \"boolean\",\n title: \"Log probs\",\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} as const;\n\nconst TOP_LOG_PROBS = {\n type: \"range\",\n title: \"Top log probs\",\n description:\n \"The number of most likely tokens to return at each token position, each with an associated log probability. \\\n 'logprobs' must be set to true if this parameter is used.\",\n} as const;\n\nconst ECHO = {\n type: \"boolean\",\n title: \"Echo\",\n description: \"If true, the response will contain the prompt.\",\n} as const;\n\nconst RESPONSE_FORMAT = {\n type: \"select\",\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} as const;\n\nconst RESPONSE_FORMAT_WITH_SCHEMA = {\n type: \"select\",\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} as const;\n\nconst RESPONSE_SCHEMA = {\n type: \"object\",\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} as const;\n\nconst CHAT_CONFIG = {\n TEMPERATURE,\n MAX_TOKENS,\n STOP,\n TOP_A,\n TOP_P,\n TOP_K,\n MIN_P,\n FREQUENCY_PENALTY,\n PRESENCE_PENALTY,\n REPETITION_PENALTY,\n SEED,\n LOG_PROBS,\n TOP_LOG_PROBS,\n ECHO,\n RESPONSE_FORMAT,\n RESPONSE_FORMAT_WITH_SCHEMA,\n RESPONSE_SCHEMA,\n MAX_REASONING_TOKENS,\n};\n\nexport { CHAT_CONFIG };\n","const removeUndefinedEntries = <T = unknown>(record: Record<string, T | undefined>): Record<string, T> => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n return Object.fromEntries(Object.entries(record).filter(([_, value]) => value != null)) as Record<string, T>;\n};\n\nexport { removeUndefinedEntries };\n","const isRunningInBrowser = () => {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n return typeof window !== \"undefined\" && typeof window.document !== \"undefined\" && typeof navigator !== \"undefined\";\n};\n\nexport { isRunningInBrowser };\n","import { isRunningInBrowser } from \"./is-running-in-browser\";\n\nconst convertBase64ToUint8Array = (base64String: string): Uint8Array => {\n const base64Url = base64String.replace(/-/g, \"+\").replace(/_/g, \"/\");\n const latin1string = globalThis.atob(base64Url);\n return Uint8Array.from(latin1string, (byte) => byte.codePointAt(0)!);\n};\n\nconst convertUint8ArrayToBase64 = (array: Uint8Array): string => {\n let latin1string = \"\";\n\n // Note: regular for loop to support older JavaScript versions that\n // do not support for..of on Uint8Array\n for (let i = 0; i < array.length; i++) {\n latin1string += String.fromCodePoint(array[i]);\n }\n\n return globalThis.btoa(latin1string);\n};\n\nconst encodedBase64ToString = (base64: string): string => {\n if (isRunningInBrowser()) {\n const binaryString = atob(base64);\n const bytes = new Uint8Array(binaryString.length);\n for (let i = 0; i < binaryString.length; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n const decoder = new TextDecoder(\"utf-8\");\n return decoder.decode(bytes);\n } else {\n return Buffer.from(base64, \"base64\").toString(\"utf-8\");\n }\n};\n\nconst getMimeTypeFromBase64 = (base64: string): string => {\n const mimeTypePrefix = base64.split(\";\")[0];\n const mimeType = mimeTypePrefix.split(\"/\")[1];\n return mimeType;\n};\n\nexport { convertBase64ToUint8Array, convertUint8ArrayToBase64, encodedBase64ToString, getMimeTypeFromBase64 };\n","const urlWithoutTrailingSlash = (url: string): string => {\n return url?.replace(/\\/$/, \"\");\n};\n\nexport { urlWithoutTrailingSlash };\n","import { CHAT_CONFIG, MultiStringConfigItem, RangeConfigItem, SelectBooleanConfigItem, SelectStringConfigItem } from \"@adaline/provider\";\n\nconst temperature = RangeConfigItem({\n param: \"temperature\",\n title: CHAT_CONFIG.TEMPERATURE.title,\n description: CHAT_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: CHAT_CONFIG.MAX_TOKENS.title,\n description: CHAT_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: CHAT_CONFIG.STOP(maxSequences).title,\n description: CHAT_CONFIG.STOP(maxSequences).description,\n max: maxSequences,\n });\n\nconst topA = RangeConfigItem({\n param: \"top_a\",\n title: CHAT_CONFIG.TOP_A.title,\n description: CHAT_CONFIG.TOP_A.description,\n min: 0,\n max: 1,\n step: 0.01,\n default: 0,\n});\n\nconst topK = RangeConfigItem({\n param: \"top_k\",\n title: CHAT_CONFIG.TOP_K.title,\n description: CHAT_CONFIG.TOP_K.description,\n min: 0,\n max: 100,\n step: 1,\n default: 0,\n});\n\nconst topP = RangeConfigItem({\n param: \"top_p\",\n title: CHAT_CONFIG.TOP_P.title,\n description: CHAT_CONFIG.TOP_P.description,\n min: 0,\n max: 1,\n step: 0.01,\n default: 1,\n});\n\nconst minP = RangeConfigItem({\n param: \"min_p\",\n title: CHAT_CONFIG.MIN_P.title,\n description: CHAT_CONFIG.MIN_P.description,\n min: 0,\n max: 1,\n step: 0.01,\n default: 0,\n});\n\nconst frequencyPenalty = RangeConfigItem({\n param: \"frequency_penalty\",\n title: CHAT_CONFIG.FREQUENCY_PENALTY.title,\n description: CHAT_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: CHAT_CONFIG.PRESENCE_PENALTY.title,\n description: CHAT_CONFIG.PRESENCE_PENALTY.description,\n min: -2,\n max: 2,\n step: 0.01,\n default: 0,\n});\n\nconst repetitionPenalty = RangeConfigItem({\n param: \"repetition_penalty\",\n title: CHAT_CONFIG.REPETITION_PENALTY.title,\n description: CHAT_CONFIG.REPETITION_PENALTY.description,\n min: 0,\n max: 2,\n step: 0.01,\n default: 0,\n});\n\nconst seed = RangeConfigItem({\n param: \"seed\",\n title: CHAT_CONFIG.SEED.title,\n description: CHAT_CONFIG.SEED.description,\n min: 0,\n max: 1000000,\n step: 1,\n default: 0,\n});\n\nconst logProbs = SelectBooleanConfigItem({\n param: \"logprobs\",\n title: CHAT_CONFIG.LOG_PROBS.title,\n description: CHAT_CONFIG.LOG_PROBS.description,\n default: false,\n});\n\nconst topLogProbs = RangeConfigItem({\n param: \"top_logprobs\",\n title: CHAT_CONFIG.TOP_LOG_PROBS.title,\n description: CHAT_CONFIG.TOP_LOG_PROBS.description,\n min: 0,\n max: 20,\n step: 1,\n default: 0,\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. \\\n 'none' means the model will not call a function. \\\n 'auto' means the model can pick between generating a message or calling a tool.\",\n default: \"auto\",\n choices: [\"auto\", \"required\", \"none\"],\n});\n\nconst responseFormat = SelectStringConfigItem({\n param: \"response_format\",\n title: CHAT_CONFIG.RESPONSE_FORMAT.title,\n description: CHAT_CONFIG.RESPONSE_FORMAT.description,\n default: \"text\",\n choices: [\"text\", \"json_object\"],\n});\n\nexport {\n frequencyPenalty,\n logProbs,\n maxTokens,\n presencePenalty,\n repetitionPenalty,\n seed,\n stop,\n temperature,\n toolChoice,\n topLogProbs,\n topP,\n topA,\n topK,\n minP,\n responseFormat,\n};\n","import { ChatModelBaseConfigDef, ChatModelBaseConfigSchema } from \"./chat-model\";\n\nconst OpenRouterChatModelConfigs = {\n base: (maxOutputTokens: number, maxSequences: number) => ({\n def: ChatModelBaseConfigDef(maxOutputTokens, maxSequences),\n schema: ChatModelBaseConfigSchema(maxOutputTokens, maxSequences),\n }),\n} as const;\n\nexport { OpenRouterChatModelConfigs };\n","import { z } from \"zod\";\n\nimport { ChatModelSchemaType, ChatModelV1, EmbeddingModelSchemaType, EmbeddingModelV1, ProviderError, ProviderV1 } from \"@adaline/provider\";\n\nimport { BaseChatModel, BaseChatModelOptions, BaseChatModelSchema, type BaseChatModelOptionsType } from \"../models/chat-models\";\n\nconst ProviderLiteral = \"open-router\";\nclass OpenRouter<C extends BaseChatModelOptionsType, E extends Record<string, any> = Record<string, any>> implements ProviderV1<C, E> {\n readonly version = \"v1\" as const;\n readonly name = ProviderLiteral;\n static readonly baseUrl = \"https://openrouter.ai/api/v1\";\n\n private readonly embeddingModelFactories: Record<\n string,\n {\n model: { new (options: any): EmbeddingModelV1 };\n modelOptions: z.ZodType<any>;\n modelSchema: EmbeddingModelSchemaType;\n }\n > = {};\n\n chatModelLiterals(): string[] {\n return [\"__base__\"];\n }\n\n chatModelSchemas(): Record<string, ChatModelSchemaType> {\n return {\n __base__: BaseChatModelSchema,\n };\n }\n\n chatModel(options: C): ChatModelV1 {\n const model = BaseChatModel;\n const parsedOptions = BaseChatModelOptions.parse(options);\n return new model(BaseChatModelSchema, parsedOptions);\n }\n\n embeddingModelLiterals(): string[] {\n return Object.keys(this.embeddingModelFactories);\n }\n\n embeddingModelSchemas(): Record<string, EmbeddingModelSchemaType> {\n return Object.keys(this.embeddingModelFactories).reduce(\n (acc, key) => {\n acc[key] = this.embeddingModelFactories[key].modelSchema;\n return acc;\n },\n {} as Record<string, EmbeddingModelSchemaType>\n );\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n embeddingModel(options: E): EmbeddingModelV1 {\n throw new ProviderError({\n info: \"Open Router does not support embedding models yet\",\n cause: new Error(\"Open Router does not support embedding models yet\"),\n });\n }\n}\n\nexport { OpenRouter };\n","{\n \"microsoft/mai-ds-r1:free\": {\n \"modelName\": \"microsoft/mai-ds-r1:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"google/gemini-2.5-pro-preview-03-25\": {\n \"modelName\": \"google/gemini-2.5-pro-preview-03-25\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1.25,\n \"outputPricePerMillion\": 10\n }\n }\n }\n ]\n },\n \"thudm/glm-z1-32b:free\": {\n \"modelName\": \"thudm/glm-z1-32b:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"thudm/glm-4-32b:free\": {\n \"modelName\": \"thudm/glm-4-32b:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"google/gemini-2.5-flash-preview\": {\n \"modelName\": \"google/gemini-2.5-flash-preview\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.15,\n \"outputPricePerMillion\": 0.6\n }\n }\n }\n ]\n },\n \"google/gemini-2.5-flash-preview:thinking\": {\n \"modelName\": \"google/gemini-2.5-flash-preview:thinking\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.15,\n \"outputPricePerMillion\": 3.5\n }\n }\n }\n ]\n },\n \"openai/o4-mini-high\": {\n \"modelName\": \"openai/o4-mini-high\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1.1,\n \"outputPricePerMillion\": 4.4\n }\n }\n }\n ]\n },\n \"openai/o3\": {\n \"modelName\": \"openai/o3\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 10,\n \"outputPricePerMillion\": 40\n }\n }\n }\n ]\n },\n \"openai/o4-mini\": {\n \"modelName\": \"openai/o4-mini\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1.1,\n \"outputPricePerMillion\": 4.4\n }\n }\n }\n ]\n },\n \"shisa-ai/shisa-v2-llama3.3-70b:free\": {\n \"modelName\": \"shisa-ai/shisa-v2-llama3.3-70b:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"qwen/qwen2.5-coder-7b-instruct\": {\n \"modelName\": \"qwen/qwen2.5-coder-7b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.19999999999999998,\n \"outputPricePerMillion\": 0.19999999999999998\n }\n }\n }\n ]\n },\n \"openai/gpt-4.1\": {\n \"modelName\": \"openai/gpt-4.1\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2,\n \"outputPricePerMillion\": 8\n }\n }\n }\n ]\n },\n \"openai/gpt-4.1-mini\": {\n \"modelName\": \"openai/gpt-4.1-mini\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.39999999999999997,\n \"outputPricePerMillion\": 1.5999999999999999\n }\n }\n }\n ]\n },\n \"openai/gpt-4.1-nano\": {\n \"modelName\": \"openai/gpt-4.1-nano\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.09999999999999999,\n \"outputPricePerMillion\": 0.39999999999999997\n }\n }\n }\n ]\n },\n \"eleutherai/llemma_7b\": {\n \"modelName\": \"eleutherai/llemma_7b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7999999999999999,\n \"outputPricePerMillion\": 1.2\n }\n }\n }\n ]\n },\n \"alfredpros/codellama-7b-instruct-solidity\": {\n \"modelName\": \"alfredpros/codellama-7b-instruct-solidity\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7999999999999999,\n \"outputPricePerMillion\": 1.2\n }\n }\n }\n ]\n },\n \"arliai/qwq-32b-arliai-rpr-v1:free\": {\n \"modelName\": \"arliai/qwq-32b-arliai-rpr-v1:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"agentica-org/deepcoder-14b-preview:free\": {\n \"modelName\": \"agentica-org/deepcoder-14b-preview:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"moonshotai/kimi-vl-a3b-thinking:free\": {\n \"modelName\": \"moonshotai/kimi-vl-a3b-thinking:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"x-ai/grok-3-mini-beta\": {\n \"modelName\": \"x-ai/grok-3-mini-beta\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.3,\n \"outputPricePerMillion\": 0.5\n }\n }\n }\n ]\n },\n \"x-ai/grok-3-beta\": {\n \"modelName\": \"x-ai/grok-3-beta\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 3,\n \"outputPricePerMillion\": 15\n }\n }\n }\n ]\n },\n \"nvidia/llama-3.1-nemotron-nano-8b-v1:free\": {\n \"modelName\": \"nvidia/llama-3.1-nemotron-nano-8b-v1:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"nvidia/llama-3.3-nemotron-super-49b-v1:free\": {\n \"modelName\": \"nvidia/llama-3.3-nemotron-super-49b-v1:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"nvidia/llama-3.1-nemotron-ultra-253b-v1:free\": {\n \"modelName\": \"nvidia/llama-3.1-nemotron-ultra-253b-v1:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"meta-llama/llama-4-maverick:free\": {\n \"modelName\": \"meta-llama/llama-4-maverick:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"meta-llama/llama-4-maverick\": {\n \"modelName\": \"meta-llama/llama-4-maverick\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.16999999999999998,\n \"outputPricePerMillion\": 0.6\n }\n }\n }\n ]\n },\n \"meta-llama/llama-4-scout:free\": {\n \"modelName\": \"meta-llama/llama-4-scout:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"meta-llama/llama-4-scout\": {\n \"modelName\": \"meta-llama/llama-4-scout\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.08,\n \"outputPricePerMillion\": 0.3\n }\n }\n }\n ]\n },\n \"all-hands/openhands-lm-32b-v0.1\": {\n \"modelName\": \"all-hands/openhands-lm-32b-v0.1\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2.6,\n \"outputPricePerMillion\": 3.4\n }\n }\n }\n ]\n },\n \"mistral/ministral-8b\": {\n \"modelName\": \"mistral/ministral-8b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.09999999999999999,\n \"outputPricePerMillion\": 0.09999999999999999\n }\n }\n }\n ]\n },\n \"deepseek/deepseek-v3-base:free\": {\n \"modelName\": \"deepseek/deepseek-v3-base:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"scb10x/llama3.1-typhoon2-8b-instruct\": {\n \"modelName\": \"scb10x/llama3.1-typhoon2-8b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.18,\n \"outputPricePerMillion\": 0.18\n }\n }\n }\n ]\n },\n \"scb10x/llama3.1-typhoon2-70b-instruct\": {\n \"modelName\": \"scb10x/llama3.1-typhoon2-70b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.88,\n \"outputPricePerMillion\": 0.88\n }\n }\n }\n ]\n },\n \"allenai/molmo-7b-d:free\": {\n \"modelName\": \"allenai/molmo-7b-d:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"bytedance-research/ui-tars-72b:free\": {\n \"modelName\": \"bytedance-research/ui-tars-72b:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"qwen/qwen2.5-vl-3b-instruct:free\": {\n \"modelName\": \"qwen/qwen2.5-vl-3b-instruct:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"google/gemini-2.5-pro-exp-03-25:free\": {\n \"modelName\": \"google/gemini-2.5-pro-exp-03-25:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"qwen/qwen2.5-vl-32b-instruct:free\": {\n \"modelName\": \"qwen/qwen2.5-vl-32b-instruct:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"qwen/qwen2.5-vl-32b-instruct\": {\n \"modelName\": \"qwen/qwen2.5-vl-32b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.8999999999999999,\n \"outputPricePerMillion\": 0.8999999999999999\n }\n }\n }\n ]\n },\n \"deepseek/deepseek-chat-v3-0324:free\": {\n \"modelName\": \"deepseek/deepseek-chat-v3-0324:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"deepseek/deepseek-chat-v3-0324\": {\n \"modelName\": \"deepseek/deepseek-chat-v3-0324\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.27,\n \"outputPricePerMillion\": 1.1\n }\n }\n }\n ]\n },\n \"featherless/qwerky-72b:free\": {\n \"modelName\": \"featherless/qwerky-72b:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"openai/o1-pro\": {\n \"modelName\": \"openai/o1-pro\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 150,\n \"outputPricePerMillion\": 600\n }\n }\n }\n ]\n },\n \"mistralai/mistral-small-3.1-24b-instruct:free\": {\n \"modelName\": \"mistralai/mistral-small-3.1-24b-instruct:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"mistralai/mistral-small-3.1-24b-instruct\": {\n \"modelName\": \"mistralai/mistral-small-3.1-24b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.09999999999999999,\n \"outputPricePerMillion\": 0.3\n }\n }\n }\n ]\n },\n \"open-r1/olympiccoder-32b:free\": {\n \"modelName\": \"open-r1/olympiccoder-32b:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"steelskull/l3.3-electra-r1-70b\": {\n \"modelName\": \"steelskull/l3.3-electra-r1-70b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7,\n \"outputPricePerMillion\": 0.95\n }\n }\n }\n ]\n },\n \"google/gemma-3-1b-it:free\": {\n \"modelName\": \"google/gemma-3-1b-it:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"google/gemma-3-4b-it:free\": {\n \"modelName\": \"google/gemma-3-4b-it:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"google/gemma-3-4b-it\": {\n \"modelName\": \"google/gemma-3-4b-it\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.02,\n \"outputPricePerMillion\": 0.04\n }\n }\n }\n ]\n },\n \"ai21/jamba-1.6-large\": {\n \"modelName\": \"ai21/jamba-1.6-large\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2,\n \"outputPricePerMillion\": 8\n }\n }\n }\n ]\n },\n \"ai21/jamba-1.6-mini\": {\n \"modelName\": \"ai21/jamba-1.6-mini\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.19999999999999998,\n \"outputPricePerMillion\": 0.39999999999999997\n }\n }\n }\n ]\n },\n \"google/gemma-3-12b-it:free\": {\n \"modelName\": \"google/gemma-3-12b-it:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"google/gemma-3-12b-it\": {\n \"modelName\": \"google/gemma-3-12b-it\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.049999999999999996,\n \"outputPricePerMillion\": 0.09999999999999999\n }\n }\n }\n ]\n },\n \"cohere/command-a\": {\n \"modelName\": \"cohere/command-a\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2.5,\n \"outputPricePerMillion\": 10\n }\n }\n }\n ]\n },\n \"openai/gpt-4o-mini-search-preview\": {\n \"modelName\": \"openai/gpt-4o-mini-search-preview\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.15,\n \"outputPricePerMillion\": 0.6\n }\n }\n }\n ]\n },\n \"openai/gpt-4o-search-preview\": {\n \"modelName\": \"openai/gpt-4o-search-preview\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2.5,\n \"outputPricePerMillion\": 10\n }\n }\n }\n ]\n },\n \"rekaai/reka-flash-3:free\": {\n \"modelName\": \"rekaai/reka-flash-3:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"google/gemma-3-27b-it:free\": {\n \"modelName\": \"google/gemma-3-27b-it:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"google/gemma-3-27b-it\": {\n \"modelName\": \"google/gemma-3-27b-it\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.09999999999999999,\n \"outputPricePerMillion\": 0.19999999999999998\n }\n }\n }\n ]\n },\n \"thedrummer/anubis-pro-105b-v1\": {\n \"modelName\": \"thedrummer/anubis-pro-105b-v1\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7999999999999999,\n \"outputPricePerMillion\": 1\n }\n }\n }\n ]\n },\n \"latitudegames/wayfarer-large-70b-llama-3.3\": {\n \"modelName\": \"latitudegames/wayfarer-large-70b-llama-3.3\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7999999999999999,\n \"outputPricePerMillion\": 0.8999999999999999\n }\n }\n }\n ]\n },\n \"thedrummer/skyfall-36b-v2\": {\n \"modelName\": \"thedrummer/skyfall-36b-v2\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.5,\n \"outputPricePerMillion\": 0.7999999999999999\n }\n }\n }\n ]\n },\n \"microsoft/phi-4-multimodal-instruct\": {\n \"modelName\": \"microsoft/phi-4-multimodal-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.049999999999999996,\n \"outputPricePerMillion\": 0.09999999999999999\n }\n }\n }\n ]\n },\n \"perplexity/sonar-reasoning-pro\": {\n \"modelName\": \"perplexity/sonar-reasoning-pro\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2,\n \"outputPricePerMillion\": 8\n }\n }\n }\n ]\n },\n \"perplexity/sonar-pro\": {\n \"modelName\": \"perplexity/sonar-pro\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 3,\n \"outputPricePerMillion\": 15\n }\n }\n }\n ]\n },\n \"perplexity/sonar-deep-research\": {\n \"modelName\": \"perplexity/sonar-deep-research\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2,\n \"outputPricePerMillion\": 8\n }\n }\n }\n ]\n },\n \"deepseek/deepseek-r1-zero:free\": {\n \"modelName\": \"deepseek/deepseek-r1-zero:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"qwen/qwq-32b:free\": {\n \"modelName\": \"qwen/qwq-32b:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"qwen/qwq-32b\": {\n \"modelName\": \"qwen/qwq-32b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.15,\n \"outputPricePerMillion\": 0.19999999999999998\n }\n }\n }\n ]\n },\n \"moonshotai/moonlight-16b-a3b-instruct:free\": {\n \"modelName\": \"moonshotai/moonlight-16b-a3b-instruct:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"nousresearch/deephermes-3-llama-3-8b-preview:free\": {\n \"modelName\": \"nousresearch/deephermes-3-llama-3-8b-preview:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"openai/gpt-4.5-preview\": {\n \"modelName\": \"openai/gpt-4.5-preview\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 75,\n \"outputPricePerMillion\": 150\n }\n }\n }\n ]\n },\n \"google/gemini-2.0-flash-lite-001\": {\n \"modelName\": \"google/gemini-2.0-flash-lite-001\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.075,\n \"outputPricePerMillion\": 0.3\n }\n }\n }\n ]\n },\n \"anthropic/claude-3.7-sonnet\": {\n \"modelName\": \"anthropic/claude-3.7-sonnet\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 3,\n \"outputPricePerMillion\": 15\n }\n }\n }\n ]\n },\n \"anthropic/claude-3.7-sonnet:thinking\": {\n \"modelName\": \"anthropic/claude-3.7-sonnet:thinking\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 3,\n \"outputPricePerMillion\": 15\n }\n }\n }\n ]\n },\n \"anthropic/claude-3.7-sonnet:beta\": {\n \"modelName\": \"anthropic/claude-3.7-sonnet:beta\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 3,\n \"outputPricePerMillion\": 15\n }\n }\n }\n ]\n },\n \"perplexity/r1-1776\": {\n \"modelName\": \"perplexity/r1-1776\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2,\n \"outputPricePerMillion\": 8\n }\n }\n }\n ]\n },\n \"mistralai/mistral-saba\": {\n \"modelName\": \"mistralai/mistral-saba\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.19999999999999998,\n \"outputPricePerMillion\": 0.6\n }\n }\n }\n ]\n },\n \"cognitivecomputations/dolphin3.0-r1-mistral-24b:free\": {\n \"modelName\": \"cognitivecomputations/dolphin3.0-r1-mistral-24b:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"cognitivecomputations/dolphin3.0-mistral-24b:free\": {\n \"modelName\": \"cognitivecomputations/dolphin3.0-mistral-24b:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"meta-llama/llama-guard-3-8b\": {\n \"modelName\": \"meta-llama/llama-guard-3-8b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.055,\n \"outputPricePerMillion\": 0.055\n }\n }\n }\n ]\n },\n \"openai/o3-mini-high\": {\n \"modelName\": \"openai/o3-mini-high\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1.1,\n \"outputPricePerMillion\": 4.4\n }\n }\n }\n ]\n },\n \"deepseek/deepseek-r1-distill-llama-8b\": {\n \"modelName\": \"deepseek/deepseek-r1-distill-llama-8b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.04,\n \"outputPricePerMillion\": 0.04\n }\n }\n }\n ]\n },\n \"google/gemini-2.0-flash-001\": {\n \"modelName\": \"google/gemini-2.0-flash-001\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.09999999999999999,\n \"outputPricePerMillion\": 0.39999999999999997\n }\n }\n }\n ]\n },\n \"qwen/qwen-vl-plus\": {\n \"modelName\": \"qwen/qwen-vl-plus\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.21,\n \"outputPricePerMillion\": 0.63\n }\n }\n }\n ]\n },\n \"aion-labs/aion-1.0\": {\n \"modelName\": \"aion-labs/aion-1.0\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 4,\n \"outputPricePerMillion\": 8\n }\n }\n }\n ]\n },\n \"aion-labs/aion-1.0-mini\": {\n \"modelName\": \"aion-labs/aion-1.0-mini\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7,\n \"outputPricePerMillion\": 1.4\n }\n }\n }\n ]\n },\n \"aion-labs/aion-rp-llama-3.1-8b\": {\n \"modelName\": \"aion-labs/aion-rp-llama-3.1-8b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.19999999999999998,\n \"outputPricePerMillion\": 0.19999999999999998\n }\n }\n }\n ]\n },\n \"qwen/qwen-vl-max\": {\n \"modelName\": \"qwen/qwen-vl-max\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7999999999999999,\n \"outputPricePerMillion\": 3.1999999999999997\n }\n }\n }\n ]\n },\n \"qwen/qwen-turbo\": {\n \"modelName\": \"qwen/qwen-turbo\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.049999999999999996,\n \"outputPricePerMillion\": 0.19999999999999998\n }\n }\n }\n ]\n },\n \"qwen/qwen2.5-vl-72b-instruct:free\": {\n \"modelName\": \"qwen/qwen2.5-vl-72b-instruct:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"qwen/qwen2.5-vl-72b-instruct\": {\n \"modelName\": \"qwen/qwen2.5-vl-72b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7,\n \"outputPricePerMillion\": 0.7\n }\n }\n }\n ]\n },\n \"qwen/qwen-plus\": {\n \"modelName\": \"qwen/qwen-plus\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.39999999999999997,\n \"outputPricePerMillion\": 1.2\n }\n }\n }\n ]\n },\n \"qwen/qwen-max\": {\n \"modelName\": \"qwen/qwen-max\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1.5999999999999999,\n \"outputPricePerMillion\": 6.3999999999999995\n }\n }\n }\n ]\n },\n \"openai/o3-mini\": {\n \"modelName\": \"openai/o3-mini\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1.1,\n \"outputPricePerMillion\": 4.4\n }\n }\n }\n ]\n },\n \"deepseek/deepseek-r1-distill-qwen-1.5b\": {\n \"modelName\": \"deepseek/deepseek-r1-distill-qwen-1.5b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.18,\n \"outputPricePerMillion\": 0.18\n }\n }\n }\n ]\n },\n \"mistralai/mistral-small-24b-instruct-2501:free\": {\n \"modelName\": \"mistralai/mistral-small-24b-instruct-2501:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"mistralai/mistral-small-24b-instruct-2501\": {\n \"modelName\": \"mistralai/mistral-small-24b-instruct-2501\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.07,\n \"outputPricePerMillion\": 0.14\n }\n }\n }\n ]\n },\n \"deepseek/deepseek-r1-distill-qwen-32b:free\": {\n \"modelName\": \"deepseek/deepseek-r1-distill-qwen-32b:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"deepseek/deepseek-r1-distill-qwen-32b\": {\n \"modelName\": \"deepseek/deepseek-r1-distill-qwen-32b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.12,\n \"outputPricePerMillion\": 0.18\n }\n }\n }\n ]\n },\n \"deepseek/deepseek-r1-distill-qwen-14b:free\": {\n \"modelName\": \"deepseek/deepseek-r1-distill-qwen-14b:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"deepseek/deepseek-r1-distill-qwen-14b\": {\n \"modelName\": \"deepseek/deepseek-r1-distill-qwen-14b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.15,\n \"outputPricePerMillion\": 0.15\n }\n }\n }\n ]\n },\n \"perplexity/sonar-reasoning\": {\n \"modelName\": \"perplexity/sonar-reasoning\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1,\n \"outputPricePerMillion\": 5\n }\n }\n }\n ]\n },\n \"perplexity/sonar\": {\n \"modelName\": \"perplexity/sonar\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1,\n \"outputPricePerMillion\": 1\n }\n }\n }\n ]\n },\n \"liquid/lfm-7b\": {\n \"modelName\": \"liquid/lfm-7b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.01,\n \"outputPricePerMillion\": 0.01\n }\n }\n }\n ]\n },\n \"liquid/lfm-3b\": {\n \"modelName\": \"liquid/lfm-3b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.02,\n \"outputPricePerMillion\": 0.02\n }\n }\n }\n ]\n },\n \"deepseek/deepseek-r1-distill-llama-70b:free\": {\n \"modelName\": \"deepseek/deepseek-r1-distill-llama-70b:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"deepseek/deepseek-r1-distill-llama-70b\": {\n \"modelName\": \"deepseek/deepseek-r1-distill-llama-70b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.09999999999999999,\n \"outputPricePerMillion\": 0.39999999999999997\n }\n }\n }\n ]\n },\n \"deepseek/deepseek-r1:free\": {\n \"modelName\": \"deepseek/deepseek-r1:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"deepseek/deepseek-r1\": {\n \"modelName\": \"deepseek/deepseek-r1\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.5,\n \"outputPricePerMillion\": 2.1799999999999997\n }\n }\n }\n ]\n },\n \"sophosympatheia/rogue-rose-103b-v0.2:free\": {\n \"modelName\": \"sophosympatheia/rogue-rose-103b-v0.2:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"minimax/minimax-01\": {\n \"modelName\": \"minimax/minimax-01\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.19999999999999998,\n \"outputPricePerMillion\": 1.1\n }\n }\n }\n ]\n },\n \"mistralai/codestral-2501\": {\n \"modelName\": \"mistralai/codestral-2501\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.3,\n \"outputPricePerMillion\": 0.8999999999999999\n }\n }\n }\n ]\n },\n \"microsoft/phi-4\": {\n \"modelName\": \"microsoft/phi-4\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.07,\n \"outputPricePerMillion\": 0.14\n }\n }\n }\n ]\n },\n \"deepseek/deepseek-chat:free\": {\n \"modelName\": \"deepseek/deepseek-chat:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"deepseek/deepseek-chat\": {\n \"modelName\": \"deepseek/deepseek-chat\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.38,\n \"outputPricePerMillion\": 0.8899999999999999\n }\n }\n }\n ]\n },\n \"sao10k/l3.3-euryale-70b\": {\n \"modelName\": \"sao10k/l3.3-euryale-70b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7,\n \"outputPricePerMillion\": 0.7999999999999999\n }\n }\n }\n ]\n },\n \"openai/o1\": {\n \"modelName\": \"openai/o1\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 15,\n \"outputPricePerMillion\": 60\n }\n }\n }\n ]\n },\n \"eva-unit-01/eva-llama-3.33-70b\": {\n \"modelName\": \"eva-unit-01/eva-llama-3.33-70b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 4,\n \"outputPricePerMillion\": 6\n }\n }\n }\n ]\n },\n \"x-ai/grok-2-vision-1212\": {\n \"modelName\": \"x-ai/grok-2-vision-1212\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2,\n \"outputPricePerMillion\": 10\n }\n }\n }\n ]\n },\n \"x-ai/grok-2-1212\": {\n \"modelName\": \"x-ai/grok-2-1212\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2,\n \"outputPricePerMillion\": 10\n }\n }\n }\n ]\n },\n \"cohere/command-r7b-12-2024\": {\n \"modelName\": \"cohere/command-r7b-12-2024\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.0375,\n \"outputPricePerMillion\": 0.15\n }\n }\n }\n ]\n },\n \"google/gemini-2.0-flash-exp:free\": {\n \"modelName\": \"google/gemini-2.0-flash-exp:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"meta-llama/llama-3.3-70b-instruct:free\": {\n \"modelName\": \"meta-llama/llama-3.3-70b-instruct:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"meta-llama/llama-3.3-70b-instruct\": {\n \"modelName\": \"meta-llama/llama-3.3-70b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.09999999999999999,\n \"outputPricePerMillion\": 0.25\n }\n }\n }\n ]\n },\n \"amazon/nova-lite-v1\": {\n \"modelName\": \"amazon/nova-lite-v1\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.06,\n \"outputPricePerMillion\": 0.24\n }\n }\n }\n ]\n },\n \"amazon/nova-micro-v1\": {\n \"modelName\": \"amazon/nova-micro-v1\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.035,\n \"outputPricePerMillion\": 0.14\n }\n }\n }\n ]\n },\n \"amazon/nova-pro-v1\": {\n \"modelName\": \"amazon/nova-pro-v1\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7999999999999999,\n \"outputPricePerMillion\": 3.1999999999999997\n }\n }\n }\n ]\n },\n \"qwen/qwq-32b-preview:free\": {\n \"modelName\": \"qwen/qwq-32b-preview:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"qwen/qwq-32b-preview\": {\n \"modelName\": \"qwen/qwq-32b-preview\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.19999999999999998,\n \"outputPricePerMillion\": 0.19999999999999998\n }\n }\n }\n ]\n },\n \"google/learnlm-1.5-pro-experimental:free\": {\n \"modelName\": \"google/learnlm-1.5-pro-experimental:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"eva-unit-01/eva-qwen-2.5-72b\": {\n \"modelName\": \"eva-unit-01/eva-qwen-2.5-72b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.8999999999999999,\n \"outputPricePerMillion\": 1.2\n }\n }\n }\n ]\n },\n \"openai/gpt-4o-2024-11-20\": {\n \"modelName\": \"openai/gpt-4o-2024-11-20\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2.5,\n \"outputPricePerMillion\": 10\n }\n }\n }\n ]\n },\n \"mistralai/mistral-large-2411\": {\n \"modelName\": \"mistralai/mistral-large-2411\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2,\n \"outputPricePerMillion\": 6\n }\n }\n }\n ]\n },\n \"mistralai/mistral-large-2407\": {\n \"modelName\": \"mistralai/mistral-large-2407\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2,\n \"outputPricePerMillion\": 6\n }\n }\n }\n ]\n },\n \"mistralai/pixtral-large-2411\": {\n \"modelName\": \"mistralai/pixtral-large-2411\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2,\n \"outputPricePerMillion\": 6\n }\n }\n }\n ]\n },\n \"x-ai/grok-vision-beta\": {\n \"modelName\": \"x-ai/grok-vision-beta\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 5,\n \"outputPricePerMillion\": 15\n }\n }\n }\n ]\n },\n \"infermatic/mn-inferor-12b\": {\n \"modelName\": \"infermatic/mn-inferor-12b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7999999999999999,\n \"outputPricePerMillion\": 1.2\n }\n }\n }\n ]\n },\n \"qwen/qwen-2.5-coder-32b-instruct:free\": {\n \"modelName\": \"qwen/qwen-2.5-coder-32b-instruct:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"qwen/qwen-2.5-coder-32b-instruct\": {\n \"modelName\": \"qwen/qwen-2.5-coder-32b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.07,\n \"outputPricePerMillion\": 0.15\n }\n }\n }\n ]\n },\n \"raifle/sorcererlm-8x22b\": {\n \"modelName\": \"raifle/sorcererlm-8x22b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 4.5,\n \"outputPricePerMillion\": 4.5\n }\n }\n }\n ]\n },\n \"eva-unit-01/eva-qwen-2.5-32b\": {\n \"modelName\": \"eva-unit-01/eva-qwen-2.5-32b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2.6,\n \"outputPricePerMillion\": 3.4\n }\n }\n }\n ]\n },\n \"thedrummer/unslopnemo-12b\": {\n \"modelName\": \"thedrummer/unslopnemo-12b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.5,\n \"outputPricePerMillion\": 0.5\n }\n }\n }\n ]\n },\n \"anthropic/claude-3.5-haiku:beta\": {\n \"modelName\": \"anthropic/claude-3.5-haiku:beta\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7999999999999999,\n \"outputPricePerMillion\": 4\n }\n }\n }\n ]\n },\n \"anthropic/claude-3.5-haiku\": {\n \"modelName\": \"anthropic/claude-3.5-haiku\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7999999999999999,\n \"outputPricePerMillion\": 4\n }\n }\n }\n ]\n },\n \"anthropic/claude-3.5-haiku-20241022:beta\": {\n \"modelName\": \"anthropic/claude-3.5-haiku-20241022:beta\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7999999999999999,\n \"outputPricePerMillion\": 4\n }\n }\n }\n ]\n },\n \"anthropic/claude-3.5-haiku-20241022\": {\n \"modelName\": \"anthropic/claude-3.5-haiku-20241022\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7999999999999999,\n \"outputPricePerMillion\": 4\n }\n }\n }\n ]\n },\n \"neversleep/llama-3.1-lumimaid-70b\": {\n \"modelName\": \"neversleep/llama-3.1-lumimaid-70b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1.5,\n \"outputPricePerMillion\": 2.25\n }\n }\n }\n ]\n },\n \"anthracite-org/magnum-v4-72b\": {\n \"modelName\": \"anthracite-org/magnum-v4-72b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1.5,\n \"outputPricePerMillion\": 2.25\n }\n }\n }\n ]\n },\n \"anthropic/claude-3.5-sonnet:beta\": {\n \"modelName\": \"anthropic/claude-3.5-sonnet:beta\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 3,\n \"outputPricePerMillion\": 15\n }\n }\n }\n ]\n },\n \"anthropic/claude-3.5-sonnet\": {\n \"modelName\": \"anthropic/claude-3.5-sonnet\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 3,\n \"outputPricePerMillion\": 15\n }\n }\n }\n ]\n },\n \"x-ai/grok-beta\": {\n \"modelName\": \"x-ai/grok-beta\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 5,\n \"outputPricePerMillion\": 15\n }\n }\n }\n ]\n },\n \"mistralai/ministral-8b\": {\n \"modelName\": \"mistralai/ministral-8b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.09999999999999999,\n \"outputPricePerMillion\": 0.09999999999999999\n }\n }\n }\n ]\n },\n \"mistralai/ministral-3b\": {\n \"modelName\": \"mistralai/ministral-3b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.04,\n \"outputPricePerMillion\": 0.04\n }\n }\n }\n ]\n },\n \"qwen/qwen-2.5-7b-instruct:free\": {\n \"modelName\": \"qwen/qwen-2.5-7b-instruct:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"qwen/qwen-2.5-7b-instruct\": {\n \"modelName\": \"qwen/qwen-2.5-7b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.049999999999999996,\n \"outputPricePerMillion\": 0.09999999999999999\n }\n }\n }\n ]\n },\n \"nvidia/llama-3.1-nemotron-70b-instruct:free\": {\n \"modelName\": \"nvidia/llama-3.1-nemotron-70b-instruct:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"nvidia/llama-3.1-nemotron-70b-instruct\": {\n \"modelName\": \"nvidia/llama-3.1-nemotron-70b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.12,\n \"outputPricePerMillion\": 0.3\n }\n }\n }\n ]\n },\n \"inflection/inflection-3-productivity\": {\n \"modelName\": \"inflection/inflection-3-productivity\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2.5,\n \"outputPricePerMillion\": 10\n }\n }\n }\n ]\n },\n \"inflection/inflection-3-pi\": {\n \"modelName\": \"inflection/inflection-3-pi\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2.5,\n \"outputPricePerMillion\": 10\n }\n }\n }\n ]\n },\n \"google/gemini-flash-1.5-8b\": {\n \"modelName\": \"google/gemini-flash-1.5-8b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.0375,\n \"outputPricePerMillion\": 0.15\n }\n }\n }\n ]\n },\n \"thedrummer/rocinante-12b\": {\n \"modelName\": \"thedrummer/rocinante-12b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.25,\n \"outputPricePerMillion\": 0.5\n }\n }\n }\n ]\n },\n \"anthracite-org/magnum-v2-72b\": {\n \"modelName\": \"anthracite-org/magnum-v2-72b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 3,\n \"outputPricePerMillion\": 3\n }\n }\n }\n ]\n },\n \"liquid/lfm-40b\": {\n \"modelName\": \"liquid/lfm-40b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.15,\n \"outputPricePerMillion\": 0.15\n }\n }\n }\n ]\n },\n \"meta-llama/llama-3.2-3b-instruct:free\": {\n \"modelName\": \"meta-llama/llama-3.2-3b-instruct:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"meta-llama/llama-3.2-3b-instruct\": {\n \"modelName\": \"meta-llama/llama-3.2-3b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.015,\n \"outputPricePerMillion\": 0.024999999999999998\n }\n }\n }\n ]\n },\n \"meta-llama/llama-3.2-1b-instruct:free\": {\n \"modelName\": \"meta-llama/llama-3.2-1b-instruct:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"meta-llama/llama-3.2-1b-instruct\": {\n \"modelName\": \"meta-llama/llama-3.2-1b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.01,\n \"outputPricePerMillion\": 0.01\n }\n }\n }\n ]\n },\n \"meta-llama/llama-3.2-90b-vision-instruct\": {\n \"modelName\": \"meta-llama/llama-3.2-90b-vision-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.8999999999999999,\n \"outputPricePerMillion\": 0.8999999999999999\n }\n }\n }\n ]\n },\n \"meta-llama/llama-3.2-11b-vision-instruct:free\": {\n \"modelName\": \"meta-llama/llama-3.2-11b-vision-instruct:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"meta-llama/llama-3.2-11b-vision-instruct\": {\n \"modelName\": \"meta-llama/llama-3.2-11b-vision-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.049,\n \"outputPricePerMillion\": 0.049\n }\n }\n }\n ]\n },\n \"qwen/qwen-2.5-72b-instruct:free\": {\n \"modelName\": \"qwen/qwen-2.5-72b-instruct:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"qwen/qwen-2.5-72b-instruct\": {\n \"modelName\": \"qwen/qwen-2.5-72b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.12,\n \"outputPricePerMillion\": 0.39\n }\n }\n }\n ]\n },\n \"qwen/qwen-2.5-vl-72b-instruct\": {\n \"modelName\": \"qwen/qwen-2.5-vl-72b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.6,\n \"outputPricePerMillion\": 0.6\n }\n }\n }\n ]\n },\n \"neversleep/llama-3.1-lumimaid-8b\": {\n \"modelName\": \"neversleep/llama-3.1-lumimaid-8b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.09375,\n \"outputPricePerMillion\": 0.75\n }\n }\n }\n ]\n },\n \"openai/o1-preview\": {\n \"modelName\": \"openai/o1-preview\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 15,\n \"outputPricePerMillion\": 60\n }\n }\n }\n ]\n },\n \"openai/o1-preview-2024-09-12\": {\n \"modelName\": \"openai/o1-preview-2024-09-12\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 15,\n \"outputPricePerMillion\": 60\n }\n }\n }\n ]\n },\n \"openai/o1-mini\": {\n \"modelName\": \"openai/o1-mini\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1.1,\n \"outputPricePerMillion\": 4.4\n }\n }\n }\n ]\n },\n \"openai/o1-mini-2024-09-12\": {\n \"modelName\": \"openai/o1-mini-2024-09-12\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1.1,\n \"outputPricePerMillion\": 4.4\n }\n }\n }\n ]\n },\n \"mistralai/pixtral-12b\": {\n \"modelName\": \"mistralai/pixtral-12b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.09999999999999999,\n \"outputPricePerMillion\": 0.09999999999999999\n }\n }\n }\n ]\n },\n \"cohere/command-r-plus-08-2024\": {\n \"modelName\": \"cohere/command-r-plus-08-2024\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2.5,\n \"outputPricePerMillion\": 10\n }\n }\n }\n ]\n },\n \"cohere/command-r-08-2024\": {\n \"modelName\": \"cohere/command-r-08-2024\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.15,\n \"outputPricePerMillion\": 0.6\n }\n }\n }\n ]\n },\n \"qwen/qwen-2.5-vl-7b-instruct:free\": {\n \"modelName\": \"qwen/qwen-2.5-vl-7b-instruct:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"qwen/qwen-2.5-vl-7b-instruct\": {\n \"modelName\": \"qwen/qwen-2.5-vl-7b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.19999999999999998,\n \"outputPricePerMillion\": 0.19999999999999998\n }\n }\n }\n ]\n },\n \"sao10k/l3.1-euryale-70b\": {\n \"modelName\": \"sao10k/l3.1-euryale-70b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7,\n \"outputPricePerMillion\": 0.7999999999999999\n }\n }\n }\n ]\n },\n \"google/gemini-flash-1.5-8b-exp\": {\n \"modelName\": \"google/gemini-flash-1.5-8b-exp\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"ai21/jamba-1-5-mini\": {\n \"modelName\": \"ai21/jamba-1-5-mini\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.19999999999999998,\n \"outputPricePerMillion\": 0.39999999999999997\n }\n }\n }\n ]\n },\n \"ai21/jamba-1-5-large\": {\n \"modelName\": \"ai21/jamba-1-5-large\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2,\n \"outputPricePerMillion\": 8\n }\n }\n }\n ]\n },\n \"microsoft/phi-3.5-mini-128k-instruct\": {\n \"modelName\": \"microsoft/phi-3.5-mini-128k-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.09999999999999999,\n \"outputPricePerMillion\": 0.09999999999999999\n }\n }\n }\n ]\n },\n \"nousresearch/hermes-3-llama-3.1-70b\": {\n \"modelName\": \"nousresearch/hermes-3-llama-3.1-70b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.12,\n \"outputPricePerMillion\": 0.3\n }\n }\n }\n ]\n },\n \"nousresearch/hermes-3-llama-3.1-405b\": {\n \"modelName\": \"nousresearch/hermes-3-llama-3.1-405b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7999999999999999,\n \"outputPricePerMillion\": 0.7999999999999999\n }\n }\n }\n ]\n },\n \"openai/chatgpt-4o-latest\": {\n \"modelName\": \"openai/chatgpt-4o-latest\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 5,\n \"outputPricePerMillion\": 15\n }\n }\n }\n ]\n },\n \"sao10k/l3-lunaris-8b\": {\n \"modelName\": \"sao10k/l3-lunaris-8b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.02,\n \"outputPricePerMillion\": 0.049999999999999996\n }\n }\n }\n ]\n },\n \"aetherwiing/mn-starcannon-12b\": {\n \"modelName\": \"aetherwiing/mn-starcannon-12b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7999999999999999,\n \"outputPricePerMillion\": 1.2\n }\n }\n }\n ]\n },\n \"openai/gpt-4o-2024-08-06\": {\n \"modelName\": \"openai/gpt-4o-2024-08-06\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2.5,\n \"outputPricePerMillion\": 10\n }\n }\n }\n ]\n },\n \"meta-llama/llama-3.1-405b:free\": {\n \"modelName\": \"meta-llama/llama-3.1-405b:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"meta-llama/llama-3.1-405b\": {\n \"modelName\": \"meta-llama/llama-3.1-405b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2,\n \"outputPricePerMillion\": 2\n }\n }\n }\n ]\n },\n \"nothingiisreal/mn-celeste-12b\": {\n \"modelName\": \"nothingiisreal/mn-celeste-12b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7999999999999999,\n \"outputPricePerMillion\": 1.2\n }\n }\n }\n ]\n },\n \"perplexity/llama-3.1-sonar-small-128k-online\": {\n \"modelName\": \"perplexity/llama-3.1-sonar-small-128k-online\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.19999999999999998,\n \"outputPricePerMillion\": 0.19999999999999998\n }\n }\n }\n ]\n },\n \"perplexity/llama-3.1-sonar-large-128k-online\": {\n \"modelName\": \"perplexity/llama-3.1-sonar-large-128k-online\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1,\n \"outputPricePerMillion\": 1\n }\n }\n }\n ]\n },\n \"meta-llama/llama-3.1-8b-instruct:free\": {\n \"modelName\": \"meta-llama/llama-3.1-8b-instruct:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"meta-llama/llama-3.1-8b-instruct\": {\n \"modelName\": \"meta-llama/llama-3.1-8b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.02,\n \"outputPricePerMillion\": 0.03\n }\n }\n }\n ]\n },\n \"meta-llama/llama-3.1-405b-instruct\": {\n \"modelName\": \"meta-llama/llama-3.1-405b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7999999999999999,\n \"outputPricePerMillion\": 0.7999999999999999\n }\n }\n }\n ]\n },\n \"meta-llama/llama-3.1-70b-instruct\": {\n \"modelName\": \"meta-llama/llama-3.1-70b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.09999999999999999,\n \"outputPricePerMillion\": 0.28\n }\n }\n }\n ]\n },\n \"mistralai/codestral-mamba\": {\n \"modelName\": \"mistralai/codestral-mamba\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.25,\n \"outputPricePerMillion\": 0.25\n }\n }\n }\n ]\n },\n \"mistralai/mistral-nemo:free\": {\n \"modelName\": \"mistralai/mistral-nemo:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"mistralai/mistral-nemo\": {\n \"modelName\": \"mistralai/mistral-nemo\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.03,\n \"outputPricePerMillion\": 0.07\n }\n }\n }\n ]\n },\n \"openai/gpt-4o-mini\": {\n \"modelName\": \"openai/gpt-4o-mini\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.15,\n \"outputPricePerMillion\": 0.6\n }\n }\n }\n ]\n },\n \"openai/gpt-4o-mini-2024-07-18\": {\n \"modelName\": \"openai/gpt-4o-mini-2024-07-18\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.15,\n \"outputPricePerMillion\": 0.6\n }\n }\n }\n ]\n },\n \"google/gemma-2-27b-it\": {\n \"modelName\": \"google/gemma-2-27b-it\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7999999999999999,\n \"outputPricePerMillion\": 0.7999999999999999\n }\n }\n }\n ]\n },\n \"alpindale/magnum-72b\": {\n \"modelName\": \"alpindale/magnum-72b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 4,\n \"outputPricePerMillion\": 6\n }\n }\n }\n ]\n },\n \"google/gemma-2-9b-it:free\": {\n \"modelName\": \"google/gemma-2-9b-it:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"google/gemma-2-9b-it\": {\n \"modelName\": \"google/gemma-2-9b-it\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.07,\n \"outputPricePerMillion\": 0.07\n }\n }\n }\n ]\n },\n \"01-ai/yi-large\": {\n \"modelName\": \"01-ai/yi-large\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 3,\n \"outputPricePerMillion\": 3\n }\n }\n }\n ]\n },\n \"ai21/jamba-instruct\": {\n \"modelName\": \"ai21/jamba-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.5,\n \"outputPricePerMillion\": 0.7\n }\n }\n }\n ]\n },\n \"anthropic/claude-3.5-sonnet-20240620:beta\": {\n \"modelName\": \"anthropic/claude-3.5-sonnet-20240620:beta\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 3,\n \"outputPricePerMillion\": 15\n }\n }\n }\n ]\n },\n \"anthropic/claude-3.5-sonnet-20240620\": {\n \"modelName\": \"anthropic/claude-3.5-sonnet-20240620\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 3,\n \"outputPricePerMillion\": 15\n }\n }\n }\n ]\n },\n \"sao10k/l3-euryale-70b\": {\n \"modelName\": \"sao10k/l3-euryale-70b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1.48,\n \"outputPricePerMillion\": 1.48\n }\n }\n }\n ]\n },\n \"cognitivecomputations/dolphin-mixtral-8x22b\": {\n \"modelName\": \"cognitivecomputations/dolphin-mixtral-8x22b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.8999999999999999,\n \"outputPricePerMillion\": 0.8999999999999999\n }\n }\n }\n ]\n },\n \"qwen/qwen-2-72b-instruct\": {\n \"modelName\": \"qwen/qwen-2-72b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.8999999999999999,\n \"outputPricePerMillion\": 0.8999999999999999\n }\n }\n }\n ]\n },\n \"mistralai/mistral-7b-instruct:free\": {\n \"modelName\": \"mistralai/mistral-7b-instruct:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"mistralai/mistral-7b-instruct\": {\n \"modelName\": \"mistralai/mistral-7b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.029,\n \"outputPricePerMillion\": 0.055\n }\n }\n }\n ]\n },\n \"mistralai/mistral-7b-instruct-v0.3\": {\n \"modelName\": \"mistralai/mistral-7b-instruct-v0.3\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.029,\n \"outputPricePerMillion\": 0.055\n }\n }\n }\n ]\n },\n \"nousresearch/hermes-2-pro-llama-3-8b\": {\n \"modelName\": \"nousresearch/hermes-2-pro-llama-3-8b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.024999999999999998,\n \"outputPricePerMillion\": 0.04\n }\n }\n }\n ]\n },\n \"microsoft/phi-3-mini-128k-instruct\": {\n \"modelName\": \"microsoft/phi-3-mini-128k-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.09999999999999999,\n \"outputPricePerMillion\": 0.09999999999999999\n }\n }\n }\n ]\n },\n \"microsoft/phi-3-medium-128k-instruct\": {\n \"modelName\": \"microsoft/phi-3-medium-128k-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1,\n \"outputPricePerMillion\": 1\n }\n }\n }\n ]\n },\n \"neversleep/llama-3-lumimaid-70b\": {\n \"modelName\": \"neversleep/llama-3-lumimaid-70b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 4,\n \"outputPricePerMillion\": 6\n }\n }\n }\n ]\n },\n \"google/gemini-flash-1.5\": {\n \"modelName\": \"google/gemini-flash-1.5\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.075,\n \"outputPricePerMillion\": 0.3\n }\n }\n }\n ]\n },\n \"openai/gpt-4o\": {\n \"modelName\": \"openai/gpt-4o\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2.5,\n \"outputPricePerMillion\": 10\n }\n }\n }\n ]\n },\n \"openai/gpt-4o:extended\": {\n \"modelName\": \"openai/gpt-4o:extended\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 6,\n \"outputPricePerMillion\": 18\n }\n }\n }\n ]\n },\n \"meta-llama/llama-guard-2-8b\": {\n \"modelName\": \"meta-llama/llama-guard-2-8b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.19999999999999998,\n \"outputPricePerMillion\": 0.19999999999999998\n }\n }\n }\n ]\n },\n \"openai/gpt-4o-2024-05-13\": {\n \"modelName\": \"openai/gpt-4o-2024-05-13\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 5,\n \"outputPricePerMillion\": 15\n }\n }\n }\n ]\n },\n \"neversleep/llama-3-lumimaid-8b:extended\": {\n \"modelName\": \"neversleep/llama-3-lumimaid-8b:extended\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.09375,\n \"outputPricePerMillion\": 0.75\n }\n }\n }\n ]\n },\n \"neversleep/llama-3-lumimaid-8b\": {\n \"modelName\": \"neversleep/llama-3-lumimaid-8b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.09375,\n \"outputPricePerMillion\": 0.75\n }\n }\n }\n ]\n },\n \"sao10k/fimbulvetr-11b-v2\": {\n \"modelName\": \"sao10k/fimbulvetr-11b-v2\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7999999999999999,\n \"outputPricePerMillion\": 1.2\n }\n }\n }\n ]\n },\n \"meta-llama/llama-3-8b-instruct\": {\n \"modelName\": \"meta-llama/llama-3-8b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.03,\n \"outputPricePerMillion\": 0.06\n }\n }\n }\n ]\n },\n \"meta-llama/llama-3-70b-instruct\": {\n \"modelName\": \"meta-llama/llama-3-70b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.3,\n \"outputPricePerMillion\": 0.39999999999999997\n }\n }\n }\n ]\n },\n \"mistralai/mixtral-8x22b-instruct\": {\n \"modelName\": \"mistralai/mixtral-8x22b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.8999999999999999,\n \"outputPricePerMillion\": 0.8999999999999999\n }\n }\n }\n ]\n },\n \"microsoft/wizardlm-2-8x22b\": {\n \"modelName\": \"microsoft/wizardlm-2-8x22b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.5,\n \"outputPricePerMillion\": 0.5\n }\n }\n }\n ]\n },\n \"microsoft/wizardlm-2-7b\": {\n \"modelName\": \"microsoft/wizardlm-2-7b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.07,\n \"outputPricePerMillion\": 0.07\n }\n }\n }\n ]\n },\n \"google/gemini-pro-1.5\": {\n \"modelName\": \"google/gemini-pro-1.5\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1.25,\n \"outputPricePerMillion\": 5\n }\n }\n }\n ]\n },\n \"openai/gpt-4-turbo\": {\n \"modelName\": \"openai/gpt-4-turbo\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 10,\n \"outputPricePerMillion\": 30\n }\n }\n }\n ]\n },\n \"cohere/command-r-plus\": {\n \"modelName\": \"cohere/command-r-plus\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 3,\n \"outputPricePerMillion\": 15\n }\n }\n }\n ]\n },\n \"cohere/command-r-plus-04-2024\": {\n \"modelName\": \"cohere/command-r-plus-04-2024\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 3,\n \"outputPricePerMillion\": 15\n }\n }\n }\n ]\n },\n \"sophosympatheia/midnight-rose-70b\": {\n \"modelName\": \"sophosympatheia/midnight-rose-70b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7999999999999999,\n \"outputPricePerMillion\": 0.7999999999999999\n }\n }\n }\n ]\n },\n \"cohere/command\": {\n \"modelName\": \"cohere/command\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1,\n \"outputPricePerMillion\": 2\n }\n }\n }\n ]\n },\n \"cohere/command-r\": {\n \"modelName\": \"cohere/command-r\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.5,\n \"outputPricePerMillion\": 1.5\n }\n }\n }\n ]\n },\n \"anthropic/claude-3-haiku:beta\": {\n \"modelName\": \"anthropic/claude-3-haiku:beta\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.25,\n \"outputPricePerMillion\": 1.25\n }\n }\n }\n ]\n },\n \"anthropic/claude-3-haiku\": {\n \"modelName\": \"anthropic/claude-3-haiku\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.25,\n \"outputPricePerMillion\": 1.25\n }\n }\n }\n ]\n },\n \"anthropic/claude-3-opus:beta\": {\n \"modelName\": \"anthropic/claude-3-opus:beta\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 15,\n \"outputPricePerMillion\": 75\n }\n }\n }\n ]\n },\n \"anthropic/claude-3-opus\": {\n \"modelName\": \"anthropic/claude-3-opus\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 15,\n \"outputPricePerMillion\": 75\n }\n }\n }\n ]\n },\n \"anthropic/claude-3-sonnet:beta\": {\n \"modelName\": \"anthropic/claude-3-sonnet:beta\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 3,\n \"outputPricePerMillion\": 15\n }\n }\n }\n ]\n },\n \"anthropic/claude-3-sonnet\": {\n \"modelName\": \"anthropic/claude-3-sonnet\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 3,\n \"outputPricePerMillion\": 15\n }\n }\n }\n ]\n },\n \"cohere/command-r-03-2024\": {\n \"modelName\": \"cohere/command-r-03-2024\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.5,\n \"outputPricePerMillion\": 1.5\n }\n }\n }\n ]\n },\n \"mistralai/mistral-large\": {\n \"modelName\": \"mistralai/mistral-large\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2,\n \"outputPricePerMillion\": 6\n }\n }\n }\n ]\n },\n \"openai/gpt-3.5-turbo-0613\": {\n \"modelName\": \"openai/gpt-3.5-turbo-0613\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1,\n \"outputPricePerMillion\": 2\n }\n }\n }\n ]\n },\n \"openai/gpt-4-turbo-preview\": {\n \"modelName\": \"openai/gpt-4-turbo-preview\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 10,\n \"outputPricePerMillion\": 30\n }\n }\n }\n ]\n },\n \"nousresearch/nous-hermes-2-mixtral-8x7b-dpo\": {\n \"modelName\": \"nousresearch/nous-hermes-2-mixtral-8x7b-dpo\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.6,\n \"outputPricePerMillion\": 0.6\n }\n }\n }\n ]\n },\n \"mistralai/mistral-medium\": {\n \"modelName\": \"mistralai/mistral-medium\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2.75,\n \"outputPricePerMillion\": 8.1\n }\n }\n }\n ]\n },\n \"mistralai/mistral-small\": {\n \"modelName\": \"mistralai/mistral-small\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.19999999999999998,\n \"outputPricePerMillion\": 0.6\n }\n }\n }\n ]\n },\n \"mistralai/mistral-tiny\": {\n \"modelName\": \"mistralai/mistral-tiny\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.25,\n \"outputPricePerMillion\": 0.25\n }\n }\n }\n ]\n },\n \"mistralai/mistral-7b-instruct-v0.2\": {\n \"modelName\": \"mistralai/mistral-7b-instruct-v0.2\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.19999999999999998,\n \"outputPricePerMillion\": 0.19999999999999998\n }\n }\n }\n ]\n },\n \"cognitivecomputations/dolphin-mixtral-8x7b\": {\n \"modelName\": \"cognitivecomputations/dolphin-mixtral-8x7b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.5,\n \"outputPricePerMillion\": 0.5\n }\n }\n }\n ]\n },\n \"google/gemini-pro-vision\": {\n \"modelName\": \"google/gemini-pro-vision\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.5,\n \"outputPricePerMillion\": 1.5\n }\n }\n }\n ]\n },\n \"mistralai/mixtral-8x7b-instruct\": {\n \"modelName\": \"mistralai/mixtral-8x7b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.24,\n \"outputPricePerMillion\": 0.24\n }\n }\n }\n ]\n },\n \"openchat/openchat-7b\": {\n \"modelName\": \"openchat/openchat-7b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.07,\n \"outputPricePerMillion\": 0.07\n }\n }\n }\n ]\n },\n \"neversleep/noromaid-20b\": {\n \"modelName\": \"neversleep/noromaid-20b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.75,\n \"outputPricePerMillion\": 1.5\n }\n }\n }\n ]\n },\n \"anthropic/claude-2.1:beta\": {\n \"modelName\": \"anthropic/claude-2.1:beta\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 8,\n \"outputPricePerMillion\": 24\n }\n }\n }\n ]\n },\n \"anthropic/claude-2.1\": {\n \"modelName\": \"anthropic/claude-2.1\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 8,\n \"outputPricePerMillion\": 24\n }\n }\n }\n ]\n },\n \"anthropic/claude-2:beta\": {\n \"modelName\": \"anthropic/claude-2:beta\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 8,\n \"outputPricePerMillion\": 24\n }\n }\n }\n ]\n },\n \"anthropic/claude-2\": {\n \"modelName\": \"anthropic/claude-2\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 8,\n \"outputPricePerMillion\": 24\n }\n }\n }\n ]\n },\n \"undi95/toppy-m-7b\": {\n \"modelName\": \"undi95/toppy-m-7b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.07,\n \"outputPricePerMillion\": 0.07\n }\n }\n }\n ]\n },\n \"alpindale/goliath-120b\": {\n \"modelName\": \"alpindale/goliath-120b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 6.5625,\n \"outputPricePerMillion\": 9.375\n }\n }\n }\n ]\n },\n \"openrouter/auto\": {\n \"modelName\": \"openrouter/auto\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": -1000000,\n \"outputPricePerMillion\": -1000000\n }\n }\n }\n ]\n },\n \"openai/gpt-3.5-turbo-1106\": {\n \"modelName\": \"openai/gpt-3.5-turbo-1106\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1,\n \"outputPricePerMillion\": 2\n }\n }\n }\n ]\n },\n \"openai/gpt-4-1106-preview\": {\n \"modelName\": \"openai/gpt-4-1106-preview\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 10,\n \"outputPricePerMillion\": 30\n }\n }\n }\n ]\n },\n \"google/palm-2-chat-bison-32k\": {\n \"modelName\": \"google/palm-2-chat-bison-32k\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1,\n \"outputPricePerMillion\": 2\n }\n }\n }\n ]\n },\n \"google/palm-2-codechat-bison-32k\": {\n \"modelName\": \"google/palm-2-codechat-bison-32k\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1,\n \"outputPricePerMillion\": 2\n }\n }\n }\n ]\n },\n \"jondurbin/airoboros-l2-70b\": {\n \"modelName\": \"jondurbin/airoboros-l2-70b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.5,\n \"outputPricePerMillion\": 0.5\n }\n }\n }\n ]\n },\n \"openai/gpt-3.5-turbo-instruct\": {\n \"modelName\": \"openai/gpt-3.5-turbo-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1.5,\n \"outputPricePerMillion\": 2\n }\n }\n }\n ]\n },\n \"mistralai/mistral-7b-instruct-v0.1\": {\n \"modelName\": \"mistralai/mistral-7b-instruct-v0.1\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.19999999999999998,\n \"outputPricePerMillion\": 0.19999999999999998\n }\n }\n }\n ]\n },\n \"pygmalionai/mythalion-13b\": {\n \"modelName\": \"pygmalionai/mythalion-13b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.5625,\n \"outputPricePerMillion\": 1.125\n }\n }\n }\n ]\n },\n \"openai/gpt-3.5-turbo-16k\": {\n \"modelName\": \"openai/gpt-3.5-turbo-16k\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 3,\n \"outputPricePerMillion\": 4\n }\n }\n }\n ]\n },\n \"openai/gpt-4-32k\": {\n \"modelName\": \"openai/gpt-4-32k\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 60,\n \"outputPricePerMillion\": 120\n }\n }\n }\n ]\n },\n \"openai/gpt-4-32k-0314\": {\n \"modelName\": \"openai/gpt-4-32k-0314\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 60,\n \"outputPricePerMillion\": 120\n }\n }\n }\n ]\n },\n \"nousresearch/nous-hermes-llama2-13b\": {\n \"modelName\": \"nousresearch/nous-hermes-llama2-13b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.18,\n \"outputPricePerMillion\": 0.18\n }\n }\n }\n ]\n },\n \"mancer/weaver\": {\n \"modelName\": \"mancer/weaver\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1.125,\n \"outputPricePerMillion\": 1.125\n }\n }\n }\n ]\n },\n \"huggingfaceh4/zephyr-7b-beta:free\": {\n \"modelName\": \"huggingfaceh4/zephyr-7b-beta:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"anthropic/claude-2.0:beta\": {\n \"modelName\": \"anthropic/claude-2.0:beta\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 8,\n \"outputPricePerMillion\": 24\n }\n }\n }\n ]\n },\n \"anthropic/claude-2.0\": {\n \"modelName\": \"anthropic/claude-2.0\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 8,\n \"outputPricePerMillion\": 24\n }\n }\n }\n ]\n },\n \"undi95/remm-slerp-l2-13b\": {\n \"modelName\": \"undi95/remm-slerp-l2-13b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.5625,\n \"outputPricePerMillion\": 1.125\n }\n }\n }\n ]\n },\n \"google/palm-2-chat-bison\": {\n \"modelName\": \"google/palm-2-chat-bison\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1,\n \"outputPricePerMillion\": 2\n }\n }\n }\n ]\n },\n \"google/palm-2-codechat-bison\": {\n \"modelName\": \"google/palm-2-codechat-bison\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1,\n \"outputPricePerMillion\": 2\n }\n }\n }\n ]\n },\n \"gryphe/mythomax-l2-13b\": {\n \"modelName\": \"gryphe/mythomax-l2-13b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.065,\n \"outputPricePerMillion\": 0.065\n }\n }\n }\n ]\n },\n \"meta-llama/llama-2-13b-chat\": {\n \"modelName\": \"meta-llama/llama-2-13b-chat\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.22,\n \"outputPricePerMillion\": 0.22\n }\n }\n }\n ]\n },\n \"meta-llama/llama-2-70b-chat\": {\n \"modelName\": \"meta-llama/llama-2-70b-chat\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.8999999999999999,\n \"outputPricePerMillion\": 0.8999999999999999\n }\n }\n }\n ]\n },\n \"openai/gpt-3.5-turbo\": {\n \"modelName\": \"openai/gpt-3.5-turbo\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.5,\n \"outputPricePerMillion\": 1.5\n }\n }\n }\n ]\n },\n \"openai/gpt-3.5-turbo-0125\": {\n \"modelName\": \"openai/gpt-3.5-turbo-0125\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.5,\n \"outputPricePerMillion\": 1.5\n }\n }\n }\n ]\n },\n \"openai/gpt-4\": {\n \"modelName\": \"openai/gpt-4\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 30,\n \"outputPricePerMillion\": 60\n }\n }\n }\n ]\n },\n \"openai/gpt-4-0314\": {\n \"modelName\": \"openai/gpt-4-0314\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 30,\n \"outputPricePerMillion\": 60\n }\n }\n }\n ]\n }\n}\n","import { z } from \"zod\";\n\nimport { AssistantRoleLiteral, SystemRoleLiteral, ToolRoleLiteral, UserRoleLiteral } from \"@adaline/types\";\n\nconst OpenRouterChatModelRoles = z.enum([SystemRoleLiteral, UserRoleLiteral, AssistantRoleLiteral, ToolRoleLiteral]);\n\nconst OpenRouterChatModelRolesMap = {\n system: SystemRoleLiteral,\n user: UserRoleLiteral,\n assistant: AssistantRoleLiteral,\n tool: ToolRoleLiteral,\n} as const;\n\nexport { OpenRouterChatModelRoles, OpenRouterChatModelRolesMap };\n","import { z } from \"zod\";\n\nimport { ChatModelSchemaType } from \"@adaline/provider\";\nimport { ImageModalityLiteral, TextModalityLiteral, ToolCallModalityLiteral, ToolResponseModalityLiteral } from \"@adaline/types\";\n\nconst OpenRouterChatModelModalities: ChatModelSchemaType[\"modalities\"] = [\n TextModalityLiteral,\n ImageModalityLiteral,\n ToolCallModalityLiteral,\n ToolResponseModalityLiteral,\n];\n\nconst OpenRouterChatModelModalitiesEnum = z.enum([\n TextModalityLiteral,\n ImageModalityLiteral,\n ToolCallModalityLiteral,\n ToolResponseModalityLiteral,\n]);\n\nexport { OpenRouterChatModelModalitiesEnum, OpenRouterChatModelModalities };\n","import { z } from \"zod\";\n\nconst OpenRouterBaseLogProb = z.object({\n token: z.string(),\n logprob: z.number(),\n bytes: z.array(z.number()).nullable(),\n});\n\nconst OpenRouterLogProb = z\n .object({\n content: z\n .array(\n OpenRouterBaseLogProb.extend({\n top_logprobs: z.array(OpenRouterBaseLogProb),\n })\n )\n .nullable(),\n refusal: z\n .array(\n OpenRouterBaseLogProb.extend({\n top_logprobs: z.array(OpenRouterBaseLogProb),\n })\n )\n .nullable(),\n })\n .nullable();\n\nconst OpenRouterToolCallsCompleteChatResponse = 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 OpenRouterCompleteChatResponse = z.object({\n id: z.string(),\n object: z.string(),\n created: z.number(),\n model: z.string(),\n system_fingerprint: z.string().nullable().optional(),\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: OpenRouterToolCallsCompleteChatResponse.optional(),\n refusal: z.string().nullable().optional(),\n }),\n logprobs: OpenRouterLogProb.optional(),\n finish_reason: z.string().nullable().optional(),\n })\n ),\n usage: z\n .object({\n prompt_tokens: z.number(),\n completion_tokens: z.number(),\n total_tokens: z.number(),\n })\n .nullable()\n .optional(),\n});\ntype OpenRouterCompleteChatResponseType = z.infer<typeof OpenRouterCompleteChatResponse>;\n\nconst OpenRouterToolCallsStreamChatResponse = 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 OpenRouterStreamChatResponse = z.object({\n id: z.string(),\n object: z.string(),\n created: z.number(),\n model: z.string(),\n system_fingerprint: z.string().nullable().optional(),\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: OpenRouterToolCallsStreamChatResponse.optional(),\n refusal: z.string().nullable().optional(),\n })\n .or(z.object({})),\n logprobs: OpenRouterLogProb,\n finish_reason: z.string().nullable().optional(),\n })\n ),\n usage: z\n .object({\n prompt_tokens: z.number(),\n completion_tokens: z.number(),\n total_tokens: z.number(),\n })\n .nullable()\n .optional(),\n});\ntype OpenRouterStreamChatResponseType = z.infer<typeof OpenRouterStreamChatResponse>;\n\nexport {\n OpenRouterStreamChatResponse,\n OpenRouterCompleteChatResponse,\n OpenRouterToolCallsStreamChatResponse,\n OpenRouterToolCallsCompleteChatResponse,\n type OpenRouterStreamChatResponseType,\n type OpenRouterCompleteChatResponseType,\n};\n","import { z } from \"zod\";\n\nconst OpenRouterChatRequestTool = z.object({\n type: z.literal(\"function\"),\n function: z.object({\n name: z.string().min(1),\n description: z.string().min(1).optional(),\n strict: z.boolean().optional(),\n parameters: z.any(),\n }),\n});\ntype OpenRouterChatRequestToolType = z.infer<typeof OpenRouterChatRequestTool>;\n\nconst OpenRouterChatRequestToolChoiceEnum = z.enum([\"none\", \"auto\", \"required\"]);\ntype OpenRouterChatRequestToolChoiceEnumType = z.infer<typeof OpenRouterChatRequestToolChoiceEnum>;\n\nconst OpenRouterChatRequestToolChoiceFunction = z.object({\n type: z.literal(\"function\"),\n function: z.object({\n name: z.string().min(1),\n }),\n});\ntype OpenRouterChatRequestToolChoiceFunctionType = z.infer<typeof OpenRouterChatRequestToolChoiceFunction>;\n\nconst OpenRouterChatRequestResponseFormat = z\n .object({\n type: z.enum([\"text\", \"json_object\"]),\n })\n .or(\n z.object({\n type: z.literal(\"json_schema\"),\n json_schema: z.object({\n name: z.string().min(1),\n description: z.string().min(1).optional(),\n strict: z.boolean().optional(),\n schema: z.any(),\n }),\n })\n );\ntype OpenRouterChatRequestResponseFormatType = z.infer<typeof OpenRouterChatRequestResponseFormat>;\n\nconst OpenRouterChatRequestTextContent = z.object({\n text: z.string().min(1),\n type: z.literal(\"text\"),\n});\ntype OpenRouterChatRequestTextContentType = z.infer<typeof OpenRouterChatRequestTextContent>;\n\nconst OpenRouterChatRequestImageContent = z.object({\n type: z.literal(\"image_url\"),\n image_url: z.object({\n url: z.string().url().min(1),\n detail: z.enum([\"low\", \"high\", \"auto\"]).optional(),\n }),\n});\ntype OpenRouterChatRequestImageContentType = z.infer<typeof OpenRouterChatRequestImageContent>;\n\nconst OpenRouterChatRequestToolCallContent = z.object({\n id: z.string().min(1),\n type: z.literal(\"function\"),\n function: z.object({\n name: z.string().min(1),\n arguments: z.string().min(1),\n }),\n});\ntype OpenRouterChatRequestToolCallContentType = z.infer<typeof OpenRouterChatRequestToolCallContent>;\n\nconst OpenRouterChatRequestSystemMessage = z.object({\n role: z.literal(\"system\"),\n content: z.string().min(1).or(z.array(OpenRouterChatRequestTextContent).min(1)),\n});\ntype OpenRouterChatRequestSystemMessageType = z.infer<typeof OpenRouterChatRequestSystemMessage>;\n\nconst OpenRouterChatRequestUserMessage = z.object({\n role: z.literal(\"user\"),\n content: z\n .string()\n .min(1)\n .or(z.array(z.union([OpenRouterChatRequestTextContent, OpenRouterChatRequestImageContent])).min(1)),\n});\ntype OpenRouterChatRequestUserMessageType = z.infer<typeof OpenRouterChatRequestUserMessage>;\n\nconst OpenRouterChatRequestAssistantMessage = z.object({\n role: z.literal(\"assistant\"),\n content: z.string().min(1).or(z.array(OpenRouterChatRequestTextContent).min(1)).optional(),\n tool_calls: z.array(OpenRouterChatRequestToolCallContent).min(1).optional(),\n});\ntype OpenRouterChatRequestAssistantMessageType = z.infer<typeof OpenRouterChatRequestAssistantMessage>;\n\nconst OpenRouterChatRequestToolMessage = z.object({\n role: z.literal(\"tool\"),\n tool_call_id: z.string().min(1),\n content: z.string().min(1),\n});\ntype OpenRouterChatRequestToolMessageType = z.infer<typeof OpenRouterChatRequestToolMessage>;\n\nconst OpenRouterChatRequestMessage = z.union([\n OpenRouterChatRequestSystemMessage,\n OpenRouterChatRequestUserMessage,\n OpenRouterChatRequestAssistantMessage,\n OpenRouterChatRequestToolMessage,\n]);\ntype OpenRouterChatRequestMessageType = z.infer<typeof OpenRouterChatRequestMessage>;\n\nconst OpenRouterChatRequest = z.object({\n model: z.string().min(1).optional(),\n messages: z.array(OpenRouterChatRequestMessage).min(1),\n frequency_penalty: z.number().min(-2).max(2).nullable().optional(),\n logprobs: z.boolean().nullable().optional(),\n top_logprobs: z.number().min(0).max(20).nullable().optional(),\n max_tokens: z.number().min(0).nullable().optional(),\n presence_penalty: z.number().min(-2).max(2).nullable().optional(),\n repetition_penalty: z.number().min(0).max(2).nullable().optional(),\n response_format: OpenRouterChatRequestResponseFormat.optional(),\n seed: z.number().nullable().optional(),\n stop: z.string().or(z.array(z.string()).max(4)).nullable().optional(),\n top_a: z.number().min(0).max(1).nullable().optional(),\n temperature: z.number().min(0).max(2).nullable().optional(),\n top_p: z.number().min(0).max(1).nullable().optional(),\n top_k: z.number().min(0).max(100).nullable().optional(),\n min_p: z.number().min(0).max(1).nullable().optional(),\n tools: z.array(OpenRouterChatRequestTool).optional(),\n tool_choice: OpenRouterChatRequestToolChoiceEnum.or(OpenRouterChatRequestToolChoiceFunction).optional(),\n});\ntype OpenRouterChatRequestType = z.infer<typeof OpenRouterChatRequest>;\n\nexport {\n OpenRouterChatRequest,\n OpenRouterChatRequestMessage,\n OpenRouterChatRequestSystemMessage,\n OpenRouterChatRequestUserMessage,\n OpenRouterChatRequestAssistantMessage,\n OpenRouterChatRequestToolMessage,\n OpenRouterChatRequestTextContent,\n OpenRouterChatRequestImageContent,\n OpenRouterChatRequestToolCallContent,\n OpenRouterChatRequestTool,\n OpenRouterChatRequestToolChoiceEnum,\n OpenRouterChatRequestToolChoiceFunction,\n OpenRouterChatRequestResponseFormat,\n type OpenRouterChatRequestType,\n type OpenRouterChatRequestMessageType,\n type OpenRouterChatRequestSystemMessageType,\n type OpenRouterChatRequestUserMessageType,\n type OpenRouterChatRequestAssistantMessageType,\n type OpenRouterChatRequestToolMessageType,\n type OpenRouterChatRequestTextContentType,\n type OpenRouterChatRequestImageContentType,\n type OpenRouterChatRequestToolCallContentType,\n type OpenRouterChatRequestToolType,\n type OpenRouterChatRequestToolChoiceEnumType,\n type OpenRouterChatRequestToolChoiceFunctionType,\n type OpenRouterChatRequestResponseFormatType,\n};\n","import { z } from \"zod\";\n\nimport {\n ChatModelSchemaType,\n ChatModelV1,\n getMimeTypeFromBase64,\n HeadersType,\n InvalidConfigError,\n InvalidMessagesError,\n InvalidModelRequestError,\n InvalidToolsError,\n ModelResponseError,\n ParamsType,\n removeUndefinedEntries,\n SelectStringConfigItemDefType,\n UrlType,\n urlWithoutTrailingSlash,\n} from \"@adaline/provider\";\nimport {\n AssistantRoleLiteral,\n Base64ImageContentTypeLiteral,\n Base64ImageContentValueType,\n ChatLogProbsType,\n ChatModelPriceType,\n ChatResponseType,\n ChatUsageType,\n Config,\n ConfigType,\n ContentType,\n createPartialTextMessage,\n createPartialToolCallMessage,\n createTextContent,\n createToolCallContent,\n ImageModalityLiteral,\n Message,\n MessageType,\n PartialChatResponseType,\n SystemRoleLiteral,\n TextModalityLiteral,\n Tool,\n ToolCallContentType,\n ToolCallModalityLiteral,\n ToolResponseContentType,\n ToolResponseModalityLiteral,\n ToolRoleLiteral,\n ToolType,\n UrlImageContentTypeLiteral,\n UserRoleLiteral,\n} from \"@adaline/types\";\n\nimport { OpenRouter } from \"../../provider/provider.open-router\";\nimport pricingData from \"../pricing.json\";\nimport {\n OpenRouterChatRequest,\n OpenRouterChatRequestImageContentType,\n OpenRouterChatRequestTextContentType,\n OpenRouterChatRequestToolType,\n OpenRouterChatRequestType,\n OpenRouterCompleteChatResponse,\n OpenRouterCompleteChatResponseType,\n OpenRouterStreamChatResponse,\n OpenRouterStreamChatResponseType,\n} from \"./types\";\n\nconst BaseChatModelOptions = z.object({\n modelName: z.string(),\n apiKey: z.string(),\n openRouterReferer: z.string().optional(),\n openRouterTitle: 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 modelName: string;\n private readonly apiKey: string;\n private readonly baseUrl: string;\n private readonly streamChatUrl: string;\n private readonly completeChatUrl: string;\n private readonly openRouterReferer: string | undefined;\n private readonly openRouterTitle: string | undefined;\n\n constructor(modelSchema: ChatModelSchemaType, options: BaseChatModelOptionsType) {\n const parsedOptions = BaseChatModelOptions.parse(options);\n this.modelSchema = modelSchema;\n this.modelName = parsedOptions.modelName;\n this.apiKey = parsedOptions.apiKey;\n this.baseUrl = urlWithoutTrailingSlash(OpenRouter.baseUrl);\n this.streamChatUrl = urlWithoutTrailingSlash(`${this.baseUrl}/chat/completions`);\n this.completeChatUrl = urlWithoutTrailingSlash(`${this.baseUrl}/chat/completions`);\n this.openRouterReferer = parsedOptions.openRouterReferer;\n this.openRouterTitle = parsedOptions.openRouterTitle;\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.openRouterReferer ? { \"HTTP-Referer\": this.openRouterReferer } : {}),\n ...(this.openRouterTitle ? { \"X-Title\": this.openRouterTitle } : {}),\n };\n }\n\n getDefaultParams(): ParamsType {\n return {\n model: this.modelName,\n };\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n getRetryDelay(responseHeaders: HeadersType): { shouldRetry: boolean; delayMs: number } {\n return { shouldRetry: true, delayMs: 0 };\n }\n\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 transformModelRequest(request: OpenRouterChatRequestType): {\n modelName: string | undefined;\n config: ConfigType;\n messages: MessageType[];\n tools: ToolType[] | undefined;\n } {\n const safeRequest = OpenRouterChatRequest.safeParse(request);\n if (!safeRequest.success) {\n throw new InvalidModelRequestError({ info: \"Invalid model request\", cause: safeRequest.error });\n }\n\n const parsedRequest = safeRequest.data;\n\n const modelName = parsedRequest.model;\n\n if (parsedRequest.tool_choice && (!parsedRequest.tools || parsedRequest.tools.length === 0)) {\n throw new InvalidModelRequestError({\n info: `Invalid model request for model : '${this.modelName}'`,\n cause: new Error(\"'tools' are required when 'tool_choice' is specified\"),\n });\n }\n\n const _config: ConfigType = {};\n if (parsedRequest.response_format) {\n _config.responseFormat = parsedRequest.response_format.type;\n if (parsedRequest.response_format.type === \"json_schema\") {\n _config.responseSchema = {\n name: parsedRequest.response_format.json_schema.name,\n description: parsedRequest.response_format.json_schema.description || \"\",\n strict: parsedRequest.response_format.json_schema.strict,\n schema: parsedRequest.response_format.json_schema.schema,\n };\n }\n }\n\n if (parsedRequest.tool_choice) {\n if (typeof parsedRequest.tool_choice === \"string\") {\n _config.toolChoice = parsedRequest.tool_choice;\n } else {\n _config.toolChoice = parsedRequest.tool_choice.function.name;\n }\n }\n\n _config.seed = parsedRequest.seed;\n _config.maxTokens = parsedRequest.max_tokens;\n _config.temperature = parsedRequest.temperature;\n _config.topA = parsedRequest.top_a;\n _config.topP = parsedRequest.top_p;\n _config.minP = parsedRequest.min_p;\n _config.topK = parsedRequest.top_k;\n _config.repetitionPenalty = parsedRequest.repetition_penalty;\n _config.presencePenalty = parsedRequest.presence_penalty;\n _config.frequencyPenalty = parsedRequest.frequency_penalty;\n _config.stop = parsedRequest.stop;\n _config.logProbs = parsedRequest.logprobs;\n _config.topLogProbs = parsedRequest.top_logprobs;\n\n const config = Config().parse(removeUndefinedEntries(_config));\n\n const messages: MessageType[] = [];\n const toolCallMap: { [id: string]: ToolCallContentType } = {};\n parsedRequest.messages.forEach((message) => {\n const role = message.role;\n switch (role) {\n case \"system\":\n {\n const content = message.content as string | OpenRouterChatRequestTextContentType[];\n if (typeof content === \"string\") {\n messages.push({\n role: role,\n content: [{ modality: TextModalityLiteral, value: content }],\n });\n } else {\n const _content = content.map((c) => {\n return { modality: TextModalityLiteral, value: c.text };\n });\n messages.push({ role: role, content: _content });\n }\n }\n break;\n\n case \"user\":\n {\n const content = message.content as string | (OpenRouterChatRequestTextContentType | OpenRouterChatRequestImageContentType)[];\n if (typeof content === \"string\") {\n messages.push({\n role: role,\n content: [{ modality: TextModalityLiteral, value: content }],\n });\n } else {\n const _content = content.map((c) => {\n if (c.type === \"text\") {\n return { modality: TextModalityLiteral, value: c.text };\n } else {\n if (c.image_url.url.startsWith(\"data:\")) {\n return {\n modality: ImageModalityLiteral,\n detail: c.image_url.detail || \"auto\",\n value: {\n type: Base64ImageContentTypeLiteral,\n base64: c.image_url.url,\n mediaType: getMimeTypeFromBase64(c.image_url.url) as Base64ImageContentValueType[\"mediaType\"],\n },\n };\n } else {\n return {\n modality: ImageModalityLiteral,\n detail: c.image_url.detail || \"auto\",\n value: { type: UrlImageContentTypeLiteral, url: c.image_url.url },\n };\n }\n }\n });\n messages.push({ role: role, content: _content });\n }\n }\n break;\n\n case \"assistant\":\n {\n const assistantContent: ContentType[] = [];\n\n if (!message.content && !message.tool_calls) {\n throw new InvalidModelRequestError({\n info: `Invalid model request for model : '${this.modelName}'`,\n cause: new Error(\"one of'content' or 'tool_calls' must be provided\"),\n });\n }\n\n if (message.content) {\n const content = message.content as string | OpenRouterChatRequestTextContentType[];\n if (typeof content === \"string\") {\n assistantContent.push({ modality: TextModalityLiteral, value: content });\n } else {\n content.forEach((c) => {\n assistantContent.push({ modality: TextModalityLiteral, value: c.text });\n });\n }\n }\n\n if (message.tool_calls) {\n const toolCalls = message.tool_calls;\n toolCalls.forEach((toolCall, index) => {\n const toolCallContent: ToolCallContentType = {\n modality: ToolCallModalityLiteral,\n id: toolCall.id,\n index: index,\n name: toolCall.function.name,\n arguments: toolCall.function.arguments,\n };\n assistantContent.push(toolCallContent);\n toolCallMap[toolCallContent.id] = toolCallContent;\n });\n }\n messages.push({ role: role, content: assistantContent });\n }\n break;\n\n case \"tool\":\n {\n const toolResponse = message;\n messages.push({\n role: role,\n content: [\n {\n modality: ToolResponseModalityLiteral,\n id: toolResponse.tool_call_id,\n index: toolCallMap[toolResponse.tool_call_id].index,\n name: toolCallMap[toolResponse.tool_call_id].name,\n data: toolResponse.content,\n },\n ],\n });\n }\n break;\n }\n });\n\n const tools: ToolType[] = [];\n if (parsedRequest.tools) {\n parsedRequest.tools.forEach((tool: OpenRouterChatRequestToolType) => {\n tools.push({\n type: \"function\",\n definition: {\n schema: {\n name: tool.function.name,\n description: tool.function.description || \"\",\n strict: tool.function.strict,\n parameters: tool.function.parameters,\n },\n },\n });\n });\n }\n\n return {\n modelName,\n config,\n messages,\n tools: tools.length > 0 ? tools : undefined,\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 const _parsedConfig = this.modelSchema.config.schema.safeParse(config);\n if (!_parsedConfig.success) {\n throw new InvalidConfigError({\n info: `Invalid config for model : '${this.modelName}'`,\n cause: _parsedConfig.error,\n });\n }\n\n const parsedConfig = _parsedConfig.data as ConfigType;\n if (_toolChoice !== undefined) {\n parsedConfig.toolChoice = _toolChoice;\n }\n\n Object.keys(parsedConfig).forEach((key) => {\n if (!(key in this.modelSchema.config.def)) {\n throw new InvalidConfigError({\n info: `Invalid config for model : '${this.modelName}'`,\n cause: new Error(`Invalid config key : '${key}', \n available keys : [${Object.keys(this.modelSchema.config.def).join(\", \")}]`),\n });\n }\n });\n\n const transformedConfig = Object.keys(parsedConfig).reduce((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 }, {} as ParamsType);\n\n if (transformedConfig.top_logprobs && !transformedConfig.logprobs) {\n throw new InvalidConfigError({\n info: `Invalid config for model : '${this.modelName}'`,\n cause: new Error(\"'logprobs' must be 'true' when 'top_logprobs' is specified\"),\n });\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: `Invalid config for model : '${this.modelName}'`,\n cause: new Error(\"'tools' are required when 'toolChoice' is specified\"),\n });\n } else if (tools && tools.length > 0) {\n const configToolChoice = this.modelSchema.config.def.toolChoice as SelectStringConfigItemDefType;\n if (!configToolChoice.choices.includes(toolChoice)) {\n if (tools.map((tool) => tool.definition.schema.name).includes(toolChoice)) {\n transformedConfig.tool_choice = { type: \"function\", function: { name: toolChoice } };\n } else {\n throw new InvalidConfigError({\n info: `Invalid config for model : '${this.modelName}'`,\n cause: new Error(`toolChoice : '${toolChoice}' is not part of provided 'tools' names or \n one of [${configToolChoice.choices.join(\", \")}]`),\n });\n }\n }\n }\n }\n\n if (\"response_format\" in transformedConfig && transformedConfig.response_format !== undefined) {\n const responseFormat = transformedConfig.response_format as string;\n if (responseFormat === \"json_schema\") {\n if (!(\"response_schema\" in transformedConfig)) {\n throw new InvalidConfigError({\n info: `Invalid config for model : '${this.modelName}'`,\n cause: new Error(\"'responseSchema' is required in config when 'responseFormat' is 'json_schema'\"),\n });\n } else {\n transformedConfig.response_format = {\n type: \"json_schema\",\n json_schema: transformedConfig.response_schema,\n };\n delete transformedConfig.response_schema;\n }\n } else {\n transformedConfig.response_format = { type: responseFormat };\n }\n }\n\n return transformedConfig;\n }\n\n transformMessages(messages: MessageType[]): ParamsType {\n if (!messages || (messages && messages.length === 0)) {\n return { messages: [] };\n }\n\n const parsedMessages = messages.map((message) => {\n const parsedMessage = Message().safeParse(message);\n if (!parsedMessage.success) {\n throw new InvalidMessagesError({ info: \"Invalid messages\", cause: parsedMessage.error });\n }\n return parsedMessage.data;\n });\n\n parsedMessages.forEach((message) => {\n message.content.forEach((content) => {\n if (!this.modelSchema.modalities.includes(content.modality)) {\n throw new InvalidMessagesError({\n info: `Invalid message content for model : '${this.modelName}'`,\n cause: new Error(`model : '${this.modelName}' does not support modality : '${content.modality}', \n available modalities : [${this.modelSchema.modalities.join(\", \")}]`),\n });\n }\n });\n });\n\n parsedMessages.forEach((message) => {\n if (!Object.keys(this.modelSchema.roles).includes(message.role)) {\n throw new InvalidMessagesError({\n info: `Invalid message content for model : '${this.modelName}'`,\n cause: new Error(`model : '${this.modelName}' does not support role : '${message.role}', \n available roles : [${Object.keys(this.modelSchema.roles).join(\", \")}]`),\n });\n }\n });\n\n const transformedMessages = parsedMessages.map((message) => {\n switch (message.role) {\n case SystemRoleLiteral: {\n const textContent: { type: \"text\"; text: string }[] = [];\n message.content.forEach((content) => {\n if (content.modality === TextModalityLiteral) {\n textContent.push({ type: \"text\", text: content.value });\n } else {\n throw new InvalidMessagesError({\n info: `Invalid message 'role' and 'modality' combination for model : ${this.modelName}`,\n cause: new Error(`role : '${message.role}' cannot have content with modality : '${content.modality}'`),\n });\n }\n });\n\n return {\n role: this.modelSchema.roles[message.role],\n content: textContent,\n };\n }\n\n case AssistantRoleLiteral: {\n const textContent: { type: \"text\"; text: string }[] = [];\n const toolCalls: { id: string; type: \"function\"; function: { name: string; arguments: string } }[] = [];\n message.content.forEach((content) => {\n if (content.modality === TextModalityLiteral) {\n textContent.push({ type: \"text\", text: content.value });\n } else if (content.modality === ToolCallModalityLiteral) {\n toolCalls.push({\n id: content.id,\n type: \"function\",\n function: { name: content.name, arguments: content.arguments },\n });\n } else {\n throw new InvalidMessagesError({\n info: `Invalid message 'role' and 'modality' combination for model : ${this.modelName}`,\n cause: new Error(`role : '${message.role}' cannot have content with modality : '${content.modality}'`),\n });\n }\n });\n\n return {\n role: this.modelSchema.roles[message.role],\n ...(textContent.length > 0 ? { content: textContent } : {}),\n ...(toolCalls.length > 0 ? { tool_calls: toolCalls } : {}),\n };\n }\n\n case UserRoleLiteral: {\n const textContent: { type: \"text\"; text: string }[] = [];\n const imageContent: { type: \"image_url\"; image_url: { url: string; detail: string } }[] = [];\n message.content.forEach((content) => {\n if (content.modality === TextModalityLiteral) {\n textContent.push({ type: \"text\", text: content.value });\n } else if (content.modality === ImageModalityLiteral) {\n imageContent.push({\n type: \"image_url\",\n image_url: {\n url: content.value.type === \"url\" ? content.value.url : content.value.base64,\n detail: content.detail,\n },\n });\n } else {\n throw new InvalidMessagesError({\n info: `Invalid message 'role' and 'modality' combination for model : ${this.modelName}`,\n cause: new Error(`role : '${message.role}' cannot have content with modality : '${content.modality}'`),\n });\n }\n });\n\n const combinedContent = [...textContent, ...imageContent];\n\n return {\n role: this.modelSchema.roles[message.role],\n content: combinedContent,\n };\n }\n\n case ToolRoleLiteral: {\n if (message.content.length !== 1) {\n throw new InvalidMessagesError({\n info: `Invalid message for role : '${message.role}'`,\n cause: new Error(`role : '${message.role}' must have exactly one content item`),\n });\n }\n\n if (message.content[0].modality !== ToolResponseModalityLiteral) {\n throw new InvalidMessagesError({\n info: `Invalid message 'role' and 'modality' combination for model : ${this.modelName}`,\n cause: new Error(`role : '${message.role}' must have content with modality : '${ToolResponseModalityLiteral}'`),\n });\n }\n\n const toolResponse = message.content[0] as ToolResponseContentType;\n return {\n role: this.modelSchema.roles[message.role],\n tool_call_id: toolResponse.id,\n content: toolResponse.data,\n };\n }\n\n default: {\n throw new InvalidMessagesError({\n info: `Invalid message 'role' for model : ${this.modelName}`,\n cause: new Error(`role : '${message.role}' is not supported, \n available roles : [${Object.keys(this.modelSchema.roles).join(\", \")}]`),\n });\n }\n }\n });\n\n return { messages: transformedMessages };\n }\n\n transformTools(tools: ToolType[]): ParamsType {\n if (!this.modelSchema.modalities.includes(ToolCallModalityLiteral)) {\n throw new InvalidToolsError({\n info: `Invalid tool 'modality' for model : ${this.modelName}`,\n cause: new Error(`model : '${this.modelName}' does not support tool modality : '${ToolCallModalityLiteral}'`),\n });\n }\n\n if (!tools || (tools && tools.length === 0)) {\n return { tools: [] as ToolType[] };\n }\n\n const parsedTools = tools.map((tool) => {\n const parsedTool = Tool().safeParse(tool);\n if (!parsedTool.success) {\n throw new InvalidToolsError({ info: \"Invalid tools\", cause: parsedTool.error });\n }\n return parsedTool.data;\n });\n\n const transformedTools = parsedTools.map((tool) => ({\n type: \"function\",\n function: tool.definition.schema,\n }));\n\n return { tools: transformedTools };\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n async getCompleteChatUrl(config?: ConfigType, messages?: MessageType[], tools?: ToolType[]): Promise<UrlType> {\n return new Promise((resolve) => {\n resolve(this.completeChatUrl);\n });\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n async getCompleteChatHeaders(config?: ConfigType, messages?: MessageType[], tools?: ToolType[]): Promise<HeadersType> {\n return new Promise((resolve) => {\n resolve(this.getDefaultHeaders());\n });\n }\n\n async getCompleteChatData(config: ConfigType, messages: MessageType[], tools?: ToolType[]): Promise<ParamsType> {\n const transformedConfig = this.transformConfig(config, messages, tools);\n const transformedMessages = this.transformMessages(messages);\n if (transformedMessages.messages && (transformedMessages.messages as MessageType[]).length === 0) {\n throw new InvalidMessagesError({\n info: \"Messages are required\",\n cause: new Error(\"Messages are required\"),\n });\n }\n\n const transformedTools = tools ? this.transformTools(tools) : {};\n\n return new Promise((resolve) => {\n resolve({\n ...this.getDefaultParams(),\n ...transformedConfig,\n ...transformedMessages,\n ...transformedTools,\n });\n });\n }\n\n transformCompleteChatResponse(response: any): ChatResponseType {\n const safe = OpenRouterCompleteChatResponse.safeParse(response);\n if (safe.success) {\n if (safe.data.choices.length === 0) {\n throw new ModelResponseError({\n info: \"Invalid response from model\",\n cause: new Error(`No choices in response : ${JSON.stringify(safe.data)}`),\n });\n }\n\n const parsedResponse: OpenRouterCompleteChatResponseType = safe.data;\n const messages: MessageType[] = [\n {\n role: AssistantRoleLiteral,\n content: [],\n },\n ];\n const message = parsedResponse.choices[0].message;\n if (message.content) {\n messages[0].content.push(createTextContent(message.content));\n }\n\n if (message.refusal) {\n messages[0].content.push(createTextContent(message.refusal));\n }\n\n if (message.tool_calls) {\n message.tool_calls.forEach((toolCall, index) => {\n messages[0].content.push(createToolCallContent(index, toolCall.id, toolCall.function.name, toolCall.function.arguments));\n });\n }\n\n let usage: ChatUsageType | undefined;\n if (parsedResponse.usage) {\n usage = {\n promptTokens: parsedResponse.usage.prompt_tokens,\n completionTokens: parsedResponse.usage.completion_tokens,\n totalTokens: parsedResponse.usage.total_tokens,\n };\n }\n\n const logProbs: ChatLogProbsType = [];\n const _logProbs = parsedResponse.choices[0].logprobs;\n if (_logProbs) {\n if (_logProbs.content) {\n logProbs.push(\n ..._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 }\n if (_logProbs.refusal) {\n logProbs.push(\n ..._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\n return {\n messages: messages,\n usage: usage,\n logProbs: logProbs,\n };\n }\n\n throw new ModelResponseError({ info: \"Invalid response from model\", cause: safe.error });\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n async getStreamChatUrl(config?: ConfigType, messages?: MessageType[], tools?: ToolType[]): Promise<UrlType> {\n return new Promise((resolve) => {\n resolve(this.streamChatUrl);\n });\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n async getStreamChatHeaders(config?: ConfigType, messages?: MessageType[], tools?: ToolType[]): Promise<HeadersType> {\n return new Promise((resolve) => {\n resolve(this.getDefaultHeaders());\n });\n }\n\n async getStreamChatData(config: ConfigType, messages: MessageType[], tools?: ToolType[]): Promise<ParamsType> {\n const transformedConfig = this.transformConfig(config, messages, tools);\n const transformedMessages = this.transformMessages(messages);\n if (transformedMessages.messages && (transformedMessages.messages as MessageType[]).length === 0) {\n throw new InvalidMessagesError({\n info: \"Messages are required\",\n cause: new Error(\"Messages are required\"),\n });\n }\n\n const transformedTools = tools ? this.transformTools(tools) : {};\n\n return new Promise((resolve) => {\n resolve({\n stream: true,\n stream_options: { include_usage: true },\n ...this.getDefaultParams(),\n ...transformedConfig,\n ...transformedMessages,\n ...transformedTools,\n });\n });\n }\n\n async *transformStreamChatResponseChunk(\n chunk: string,\n buffer: string\n ): AsyncGenerator<{ partialResponse: PartialChatResponseType; buffer: string }> {\n const data = buffer + chunk;\n let lines: string[] = [];\n let newBuffer = \"\";\n\n // Split data into complete lines and new buffer\n let currentIndex = 0;\n while (currentIndex < data.length) {\n const newlineIndex = data.indexOf(\"\\n\", currentIndex);\n if (newlineIndex === -1) {\n newBuffer = data.substring(currentIndex);\n break;\n } else {\n const line = data.substring(currentIndex, newlineIndex).trim();\n if (line) {\n lines.push(line);\n }\n currentIndex = newlineIndex + 1;\n }\n }\n\n // Process each complete line\n for (const line of lines) {\n if (line === \"data: [DONE]\") {\n return; // End of stream\n }\n\n if (line.startsWith(\"data: \")) {\n const jsonStr = line.substring(\"data: \".length);\n try {\n const structuredLine = JSON.parse(jsonStr);\n const safe = OpenRouterStreamChatResponse.safeParse(structuredLine);\n if (safe.success) {\n const partialResponse: PartialChatResponseType = { partialMessages: [] };\n const parsedResponse: OpenRouterStreamChatResponseType = safe.data;\n // Process message content\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(\n createPartialToolCallMessage(\n AssistantRoleLiteral,\n toolCall.index,\n toolCall.id,\n toolCall.function?.name,\n toolCall.function?.arguments\n )\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 yield { partialResponse: partialResponse, buffer: newBuffer };\n } else {\n throw new ModelResponseError({ info: \"Invalid response from model\", cause: safe.error });\n }\n } catch (error) {\n throw new ModelResponseError({\n info: `Malformed JSON received in stream: ${jsonStr}`,\n cause: error,\n });\n }\n }\n }\n\n // Yield the updated buffer after processing all lines\n yield { partialResponse: { partialMessages: [] }, buffer: newBuffer };\n }\n async *transformProxyStreamChatResponseChunk(\n chunk: string,\n buffer: string,\n data?: any,\n headers?: Record<string, string>,\n query?: Record<string, string>\n ): AsyncGenerator<{ partialResponse: PartialChatResponseType; buffer: string }> {\n // Directly delegate to transformStreamChatResponseChunk\n yield* this.transformStreamChatResponseChunk(chunk, buffer);\n }\n async getProxyStreamChatUrl(data?: any, headers?: Record<string, string>, query?: Record<string, string>): Promise<UrlType> {\n return new Promise((resolve) => {\n resolve(this.streamChatUrl);\n });\n }\n async getProxyCompleteChatUrl(data?: any, headers?: Record<string, string>, query?: Record<string, string>): Promise<UrlType> {\n return new Promise((resolve) => {\n resolve(this.completeChatUrl);\n });\n }\n\n async getProxyCompleteChatHeaders(data?: any, headers?: Record<string, string>, query?: Record<string, string>): Promise<HeadersType> {\n if (!headers) {\n return {};\n }\n const sanitizedHeaders: Record<string, string> = { ...headers };\n\n delete sanitizedHeaders.host;\n delete sanitizedHeaders[\"content-length\"];\n return sanitizedHeaders;\n }\n async getProxyStreamChatHeaders(data?: any, headers?: Record<string, string>, query?: Record<string, string>): Promise<HeadersType> {\n // Directly delegate to getProxyCompleteChatHeaders for now\n return await this.getProxyCompleteChatHeaders(data, headers, query);\n }\n\n getModelPricing(): ChatModelPriceType {\n // Check if the modelName exists in pricingData before accessing it\n if (!(this.modelName in pricingData)) {\n throw new ModelResponseError({\n info: `Invalid model pricing for model : '${this.modelName}'`,\n cause: new Error(`No pricing configuration found for model \"${this.modelName}\"`),\n });\n }\n\n const entry = pricingData[this.modelName as keyof typeof pricingData];\n return entry as ChatModelPriceType;\n }\n}\n\nexport { BaseChatModel, BaseChatModelOptions, type BaseChatModelOptionsType };\n","import { ChatModelSchema } from \"@adaline/provider\";\n\nimport { OpenRouterChatModelConfigs } from \"../../configs\";\nimport {\n OpenRouterChatModelModalities,\n OpenRouterChatModelModalitiesEnum,\n OpenRouterChatModelRoles,\n OpenRouterChatModelRolesMap,\n} from \"./types\";\n\nconst BaseChatModelSchema = ChatModelSchema(OpenRouterChatModelRoles, OpenRouterChatModelModalitiesEnum).parse({\n name: \"__base__\",\n description: \"Base chat model for Open Router\",\n maxInputTokens: 128000,\n maxOutputTokens: 128000,\n roles: OpenRouterChatModelRolesMap,\n modalities: OpenRouterChatModelModalities,\n config: {\n def: OpenRouterChatModelConfigs.base(128000, 4).def,\n schema: OpenRouterChatModelConfigs.base(128000, 4).schema,\n },\n});\n\nexport { BaseChatModelSchema };\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/configs/chat-model/base.config.chat-model.open-router.ts","../../../../packages/types/src/message/roles.ts","../../../../packages/types/src/message/content/image-content.ts","../../../../packages/types/src/message/content/pdf-content.ts","../../../../packages/types/src/message/content/reasoning-content.ts","../../../../packages/types/src/message/content/text-content.ts","../../../../packages/types/src/message/content/tool-call-content.ts","../../../../packages/types/src/message/content/tool-response-content.ts","../../../../packages/types/src/message/content/content.ts","../../../../packages/types/src/message/message.ts","../../../../packages/types/src/chat/chat-response.ts","../../../../packages/types/src/config/config.ts","../../../../packages/types/src/config/response-schema.config.ts","../../../../packages/types/src/embedding/embedding-requests.ts","../../../../packages/types/src/embedding/embedding-response.ts","../../../../packages/types/src/errors/gateway-base.error.ts","../../../../packages/types/src/pricing/pricing-tiers.ts","../../../../packages/types/src/tool/function-tool.ts","../../../../packages/types/src/tool/tool.ts","../../../../packages/types/src/utils/create-message.ts","../../../../packages/provider/src/errors/provider.error.ts","../../../../packages/provider/src/errors/model-response.error.ts","../../../../packages/provider/src/errors/invalid-model-request.error.ts","../../../../packages/provider/src/errors/invalid-config.error.ts","../../../../packages/provider/src/errors/invalid-messages.error.ts","../../../../packages/provider/src/errors/invalid-tools.error.ts","../../../../packages/provider/src/types/config/multi-string-config-item.ts","../../../../packages/provider/src/types/config/object-schema-config-item.ts","../../../../packages/provider/src/types/config/range-config-item.ts","../../../../packages/provider/src/types/config/select-boolean-config-item.ts","../../../../packages/provider/src/types/config/select-string-config-item.ts","../../../../packages/provider/src/types/config/config-item.ts","../../../../packages/provider/src/model/chat-model/chat-model.schema.v1.ts","../../../../packages/provider/src/types/headers.ts","../../../../packages/provider/src/types/params.ts","../../../../packages/provider/src/types/url.ts","../../../../packages/provider/src/utils/common-config.def.chat-model.ts","../../../../packages/provider/src/utils/remove-undefined-entries.ts","../../../../packages/provider/src/utils/is-running-in-browser.ts","../../../../packages/provider/src/utils/base64.ts","../../../../packages/provider/src/utils/url.ts","../src/configs/chat-model/common.config.chat-model.open-router.ts","../src/configs/configs.openai-router.ts","../src/provider/provider.open-router.ts","../src/models/pricing.json","../src/models/chat-models/types/roles.chat-model.open-router.ts","../src/models/chat-models/types/modalities.chat-model.open-router.ts","../src/models/chat-models/types/response.chat-model.open-router.ts","../src/models/chat-models/types/request.chat-model.open-router.ts","../src/models/chat-models/base-chat-model.open-router.ts","../src/models/chat-models/base-chat-model-schema.open-router.ts"],"names":["SystemRoleLiteral","UserRoleLiteral","AssistantRoleLiteral","ToolRoleLiteral","RoleLiterals","RoleEnum","z","PartialRoleLiterals","PartialRoleEnum","ImageModalityLiteral","Base64ImageContentTypeLiteral","Base64ImageContentMediaTypeLiterals","Base64ImageContentValue","UrlImageContentTypeLiteral","UrlImageContentValue","ImageContentValue","ImageContentDetails","ImageContentDetailsLiteral","ImageContent","Metadata","PdfModalityLiteral","Base64PdfContentTypeLiteral","Base64PdfContentValue","UrlPdfContentTypeLiteral","UrlPdfContentValue","PdfContentValue","PdfContent","ReasoningModalityLiteral","PartialReasoningModalityLiteral","ReasoningContentTypeLiteral","RedactedReasoningContentTypeLiteral","ReasoningContentValue","RedactedReasoningContentValue","ReasoningContentValueUnion","ReasoningContent","PartialReasoningContentValue","PartialReasoningContentValueUnion","PartialReasoningContent","TextModalityLiteral","TextContent","PartialTextModalityLiteral","PartialTextContent","ToolCallModalityLiteral","ToolCallContent","PartialToolCallModalityLiteral","PartialToolCallContent","ToolResponseModalityLiteral","ToolResponseContent","ModalityLiterals","ModalityEnum","Content","TextContentMetadata","ImageContentMetadata","PdfContentMetadata","ToolCallContentMetadata","ToolResponseContentMetadata","ReasoningContentMetadata","PartialModalityLiterals","PartialContent","PartialTextContentMetadata","PartialToolCallContentMetadata","PartialReasoningContentMetadata","Message","Role","MessageMetadata","PartialMessage","ChatUsage","ChatBaseLogProb","ChatLogProb","ChatLogProbs","ChatResponse","PartialChatUsage","Config","ResponseSchemaTypes","ResponseSchemaTypesLiteral","ResponseSchemaProperty","ResponseSchemaStructure","ResponseSchema","EmbeddingTextModalityLiteral","EmbeddingTokenModalityLiteral","EmbeddingModalityLiterals","EmbeddingModalityEnum","TextEmbeddingRequests","TokenEmbeddingRequests","FloatEmbeddingLiteral","FloatEmbedding","Base64EmbeddingLiteral","Base64Embedding","EmbeddingsUsage","safeStringify","obj","seen","key","value","getErrorMessage","error","GatewayBaseErrorLiteral","GatewayBaseError","_GatewayBaseError","info","cause","name","ChatModelTokenPairPrice","ChatModelTokenTypePrice","ChatModelTokenRangePrice","t","ChatModelPrice","data","ctx","tokenRanges","i","prev","curr","last","FunctionToolLiteral","FunctionParameterTypesLiteral","FunctionParameter","FunctionParameters","Function","ToolTypesLiteral","FunctionRequestRetry","FunctionRequestHttp","FunctionRequest","FunctionTool","ToolLiterals","Tool","FunctionToolMetadata","createTextContent","content","createToolCallContent","index","id","args","createPartialTextMessage","role","createPartialToolCallMessage","ProviderErrorLiteral","ProviderError","_ProviderError","ModelResponseErrorLiteral","ModelResponseError","_ModelResponseError","InvalidModelRequestErrorLiteral","InvalidModelRequestError","_InvalidModelRequestError","InvalidConfigErrorLiteral","InvalidConfigError","_InvalidConfigError","InvalidMessagesErrorLiteral","InvalidMessagesError","_InvalidMessagesError","InvalidToolsErrorLiteral","InvalidToolsError","_InvalidToolsError","MultiStringConfigItemTypeLiteral","MultiStringConfigItemDef","MultiStringConfigItemSchema","max","MultiStringConfigItem","__spreadValues","ObjectSchemaConfigItemTypeLiteral","ObjectSchemaConfigItemDef","RangeConfigItemTypeLiteral","RangeConfigItemDef","RangeConfigItemSchema","min","step","defaultValue","RangeConfigItem","SelectBooleanConfigItemTypeLiteral","SelectBooleanConfigItemDef","SelectBooleanConfigItemSchema","SelectBooleanConfigItem","SelectStringConfigItemTypeLiteral","SelectStringConfigItemDef","SelectStringConfigItemSchema","choices","SelectStringConfigItem","ConfigItemLiterals","ConfigItemDef","ChatModelSchema","Roles","Modalities","config","_a","_b","defKeys","schemaKeys","Params","TEMPERATURE","MAX_TOKENS","MAX_REASONING_TOKENS","STOP","TOP_A","TOP_P","TOP_K","MIN_P","FREQUENCY_PENALTY","PRESENCE_PENALTY","SEED","REPETITION_PENALTY","LOG_PROBS","TOP_LOG_PROBS","ECHO","RESPONSE_FORMAT","RESPONSE_FORMAT_WITH_SCHEMA","RESPONSE_SCHEMA","CHAT_CONFIG","removeUndefinedEntries","record","_","getMimeTypeFromBase64","base64","urlWithoutTrailingSlash","url","temperature","ct","Jt","maxTokens","maxOutputTokens","stop","maxSequences","et","topA","topK","topP","minP","frequencyPenalty","presencePenalty","repetitionPenalty","seed","logProbs","ft","topLogProbs","toolChoice","yt","responseFormat","ChatModelBaseConfigSchema","ChatModelBaseConfigDef","OpenRouterChatModelConfigs","ProviderLiteral","OpenRouter","BaseChatModelSchema","options","model","BaseChatModel","parsedOptions","BaseChatModelOptions","acc","j","pricing_default","OpenRouterChatModelRoles","Oe","Ge","D","He","OpenRouterChatModelRolesMap","OpenRouterChatModelModalities","F","O","w","W","OpenRouterChatModelModalitiesEnum","OpenRouterBaseLogProb","OpenRouterLogProb","OpenRouterToolCallsCompleteChatResponse","OpenRouterCompleteChatResponse","OpenRouterToolCallsStreamChatResponse","OpenRouterStreamChatResponse","OpenRouterChatRequestTool","OpenRouterChatRequestToolChoiceEnum","OpenRouterChatRequestToolChoiceFunction","OpenRouterChatRequestResponseFormat","OpenRouterChatRequestTextContent","OpenRouterChatRequestImageContent","OpenRouterChatRequestToolCallContent","OpenRouterChatRequestSystemMessage","OpenRouterChatRequestUserMessage","OpenRouterChatRequestAssistantMessage","OpenRouterChatRequestToolMessage","OpenRouterChatRequestMessage","OpenRouterChatRequest","modelSchema","mn","responseHeaders","messages","message","request","safeRequest","N","parsedRequest","modelName","_config","xt","Vt","toolCallMap","_content","c","se","an","re","assistantContent","toolCall","toolCallContent","toolResponse","tools","tool","_toolChoice","_parsedConfig","parsedConfig","transformedConfig","def","paramKey","paramValue","configToolChoice","parsedMessages","parsedMessage","A","U","textContent","toolCalls","imageContent","combinedContent","Z","parsedTool","Wt","__async","resolve","transformedMessages","transformedTools","response","safe","B","parsedResponse","to","oo","usage","_logProbs","logProb","topLogProb","chunk","buffer","__asyncGenerator","lines","newBuffer","currentIndex","newlineIndex","line","jsonStr","structuredLine","partialResponse","po","yo","headers","query","__yieldStar","sanitizedHeaders","jt"],"mappings":"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","file":"index.js","sourcesContent":["import { z } from \"zod\";\n\nimport {\n frequencyPenalty,\n logProbs,\n maxTokens,\n presencePenalty,\n seed,\n stop,\n temperature,\n toolChoice,\n topLogProbs,\n topP,\n} from \"./common.config.chat-model.open-router\";\n\nconst ChatModelBaseConfigSchema = (maxOutputTokens: number, maxSequences: number) =>\n z.object({\n temperature: temperature.schema,\n maxTokens: maxTokens(maxOutputTokens).schema,\n stop: stop(maxSequences).schema,\n topP: topP.schema,\n frequencyPenalty: frequencyPenalty.schema,\n presencePenalty: presencePenalty.schema,\n seed: seed.schema.transform((value) => (value === 0 ? undefined : value)),\n logProbs: logProbs.schema,\n topLogProbs: topLogProbs.schema,\n toolChoice: toolChoice.schema,\n });\n\nconst ChatModelBaseConfigDef = (maxOutputTokens: number, maxSequences: number) =>\n ({\n temperature: temperature.def,\n maxTokens: maxTokens(maxOutputTokens).def,\n stop: stop(maxSequences).def,\n topP: topP.def,\n frequencyPenalty: frequencyPenalty.def,\n presencePenalty: presencePenalty.def,\n seed: seed.def,\n logProbs: logProbs.def,\n topLogProbs: topLogProbs.def,\n toolChoice: toolChoice.def,\n }) as const;\n\nexport { ChatModelBaseConfigDef, ChatModelBaseConfigSchema };\n","import { z } from \"zod\";\n\nconst SystemRoleLiteral = \"system\" as const;\nconst UserRoleLiteral = \"user\" as const;\nconst AssistantRoleLiteral = \"assistant\" as const;\nconst ToolRoleLiteral = \"tool\" as const;\n\nconst RoleLiterals = [SystemRoleLiteral, UserRoleLiteral, AssistantRoleLiteral, ToolRoleLiteral] as const;\nconst RoleEnum = z.enum(RoleLiterals);\ntype RoleEnumType = z.infer<typeof RoleEnum>;\n\nconst PartialRoleLiterals = [AssistantRoleLiteral] as const;\nconst PartialRoleEnum = z.enum(PartialRoleLiterals);\ntype PartialRoleEnumType = z.infer<typeof PartialRoleEnum>;\n\nexport {\n UserRoleLiteral,\n ToolRoleLiteral,\n SystemRoleLiteral,\n AssistantRoleLiteral,\n RoleEnum,\n RoleLiterals,\n PartialRoleEnum,\n PartialRoleLiterals,\n type RoleEnumType,\n type PartialRoleEnumType,\n};\n","import { z } from \"zod\";\n\nconst ImageModalityLiteral = \"image\" as const;\n\nconst Base64ImageContentTypeLiteral = \"base64\" as const;\nconst Base64ImageContentMediaTypeLiterals = [\"png\", \"jpeg\", \"webp\", \"gif\"] as const;\nconst Base64ImageContentValue = z.object({\n type: z.literal(Base64ImageContentTypeLiteral),\n base64: z.string(),\n mediaType: z.enum(Base64ImageContentMediaTypeLiterals),\n});\ntype Base64ImageContentValueType = z.infer<typeof Base64ImageContentValue>;\n\nconst UrlImageContentTypeLiteral = \"url\" as const;\nconst UrlImageContentValue = z.object({\n type: z.literal(UrlImageContentTypeLiteral),\n url: z.string(),\n});\ntype UrlImageContentValueType = z.infer<typeof UrlImageContentValue>;\n\nconst ImageContentValue = z.discriminatedUnion(\"type\", [Base64ImageContentValue, UrlImageContentValue]);\ntype ImageContentValueType = z.infer<typeof ImageContentValue>;\n\nconst ImageContentDetails = [\"low\", \"medium\", \"high\", \"auto\"] as const;\nconst ImageContentDetailsLiteral = z.enum(ImageContentDetails);\ntype ImageContentDetailsLiteralType = z.infer<typeof ImageContentDetailsLiteral>;\nconst ImageContent = <M extends z.ZodTypeAny = z.ZodUndefined>(Metadata: M = z.undefined() as M) =>\n z.object({\n modality: z.literal(ImageModalityLiteral),\n detail: ImageContentDetailsLiteral,\n value: ImageContentValue,\n metadata: Metadata,\n });\ntype ImageContentType<M extends z.ZodTypeAny = z.ZodUndefined> = z.infer<ReturnType<typeof ImageContent<M>>>;\n\nexport {\n Base64ImageContentValue,\n ImageContent,\n ImageContentDetails,\n ImageContentDetailsLiteral,\n ImageModalityLiteral,\n UrlImageContentValue,\n UrlImageContentTypeLiteral,\n Base64ImageContentTypeLiteral,\n Base64ImageContentMediaTypeLiterals,\n type Base64ImageContentValueType,\n type ImageContentDetailsLiteralType,\n type ImageContentType,\n type ImageContentValueType,\n type UrlImageContentValueType,\n};\n","import { z } from \"zod\";\n\nconst PdfModalityLiteral = \"pdf\" as const;\n\nconst Base64PdfContentTypeLiteral = \"base64\" as const;\nconst Base64PdfContentValue = z.object({\n type: z.literal(Base64PdfContentTypeLiteral),\n base64: z.string(),\n});\ntype Base64PdfContentValueType = z.infer<typeof Base64PdfContentValue>;\n\nconst UrlPdfContentTypeLiteral = \"url\" as const;\nconst UrlPdfContentValue = z.object({\n type: z.literal(UrlPdfContentTypeLiteral),\n url: z.string(),\n});\ntype UrlPdfContentValueType = z.infer<typeof UrlPdfContentValue>;\n\nconst PdfContentValue = z.discriminatedUnion(\"type\", [Base64PdfContentValue, UrlPdfContentValue]);\ntype PdfContentValueType = z.infer<typeof PdfContentValue>;\n\nconst PdfContent = <M extends z.ZodTypeAny = z.ZodUndefined>(Metadata: M = z.undefined() as M) =>\n z.object({\n modality: z.literal(PdfModalityLiteral),\n value: PdfContentValue,\n file: z.object({\n name: z.string(),\n id: z.string(),\n size: z.number().optional(),\n }),\n metadata: Metadata,\n });\ntype PdfContentType<M extends z.ZodTypeAny = z.ZodUndefined> = z.infer<ReturnType<typeof PdfContent<M>>>;\n\nexport {\n Base64PdfContentValue,\n PdfContent,\n PdfModalityLiteral,\n UrlPdfContentValue,\n UrlPdfContentTypeLiteral,\n Base64PdfContentTypeLiteral,\n type Base64PdfContentValueType,\n type PdfContentType,\n type PdfContentValueType,\n type UrlPdfContentValueType,\n};\n","import { z } from \"zod\";\n\nconst ReasoningModalityLiteral = \"reasoning\" as const;\nconst PartialReasoningModalityLiteral = \"partial-reasoning\" as const;\n\nconst ReasoningContentTypeLiteral = \"thinking\" as const;\nconst RedactedReasoningContentTypeLiteral = \"redacted\" as const;\n\nconst ReasoningContentValue = z.object({\n type: z.literal(ReasoningContentTypeLiteral),\n thinking: z.string(),\n signature: z.string(),\n});\ntype ReasoningContentValueType = z.infer<typeof ReasoningContentValue>;\n\nconst RedactedReasoningContentValue = z.object({\n type: z.literal(RedactedReasoningContentTypeLiteral),\n data: z.string()\n});\ntype RedactedReasoningContentValueType = z.infer<typeof RedactedReasoningContentValue>;\n\nconst ReasoningContentValueUnion = z.discriminatedUnion(\"type\", [ ReasoningContentValue, RedactedReasoningContentValue ]);\ntype ReasoningContentValueUnionType = z.infer<typeof ReasoningContentValueUnion>;\n\nconst ReasoningContent = <M extends z.ZodTypeAny = z.ZodUndefined>(Metadata: M = z.undefined() as M) =>\n z.object({\n modality: z.literal(ReasoningModalityLiteral),\n value: ReasoningContentValueUnion,\n metadata: Metadata,\n });\n\ntype ReasoningContentType<M extends z.ZodTypeAny = z.ZodUndefined> = z.infer<ReturnType<typeof ReasoningContent<M>>>;\n\nconst PartialReasoningContentValue = z.object({\n type: z.literal(ReasoningContentTypeLiteral),\n thinking: ReasoningContentValue.shape.thinking.optional(),\n signature: ReasoningContentValue.shape.signature.optional(),\n});\nconst PartialReasoningContentValueUnion = z.discriminatedUnion(\"type\", [ \n PartialReasoningContentValue, \n RedactedReasoningContentValue \n]);\n\nconst PartialReasoningContent = <M extends z.ZodTypeAny = z.ZodUndefined>(Metadata: M = z.undefined() as M) =>\n z.object({\n modality: z.literal(PartialReasoningModalityLiteral),\n value: PartialReasoningContentValueUnion,\n metadata: Metadata,\n });\ntype PartialReasoningContentType<M extends z.ZodTypeAny = z.ZodUndefined> = z.infer<ReturnType<typeof PartialReasoningContent<M>>>;\n\nexport {\n ReasoningContent,\n PartialReasoningContent,\n PartialReasoningModalityLiteral,\n ReasoningContentTypeLiteral,\n ReasoningContentValue,\n PartialReasoningContentValue,\n ReasoningContentValueUnion,\n PartialReasoningContentValueUnion,\n ReasoningModalityLiteral,\n RedactedReasoningContentTypeLiteral,\n RedactedReasoningContentValue,\n type PartialReasoningContentType,\n type ReasoningContentType,\n type ReasoningContentValueType,\n type ReasoningContentValueUnionType,\n type RedactedReasoningContentValueType,\n};\n","import { z } from \"zod\";\n\nconst TextModalityLiteral = \"text\" as const;\n\nconst TextContent = <M extends z.ZodTypeAny = z.ZodUndefined>(Metadata: M = z.undefined() as M) =>\n z.object({\n modality: z.literal(TextModalityLiteral),\n value: z.string(),\n metadata: Metadata,\n });\ntype TextContentType<M extends z.ZodTypeAny = z.ZodUndefined> = z.infer<ReturnType<typeof TextContent<M>>>;\nconst PartialTextModalityLiteral = \"partial-text\" as const;\n\nconst PartialTextContent = <M extends z.ZodTypeAny = z.ZodUndefined>(Metadata: M = z.undefined() as M) =>\n z.object({\n modality: z.literal(PartialTextModalityLiteral),\n value: z.string(),\n metadata: Metadata,\n });\ntype PartialTextContentType<M extends z.ZodTypeAny = z.ZodUndefined> = z.infer<ReturnType<typeof PartialTextContent<M>>>;\n\nexport {\n TextContent,\n PartialTextContent,\n TextModalityLiteral,\n PartialTextModalityLiteral,\n type TextContentType,\n type PartialTextContentType,\n};\n","import { z } from \"zod\";\n\nconst ToolCallModalityLiteral = \"tool-call\" as const;\n\nconst ToolCallContent = <M extends z.ZodTypeAny = z.ZodUndefined>(Metadata: M = z.undefined() as M) =>\n z.object({\n modality: z.literal(ToolCallModalityLiteral),\n index: z.number().int().nonnegative(),\n id: z.string().min(1),\n name: z.string().min(1),\n arguments: z.string(),\n metadata: Metadata,\n });\ntype ToolCallContentType<M extends z.ZodTypeAny = z.ZodUndefined> = z.infer<ReturnType<typeof ToolCallContent<M>>>;\nconst PartialToolCallModalityLiteral = \"partial-tool-call\" as const;\n\nconst PartialToolCallContent = <M extends z.ZodTypeAny = z.ZodUndefined>(Metadata: M = z.undefined() as M) =>\n z.object({\n modality: z.literal(PartialToolCallModalityLiteral),\n index: z.number().int().nonnegative(),\n id: z.string().optional(),\n name: z.string().optional(),\n arguments: z.string().optional(),\n metadata: Metadata,\n });\ntype PartialToolCallContentType<M extends z.ZodTypeAny = z.ZodUndefined> = z.infer<ReturnType<typeof PartialToolCallContent<M>>>;\n\nexport {\n ToolCallContent,\n PartialToolCallContent,\n ToolCallModalityLiteral,\n PartialToolCallModalityLiteral,\n type ToolCallContentType,\n type PartialToolCallContentType,\n};\n","import { z } from \"zod\";\n\nconst ToolResponseModalityLiteral = \"tool-response\" as const;\n\nconst ToolResponseContent = <M extends z.ZodTypeAny = z.ZodUndefined>(Metadata: M = z.undefined() as M) =>\n z.object({\n modality: z.literal(ToolResponseModalityLiteral),\n index: z.number().int().nonnegative(),\n id: z.string().min(1),\n name: z.string().min(1),\n data: z.string(),\n apiResponse: z.object({\n statusCode: z.number().int().nonnegative(),\n }).optional(),\n metadata: Metadata,\n });\ntype ToolResponseContentType<M extends z.ZodTypeAny = z.ZodUndefined> = z.infer<ReturnType<typeof ToolResponseContent<M>>>;\n\nexport { ToolResponseContent, ToolResponseModalityLiteral, type ToolResponseContentType };\n","import { z } from \"zod\";\n\nimport { ImageContent, ImageModalityLiteral } from \"./image-content\";\nimport { PdfContent, PdfModalityLiteral } from \"./pdf-content\";\nimport { PartialReasoningContent, PartialReasoningModalityLiteral, ReasoningContent, ReasoningModalityLiteral } from \"./reasoning-content\";\nimport { PartialTextContent, PartialTextModalityLiteral, TextContent, TextModalityLiteral } from \"./text-content\";\nimport { PartialToolCallContent, PartialToolCallModalityLiteral, ToolCallContent, ToolCallModalityLiteral } from \"./tool-call-content\";\nimport { ToolResponseContent, ToolResponseModalityLiteral } from \"./tool-response-content\";\n\nconst ModalityLiterals = [\n TextModalityLiteral,\n ImageModalityLiteral,\n PdfModalityLiteral,\n ToolCallModalityLiteral,\n ToolResponseModalityLiteral,\n ReasoningModalityLiteral,\n] as const;\nconst ModalityEnum = z.enum(ModalityLiterals);\ntype ModalityEnumType = z.infer<typeof ModalityEnum>;\n\nconst Content = <\n TCM extends z.ZodTypeAny = z.ZodUndefined,\n ICM extends z.ZodTypeAny = z.ZodUndefined,\n PCM extends z.ZodTypeAny = z.ZodUndefined,\n CCM extends z.ZodTypeAny = z.ZodUndefined,\n RCM extends z.ZodTypeAny = z.ZodUndefined,\n TCCM extends z.ZodTypeAny = z.ZodUndefined,\n>(\n TextContentMetadata: TCM = z.undefined() as TCM,\n ImageContentMetadata: ICM = z.undefined() as ICM,\n PdfContentMetadata: PCM = z.undefined() as PCM,\n ToolCallContentMetadata: CCM = z.undefined() as CCM,\n ToolResponseContentMetadata: RCM = z.undefined() as RCM,\n ReasoningContentMetadata: TCCM = z.undefined() as TCCM\n) =>\n z.discriminatedUnion(\"modality\", [\n TextContent(TextContentMetadata),\n ImageContent(ImageContentMetadata),\n PdfContent(PdfContentMetadata),\n ToolCallContent(ToolCallContentMetadata),\n ToolResponseContent(ToolResponseContentMetadata),\n ReasoningContent(ReasoningContentMetadata),\n ]);\ntype ContentType<\n TCM extends z.ZodTypeAny = z.ZodUndefined,\n ICM extends z.ZodTypeAny = z.ZodUndefined,\n CCM extends z.ZodTypeAny = z.ZodUndefined,\n RCM extends z.ZodTypeAny = z.ZodUndefined,\n> = z.infer<ReturnType<typeof Content<TCM, ICM, CCM, RCM>>>;\n\nconst PartialModalityLiterals = [PartialTextModalityLiteral, PartialToolCallModalityLiteral, PartialReasoningModalityLiteral] as const;\nconst PartialModalityEnum = z.enum(PartialModalityLiterals);\ntype PartialModalityEnumType = z.infer<typeof PartialModalityEnum>;\n\nconst PartialContent = <\n TCM extends z.ZodTypeAny = z.ZodUndefined,\n CCM extends z.ZodTypeAny = z.ZodUndefined,\n RCM extends z.ZodTypeAny = z.ZodUndefined,\n>(\n PartialTextContentMetadata: TCM = z.undefined() as TCM,\n PartialToolCallContentMetadata: CCM = z.undefined() as CCM,\n PartialReasoningContentMetadata: z.ZodTypeAny = z.undefined() as z.ZodTypeAny as RCM\n) =>\n z.discriminatedUnion(\"modality\", [\n PartialTextContent(PartialTextContentMetadata),\n PartialToolCallContent(PartialToolCallContentMetadata),\n PartialReasoningContent(PartialReasoningContentMetadata),\n ]);\ntype PartialContentType<TCM extends z.ZodTypeAny = z.ZodUndefined, CCM extends z.ZodTypeAny = z.ZodUndefined> = z.infer<\n ReturnType<typeof PartialContent<TCM, CCM>>\n>;\n\nexport {\n Content,\n ModalityEnum,\n ModalityLiterals,\n PartialContent,\n PartialModalityEnum,\n PartialModalityLiterals,\n type ContentType,\n type ModalityEnumType,\n type PartialContentType,\n type PartialModalityEnumType,\n};\n","import { z } from \"zod\";\n\nimport { Content, PartialContent } from \"./content\";\nimport { PartialRoleEnum, RoleEnum } from \"./roles\";\n\nconst Message = <\n R extends z.ZodEnum<[string, ...string[]]> = typeof RoleEnum,\n TCM extends z.ZodTypeAny = z.ZodUndefined,\n ICM extends z.ZodTypeAny = z.ZodUndefined,\n CCM extends z.ZodTypeAny = z.ZodUndefined,\n RCM extends z.ZodTypeAny = z.ZodUndefined,\n RTCM extends z.ZodTypeAny = z.ZodUndefined,\n PCCM extends z.ZodTypeAny = z.ZodUndefined,\n MM extends z.ZodTypeAny = z.ZodUndefined,\n>(\n Role: R = RoleEnum as unknown as R,\n TextContentMetadata: TCM = z.undefined() as TCM,\n ImageContentMetadata: ICM = z.undefined() as ICM,\n ToolCallContentMetadata: CCM = z.undefined() as CCM,\n ToolResponseContentMetadata: RCM = z.undefined() as RCM,\n PdfContentMetadata: PCCM = z.undefined() as PCCM,\n ReasoningContentMetadata: z.ZodTypeAny = z.undefined() as RTCM,\n MessageMetadata: MM = z.undefined() as MM,\n) =>\n z.object({\n role: Role,\n content: z.array(\n Content(\n TextContentMetadata,\n ImageContentMetadata,\n ToolCallContentMetadata,\n ToolResponseContentMetadata,\n ReasoningContentMetadata,\n PdfContentMetadata,\n )\n ),\n metadata: MessageMetadata,\n });\ntype MessageType<\n R extends z.ZodEnum<[string, ...string[]]> = typeof RoleEnum,\n TCM extends z.ZodTypeAny = z.ZodUndefined,\n ICM extends z.ZodTypeAny = z.ZodUndefined,\n CCM extends z.ZodTypeAny = z.ZodUndefined,\n RCM extends z.ZodTypeAny = z.ZodUndefined,\n RTCM extends z.ZodTypeAny = z.ZodUndefined,\n PCCM extends z.ZodTypeAny = z.ZodUndefined,\n MM extends z.ZodTypeAny = z.ZodUndefined,\n> = z.infer<ReturnType<typeof Message<R, TCM, ICM, CCM, RCM, PCCM, RTCM, MM>>>;\n\nconst PartialMessage = <\n R extends z.ZodEnum<[string, ...string[]]> = typeof PartialRoleEnum,\n TCM extends z.ZodTypeAny = z.ZodUndefined,\n CCM extends z.ZodTypeAny = z.ZodUndefined,\n MM extends z.ZodTypeAny = z.ZodUndefined,\n RTCM extends z.ZodTypeAny = z.ZodUndefined,\n>(\n Role: R = PartialRoleEnum as unknown as R,\n TextContentMetadata: TCM = z.undefined() as TCM,\n ToolCallContentMetadata: CCM = z.undefined() as CCM,\n ReasoningContentMetadata: z.ZodTypeAny = z.undefined() as RTCM,\n MessageMetadata: MM = z.undefined() as MM\n) =>\n z.object({\n role: Role,\n partialContent: PartialContent(TextContentMetadata, ToolCallContentMetadata, ReasoningContentMetadata),\n metadata: MessageMetadata,\n });\ntype PartialMessageType<\n R extends z.ZodEnum<[string, ...string[]]> = typeof PartialRoleEnum,\n TCM extends z.ZodTypeAny = z.ZodUndefined,\n CCM extends z.ZodTypeAny = z.ZodUndefined,\n MM extends z.ZodTypeAny = z.ZodUndefined,\n> = z.infer<ReturnType<typeof PartialMessage<R, TCM, CCM, MM>>>;\n\nexport { Message, PartialMessage, type MessageType, type PartialMessageType };\n","import { z } from \"zod\";\n\nimport { Message, PartialMessage } from \"./../message\";\n\nconst ChatUsage = z.object({\n promptTokens: z.number().nonnegative(),\n completionTokens: z.number().nonnegative(),\n totalTokens: z.number().nonnegative(),\n});\ntype ChatUsageType = z.infer<typeof ChatUsage>;\n\nconst ChatBaseLogProb = z.object({\n token: z.string(),\n logProb: z.number(),\n bytes: z.array(z.number().int()).nullable(),\n});\ntype ChatBaseLogProbType = z.infer<typeof ChatBaseLogProb>;\n\nconst ChatLogProb = ChatBaseLogProb.extend({\n topLogProbs: z.array(ChatBaseLogProb),\n});\ntype ChatLogProbType = z.infer<typeof ChatLogProb>;\n\nconst ChatLogProbs = z.array(ChatLogProb);\ntype ChatLogProbsType = z.infer<typeof ChatLogProbs>;\n\nconst ChatResponse = z.object({\n messages: z.array(Message()),\n usage: ChatUsage.optional(),\n logProbs: ChatLogProbs.optional(),\n});\ntype ChatResponseType = z.infer<typeof ChatResponse>;\n\nconst PartialChatUsage = z.object({\n promptTokens: z.number().nonnegative().optional(),\n completionTokens: z.number().nonnegative().optional(),\n totalTokens: z.number().nonnegative().optional(),\n});\n\ntype PartialChatUsageType = z.infer<typeof PartialChatUsage>;\n\nconst PartialChatResponse = z.object({\n partialMessages: z.array(PartialMessage()),\n usage: PartialChatUsage.optional(),\n logProbs: ChatLogProbs.optional(),\n});\ntype PartialChatResponseType = z.infer<typeof PartialChatResponse>;\n\nexport {\n ChatBaseLogProb,\n ChatLogProb,\n ChatLogProbs,\n ChatResponse,\n ChatUsage,\n PartialChatResponse,\n PartialChatUsage,\n type ChatBaseLogProbType,\n type ChatLogProbsType,\n type ChatLogProbType,\n type ChatResponseType,\n type ChatUsageType,\n type PartialChatResponseType,\n type PartialChatUsageType,\n};\n","import { z } from \"zod\";\n\nconst Config = <C extends z.ZodRecord<z.ZodString, z.ZodAny> = z.ZodRecord<z.ZodString, z.ZodAny>>(\n Config: C = z.record(z.string(), z.any()).optional() as unknown as C\n) => Config;\ntype ConfigType<C extends z.ZodRecord<z.ZodString, z.ZodAny> = z.ZodRecord<z.ZodString, z.ZodAny>> = z.infer<ReturnType<typeof Config<C>>>;\n\nexport { Config, type ConfigType };\n","import { z } from \"zod\";\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);\ntype ResponseSchemaTypesType = z.infer<typeof ResponseSchemaTypesLiteral>;\n\nconst ResponseSchemaProperty = z.object({\n anyOf: z.array(z.any()).optional(),\n type: z.union([ResponseSchemaTypesLiteral, z.array(z.union([ResponseSchemaTypesLiteral, z.literal(\"null\")]))]).optional(),\n default: z.any().optional(),\n title: z.string().optional(),\n description: z.string().max(4096).optional(),\n properties: z.record(z.any()).optional(),\n required: z.array(z.string()).optional(),\n minItems: z.number().int().min(0).optional(),\n maxItems: z.number().int().optional(),\n items: z.record(z.any()).optional(), // Recursive structure to handle nested arrays and objects\n enum: z.array(z.union([z.string(), z.number(), z.boolean(), z.null()])).optional(), // Enum for allowed values\n minimum: z.number().optional(), // Minimum value for number\n maximum: z.number().optional(), // Maximum value for number\n minLength: z.number().int().min(0).optional(), // Minimum length for string\n maxLength: z.number().int().optional(), // Maximum length for string\n $ref: z.string().optional(), // Reference to another schema\n});\ntype 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});\ntype ResponseSchemaStructureType = z.infer<typeof ResponseSchemaStructure>;\n\nconst ResponseSchema = z\n .object({\n name: z\n .string()\n .regex(/^[a-zA-Z0-9_]{1,64}$/)\n .max(64),\n description: z.string().max(4096),\n strict: z.boolean().optional(),\n schema: ResponseSchemaStructure,\n })\n .optional();\ntype ResponseSchemaType = z.infer<typeof ResponseSchema>;\n\nexport {\n ResponseSchema,\n ResponseSchemaProperty,\n ResponseSchemaStructure,\n ResponseSchemaTypes,\n ResponseSchemaTypesLiteral,\n type ResponseSchemaTypesType,\n type ResponseSchemaType,\n type ResponseSchemaPropertyType,\n type ResponseSchemaStructureType,\n};\n","import { z } from \"zod\";\n\nconst EmbeddingTextModalityLiteral = \"text\" as const;\nconst EmbeddingTokenModalityLiteral = \"token\" as const;\n\nconst EmbeddingModalityLiterals = [EmbeddingTextModalityLiteral, EmbeddingTokenModalityLiteral] as const;\nconst EmbeddingModalityEnum = z.enum(EmbeddingModalityLiterals);\ntype EmbeddingModalityEnumType = z.infer<typeof EmbeddingModalityEnum>;\n\nconst TextEmbeddingRequests = z.array(z.string().min(1));\ntype TextEmbeddingRequestsType = z.infer<typeof TextEmbeddingRequests>;\n\nconst TokenEmbeddingRequests = z.array(z.array(z.number().int().nonnegative()));\ntype TokenEmbeddingRequestsType = z.infer<typeof TokenEmbeddingRequests>;\n\nconst EmbeddingRequests = <M extends z.ZodTypeAny = z.ZodUndefined>(Metadata: M = z.undefined() as M) =>\n z.discriminatedUnion(\"modality\", [\n z.object({\n modality: z.literal(EmbeddingTextModalityLiteral),\n metadata: Metadata,\n requests: TextEmbeddingRequests,\n }),\n z.object({\n modality: z.literal(EmbeddingTokenModalityLiteral),\n metadata: Metadata,\n requests: TokenEmbeddingRequests,\n }),\n ]);\ntype EmbeddingRequestsType<M extends z.ZodTypeAny = z.ZodUndefined> = z.infer<ReturnType<typeof EmbeddingRequests<M>>>;\n\nexport {\n EmbeddingTextModalityLiteral,\n EmbeddingTokenModalityLiteral,\n EmbeddingModalityLiterals,\n EmbeddingModalityEnum,\n TextEmbeddingRequests,\n TokenEmbeddingRequests,\n EmbeddingRequests,\n type EmbeddingRequestsType,\n type EmbeddingModalityEnumType,\n type TextEmbeddingRequestsType,\n type TokenEmbeddingRequestsType,\n};\n","import { z } from \"zod\";\n\nconst FloatEmbeddingLiteral = \"float\" as const;\nconst FloatEmbedding = z.object({\n index: z.number().int().nonnegative(),\n embedding: z.array(z.number()),\n});\ntype FloatEmbeddingType = z.infer<typeof FloatEmbedding>;\n\nconst Base64EmbeddingLiteral = \"base64\" as const;\nconst Base64Embedding = z.object({\n index: z.number().int().nonnegative(),\n embedding: z.string().base64(),\n});\ntype Base64EmbeddingType = z.infer<typeof Base64Embedding>;\n\nconst EmbeddingsUsage = z.object({\n totalTokens: z.number().int().nonnegative(),\n});\ntype EmbeddingsUsageType = z.infer<typeof EmbeddingsUsage>;\n\nconst EmbeddingResponse = z.discriminatedUnion(\"encodingFormat\", [\n z.object({\n encodingFormat: z.literal(FloatEmbeddingLiteral),\n embeddings: z.array(FloatEmbedding),\n usage: EmbeddingsUsage.optional(),\n }),\n z.object({\n encodingFormat: z.literal(Base64EmbeddingLiteral),\n embeddings: z.array(Base64Embedding),\n usage: EmbeddingsUsage.optional(),\n }),\n]);\ntype EmbeddingResponseType = z.infer<typeof EmbeddingResponse>;\n\nexport {\n FloatEmbeddingLiteral,\n Base64EmbeddingLiteral,\n FloatEmbedding,\n Base64Embedding,\n EmbeddingsUsage,\n EmbeddingResponse,\n type FloatEmbeddingType,\n type Base64EmbeddingType,\n type EmbeddingsUsageType,\n type EmbeddingResponseType,\n};\n","const safeStringify = (obj: unknown) => {\n const seen = new WeakSet();\n return JSON.stringify(obj, (key, value) => {\n if (typeof value === \"object\" && value !== null) {\n if (seen.has(value)) {\n return; // Skip circular reference\n }\n seen.add(value);\n }\n return value;\n });\n};\n\nconst getErrorMessage = (error: unknown | undefined): string => {\n if (error == null) return \"unknown error\";\n if (typeof error === \"string\") return error;\n if (error instanceof Error) return error.message;\n return safeStringify(error);\n};\n\nconst GatewayBaseErrorLiteral = \"GatewayBaseError\" as const;\nclass GatewayBaseError extends Error {\n readonly name: string = GatewayBaseErrorLiteral;\n readonly info: string;\n readonly cause: unknown;\n\n constructor({ info, cause }: { info: string; cause: unknown }, name?: string) {\n super(`[${name ?? GatewayBaseErrorLiteral}]: ${info}\\nMessage: ${getErrorMessage(cause)}`);\n this.info = info;\n this.cause = cause;\n this.name = name ?? GatewayBaseErrorLiteral;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n\n static isGatewayBaseError(error: unknown): error is GatewayBaseError {\n return error instanceof GatewayBaseError;\n }\n\n toJSON(): object {\n return {\n name: this.name,\n info: this.info,\n cause: this.cause,\n message: this.message,\n stack: this.stack,\n };\n }\n}\n\nexport { GatewayBaseError };\n","import { z } from \"zod\";\n\n/**\n * A pair of per‑million‑token rates for a single price category (e.g., base input/output).\n * Represents the input and output cost for 1 million tokens within a specific category (like 'base') of a pricing tier.\n */\nconst ChatModelTokenPairPrice = z\n .object({\n inputPricePerMillion: z.number().nonnegative().describe(\"Price per 1M input tokens\"),\n outputPricePerMillion: z.number().nonnegative().describe(\"Price per 1M output tokens\"),\n })\n .describe(\"Input/output price pair (per 1M tokens) for a specific category within a ChatModel pricing tier.\");\n\ntype ChatModelTokenPairPriceType = z.infer<typeof ChatModelTokenPairPrice>;\n\n/**\n * Defines the price categories (e.g., base) applicable within a single pricing tier (`ChatModelTokenRangePrice`).\n * Each category holds a `ChatModelTokenPairPrice`.\n */\nconst ChatModelTokenTypePrice = z\n .object({\n base: ChatModelTokenPairPrice.describe(\"Base (uncached, non‑reasoning) rates\"),\n // Add optional 'cached' and 'reasoning' here if they become standard\n })\n .describe(\"Holds the `ChatModelTokenPairPrice` for different categories (e.g., base) within a single pricing tier.\");\n\ntype ChatModelTokenTypePriceType = z.infer<typeof ChatModelTokenTypePrice>;\n\n/**\n * Defines a single tier in a model's pricing schedule (`ChatModelPrice`), based on token count range.\n * - `minTokens`: inclusive lower bound (integer ≥ 0).\n * - `maxTokens`: exclusive upper bound (integer > minTokens), or `null` for ∞.\n * - `prices`: the `ChatModelTokenTypePrice` (categories and their rates) applicable to this tier.\n */\nconst ChatModelTokenRangePrice = z\n .object({\n minTokens: z.number().int().nonnegative().describe(\"Inclusive lower token bound for this tier.\"),\n maxTokens: z.number().int().nullable().optional().describe(\"Exclusive upper token bound; `null` means ∞.\"),\n prices: ChatModelTokenTypePrice.describe(\"Price categories and rates for this specific token range.\"),\n })\n .refine((t) => t.maxTokens === null || (typeof t.maxTokens === \"number\" && t.maxTokens > t.minTokens), {\n message: \"maxTokens must be > minTokens (or null for infinite).\",\n path: [\"maxTokens\"],\n })\n .describe(\"A single pricing tier defined by a token range and associated prices.\");\n\ntype ChatModelTokenRangePriceType = z.infer<typeof ChatModelTokenRangePrice>;\n\n/**\n * Full pricing schedule for a specific chat model, potentially with multiple `ChatModelTokenRangePrice` tiers.\n * Ensures tiers are contiguous and cover the full range from 0 to infinity.\n * - First tier must start at 0 tokens.\n * - `tokenRanges` must be contiguous: each tier.minTokens === previous.maxTokens.\n * - Last `tokenRange` must have maxTokens = null (infinite).\n */\nconst ChatModelPrice = z\n .object({\n modelName: z.string().describe(\"Model name this schedule applies to.\"),\n currency: z.string().default(\"USD\").describe(\"Currency code (e.g., USD).\"),\n tokenRanges: z\n .array(ChatModelTokenRangePrice)\n .min(1)\n .describe(\"Pricing tiers (`ChatModelTokenRangePrice`) schedule, sorted by minTokens.\"),\n })\n .superRefine((data, ctx) => {\n const { tokenRanges } = data;\n\n // 1) First tier starts at 0\n if (tokenRanges[0].minTokens !== 0) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"tokenRanges\", 0, \"minTokens\"],\n message: \"The first tier must have minTokens = 0.\",\n });\n }\n\n // 2) tokenRanges must be sorted and contiguous\n for (let i = 1; i < tokenRanges.length; i++) {\n const prev = tokenRanges[i - 1];\n const curr = tokenRanges[i];\n\n if (prev.maxTokens === null) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"tokenRanges\", i - 1, \"maxTokens\"],\n message: \"Cannot define any tokenRanges after an infinite tier (maxTokens = null).\",\n });\n break; // Stop further checks if structure is already invalid\n }\n\n if (curr.minTokens !== prev.maxTokens) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"tokenRanges\", i, \"minTokens\"],\n message: `Tier ${i} minTokens (${curr.minTokens}) must equal previous tier's maxTokens (${prev.maxTokens}) for contiguity.`,\n });\n }\n\n // Ensure sorting (although contiguity check often implies this)\n if (curr.minTokens < prev.minTokens) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"tokenRanges\", i, \"minTokens\"],\n message: `tokenRanges must be sorted by ascending minTokens. Tier ${i} (${curr.minTokens}) starts before Tier ${i - 1} (${prev.minTokens}).`,\n });\n }\n }\n\n // 3) Last tier must be infinite\n const last = tokenRanges[tokenRanges.length - 1];\n // Check last.maxTokens only if the loop didn't break early due to a previous infinite tier\n if (tokenRanges.every((t) => t.maxTokens !== null || t === last) && last.maxTokens !== null) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"tokenRanges\", tokenRanges.length - 1, \"maxTokens\"],\n message: \"The final tier must have maxTokens = null (representing infinity).\",\n });\n }\n })\n .describe(\"Complete pricing schedule for a single chat model, including all its token-based tiers.\");\n\ntype ChatModelPriceType = z.infer<typeof ChatModelPrice>;\n\n// Export the schemas and types\nexport { ChatModelPrice, ChatModelTokenPairPrice, ChatModelTokenRangePrice, ChatModelTokenTypePrice };\nexport type { ChatModelPriceType, ChatModelTokenPairPriceType, ChatModelTokenRangePriceType, ChatModelTokenTypePriceType };\n","import { z } from \"zod\";\n\nconst FunctionToolLiteral = \"function\" as const;\n\nconst FunctionParameterTypes = [\"object\", \"array\", \"number\", \"string\", \"boolean\", \"null\"];\nconst FunctionParameterTypesLiteral = z.enum([\"object\", \"array\", \"number\", \"string\", \"boolean\", \"null\"]);\ntype FunctionParameterTypesType = z.infer<typeof FunctionParameterTypesLiteral>;\n\nconst FunctionParameter = z.object({\n anyOf: z.array(z.any()).optional(),\n type: FunctionParameterTypesLiteral.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});\ntype FunctionParameterType = z.infer<typeof FunctionParameter>;\n\nconst FunctionParameters = z.object({\n type: z.enum([\"object\"]),\n title: z.string().optional(),\n $defs: z.record(z.any()).optional(),\n properties: z.record(FunctionParameter).optional(),\n required: z.array(z.string()).optional(),\n});\ntype FunctionParametersType = z.infer<typeof FunctionParameters>;\n\nconst Function = 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 parameters: z.any(),\n strict: z.boolean().optional(),\n});\ntype FunctionType = z.infer<typeof Function>;\n\nconst ToolTypes = [\"function\"];\nconst ToolTypesLiteral = z.enum([\"function\"]);\ntype ToolTypesType = z.infer<typeof ToolTypesLiteral>;\n\nconst FunctionRequestRetry = z.object({\n maxAttempts: z.number().int().positive(),\n initialDelay: z.number().int().positive(),\n exponentialFactor: z.number().int().positive(),\n});\n\nconst FunctionRequestHttp = z.object({\n type: z.literal(\"http\"),\n method: z.enum([\"get\", \"post\"]),\n url: z.string().url(),\n headers: z.record(z.string()).optional(),\n query: z.record(z.string()).optional(),\n body: z.record(z.any()).optional(),\n proxyUrl: z.string().url().optional(),\n proxyHeaders: z.record(z.string()).optional(),\n retry: FunctionRequestRetry.optional(),\n});\n\nconst FunctionRequest = z.discriminatedUnion(\"type\", [FunctionRequestHttp]);\n\nconst FunctionTool = z.object({\n type: ToolTypesLiteral,\n definition: z.object({\n schema: Function,\n }),\n request: FunctionRequest.optional(),\n});\ntype FunctionToolType = z.infer<typeof FunctionTool>;\n\nexport {\n Function,\n FunctionParameter,\n FunctionParameters,\n FunctionParameterTypes,\n FunctionParameterTypesLiteral,\n FunctionRequestHttp,\n FunctionRequest,\n FunctionRequestRetry,\n ToolTypes,\n ToolTypesLiteral,\n type FunctionParametersType,\n type FunctionParameterType,\n type FunctionParameterTypesType,\n type FunctionType,\n type ToolTypesType,\n};\n\nexport { FunctionTool, FunctionToolLiteral, type FunctionToolType };\n","import { z } from \"zod\";\n\nimport { FunctionTool, FunctionToolLiteral } from \"./function-tool\";\n\nconst ToolLiterals = [FunctionToolLiteral] as const;\nconst ToolEnum = z.enum(ToolLiterals);\ntype ToolEnumType = z.infer<typeof ToolEnum>;\n\nconst Tool = <FTM extends z.ZodTypeAny>(FunctionToolMetadata: FTM = z.undefined() as FTM) =>\n z.discriminatedUnion(\"type\", [FunctionTool.extend({ metadata: FunctionToolMetadata })]);\ntype ToolType<FTM extends z.ZodTypeAny = z.ZodUndefined> = z.infer<ReturnType<typeof Tool<FTM>>>;\n\nexport { Tool, ToolEnum, ToolLiterals, type ToolEnumType, type ToolType };\n","import {\n Base64ImageContentTypeLiteral,\n ContentType,\n ImageContent,\n ImageContentDetailsLiteralType,\n ImageModalityLiteral,\n Message,\n MessageType,\n PartialMessage,\n PartialMessageType,\n PartialReasoningContent,\n PartialReasoningModalityLiteral,\n PartialTextContent,\n PartialTextModalityLiteral,\n PartialToolCallContent,\n PartialToolCallModalityLiteral,\n ReasoningContent,\n ReasoningContentTypeLiteral,\n ReasoningModalityLiteral,\n RedactedReasoningContentTypeLiteral,\n RoleEnumType,\n TextContent,\n TextModalityLiteral,\n ToolCallContent,\n ToolCallModalityLiteral,\n ToolResponseContent,\n ToolResponseModalityLiteral,\n UrlImageContentTypeLiteral,\n} from \"./../message\";\n\nconst createTextContent = (content: string): ContentType => {\n return TextContent().parse({\n modality: TextModalityLiteral,\n value: content,\n });\n};\n\nconst createToolCallContent = (index: number, id: string, name: string, args: string): ContentType => {\n return ToolCallContent().parse({\n modality: ToolCallModalityLiteral,\n index: index,\n id: id,\n name: name,\n arguments: args,\n });\n};\n\nconst createTextMessage = (role: RoleEnumType, content: string): MessageType => {\n return Message().parse({\n role: role,\n content: [\n TextContent().parse({\n modality: TextModalityLiteral,\n value: content,\n }),\n ],\n });\n};\n\nconst createUrlImageMessage = (role: RoleEnumType, url: string, detail: ImageContentDetailsLiteralType): MessageType => {\n return Message().parse({\n role: role,\n content: [\n ImageContent().parse({\n modality: ImageModalityLiteral,\n detail: detail,\n value: {\n type: UrlImageContentTypeLiteral,\n url: url,\n },\n }),\n ],\n });\n};\n\nconst createBase64ImageMessage = (role: RoleEnumType, base64: string, detail: ImageContentDetailsLiteralType): MessageType => {\n return Message().parse({\n role: role,\n content: [\n ImageContent().parse({\n modality: ImageModalityLiteral,\n detail: detail,\n value: {\n type: Base64ImageContentTypeLiteral,\n base64: base64,\n },\n }),\n ],\n });\n};\n\nconst createToolCallMessage = (role: RoleEnumType, index: number, id: string, name: string, args: string): MessageType => {\n return Message().parse({\n role: role,\n content: [\n ToolCallContent().parse({\n modality: ToolCallModalityLiteral,\n index: index,\n id: id,\n name: name,\n arguments: args,\n }),\n ],\n });\n};\n\nconst createToolResponseMessage = (role: RoleEnumType, index: number, id: string, name: string, data: string): MessageType => {\n return Message().parse({\n role: role,\n content: [\n ToolResponseContent().parse({\n modality: ToolResponseModalityLiteral,\n index: index,\n id: id,\n name: name,\n data: data,\n }),\n ],\n });\n};\n\nconst createPartialTextMessage = (role: RoleEnumType, content: string): PartialMessageType => {\n return PartialMessage().parse({\n role: role,\n partialContent: PartialTextContent().parse({\n modality: PartialTextModalityLiteral,\n value: content,\n }),\n });\n};\n\nconst createPartialToolCallMessage = (role: RoleEnumType, index: number, id?: string, name?: string, args?: string): PartialMessageType => {\n return PartialMessage().parse({\n role: role,\n partialContent: PartialToolCallContent().parse({\n modality: PartialToolCallModalityLiteral,\n index: index,\n id: id,\n name: name,\n arguments: args,\n }),\n });\n};\n\nconst createReasoningContent = (thinking: string, signature: string): ContentType => {\n return ReasoningContent().parse({\n modality: ReasoningModalityLiteral,\n value: {\n type: ReasoningContentTypeLiteral,\n thinking,\n signature,\n },\n });\n};\n\nconst createReasoningMessage = (role: RoleEnumType, thinking: string, signature: string): MessageType => {\n return Message().parse({\n role: role,\n content: [\n ReasoningContent().parse({\n modality: ReasoningModalityLiteral,\n value: {\n type: ReasoningContentTypeLiteral,\n thinking,\n signature,\n },\n }),\n ],\n });\n};\n// Redacted Reasoning Content\nconst createRedactedReasoningContent = (data: string): ContentType => {\n return ReasoningContent().parse({\n modality: ReasoningModalityLiteral,\n value: {\n type: RedactedReasoningContentTypeLiteral,\n data,\n },\n });\n};\n\nconst createRedactedReasoningMessage = (role: RoleEnumType, data: string): MessageType => {\n return Message().parse({\n role: role,\n content: [\n ReasoningContent().parse({\n modality: ReasoningModalityLiteral,\n value: {\n type: RedactedReasoningContentTypeLiteral,\n data,\n },\n }),\n ],\n });\n};\n\nconst createPartialReasoningMessage = (role: RoleEnumType, thinking?: string, signature?: string): PartialMessageType => {\n return PartialMessage().parse({\n role: role,\n partialContent: PartialReasoningContent().parse({\n modality: PartialReasoningModalityLiteral,\n value: {\n type: ReasoningContentTypeLiteral,\n thinking,\n signature,\n },\n // metadata is optional; omit or provide if needed\n }),\n });\n};\n\n// Create a partial redacted reasoning message\nconst createPartialRedactedReasoningMessage = (role: RoleEnumType, data: string): PartialMessageType => {\n return PartialMessage().parse({\n role: role,\n partialContent: PartialReasoningContent().parse({\n modality: PartialReasoningModalityLiteral,\n value: {\n type: RedactedReasoningContentTypeLiteral,\n data,\n },\n // metadata is optional; omit or provide if needed\n }),\n });\n};\n\nexport {\n createBase64ImageMessage,\n createPartialReasoningMessage,\n createPartialRedactedReasoningMessage,\n createPartialTextMessage,\n createPartialToolCallMessage,\n createReasoningContent,\n createReasoningMessage,\n createRedactedReasoningContent,\n createRedactedReasoningMessage,\n createTextContent,\n createTextMessage,\n createToolCallContent,\n createToolCallMessage,\n createToolResponseMessage,\n createUrlImageMessage,\n};\n","import { GatewayBaseError } from \"@adaline/types\";\n\nconst ProviderErrorLiteral = \"ProviderError\" as const;\nexport class ProviderError extends GatewayBaseError {\n readonly name = ProviderErrorLiteral;\n readonly info: string;\n readonly cause: unknown;\n\n constructor({ info, cause }: { info: string; cause: unknown }) {\n super({ info, cause }, ProviderErrorLiteral);\n this.info = info;\n this.cause = cause;\n }\n\n static isProviderError(error: unknown): error is ProviderError {\n return error instanceof ProviderError;\n }\n}\n","import { GatewayBaseError } from \"@adaline/types\";\n\nconst ModelResponseErrorLiteral = \"ModelResponseError\" as const;\nexport class ModelResponseError extends GatewayBaseError {\n readonly name = ModelResponseErrorLiteral;\n readonly info: string;\n readonly cause: unknown;\n\n constructor({ info, cause }: { info: string; cause: unknown }) {\n super({ info, cause }, ModelResponseErrorLiteral);\n this.cause = cause;\n this.info = info;\n }\n\n static isModelResponseError(error: unknown): error is ModelResponseError {\n return error instanceof ModelResponseError;\n }\n}\n","import { GatewayBaseError } from \"@adaline/types\";\n\nconst InvalidModelRequestErrorLiteral = \"InvalidModelRequestError\" as const;\nexport class InvalidModelRequestError extends GatewayBaseError {\n readonly name = InvalidModelRequestErrorLiteral;\n readonly info: string;\n readonly cause: unknown;\n\n constructor({ info, cause }: { info: string; cause: unknown }) {\n super({ info, cause }, InvalidModelRequestErrorLiteral);\n this.cause = cause;\n this.info = info;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n\n static isInvalidModelRequestError(error: unknown): error is InvalidModelRequestError {\n return error instanceof InvalidModelRequestError;\n }\n}\n","import { GatewayBaseError } from \"@adaline/types\";\n\nconst InvalidConfigErrorLiteral = \"InvalidConfigError\" as const;\nexport class InvalidConfigError extends GatewayBaseError {\n readonly name = InvalidConfigErrorLiteral;\n readonly info: string;\n readonly cause: unknown;\n\n constructor({ info, cause }: { info: string; cause: unknown }) {\n super({ info, cause }, InvalidConfigErrorLiteral);\n this.cause = cause;\n this.info = info;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n\n static isInvalidConfigError(error: unknown): error is InvalidConfigError {\n return error instanceof InvalidConfigError;\n }\n}\n","import { GatewayBaseError } from \"@adaline/types\";\n\nconst InvalidMessagesErrorLiteral = \"InvalidMessagesError\" as const;\nexport class InvalidMessagesError extends GatewayBaseError {\n readonly name = InvalidMessagesErrorLiteral;\n readonly info: string;\n readonly cause: unknown;\n\n constructor({ info, cause }: { info: string; cause: unknown }) {\n super({ info, cause }, InvalidMessagesErrorLiteral);\n this.cause = cause;\n this.info = info;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n\n static isInvalidMessagesError(error: unknown): error is InvalidMessagesError {\n return error instanceof InvalidMessagesError;\n }\n}\n","import { GatewayBaseError } from \"@adaline/types\";\n\nconst InvalidToolsErrorLiteral = \"InvalidToolsError\" as const;\nexport class InvalidToolsError extends GatewayBaseError {\n readonly name = InvalidToolsErrorLiteral;\n readonly info: string;\n readonly cause: unknown;\n\n constructor({ info, cause }: { info: string; cause: unknown }) {\n super({ info, cause }, InvalidToolsErrorLiteral);\n this.cause = cause;\n this.info = info;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n\n static isInvalidToolsError(error: unknown): error is InvalidToolsError {\n return error instanceof InvalidToolsError;\n }\n}\n","import { z } from \"zod\";\n\nconst MultiStringConfigItemTypeLiteral = \"multi-string\" as const;\n\nconst MultiStringConfigItemDef = z.object({\n type: z.literal(MultiStringConfigItemTypeLiteral),\n param: z.string().min(1),\n title: z.string().min(1),\n description: z.string().min(1).max(500),\n max: z.number().int().positive(),\n});\ntype MultiStringConfigItemType = z.infer<typeof MultiStringConfigItemDef>;\n\nconst MultiStringConfigItemSchema = (max: number) => z.array(z.string()).max(max).default([]).optional();\ntype MultiStringConfigItemSchemaType = z.infer<ReturnType<typeof MultiStringConfigItemSchema>>;\n\nconst MultiStringConfigItem = (data: Omit<MultiStringConfigItemType, \"type\">) => {\n return {\n def: MultiStringConfigItemDef.parse({\n type: MultiStringConfigItemTypeLiteral,\n ...data,\n }),\n schema: MultiStringConfigItemSchema(data.max),\n };\n};\n\nexport {\n MultiStringConfigItem,\n MultiStringConfigItemDef,\n MultiStringConfigItemSchema,\n MultiStringConfigItemTypeLiteral,\n type MultiStringConfigItemSchemaType,\n type MultiStringConfigItemType,\n};\n","import { z } from \"zod\";\n\nconst ObjectSchemaConfigItemTypeLiteral = \"object-schema\" as const;\n\nconst ObjectSchemaConfigItemDef = z.object({\n type: z.literal(ObjectSchemaConfigItemTypeLiteral),\n param: z.string().min(1),\n title: z.string().min(1),\n description: z.string().min(1).max(500),\n objectSchema: z.any(),\n});\ntype ObjectSchemaConfigItemType = z.infer<typeof ObjectSchemaConfigItemDef>;\n\nconst ObjectSchemaConfigItemSchema = <S extends z.ZodRawShape>(schema: z.ZodObject<S>) => schema.optional();\ntype ObjectSchemaConfigItemSchemaType<S extends z.ZodRawShape = z.ZodRawShape> = z.infer<\n ReturnType<typeof ObjectSchemaConfigItemSchema<S>>\n>;\n\nconst ObjectSchemaConfigItem = (data: Omit<ObjectSchemaConfigItemType, \"type\">) => {\n return {\n def: ObjectSchemaConfigItemDef.parse({\n type: ObjectSchemaConfigItemTypeLiteral,\n ...data,\n }),\n schema: ObjectSchemaConfigItemSchema(data.objectSchema),\n };\n};\n\nexport {\n ObjectSchemaConfigItem,\n ObjectSchemaConfigItemDef,\n ObjectSchemaConfigItemSchema,\n ObjectSchemaConfigItemTypeLiteral,\n type ObjectSchemaConfigItemType,\n type ObjectSchemaConfigItemSchemaType,\n};\n","import { z } from \"zod\";\n\nconst RangeConfigItemTypeLiteral = \"range\" as const;\n\nconst RangeConfigItemDef = z.object({\n type: z.literal(RangeConfigItemTypeLiteral),\n param: z.string().min(1),\n title: z.string().min(1),\n description: z.string().min(1).max(500),\n min: z.number().int(),\n max: z.number().int(),\n step: z.number().positive(),\n default: z.number(),\n});\ntype RangeConfigItemDefType = z.infer<typeof RangeConfigItemDef>;\n\nconst RangeConfigItemSchema = (min: number, max: number, step: number, defaultValue: number) =>\n z.number().min(min).max(max).step(step).default(defaultValue).optional();\ntype RangeConfigItemSchemaType = z.infer<ReturnType<typeof RangeConfigItemSchema>>;\n\nconst RangeConfigItem = (data: Omit<RangeConfigItemDefType, \"type\">) => {\n return {\n def: RangeConfigItemDef.parse({\n type: RangeConfigItemTypeLiteral,\n ...data,\n }),\n schema: RangeConfigItemSchema(data.min, data.max, data.step, data.default),\n };\n};\n\nexport {\n RangeConfigItem,\n RangeConfigItemDef,\n RangeConfigItemSchema,\n RangeConfigItemTypeLiteral,\n type RangeConfigItemDefType,\n type RangeConfigItemSchemaType,\n};\n","import { z } from \"zod\";\n\nconst SelectBooleanConfigItemTypeLiteral = \"select-boolean\" as const;\n\nconst SelectBooleanConfigItemDef = z.object({\n type: z.literal(SelectBooleanConfigItemTypeLiteral),\n param: z.string().min(1),\n title: z.string().min(1),\n description: z.string().min(1).max(500),\n default: z.boolean().nullable(),\n});\ntype SelectBooleanConfigItemDefType = z.infer<typeof SelectBooleanConfigItemDef>;\n\nconst SelectBooleanConfigItemSchema = (defaultValue: boolean | null) => z.boolean().nullable().default(defaultValue).optional();\ntype SelectBooleanConfigItemSchemaType = z.infer<ReturnType<typeof SelectBooleanConfigItemSchema>>;\n\nconst SelectBooleanConfigItem = (data: Omit<SelectBooleanConfigItemDefType, \"type\">) => {\n return {\n def: SelectBooleanConfigItemDef.parse({\n type: SelectBooleanConfigItemTypeLiteral,\n ...data,\n }),\n schema: SelectBooleanConfigItemSchema(data.default),\n };\n};\n\nexport {\n SelectBooleanConfigItem,\n SelectBooleanConfigItemDef,\n SelectBooleanConfigItemSchema,\n SelectBooleanConfigItemTypeLiteral,\n type SelectBooleanConfigItemDefType,\n type SelectBooleanConfigItemSchemaType,\n};\n","import { z } from \"zod\";\n\nconst SelectStringConfigItemTypeLiteral = \"select-string\" as const;\n\nconst SelectStringConfigItemDef = z.object({\n type: z.literal(SelectStringConfigItemTypeLiteral),\n param: z.string().min(1),\n title: z.string().min(1),\n description: z.string().min(1).max(500),\n default: z.string(),\n choices: z.array(z.string()),\n});\ntype SelectStringConfigItemDefType = z.infer<typeof SelectStringConfigItemDef>;\n\nconst SelectStringConfigItemSchema = (defaultValue: string | null, choices: string[]) =>\n z\n .enum(choices as [string, ...string[]])\n .nullable()\n .default(defaultValue)\n .optional();\ntype SelectStringConfigItemSchemaType = z.infer<ReturnType<typeof SelectStringConfigItemSchema>>;\n\nconst SelectStringConfigItem = (data: Omit<SelectStringConfigItemDefType, \"type\">) => {\n return {\n def: SelectStringConfigItemDef.parse({\n type: SelectStringConfigItemTypeLiteral,\n ...data,\n }),\n schema: SelectStringConfigItemSchema(data.default, data.choices),\n };\n};\n\nexport {\n SelectStringConfigItem,\n SelectStringConfigItemDef,\n SelectStringConfigItemSchema,\n SelectStringConfigItemTypeLiteral,\n type SelectStringConfigItemDefType,\n type SelectStringConfigItemSchemaType,\n};\n","import { z } from \"zod\";\n\nimport { MultiStringConfigItemDef, MultiStringConfigItemTypeLiteral } from \"./multi-string-config-item\";\nimport { ObjectSchemaConfigItemDef, ObjectSchemaConfigItemTypeLiteral } from \"./object-schema-config-item\";\nimport { RangeConfigItemDef, RangeConfigItemTypeLiteral } from \"./range-config-item\";\nimport { SelectBooleanConfigItemDef, SelectBooleanConfigItemTypeLiteral } from \"./select-boolean-config-item\";\nimport { SelectStringConfigItemDef, SelectStringConfigItemTypeLiteral } from \"./select-string-config-item\";\n\nconst ConfigItemLiterals = [\n RangeConfigItemTypeLiteral,\n MultiStringConfigItemTypeLiteral,\n SelectStringConfigItemTypeLiteral,\n ObjectSchemaConfigItemTypeLiteral,\n SelectBooleanConfigItemTypeLiteral,\n] as const;\nconst ConfigItemEnum = z.enum(ConfigItemLiterals);\ntype ConfigItemEnumType = z.infer<typeof ConfigItemEnum>;\n\nconst ConfigItemDef = z.discriminatedUnion(\"type\", [\n RangeConfigItemDef,\n MultiStringConfigItemDef,\n SelectStringConfigItemDef,\n SelectBooleanConfigItemDef,\n ObjectSchemaConfigItemDef,\n]);\ntype ConfigItemDefType = z.infer<typeof ConfigItemDef>;\n\nexport { ConfigItemDef, ConfigItemEnum, ConfigItemLiterals, type ConfigItemDefType, type ConfigItemEnumType };\n","import { z } from \"zod\";\n\nimport { ChatModelPriceType, ModalityEnum, RoleEnum } from \"@adaline/types\";\n\nimport { ConfigItemDef } from \"../../types/config\";\n\nconst ChatModelSchema = <\n R extends z.ZodEnum<[string, ...string[]]> = typeof RoleEnum,\n M extends z.ZodEnum<[string, ...string[]]> = typeof ModalityEnum,\n>(\n Roles: R = RoleEnum as unknown as R,\n Modalities: M = ModalityEnum as unknown as M\n) =>\n z.object({\n name: z.string().min(1),\n description: z.string().min(1),\n roles: z.record(Roles, z.string().min(1).optional()),\n modalities: z.array(Modalities).nonempty(),\n maxInputTokens: z.number().int().positive().min(1),\n maxOutputTokens: z.number().int().positive().min(1),\n maxReasoningTokens: z.number().int().positive().min(1).optional(),\n config: z\n .object({\n def: z.record(z.string().min(1), ConfigItemDef),\n schema: z.instanceof(z.ZodObject),\n })\n .refine(\n (config) => {\n const defKeys = Object.keys(config.def);\n const schemaKeys = Object.keys(config.schema?.shape ?? {});\n return defKeys.every((key) => schemaKeys.includes(key)) && schemaKeys.every((key) => defKeys.includes(key));\n },\n {\n message: \"Keys in 'config.def' must exactly match keys in 'config.schema'\",\n }\n ),\n price: z.custom<ChatModelPriceType>(),\n });\ntype ChatModelSchemaType<\n R extends z.ZodEnum<[string, ...string[]]> = typeof RoleEnum,\n M extends z.ZodEnum<[string, ...string[]]> = typeof ModalityEnum,\n> = z.infer<ReturnType<typeof ChatModelSchema<R, M>>>;\n\nexport { ChatModelSchema, type ChatModelSchemaType };\n","import { z } from \"zod\";\n\nconst Headers = z.record(z.string());\ntype HeadersType = z.infer<typeof Headers>;\n\nexport { Headers, type HeadersType };\n","import { z } from \"zod\";\n\nconst Params = z.record(\n z.union([\n z.boolean(),\n z.string(),\n z.number(),\n z.object({}),\n z.array(z.any()),\n z.null(),\n z.undefined(),\n ])\n);\ntype ParamsType = z.infer<typeof Params>;\n\nexport { Params, type ParamsType };\n","import { z } from \"zod\";\n\nconst Url = z.string().url();\ntype UrlType = z.infer<typeof Url>;\n\nexport { Url, type UrlType };\n","const TEMPERATURE = {\n type: \"range\",\n title: \"Temperature\",\n description:\n \"Adjusts the model's creativity level. With a setting of 0, the model strictly picks the most probable next word. \\\n For endeavors that benefit from a dash of inventiveness, consider dialing it up to 0.7 or higher, enabling the model to produce text \\\n that's unexpectedly fresh.\",\n} as const;\n\nconst MAX_TOKENS = {\n type: \"range\",\n title: \"Max tokens\",\n description:\n \"Specify the total tokens for generation, where one token approximates four English characters. \\\n Setting this to 0 defaults to the model's maximum capacity.\",\n} as const;\n\nconst MAX_REASONING_TOKENS = {\n type: \"range\",\n title: \"Max reasoning tokens\",\n description:\n \"Specify the total tokens for reasoning, where one token approximates four English characters.\",\n} as const;\n\nconst STOP = (max: number) =>\n ({\n type: \"multi\",\n title: \"Stop sequence\",\n description: `Enter up to ${max} sequences that will halt additional text output. \\\n The generated text will exclude these sequences.`,\n }) as const;\n\nconst TOP_A = {\n type: \"range\",\n title: \"Top A\",\n description:\n \"Considers only the top tokens that have 'sufficiently high' probabilities relative to the most likely token, \\\n functioning like a dynamic Top-P. \\\n A lower Top-A value narrows down the token choices based on the highest probability token, \\\n while a higher Top-A value refines the filtering without necessarily impacting the creativity of the output.\",\n} as const;\n\nconst TOP_P = {\n type: \"range\",\n title: \"Top P\",\n description:\n \"Selects a subset of likely tokens for generation, restricting choices to the top-P fraction of possibilities, \\\n such as the top 10% when P=0.1. \\\n This approach can limit the variety of the output. By default, it's set to 1, indicating no restriction. \\\n It's advised to adjust this parameter or temperature to modulate output diversity, but not to modify both simultaneously.\",\n} as const;\n\nconst TOP_K = {\n type: \"range\",\n title: \"Top K\",\n description:\n \"Select only from the highest K probabilities for each following word, effectively eliminating the less likely 'long tail' options.\",\n} as const;\n\nconst MIN_P = {\n type: \"range\",\n title: \"Min P\",\n description:\n \"Specifies the minimum probability a token must have to be considered, in relation to the probability of the most likely token. \\\n (This value varies based on the confidence level of the top token.) \\\n For example, if Min-P is set to 0.1, only tokens with at least 1/10th the probability of the highest-ranked token will be considered.\",\n} as const;\n\nconst FREQUENCY_PENALTY = {\n type: \"range\",\n title: \"Frequency penalty\",\n description:\n \"Minimize redundancy.\\\n By assigning a penalty to frequently used tokens within the text, the likelihood of repeating identical phrases is reduced. \\\n The default setting for this penalty is zero.\",\n} as const;\n\nconst PRESENCE_PENALTY = {\n type: \"range\",\n title: \"Presence penalty\",\n description:\n \"Enhance the introduction of novel subjects by reducing the preference for tokens that have already appeared in the text, \\\n thus boosting the chances of exploring fresh topics. \\\n The standard setting for this is zero.\",\n} as const;\n\nconst SEED = {\n type: \"range\",\n title: \"Seed\",\n description:\n \"When seed is fixed to a specific value, the model makes a best effort to provide the same response for repeated requests. \\\n Deterministic output isn't guaranteed. \\\n Also, changing the model or parameter settings, such as the temperature, \\\n can cause variations in the response even when you use the same seed value. \\\n By default, a random seed value is used.\",\n} as const;\n\nconst REPETITION_PENALTY = {\n type: \"range\",\n title: \"Repetition penalty\",\n description:\n \"Reduces the likelihood of repeating tokens from the input. \\\n Increasing this value makes the model less prone to repetition, but setting it too high may lead to less coherent output, \\\n often resulting in run-on sentences missing smaller words. \\\n The token penalty is scaled according to the original token's probability.\",\n} as const;\n\nconst LOG_PROBS = {\n type: \"boolean\",\n title: \"Log probs\",\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} as const;\n\nconst TOP_LOG_PROBS = {\n type: \"range\",\n title: \"Top log probs\",\n description:\n \"The number of most likely tokens to return at each token position, each with an associated log probability. \\\n 'logprobs' must be set to true if this parameter is used.\",\n} as const;\n\nconst ECHO = {\n type: \"boolean\",\n title: \"Echo\",\n description: \"If true, the response will contain the prompt.\",\n} as const;\n\nconst RESPONSE_FORMAT = {\n type: \"select\",\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} as const;\n\nconst RESPONSE_FORMAT_WITH_SCHEMA = {\n type: \"select\",\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} as const;\n\nconst RESPONSE_SCHEMA = {\n type: \"object\",\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} as const;\n\nconst CHAT_CONFIG = {\n TEMPERATURE,\n MAX_TOKENS,\n STOP,\n TOP_A,\n TOP_P,\n TOP_K,\n MIN_P,\n FREQUENCY_PENALTY,\n PRESENCE_PENALTY,\n REPETITION_PENALTY,\n SEED,\n LOG_PROBS,\n TOP_LOG_PROBS,\n ECHO,\n RESPONSE_FORMAT,\n RESPONSE_FORMAT_WITH_SCHEMA,\n RESPONSE_SCHEMA,\n MAX_REASONING_TOKENS,\n};\n\nexport { CHAT_CONFIG };\n","const removeUndefinedEntries = <T = unknown>(record: Record<string, T | undefined>): Record<string, T> => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n return Object.fromEntries(Object.entries(record).filter(([_, value]) => value != null)) as Record<string, T>;\n};\n\nexport { removeUndefinedEntries };\n","const isRunningInBrowser = () => {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n return typeof window !== \"undefined\" && typeof window.document !== \"undefined\" && typeof navigator !== \"undefined\";\n};\n\nexport { isRunningInBrowser };\n","import { isRunningInBrowser } from \"./is-running-in-browser\";\n\nconst convertBase64ToUint8Array = (base64String: string): Uint8Array => {\n const base64Url = base64String.replace(/-/g, \"+\").replace(/_/g, \"/\");\n const latin1string = globalThis.atob(base64Url);\n return Uint8Array.from(latin1string, (byte) => byte.codePointAt(0)!);\n};\n\nconst convertUint8ArrayToBase64 = (array: Uint8Array): string => {\n let latin1string = \"\";\n\n // Note: regular for loop to support older JavaScript versions that\n // do not support for..of on Uint8Array\n for (let i = 0; i < array.length; i++) {\n latin1string += String.fromCodePoint(array[i]);\n }\n\n return globalThis.btoa(latin1string);\n};\n\nconst encodedBase64ToString = (base64: string): string => {\n if (isRunningInBrowser()) {\n const binaryString = atob(base64);\n const bytes = new Uint8Array(binaryString.length);\n for (let i = 0; i < binaryString.length; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n const decoder = new TextDecoder(\"utf-8\");\n return decoder.decode(bytes);\n } else {\n return Buffer.from(base64, \"base64\").toString(\"utf-8\");\n }\n};\n\nconst getMimeTypeFromBase64 = (base64: string): string => {\n const mimeTypePrefix = base64.split(\";\")[0];\n const mimeType = mimeTypePrefix.split(\"/\")[1];\n return mimeType;\n};\n\nexport { convertBase64ToUint8Array, convertUint8ArrayToBase64, encodedBase64ToString, getMimeTypeFromBase64 };\n","const urlWithoutTrailingSlash = (url: string): string => {\n return url?.replace(/\\/$/, \"\");\n};\n\nexport { urlWithoutTrailingSlash };\n","import { CHAT_CONFIG, MultiStringConfigItem, RangeConfigItem, SelectBooleanConfigItem, SelectStringConfigItem } from \"@adaline/provider\";\n\nconst temperature = RangeConfigItem({\n param: \"temperature\",\n title: CHAT_CONFIG.TEMPERATURE.title,\n description: CHAT_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: CHAT_CONFIG.MAX_TOKENS.title,\n description: CHAT_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: CHAT_CONFIG.STOP(maxSequences).title,\n description: CHAT_CONFIG.STOP(maxSequences).description,\n max: maxSequences,\n });\n\nconst topA = RangeConfigItem({\n param: \"top_a\",\n title: CHAT_CONFIG.TOP_A.title,\n description: CHAT_CONFIG.TOP_A.description,\n min: 0,\n max: 1,\n step: 0.01,\n default: 0,\n});\n\nconst topK = RangeConfigItem({\n param: \"top_k\",\n title: CHAT_CONFIG.TOP_K.title,\n description: CHAT_CONFIG.TOP_K.description,\n min: 0,\n max: 100,\n step: 1,\n default: 0,\n});\n\nconst topP = RangeConfigItem({\n param: \"top_p\",\n title: CHAT_CONFIG.TOP_P.title,\n description: CHAT_CONFIG.TOP_P.description,\n min: 0,\n max: 1,\n step: 0.01,\n default: 1,\n});\n\nconst minP = RangeConfigItem({\n param: \"min_p\",\n title: CHAT_CONFIG.MIN_P.title,\n description: CHAT_CONFIG.MIN_P.description,\n min: 0,\n max: 1,\n step: 0.01,\n default: 0,\n});\n\nconst frequencyPenalty = RangeConfigItem({\n param: \"frequency_penalty\",\n title: CHAT_CONFIG.FREQUENCY_PENALTY.title,\n description: CHAT_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: CHAT_CONFIG.PRESENCE_PENALTY.title,\n description: CHAT_CONFIG.PRESENCE_PENALTY.description,\n min: -2,\n max: 2,\n step: 0.01,\n default: 0,\n});\n\nconst repetitionPenalty = RangeConfigItem({\n param: \"repetition_penalty\",\n title: CHAT_CONFIG.REPETITION_PENALTY.title,\n description: CHAT_CONFIG.REPETITION_PENALTY.description,\n min: 0,\n max: 2,\n step: 0.01,\n default: 0,\n});\n\nconst seed = RangeConfigItem({\n param: \"seed\",\n title: CHAT_CONFIG.SEED.title,\n description: CHAT_CONFIG.SEED.description,\n min: 0,\n max: 1000000,\n step: 1,\n default: 0,\n});\n\nconst logProbs = SelectBooleanConfigItem({\n param: \"logprobs\",\n title: CHAT_CONFIG.LOG_PROBS.title,\n description: CHAT_CONFIG.LOG_PROBS.description,\n default: false,\n});\n\nconst topLogProbs = RangeConfigItem({\n param: \"top_logprobs\",\n title: CHAT_CONFIG.TOP_LOG_PROBS.title,\n description: CHAT_CONFIG.TOP_LOG_PROBS.description,\n min: 0,\n max: 20,\n step: 1,\n default: 0,\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. \\\n 'none' means the model will not call a function. \\\n 'auto' means the model can pick between generating a message or calling a tool.\",\n default: \"auto\",\n choices: [\"auto\", \"required\", \"none\"],\n});\n\nconst responseFormat = SelectStringConfigItem({\n param: \"response_format\",\n title: CHAT_CONFIG.RESPONSE_FORMAT.title,\n description: CHAT_CONFIG.RESPONSE_FORMAT.description,\n default: \"text\",\n choices: [\"text\", \"json_object\"],\n});\n\nexport {\n frequencyPenalty,\n logProbs,\n maxTokens,\n presencePenalty,\n repetitionPenalty,\n seed,\n stop,\n temperature,\n toolChoice,\n topLogProbs,\n topP,\n topA,\n topK,\n minP,\n responseFormat,\n};\n","import { ChatModelBaseConfigDef, ChatModelBaseConfigSchema } from \"./chat-model\";\n\nconst OpenRouterChatModelConfigs = {\n base: (maxOutputTokens: number, maxSequences: number) => ({\n def: ChatModelBaseConfigDef(maxOutputTokens, maxSequences),\n schema: ChatModelBaseConfigSchema(maxOutputTokens, maxSequences),\n }),\n} as const;\n\nexport { OpenRouterChatModelConfigs };\n","import { z } from \"zod\";\n\nimport { ChatModelSchemaType, ChatModelV1, EmbeddingModelSchemaType, EmbeddingModelV1, ProviderError, ProviderV1 } from \"@adaline/provider\";\n\nimport { BaseChatModel, BaseChatModelOptions, BaseChatModelSchema, type BaseChatModelOptionsType } from \"../models/chat-models\";\n\nconst ProviderLiteral = \"open-router\";\nclass OpenRouter<C extends BaseChatModelOptionsType, E extends Record<string, any> = Record<string, any>> implements ProviderV1<C, E> {\n readonly version = \"v1\" as const;\n readonly name = ProviderLiteral;\n static readonly baseUrl = \"https://openrouter.ai/api/v1\";\n\n private readonly embeddingModelFactories: Record<\n string,\n {\n model: { new (options: any): EmbeddingModelV1 };\n modelOptions: z.ZodType<any>;\n modelSchema: EmbeddingModelSchemaType;\n }\n > = {};\n\n chatModelLiterals(): string[] {\n return [\"__base__\"];\n }\n\n chatModelSchemas(): Record<string, ChatModelSchemaType> {\n return {\n __base__: BaseChatModelSchema,\n };\n }\n\n chatModel(options: C): ChatModelV1 {\n const model = BaseChatModel;\n const parsedOptions = BaseChatModelOptions.parse(options);\n return new model(BaseChatModelSchema, parsedOptions);\n }\n\n embeddingModelLiterals(): string[] {\n return Object.keys(this.embeddingModelFactories);\n }\n\n embeddingModelSchemas(): Record<string, EmbeddingModelSchemaType> {\n return Object.keys(this.embeddingModelFactories).reduce(\n (acc, key) => {\n acc[key] = this.embeddingModelFactories[key].modelSchema;\n return acc;\n },\n {} as Record<string, EmbeddingModelSchemaType>\n );\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n embeddingModel(options: E): EmbeddingModelV1 {\n throw new ProviderError({\n info: \"Open Router does not support embedding models yet\",\n cause: new Error(\"Open Router does not support embedding models yet\"),\n });\n }\n}\n\nexport { OpenRouter };\n","{\n \"microsoft/mai-ds-r1:free\": {\n \"modelName\": \"microsoft/mai-ds-r1:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"google/gemini-2.5-pro-preview-03-25\": {\n \"modelName\": \"google/gemini-2.5-pro-preview-03-25\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1.25,\n \"outputPricePerMillion\": 10\n }\n }\n }\n ]\n },\n \"thudm/glm-z1-32b:free\": {\n \"modelName\": \"thudm/glm-z1-32b:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"thudm/glm-4-32b:free\": {\n \"modelName\": \"thudm/glm-4-32b:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"google/gemini-2.5-flash-preview\": {\n \"modelName\": \"google/gemini-2.5-flash-preview\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.15,\n \"outputPricePerMillion\": 0.6\n }\n }\n }\n ]\n },\n \"google/gemini-2.5-flash-preview:thinking\": {\n \"modelName\": \"google/gemini-2.5-flash-preview:thinking\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.15,\n \"outputPricePerMillion\": 3.5\n }\n }\n }\n ]\n },\n \"openai/o4-mini-high\": {\n \"modelName\": \"openai/o4-mini-high\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1.1,\n \"outputPricePerMillion\": 4.4\n }\n }\n }\n ]\n },\n \"openai/o3\": {\n \"modelName\": \"openai/o3\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 10,\n \"outputPricePerMillion\": 40\n }\n }\n }\n ]\n },\n \"openai/o4-mini\": {\n \"modelName\": \"openai/o4-mini\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1.1,\n \"outputPricePerMillion\": 4.4\n }\n }\n }\n ]\n },\n \"shisa-ai/shisa-v2-llama3.3-70b:free\": {\n \"modelName\": \"shisa-ai/shisa-v2-llama3.3-70b:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"qwen/qwen2.5-coder-7b-instruct\": {\n \"modelName\": \"qwen/qwen2.5-coder-7b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.19999999999999998,\n \"outputPricePerMillion\": 0.19999999999999998\n }\n }\n }\n ]\n },\n \"openai/gpt-4.1\": {\n \"modelName\": \"openai/gpt-4.1\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2,\n \"outputPricePerMillion\": 8\n }\n }\n }\n ]\n },\n \"openai/gpt-4.1-mini\": {\n \"modelName\": \"openai/gpt-4.1-mini\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.39999999999999997,\n \"outputPricePerMillion\": 1.5999999999999999\n }\n }\n }\n ]\n },\n \"openai/gpt-4.1-nano\": {\n \"modelName\": \"openai/gpt-4.1-nano\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.09999999999999999,\n \"outputPricePerMillion\": 0.39999999999999997\n }\n }\n }\n ]\n },\n \"eleutherai/llemma_7b\": {\n \"modelName\": \"eleutherai/llemma_7b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7999999999999999,\n \"outputPricePerMillion\": 1.2\n }\n }\n }\n ]\n },\n \"alfredpros/codellama-7b-instruct-solidity\": {\n \"modelName\": \"alfredpros/codellama-7b-instruct-solidity\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7999999999999999,\n \"outputPricePerMillion\": 1.2\n }\n }\n }\n ]\n },\n \"arliai/qwq-32b-arliai-rpr-v1:free\": {\n \"modelName\": \"arliai/qwq-32b-arliai-rpr-v1:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"agentica-org/deepcoder-14b-preview:free\": {\n \"modelName\": \"agentica-org/deepcoder-14b-preview:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"moonshotai/kimi-vl-a3b-thinking:free\": {\n \"modelName\": \"moonshotai/kimi-vl-a3b-thinking:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"x-ai/grok-3-mini-beta\": {\n \"modelName\": \"x-ai/grok-3-mini-beta\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.3,\n \"outputPricePerMillion\": 0.5\n }\n }\n }\n ]\n },\n \"x-ai/grok-3-beta\": {\n \"modelName\": \"x-ai/grok-3-beta\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 3,\n \"outputPricePerMillion\": 15\n }\n }\n }\n ]\n },\n \"nvidia/llama-3.1-nemotron-nano-8b-v1:free\": {\n \"modelName\": \"nvidia/llama-3.1-nemotron-nano-8b-v1:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"nvidia/llama-3.3-nemotron-super-49b-v1:free\": {\n \"modelName\": \"nvidia/llama-3.3-nemotron-super-49b-v1:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"nvidia/llama-3.1-nemotron-ultra-253b-v1:free\": {\n \"modelName\": \"nvidia/llama-3.1-nemotron-ultra-253b-v1:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"meta-llama/llama-4-maverick:free\": {\n \"modelName\": \"meta-llama/llama-4-maverick:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"meta-llama/llama-4-maverick\": {\n \"modelName\": \"meta-llama/llama-4-maverick\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.16999999999999998,\n \"outputPricePerMillion\": 0.6\n }\n }\n }\n ]\n },\n \"meta-llama/llama-4-scout:free\": {\n \"modelName\": \"meta-llama/llama-4-scout:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"meta-llama/llama-4-scout\": {\n \"modelName\": \"meta-llama/llama-4-scout\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.08,\n \"outputPricePerMillion\": 0.3\n }\n }\n }\n ]\n },\n \"all-hands/openhands-lm-32b-v0.1\": {\n \"modelName\": \"all-hands/openhands-lm-32b-v0.1\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2.6,\n \"outputPricePerMillion\": 3.4\n }\n }\n }\n ]\n },\n \"mistral/ministral-8b\": {\n \"modelName\": \"mistral/ministral-8b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.09999999999999999,\n \"outputPricePerMillion\": 0.09999999999999999\n }\n }\n }\n ]\n },\n \"deepseek/deepseek-v3-base:free\": {\n \"modelName\": \"deepseek/deepseek-v3-base:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"scb10x/llama3.1-typhoon2-8b-instruct\": {\n \"modelName\": \"scb10x/llama3.1-typhoon2-8b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.18,\n \"outputPricePerMillion\": 0.18\n }\n }\n }\n ]\n },\n \"scb10x/llama3.1-typhoon2-70b-instruct\": {\n \"modelName\": \"scb10x/llama3.1-typhoon2-70b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.88,\n \"outputPricePerMillion\": 0.88\n }\n }\n }\n ]\n },\n \"allenai/molmo-7b-d:free\": {\n \"modelName\": \"allenai/molmo-7b-d:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"bytedance-research/ui-tars-72b:free\": {\n \"modelName\": \"bytedance-research/ui-tars-72b:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"qwen/qwen2.5-vl-3b-instruct:free\": {\n \"modelName\": \"qwen/qwen2.5-vl-3b-instruct:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"google/gemini-2.5-pro-exp-03-25:free\": {\n \"modelName\": \"google/gemini-2.5-pro-exp-03-25:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"qwen/qwen2.5-vl-32b-instruct:free\": {\n \"modelName\": \"qwen/qwen2.5-vl-32b-instruct:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"qwen/qwen2.5-vl-32b-instruct\": {\n \"modelName\": \"qwen/qwen2.5-vl-32b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.8999999999999999,\n \"outputPricePerMillion\": 0.8999999999999999\n }\n }\n }\n ]\n },\n \"deepseek/deepseek-chat-v3-0324:free\": {\n \"modelName\": \"deepseek/deepseek-chat-v3-0324:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"deepseek/deepseek-chat-v3-0324\": {\n \"modelName\": \"deepseek/deepseek-chat-v3-0324\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.27,\n \"outputPricePerMillion\": 1.1\n }\n }\n }\n ]\n },\n \"featherless/qwerky-72b:free\": {\n \"modelName\": \"featherless/qwerky-72b:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"openai/o1-pro\": {\n \"modelName\": \"openai/o1-pro\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 150,\n \"outputPricePerMillion\": 600\n }\n }\n }\n ]\n },\n \"mistralai/mistral-small-3.1-24b-instruct:free\": {\n \"modelName\": \"mistralai/mistral-small-3.1-24b-instruct:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"mistralai/mistral-small-3.1-24b-instruct\": {\n \"modelName\": \"mistralai/mistral-small-3.1-24b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.09999999999999999,\n \"outputPricePerMillion\": 0.3\n }\n }\n }\n ]\n },\n \"open-r1/olympiccoder-32b:free\": {\n \"modelName\": \"open-r1/olympiccoder-32b:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"steelskull/l3.3-electra-r1-70b\": {\n \"modelName\": \"steelskull/l3.3-electra-r1-70b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7,\n \"outputPricePerMillion\": 0.95\n }\n }\n }\n ]\n },\n \"google/gemma-3-1b-it:free\": {\n \"modelName\": \"google/gemma-3-1b-it:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"google/gemma-3-4b-it:free\": {\n \"modelName\": \"google/gemma-3-4b-it:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"google/gemma-3-4b-it\": {\n \"modelName\": \"google/gemma-3-4b-it\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.02,\n \"outputPricePerMillion\": 0.04\n }\n }\n }\n ]\n },\n \"ai21/jamba-1.6-large\": {\n \"modelName\": \"ai21/jamba-1.6-large\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2,\n \"outputPricePerMillion\": 8\n }\n }\n }\n ]\n },\n \"ai21/jamba-1.6-mini\": {\n \"modelName\": \"ai21/jamba-1.6-mini\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.19999999999999998,\n \"outputPricePerMillion\": 0.39999999999999997\n }\n }\n }\n ]\n },\n \"google/gemma-3-12b-it:free\": {\n \"modelName\": \"google/gemma-3-12b-it:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"google/gemma-3-12b-it\": {\n \"modelName\": \"google/gemma-3-12b-it\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.049999999999999996,\n \"outputPricePerMillion\": 0.09999999999999999\n }\n }\n }\n ]\n },\n \"cohere/command-a\": {\n \"modelName\": \"cohere/command-a\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2.5,\n \"outputPricePerMillion\": 10\n }\n }\n }\n ]\n },\n \"openai/gpt-4o-mini-search-preview\": {\n \"modelName\": \"openai/gpt-4o-mini-search-preview\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.15,\n \"outputPricePerMillion\": 0.6\n }\n }\n }\n ]\n },\n \"openai/gpt-4o-search-preview\": {\n \"modelName\": \"openai/gpt-4o-search-preview\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2.5,\n \"outputPricePerMillion\": 10\n }\n }\n }\n ]\n },\n \"rekaai/reka-flash-3:free\": {\n \"modelName\": \"rekaai/reka-flash-3:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"google/gemma-3-27b-it:free\": {\n \"modelName\": \"google/gemma-3-27b-it:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"google/gemma-3-27b-it\": {\n \"modelName\": \"google/gemma-3-27b-it\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.09999999999999999,\n \"outputPricePerMillion\": 0.19999999999999998\n }\n }\n }\n ]\n },\n \"thedrummer/anubis-pro-105b-v1\": {\n \"modelName\": \"thedrummer/anubis-pro-105b-v1\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7999999999999999,\n \"outputPricePerMillion\": 1\n }\n }\n }\n ]\n },\n \"latitudegames/wayfarer-large-70b-llama-3.3\": {\n \"modelName\": \"latitudegames/wayfarer-large-70b-llama-3.3\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7999999999999999,\n \"outputPricePerMillion\": 0.8999999999999999\n }\n }\n }\n ]\n },\n \"thedrummer/skyfall-36b-v2\": {\n \"modelName\": \"thedrummer/skyfall-36b-v2\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.5,\n \"outputPricePerMillion\": 0.7999999999999999\n }\n }\n }\n ]\n },\n \"microsoft/phi-4-multimodal-instruct\": {\n \"modelName\": \"microsoft/phi-4-multimodal-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.049999999999999996,\n \"outputPricePerMillion\": 0.09999999999999999\n }\n }\n }\n ]\n },\n \"perplexity/sonar-reasoning-pro\": {\n \"modelName\": \"perplexity/sonar-reasoning-pro\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2,\n \"outputPricePerMillion\": 8\n }\n }\n }\n ]\n },\n \"perplexity/sonar-pro\": {\n \"modelName\": \"perplexity/sonar-pro\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 3,\n \"outputPricePerMillion\": 15\n }\n }\n }\n ]\n },\n \"perplexity/sonar-deep-research\": {\n \"modelName\": \"perplexity/sonar-deep-research\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2,\n \"outputPricePerMillion\": 8\n }\n }\n }\n ]\n },\n \"deepseek/deepseek-r1-zero:free\": {\n \"modelName\": \"deepseek/deepseek-r1-zero:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"qwen/qwq-32b:free\": {\n \"modelName\": \"qwen/qwq-32b:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"qwen/qwq-32b\": {\n \"modelName\": \"qwen/qwq-32b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.15,\n \"outputPricePerMillion\": 0.19999999999999998\n }\n }\n }\n ]\n },\n \"moonshotai/moonlight-16b-a3b-instruct:free\": {\n \"modelName\": \"moonshotai/moonlight-16b-a3b-instruct:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"nousresearch/deephermes-3-llama-3-8b-preview:free\": {\n \"modelName\": \"nousresearch/deephermes-3-llama-3-8b-preview:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"openai/gpt-4.5-preview\": {\n \"modelName\": \"openai/gpt-4.5-preview\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 75,\n \"outputPricePerMillion\": 150\n }\n }\n }\n ]\n },\n \"google/gemini-2.0-flash-lite-001\": {\n \"modelName\": \"google/gemini-2.0-flash-lite-001\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.075,\n \"outputPricePerMillion\": 0.3\n }\n }\n }\n ]\n },\n \"anthropic/claude-3.7-sonnet\": {\n \"modelName\": \"anthropic/claude-3.7-sonnet\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 3,\n \"outputPricePerMillion\": 15\n }\n }\n }\n ]\n },\n \"anthropic/claude-3.7-sonnet:thinking\": {\n \"modelName\": \"anthropic/claude-3.7-sonnet:thinking\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 3,\n \"outputPricePerMillion\": 15\n }\n }\n }\n ]\n },\n \"anthropic/claude-3.7-sonnet:beta\": {\n \"modelName\": \"anthropic/claude-3.7-sonnet:beta\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 3,\n \"outputPricePerMillion\": 15\n }\n }\n }\n ]\n },\n \"perplexity/r1-1776\": {\n \"modelName\": \"perplexity/r1-1776\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2,\n \"outputPricePerMillion\": 8\n }\n }\n }\n ]\n },\n \"mistralai/mistral-saba\": {\n \"modelName\": \"mistralai/mistral-saba\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.19999999999999998,\n \"outputPricePerMillion\": 0.6\n }\n }\n }\n ]\n },\n \"cognitivecomputations/dolphin3.0-r1-mistral-24b:free\": {\n \"modelName\": \"cognitivecomputations/dolphin3.0-r1-mistral-24b:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"cognitivecomputations/dolphin3.0-mistral-24b:free\": {\n \"modelName\": \"cognitivecomputations/dolphin3.0-mistral-24b:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"meta-llama/llama-guard-3-8b\": {\n \"modelName\": \"meta-llama/llama-guard-3-8b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.055,\n \"outputPricePerMillion\": 0.055\n }\n }\n }\n ]\n },\n \"openai/o3-mini-high\": {\n \"modelName\": \"openai/o3-mini-high\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1.1,\n \"outputPricePerMillion\": 4.4\n }\n }\n }\n ]\n },\n \"deepseek/deepseek-r1-distill-llama-8b\": {\n \"modelName\": \"deepseek/deepseek-r1-distill-llama-8b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.04,\n \"outputPricePerMillion\": 0.04\n }\n }\n }\n ]\n },\n \"google/gemini-2.0-flash-001\": {\n \"modelName\": \"google/gemini-2.0-flash-001\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.09999999999999999,\n \"outputPricePerMillion\": 0.39999999999999997\n }\n }\n }\n ]\n },\n \"qwen/qwen-vl-plus\": {\n \"modelName\": \"qwen/qwen-vl-plus\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.21,\n \"outputPricePerMillion\": 0.63\n }\n }\n }\n ]\n },\n \"aion-labs/aion-1.0\": {\n \"modelName\": \"aion-labs/aion-1.0\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 4,\n \"outputPricePerMillion\": 8\n }\n }\n }\n ]\n },\n \"aion-labs/aion-1.0-mini\": {\n \"modelName\": \"aion-labs/aion-1.0-mini\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7,\n \"outputPricePerMillion\": 1.4\n }\n }\n }\n ]\n },\n \"aion-labs/aion-rp-llama-3.1-8b\": {\n \"modelName\": \"aion-labs/aion-rp-llama-3.1-8b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.19999999999999998,\n \"outputPricePerMillion\": 0.19999999999999998\n }\n }\n }\n ]\n },\n \"qwen/qwen-vl-max\": {\n \"modelName\": \"qwen/qwen-vl-max\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7999999999999999,\n \"outputPricePerMillion\": 3.1999999999999997\n }\n }\n }\n ]\n },\n \"qwen/qwen-turbo\": {\n \"modelName\": \"qwen/qwen-turbo\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.049999999999999996,\n \"outputPricePerMillion\": 0.19999999999999998\n }\n }\n }\n ]\n },\n \"qwen/qwen2.5-vl-72b-instruct:free\": {\n \"modelName\": \"qwen/qwen2.5-vl-72b-instruct:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"qwen/qwen2.5-vl-72b-instruct\": {\n \"modelName\": \"qwen/qwen2.5-vl-72b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7,\n \"outputPricePerMillion\": 0.7\n }\n }\n }\n ]\n },\n \"qwen/qwen-plus\": {\n \"modelName\": \"qwen/qwen-plus\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.39999999999999997,\n \"outputPricePerMillion\": 1.2\n }\n }\n }\n ]\n },\n \"qwen/qwen-max\": {\n \"modelName\": \"qwen/qwen-max\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1.5999999999999999,\n \"outputPricePerMillion\": 6.3999999999999995\n }\n }\n }\n ]\n },\n \"openai/o3-mini\": {\n \"modelName\": \"openai/o3-mini\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1.1,\n \"outputPricePerMillion\": 4.4\n }\n }\n }\n ]\n },\n \"deepseek/deepseek-r1-distill-qwen-1.5b\": {\n \"modelName\": \"deepseek/deepseek-r1-distill-qwen-1.5b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.18,\n \"outputPricePerMillion\": 0.18\n }\n }\n }\n ]\n },\n \"mistralai/mistral-small-24b-instruct-2501:free\": {\n \"modelName\": \"mistralai/mistral-small-24b-instruct-2501:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"mistralai/mistral-small-24b-instruct-2501\": {\n \"modelName\": \"mistralai/mistral-small-24b-instruct-2501\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.07,\n \"outputPricePerMillion\": 0.14\n }\n }\n }\n ]\n },\n \"deepseek/deepseek-r1-distill-qwen-32b:free\": {\n \"modelName\": \"deepseek/deepseek-r1-distill-qwen-32b:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"deepseek/deepseek-r1-distill-qwen-32b\": {\n \"modelName\": \"deepseek/deepseek-r1-distill-qwen-32b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.12,\n \"outputPricePerMillion\": 0.18\n }\n }\n }\n ]\n },\n \"deepseek/deepseek-r1-distill-qwen-14b:free\": {\n \"modelName\": \"deepseek/deepseek-r1-distill-qwen-14b:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"deepseek/deepseek-r1-distill-qwen-14b\": {\n \"modelName\": \"deepseek/deepseek-r1-distill-qwen-14b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.15,\n \"outputPricePerMillion\": 0.15\n }\n }\n }\n ]\n },\n \"perplexity/sonar-reasoning\": {\n \"modelName\": \"perplexity/sonar-reasoning\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1,\n \"outputPricePerMillion\": 5\n }\n }\n }\n ]\n },\n \"perplexity/sonar\": {\n \"modelName\": \"perplexity/sonar\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1,\n \"outputPricePerMillion\": 1\n }\n }\n }\n ]\n },\n \"liquid/lfm-7b\": {\n \"modelName\": \"liquid/lfm-7b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.01,\n \"outputPricePerMillion\": 0.01\n }\n }\n }\n ]\n },\n \"liquid/lfm-3b\": {\n \"modelName\": \"liquid/lfm-3b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.02,\n \"outputPricePerMillion\": 0.02\n }\n }\n }\n ]\n },\n \"deepseek/deepseek-r1-distill-llama-70b:free\": {\n \"modelName\": \"deepseek/deepseek-r1-distill-llama-70b:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"deepseek/deepseek-r1-distill-llama-70b\": {\n \"modelName\": \"deepseek/deepseek-r1-distill-llama-70b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.09999999999999999,\n \"outputPricePerMillion\": 0.39999999999999997\n }\n }\n }\n ]\n },\n \"deepseek/deepseek-r1:free\": {\n \"modelName\": \"deepseek/deepseek-r1:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"deepseek/deepseek-r1\": {\n \"modelName\": \"deepseek/deepseek-r1\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.5,\n \"outputPricePerMillion\": 2.1799999999999997\n }\n }\n }\n ]\n },\n \"sophosympatheia/rogue-rose-103b-v0.2:free\": {\n \"modelName\": \"sophosympatheia/rogue-rose-103b-v0.2:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"minimax/minimax-01\": {\n \"modelName\": \"minimax/minimax-01\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.19999999999999998,\n \"outputPricePerMillion\": 1.1\n }\n }\n }\n ]\n },\n \"mistralai/codestral-2501\": {\n \"modelName\": \"mistralai/codestral-2501\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.3,\n \"outputPricePerMillion\": 0.8999999999999999\n }\n }\n }\n ]\n },\n \"microsoft/phi-4\": {\n \"modelName\": \"microsoft/phi-4\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.07,\n \"outputPricePerMillion\": 0.14\n }\n }\n }\n ]\n },\n \"deepseek/deepseek-chat:free\": {\n \"modelName\": \"deepseek/deepseek-chat:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"deepseek/deepseek-chat\": {\n \"modelName\": \"deepseek/deepseek-chat\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.38,\n \"outputPricePerMillion\": 0.8899999999999999\n }\n }\n }\n ]\n },\n \"sao10k/l3.3-euryale-70b\": {\n \"modelName\": \"sao10k/l3.3-euryale-70b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7,\n \"outputPricePerMillion\": 0.7999999999999999\n }\n }\n }\n ]\n },\n \"openai/o1\": {\n \"modelName\": \"openai/o1\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 15,\n \"outputPricePerMillion\": 60\n }\n }\n }\n ]\n },\n \"eva-unit-01/eva-llama-3.33-70b\": {\n \"modelName\": \"eva-unit-01/eva-llama-3.33-70b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 4,\n \"outputPricePerMillion\": 6\n }\n }\n }\n ]\n },\n \"x-ai/grok-2-vision-1212\": {\n \"modelName\": \"x-ai/grok-2-vision-1212\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2,\n \"outputPricePerMillion\": 10\n }\n }\n }\n ]\n },\n \"x-ai/grok-2-1212\": {\n \"modelName\": \"x-ai/grok-2-1212\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2,\n \"outputPricePerMillion\": 10\n }\n }\n }\n ]\n },\n \"cohere/command-r7b-12-2024\": {\n \"modelName\": \"cohere/command-r7b-12-2024\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.0375,\n \"outputPricePerMillion\": 0.15\n }\n }\n }\n ]\n },\n \"google/gemini-2.0-flash-exp:free\": {\n \"modelName\": \"google/gemini-2.0-flash-exp:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"meta-llama/llama-3.3-70b-instruct:free\": {\n \"modelName\": \"meta-llama/llama-3.3-70b-instruct:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"meta-llama/llama-3.3-70b-instruct\": {\n \"modelName\": \"meta-llama/llama-3.3-70b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.09999999999999999,\n \"outputPricePerMillion\": 0.25\n }\n }\n }\n ]\n },\n \"amazon/nova-lite-v1\": {\n \"modelName\": \"amazon/nova-lite-v1\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.06,\n \"outputPricePerMillion\": 0.24\n }\n }\n }\n ]\n },\n \"amazon/nova-micro-v1\": {\n \"modelName\": \"amazon/nova-micro-v1\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.035,\n \"outputPricePerMillion\": 0.14\n }\n }\n }\n ]\n },\n \"amazon/nova-pro-v1\": {\n \"modelName\": \"amazon/nova-pro-v1\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7999999999999999,\n \"outputPricePerMillion\": 3.1999999999999997\n }\n }\n }\n ]\n },\n \"qwen/qwq-32b-preview:free\": {\n \"modelName\": \"qwen/qwq-32b-preview:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"qwen/qwq-32b-preview\": {\n \"modelName\": \"qwen/qwq-32b-preview\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.19999999999999998,\n \"outputPricePerMillion\": 0.19999999999999998\n }\n }\n }\n ]\n },\n \"google/learnlm-1.5-pro-experimental:free\": {\n \"modelName\": \"google/learnlm-1.5-pro-experimental:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"eva-unit-01/eva-qwen-2.5-72b\": {\n \"modelName\": \"eva-unit-01/eva-qwen-2.5-72b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.8999999999999999,\n \"outputPricePerMillion\": 1.2\n }\n }\n }\n ]\n },\n \"openai/gpt-4o-2024-11-20\": {\n \"modelName\": \"openai/gpt-4o-2024-11-20\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2.5,\n \"outputPricePerMillion\": 10\n }\n }\n }\n ]\n },\n \"mistralai/mistral-large-2411\": {\n \"modelName\": \"mistralai/mistral-large-2411\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2,\n \"outputPricePerMillion\": 6\n }\n }\n }\n ]\n },\n \"mistralai/mistral-large-2407\": {\n \"modelName\": \"mistralai/mistral-large-2407\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2,\n \"outputPricePerMillion\": 6\n }\n }\n }\n ]\n },\n \"mistralai/pixtral-large-2411\": {\n \"modelName\": \"mistralai/pixtral-large-2411\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2,\n \"outputPricePerMillion\": 6\n }\n }\n }\n ]\n },\n \"x-ai/grok-vision-beta\": {\n \"modelName\": \"x-ai/grok-vision-beta\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 5,\n \"outputPricePerMillion\": 15\n }\n }\n }\n ]\n },\n \"infermatic/mn-inferor-12b\": {\n \"modelName\": \"infermatic/mn-inferor-12b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7999999999999999,\n \"outputPricePerMillion\": 1.2\n }\n }\n }\n ]\n },\n \"qwen/qwen-2.5-coder-32b-instruct:free\": {\n \"modelName\": \"qwen/qwen-2.5-coder-32b-instruct:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"qwen/qwen-2.5-coder-32b-instruct\": {\n \"modelName\": \"qwen/qwen-2.5-coder-32b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.07,\n \"outputPricePerMillion\": 0.15\n }\n }\n }\n ]\n },\n \"raifle/sorcererlm-8x22b\": {\n \"modelName\": \"raifle/sorcererlm-8x22b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 4.5,\n \"outputPricePerMillion\": 4.5\n }\n }\n }\n ]\n },\n \"eva-unit-01/eva-qwen-2.5-32b\": {\n \"modelName\": \"eva-unit-01/eva-qwen-2.5-32b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2.6,\n \"outputPricePerMillion\": 3.4\n }\n }\n }\n ]\n },\n \"thedrummer/unslopnemo-12b\": {\n \"modelName\": \"thedrummer/unslopnemo-12b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.5,\n \"outputPricePerMillion\": 0.5\n }\n }\n }\n ]\n },\n \"anthropic/claude-3.5-haiku:beta\": {\n \"modelName\": \"anthropic/claude-3.5-haiku:beta\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7999999999999999,\n \"outputPricePerMillion\": 4\n }\n }\n }\n ]\n },\n \"anthropic/claude-3.5-haiku\": {\n \"modelName\": \"anthropic/claude-3.5-haiku\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7999999999999999,\n \"outputPricePerMillion\": 4\n }\n }\n }\n ]\n },\n \"anthropic/claude-3.5-haiku-20241022:beta\": {\n \"modelName\": \"anthropic/claude-3.5-haiku-20241022:beta\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7999999999999999,\n \"outputPricePerMillion\": 4\n }\n }\n }\n ]\n },\n \"anthropic/claude-3.5-haiku-20241022\": {\n \"modelName\": \"anthropic/claude-3.5-haiku-20241022\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7999999999999999,\n \"outputPricePerMillion\": 4\n }\n }\n }\n ]\n },\n \"neversleep/llama-3.1-lumimaid-70b\": {\n \"modelName\": \"neversleep/llama-3.1-lumimaid-70b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1.5,\n \"outputPricePerMillion\": 2.25\n }\n }\n }\n ]\n },\n \"anthracite-org/magnum-v4-72b\": {\n \"modelName\": \"anthracite-org/magnum-v4-72b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1.5,\n \"outputPricePerMillion\": 2.25\n }\n }\n }\n ]\n },\n \"anthropic/claude-3.5-sonnet:beta\": {\n \"modelName\": \"anthropic/claude-3.5-sonnet:beta\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 3,\n \"outputPricePerMillion\": 15\n }\n }\n }\n ]\n },\n \"anthropic/claude-3.5-sonnet\": {\n \"modelName\": \"anthropic/claude-3.5-sonnet\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 3,\n \"outputPricePerMillion\": 15\n }\n }\n }\n ]\n },\n \"x-ai/grok-beta\": {\n \"modelName\": \"x-ai/grok-beta\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 5,\n \"outputPricePerMillion\": 15\n }\n }\n }\n ]\n },\n \"mistralai/ministral-8b\": {\n \"modelName\": \"mistralai/ministral-8b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.09999999999999999,\n \"outputPricePerMillion\": 0.09999999999999999\n }\n }\n }\n ]\n },\n \"mistralai/ministral-3b\": {\n \"modelName\": \"mistralai/ministral-3b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.04,\n \"outputPricePerMillion\": 0.04\n }\n }\n }\n ]\n },\n \"qwen/qwen-2.5-7b-instruct:free\": {\n \"modelName\": \"qwen/qwen-2.5-7b-instruct:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"qwen/qwen-2.5-7b-instruct\": {\n \"modelName\": \"qwen/qwen-2.5-7b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.049999999999999996,\n \"outputPricePerMillion\": 0.09999999999999999\n }\n }\n }\n ]\n },\n \"nvidia/llama-3.1-nemotron-70b-instruct:free\": {\n \"modelName\": \"nvidia/llama-3.1-nemotron-70b-instruct:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"nvidia/llama-3.1-nemotron-70b-instruct\": {\n \"modelName\": \"nvidia/llama-3.1-nemotron-70b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.12,\n \"outputPricePerMillion\": 0.3\n }\n }\n }\n ]\n },\n \"inflection/inflection-3-productivity\": {\n \"modelName\": \"inflection/inflection-3-productivity\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2.5,\n \"outputPricePerMillion\": 10\n }\n }\n }\n ]\n },\n \"inflection/inflection-3-pi\": {\n \"modelName\": \"inflection/inflection-3-pi\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2.5,\n \"outputPricePerMillion\": 10\n }\n }\n }\n ]\n },\n \"google/gemini-flash-1.5-8b\": {\n \"modelName\": \"google/gemini-flash-1.5-8b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.0375,\n \"outputPricePerMillion\": 0.15\n }\n }\n }\n ]\n },\n \"thedrummer/rocinante-12b\": {\n \"modelName\": \"thedrummer/rocinante-12b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.25,\n \"outputPricePerMillion\": 0.5\n }\n }\n }\n ]\n },\n \"anthracite-org/magnum-v2-72b\": {\n \"modelName\": \"anthracite-org/magnum-v2-72b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 3,\n \"outputPricePerMillion\": 3\n }\n }\n }\n ]\n },\n \"liquid/lfm-40b\": {\n \"modelName\": \"liquid/lfm-40b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.15,\n \"outputPricePerMillion\": 0.15\n }\n }\n }\n ]\n },\n \"meta-llama/llama-3.2-3b-instruct:free\": {\n \"modelName\": \"meta-llama/llama-3.2-3b-instruct:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"meta-llama/llama-3.2-3b-instruct\": {\n \"modelName\": \"meta-llama/llama-3.2-3b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.015,\n \"outputPricePerMillion\": 0.024999999999999998\n }\n }\n }\n ]\n },\n \"meta-llama/llama-3.2-1b-instruct:free\": {\n \"modelName\": \"meta-llama/llama-3.2-1b-instruct:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"meta-llama/llama-3.2-1b-instruct\": {\n \"modelName\": \"meta-llama/llama-3.2-1b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.01,\n \"outputPricePerMillion\": 0.01\n }\n }\n }\n ]\n },\n \"meta-llama/llama-3.2-90b-vision-instruct\": {\n \"modelName\": \"meta-llama/llama-3.2-90b-vision-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.8999999999999999,\n \"outputPricePerMillion\": 0.8999999999999999\n }\n }\n }\n ]\n },\n \"meta-llama/llama-3.2-11b-vision-instruct:free\": {\n \"modelName\": \"meta-llama/llama-3.2-11b-vision-instruct:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"meta-llama/llama-3.2-11b-vision-instruct\": {\n \"modelName\": \"meta-llama/llama-3.2-11b-vision-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.049,\n \"outputPricePerMillion\": 0.049\n }\n }\n }\n ]\n },\n \"qwen/qwen-2.5-72b-instruct:free\": {\n \"modelName\": \"qwen/qwen-2.5-72b-instruct:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"qwen/qwen-2.5-72b-instruct\": {\n \"modelName\": \"qwen/qwen-2.5-72b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.12,\n \"outputPricePerMillion\": 0.39\n }\n }\n }\n ]\n },\n \"qwen/qwen-2.5-vl-72b-instruct\": {\n \"modelName\": \"qwen/qwen-2.5-vl-72b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.6,\n \"outputPricePerMillion\": 0.6\n }\n }\n }\n ]\n },\n \"neversleep/llama-3.1-lumimaid-8b\": {\n \"modelName\": \"neversleep/llama-3.1-lumimaid-8b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.09375,\n \"outputPricePerMillion\": 0.75\n }\n }\n }\n ]\n },\n \"openai/o1-preview\": {\n \"modelName\": \"openai/o1-preview\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 15,\n \"outputPricePerMillion\": 60\n }\n }\n }\n ]\n },\n \"openai/o1-preview-2024-09-12\": {\n \"modelName\": \"openai/o1-preview-2024-09-12\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 15,\n \"outputPricePerMillion\": 60\n }\n }\n }\n ]\n },\n \"openai/o1-mini\": {\n \"modelName\": \"openai/o1-mini\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1.1,\n \"outputPricePerMillion\": 4.4\n }\n }\n }\n ]\n },\n \"openai/o1-mini-2024-09-12\": {\n \"modelName\": \"openai/o1-mini-2024-09-12\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1.1,\n \"outputPricePerMillion\": 4.4\n }\n }\n }\n ]\n },\n \"mistralai/pixtral-12b\": {\n \"modelName\": \"mistralai/pixtral-12b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.09999999999999999,\n \"outputPricePerMillion\": 0.09999999999999999\n }\n }\n }\n ]\n },\n \"cohere/command-r-plus-08-2024\": {\n \"modelName\": \"cohere/command-r-plus-08-2024\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2.5,\n \"outputPricePerMillion\": 10\n }\n }\n }\n ]\n },\n \"cohere/command-r-08-2024\": {\n \"modelName\": \"cohere/command-r-08-2024\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.15,\n \"outputPricePerMillion\": 0.6\n }\n }\n }\n ]\n },\n \"qwen/qwen-2.5-vl-7b-instruct:free\": {\n \"modelName\": \"qwen/qwen-2.5-vl-7b-instruct:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"qwen/qwen-2.5-vl-7b-instruct\": {\n \"modelName\": \"qwen/qwen-2.5-vl-7b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.19999999999999998,\n \"outputPricePerMillion\": 0.19999999999999998\n }\n }\n }\n ]\n },\n \"sao10k/l3.1-euryale-70b\": {\n \"modelName\": \"sao10k/l3.1-euryale-70b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7,\n \"outputPricePerMillion\": 0.7999999999999999\n }\n }\n }\n ]\n },\n \"google/gemini-flash-1.5-8b-exp\": {\n \"modelName\": \"google/gemini-flash-1.5-8b-exp\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"ai21/jamba-1-5-mini\": {\n \"modelName\": \"ai21/jamba-1-5-mini\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.19999999999999998,\n \"outputPricePerMillion\": 0.39999999999999997\n }\n }\n }\n ]\n },\n \"ai21/jamba-1-5-large\": {\n \"modelName\": \"ai21/jamba-1-5-large\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2,\n \"outputPricePerMillion\": 8\n }\n }\n }\n ]\n },\n \"microsoft/phi-3.5-mini-128k-instruct\": {\n \"modelName\": \"microsoft/phi-3.5-mini-128k-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.09999999999999999,\n \"outputPricePerMillion\": 0.09999999999999999\n }\n }\n }\n ]\n },\n \"nousresearch/hermes-3-llama-3.1-70b\": {\n \"modelName\": \"nousresearch/hermes-3-llama-3.1-70b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.12,\n \"outputPricePerMillion\": 0.3\n }\n }\n }\n ]\n },\n \"nousresearch/hermes-3-llama-3.1-405b\": {\n \"modelName\": \"nousresearch/hermes-3-llama-3.1-405b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7999999999999999,\n \"outputPricePerMillion\": 0.7999999999999999\n }\n }\n }\n ]\n },\n \"openai/chatgpt-4o-latest\": {\n \"modelName\": \"openai/chatgpt-4o-latest\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 5,\n \"outputPricePerMillion\": 15\n }\n }\n }\n ]\n },\n \"sao10k/l3-lunaris-8b\": {\n \"modelName\": \"sao10k/l3-lunaris-8b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.02,\n \"outputPricePerMillion\": 0.049999999999999996\n }\n }\n }\n ]\n },\n \"aetherwiing/mn-starcannon-12b\": {\n \"modelName\": \"aetherwiing/mn-starcannon-12b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7999999999999999,\n \"outputPricePerMillion\": 1.2\n }\n }\n }\n ]\n },\n \"openai/gpt-4o-2024-08-06\": {\n \"modelName\": \"openai/gpt-4o-2024-08-06\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2.5,\n \"outputPricePerMillion\": 10\n }\n }\n }\n ]\n },\n \"meta-llama/llama-3.1-405b:free\": {\n \"modelName\": \"meta-llama/llama-3.1-405b:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"meta-llama/llama-3.1-405b\": {\n \"modelName\": \"meta-llama/llama-3.1-405b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2,\n \"outputPricePerMillion\": 2\n }\n }\n }\n ]\n },\n \"nothingiisreal/mn-celeste-12b\": {\n \"modelName\": \"nothingiisreal/mn-celeste-12b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7999999999999999,\n \"outputPricePerMillion\": 1.2\n }\n }\n }\n ]\n },\n \"perplexity/llama-3.1-sonar-small-128k-online\": {\n \"modelName\": \"perplexity/llama-3.1-sonar-small-128k-online\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.19999999999999998,\n \"outputPricePerMillion\": 0.19999999999999998\n }\n }\n }\n ]\n },\n \"perplexity/llama-3.1-sonar-large-128k-online\": {\n \"modelName\": \"perplexity/llama-3.1-sonar-large-128k-online\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1,\n \"outputPricePerMillion\": 1\n }\n }\n }\n ]\n },\n \"meta-llama/llama-3.1-8b-instruct:free\": {\n \"modelName\": \"meta-llama/llama-3.1-8b-instruct:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"meta-llama/llama-3.1-8b-instruct\": {\n \"modelName\": \"meta-llama/llama-3.1-8b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.02,\n \"outputPricePerMillion\": 0.03\n }\n }\n }\n ]\n },\n \"meta-llama/llama-3.1-405b-instruct\": {\n \"modelName\": \"meta-llama/llama-3.1-405b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7999999999999999,\n \"outputPricePerMillion\": 0.7999999999999999\n }\n }\n }\n ]\n },\n \"meta-llama/llama-3.1-70b-instruct\": {\n \"modelName\": \"meta-llama/llama-3.1-70b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.09999999999999999,\n \"outputPricePerMillion\": 0.28\n }\n }\n }\n ]\n },\n \"mistralai/codestral-mamba\": {\n \"modelName\": \"mistralai/codestral-mamba\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.25,\n \"outputPricePerMillion\": 0.25\n }\n }\n }\n ]\n },\n \"mistralai/mistral-nemo:free\": {\n \"modelName\": \"mistralai/mistral-nemo:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"mistralai/mistral-nemo\": {\n \"modelName\": \"mistralai/mistral-nemo\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.03,\n \"outputPricePerMillion\": 0.07\n }\n }\n }\n ]\n },\n \"openai/gpt-4o-mini\": {\n \"modelName\": \"openai/gpt-4o-mini\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.15,\n \"outputPricePerMillion\": 0.6\n }\n }\n }\n ]\n },\n \"openai/gpt-4o-mini-2024-07-18\": {\n \"modelName\": \"openai/gpt-4o-mini-2024-07-18\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.15,\n \"outputPricePerMillion\": 0.6\n }\n }\n }\n ]\n },\n \"google/gemma-2-27b-it\": {\n \"modelName\": \"google/gemma-2-27b-it\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7999999999999999,\n \"outputPricePerMillion\": 0.7999999999999999\n }\n }\n }\n ]\n },\n \"alpindale/magnum-72b\": {\n \"modelName\": \"alpindale/magnum-72b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 4,\n \"outputPricePerMillion\": 6\n }\n }\n }\n ]\n },\n \"google/gemma-2-9b-it:free\": {\n \"modelName\": \"google/gemma-2-9b-it:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"google/gemma-2-9b-it\": {\n \"modelName\": \"google/gemma-2-9b-it\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.07,\n \"outputPricePerMillion\": 0.07\n }\n }\n }\n ]\n },\n \"01-ai/yi-large\": {\n \"modelName\": \"01-ai/yi-large\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 3,\n \"outputPricePerMillion\": 3\n }\n }\n }\n ]\n },\n \"ai21/jamba-instruct\": {\n \"modelName\": \"ai21/jamba-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.5,\n \"outputPricePerMillion\": 0.7\n }\n }\n }\n ]\n },\n \"anthropic/claude-3.5-sonnet-20240620:beta\": {\n \"modelName\": \"anthropic/claude-3.5-sonnet-20240620:beta\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 3,\n \"outputPricePerMillion\": 15\n }\n }\n }\n ]\n },\n \"anthropic/claude-3.5-sonnet-20240620\": {\n \"modelName\": \"anthropic/claude-3.5-sonnet-20240620\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 3,\n \"outputPricePerMillion\": 15\n }\n }\n }\n ]\n },\n \"sao10k/l3-euryale-70b\": {\n \"modelName\": \"sao10k/l3-euryale-70b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1.48,\n \"outputPricePerMillion\": 1.48\n }\n }\n }\n ]\n },\n \"cognitivecomputations/dolphin-mixtral-8x22b\": {\n \"modelName\": \"cognitivecomputations/dolphin-mixtral-8x22b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.8999999999999999,\n \"outputPricePerMillion\": 0.8999999999999999\n }\n }\n }\n ]\n },\n \"qwen/qwen-2-72b-instruct\": {\n \"modelName\": \"qwen/qwen-2-72b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.8999999999999999,\n \"outputPricePerMillion\": 0.8999999999999999\n }\n }\n }\n ]\n },\n \"mistralai/mistral-7b-instruct:free\": {\n \"modelName\": \"mistralai/mistral-7b-instruct:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"mistralai/mistral-7b-instruct\": {\n \"modelName\": \"mistralai/mistral-7b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.029,\n \"outputPricePerMillion\": 0.055\n }\n }\n }\n ]\n },\n \"mistralai/mistral-7b-instruct-v0.3\": {\n \"modelName\": \"mistralai/mistral-7b-instruct-v0.3\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.029,\n \"outputPricePerMillion\": 0.055\n }\n }\n }\n ]\n },\n \"nousresearch/hermes-2-pro-llama-3-8b\": {\n \"modelName\": \"nousresearch/hermes-2-pro-llama-3-8b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.024999999999999998,\n \"outputPricePerMillion\": 0.04\n }\n }\n }\n ]\n },\n \"microsoft/phi-3-mini-128k-instruct\": {\n \"modelName\": \"microsoft/phi-3-mini-128k-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.09999999999999999,\n \"outputPricePerMillion\": 0.09999999999999999\n }\n }\n }\n ]\n },\n \"microsoft/phi-3-medium-128k-instruct\": {\n \"modelName\": \"microsoft/phi-3-medium-128k-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1,\n \"outputPricePerMillion\": 1\n }\n }\n }\n ]\n },\n \"neversleep/llama-3-lumimaid-70b\": {\n \"modelName\": \"neversleep/llama-3-lumimaid-70b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 4,\n \"outputPricePerMillion\": 6\n }\n }\n }\n ]\n },\n \"google/gemini-flash-1.5\": {\n \"modelName\": \"google/gemini-flash-1.5\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.075,\n \"outputPricePerMillion\": 0.3\n }\n }\n }\n ]\n },\n \"openai/gpt-4o\": {\n \"modelName\": \"openai/gpt-4o\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2.5,\n \"outputPricePerMillion\": 10\n }\n }\n }\n ]\n },\n \"openai/gpt-4o:extended\": {\n \"modelName\": \"openai/gpt-4o:extended\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 6,\n \"outputPricePerMillion\": 18\n }\n }\n }\n ]\n },\n \"meta-llama/llama-guard-2-8b\": {\n \"modelName\": \"meta-llama/llama-guard-2-8b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.19999999999999998,\n \"outputPricePerMillion\": 0.19999999999999998\n }\n }\n }\n ]\n },\n \"openai/gpt-4o-2024-05-13\": {\n \"modelName\": \"openai/gpt-4o-2024-05-13\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 5,\n \"outputPricePerMillion\": 15\n }\n }\n }\n ]\n },\n \"neversleep/llama-3-lumimaid-8b:extended\": {\n \"modelName\": \"neversleep/llama-3-lumimaid-8b:extended\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.09375,\n \"outputPricePerMillion\": 0.75\n }\n }\n }\n ]\n },\n \"neversleep/llama-3-lumimaid-8b\": {\n \"modelName\": \"neversleep/llama-3-lumimaid-8b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.09375,\n \"outputPricePerMillion\": 0.75\n }\n }\n }\n ]\n },\n \"sao10k/fimbulvetr-11b-v2\": {\n \"modelName\": \"sao10k/fimbulvetr-11b-v2\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7999999999999999,\n \"outputPricePerMillion\": 1.2\n }\n }\n }\n ]\n },\n \"meta-llama/llama-3-8b-instruct\": {\n \"modelName\": \"meta-llama/llama-3-8b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.03,\n \"outputPricePerMillion\": 0.06\n }\n }\n }\n ]\n },\n \"meta-llama/llama-3-70b-instruct\": {\n \"modelName\": \"meta-llama/llama-3-70b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.3,\n \"outputPricePerMillion\": 0.39999999999999997\n }\n }\n }\n ]\n },\n \"mistralai/mixtral-8x22b-instruct\": {\n \"modelName\": \"mistralai/mixtral-8x22b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.8999999999999999,\n \"outputPricePerMillion\": 0.8999999999999999\n }\n }\n }\n ]\n },\n \"microsoft/wizardlm-2-8x22b\": {\n \"modelName\": \"microsoft/wizardlm-2-8x22b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.5,\n \"outputPricePerMillion\": 0.5\n }\n }\n }\n ]\n },\n \"microsoft/wizardlm-2-7b\": {\n \"modelName\": \"microsoft/wizardlm-2-7b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.07,\n \"outputPricePerMillion\": 0.07\n }\n }\n }\n ]\n },\n \"google/gemini-pro-1.5\": {\n \"modelName\": \"google/gemini-pro-1.5\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1.25,\n \"outputPricePerMillion\": 5\n }\n }\n }\n ]\n },\n \"openai/gpt-4-turbo\": {\n \"modelName\": \"openai/gpt-4-turbo\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 10,\n \"outputPricePerMillion\": 30\n }\n }\n }\n ]\n },\n \"cohere/command-r-plus\": {\n \"modelName\": \"cohere/command-r-plus\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 3,\n \"outputPricePerMillion\": 15\n }\n }\n }\n ]\n },\n \"cohere/command-r-plus-04-2024\": {\n \"modelName\": \"cohere/command-r-plus-04-2024\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 3,\n \"outputPricePerMillion\": 15\n }\n }\n }\n ]\n },\n \"sophosympatheia/midnight-rose-70b\": {\n \"modelName\": \"sophosympatheia/midnight-rose-70b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.7999999999999999,\n \"outputPricePerMillion\": 0.7999999999999999\n }\n }\n }\n ]\n },\n \"cohere/command\": {\n \"modelName\": \"cohere/command\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1,\n \"outputPricePerMillion\": 2\n }\n }\n }\n ]\n },\n \"cohere/command-r\": {\n \"modelName\": \"cohere/command-r\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.5,\n \"outputPricePerMillion\": 1.5\n }\n }\n }\n ]\n },\n \"anthropic/claude-3-haiku:beta\": {\n \"modelName\": \"anthropic/claude-3-haiku:beta\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.25,\n \"outputPricePerMillion\": 1.25\n }\n }\n }\n ]\n },\n \"anthropic/claude-3-haiku\": {\n \"modelName\": \"anthropic/claude-3-haiku\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.25,\n \"outputPricePerMillion\": 1.25\n }\n }\n }\n ]\n },\n \"anthropic/claude-3-opus:beta\": {\n \"modelName\": \"anthropic/claude-3-opus:beta\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 15,\n \"outputPricePerMillion\": 75\n }\n }\n }\n ]\n },\n \"anthropic/claude-3-opus\": {\n \"modelName\": \"anthropic/claude-3-opus\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 15,\n \"outputPricePerMillion\": 75\n }\n }\n }\n ]\n },\n \"anthropic/claude-3-sonnet:beta\": {\n \"modelName\": \"anthropic/claude-3-sonnet:beta\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 3,\n \"outputPricePerMillion\": 15\n }\n }\n }\n ]\n },\n \"anthropic/claude-3-sonnet\": {\n \"modelName\": \"anthropic/claude-3-sonnet\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 3,\n \"outputPricePerMillion\": 15\n }\n }\n }\n ]\n },\n \"cohere/command-r-03-2024\": {\n \"modelName\": \"cohere/command-r-03-2024\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.5,\n \"outputPricePerMillion\": 1.5\n }\n }\n }\n ]\n },\n \"mistralai/mistral-large\": {\n \"modelName\": \"mistralai/mistral-large\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2,\n \"outputPricePerMillion\": 6\n }\n }\n }\n ]\n },\n \"openai/gpt-3.5-turbo-0613\": {\n \"modelName\": \"openai/gpt-3.5-turbo-0613\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1,\n \"outputPricePerMillion\": 2\n }\n }\n }\n ]\n },\n \"openai/gpt-4-turbo-preview\": {\n \"modelName\": \"openai/gpt-4-turbo-preview\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 10,\n \"outputPricePerMillion\": 30\n }\n }\n }\n ]\n },\n \"nousresearch/nous-hermes-2-mixtral-8x7b-dpo\": {\n \"modelName\": \"nousresearch/nous-hermes-2-mixtral-8x7b-dpo\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.6,\n \"outputPricePerMillion\": 0.6\n }\n }\n }\n ]\n },\n \"mistralai/mistral-medium\": {\n \"modelName\": \"mistralai/mistral-medium\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2.75,\n \"outputPricePerMillion\": 8.1\n }\n }\n }\n ]\n },\n \"mistralai/mistral-small\": {\n \"modelName\": \"mistralai/mistral-small\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.19999999999999998,\n \"outputPricePerMillion\": 0.6\n }\n }\n }\n ]\n },\n \"mistralai/mistral-tiny\": {\n \"modelName\": \"mistralai/mistral-tiny\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.25,\n \"outputPricePerMillion\": 0.25\n }\n }\n }\n ]\n },\n \"mistralai/mistral-7b-instruct-v0.2\": {\n \"modelName\": \"mistralai/mistral-7b-instruct-v0.2\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.19999999999999998,\n \"outputPricePerMillion\": 0.19999999999999998\n }\n }\n }\n ]\n },\n \"cognitivecomputations/dolphin-mixtral-8x7b\": {\n \"modelName\": \"cognitivecomputations/dolphin-mixtral-8x7b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.5,\n \"outputPricePerMillion\": 0.5\n }\n }\n }\n ]\n },\n \"google/gemini-pro-vision\": {\n \"modelName\": \"google/gemini-pro-vision\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.5,\n \"outputPricePerMillion\": 1.5\n }\n }\n }\n ]\n },\n \"mistralai/mixtral-8x7b-instruct\": {\n \"modelName\": \"mistralai/mixtral-8x7b-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.24,\n \"outputPricePerMillion\": 0.24\n }\n }\n }\n ]\n },\n \"openchat/openchat-7b\": {\n \"modelName\": \"openchat/openchat-7b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.07,\n \"outputPricePerMillion\": 0.07\n }\n }\n }\n ]\n },\n \"neversleep/noromaid-20b\": {\n \"modelName\": \"neversleep/noromaid-20b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.75,\n \"outputPricePerMillion\": 1.5\n }\n }\n }\n ]\n },\n \"anthropic/claude-2.1:beta\": {\n \"modelName\": \"anthropic/claude-2.1:beta\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 8,\n \"outputPricePerMillion\": 24\n }\n }\n }\n ]\n },\n \"anthropic/claude-2.1\": {\n \"modelName\": \"anthropic/claude-2.1\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 8,\n \"outputPricePerMillion\": 24\n }\n }\n }\n ]\n },\n \"anthropic/claude-2:beta\": {\n \"modelName\": \"anthropic/claude-2:beta\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 8,\n \"outputPricePerMillion\": 24\n }\n }\n }\n ]\n },\n \"anthropic/claude-2\": {\n \"modelName\": \"anthropic/claude-2\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 8,\n \"outputPricePerMillion\": 24\n }\n }\n }\n ]\n },\n \"undi95/toppy-m-7b\": {\n \"modelName\": \"undi95/toppy-m-7b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.07,\n \"outputPricePerMillion\": 0.07\n }\n }\n }\n ]\n },\n \"alpindale/goliath-120b\": {\n \"modelName\": \"alpindale/goliath-120b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 6.5625,\n \"outputPricePerMillion\": 9.375\n }\n }\n }\n ]\n },\n \"openrouter/auto\": {\n \"modelName\": \"openrouter/auto\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": -1000000,\n \"outputPricePerMillion\": -1000000\n }\n }\n }\n ]\n },\n \"openai/gpt-3.5-turbo-1106\": {\n \"modelName\": \"openai/gpt-3.5-turbo-1106\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1,\n \"outputPricePerMillion\": 2\n }\n }\n }\n ]\n },\n \"openai/gpt-4-1106-preview\": {\n \"modelName\": \"openai/gpt-4-1106-preview\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 10,\n \"outputPricePerMillion\": 30\n }\n }\n }\n ]\n },\n \"google/palm-2-chat-bison-32k\": {\n \"modelName\": \"google/palm-2-chat-bison-32k\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1,\n \"outputPricePerMillion\": 2\n }\n }\n }\n ]\n },\n \"google/palm-2-codechat-bison-32k\": {\n \"modelName\": \"google/palm-2-codechat-bison-32k\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1,\n \"outputPricePerMillion\": 2\n }\n }\n }\n ]\n },\n \"jondurbin/airoboros-l2-70b\": {\n \"modelName\": \"jondurbin/airoboros-l2-70b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.5,\n \"outputPricePerMillion\": 0.5\n }\n }\n }\n ]\n },\n \"openai/gpt-3.5-turbo-instruct\": {\n \"modelName\": \"openai/gpt-3.5-turbo-instruct\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1.5,\n \"outputPricePerMillion\": 2\n }\n }\n }\n ]\n },\n \"mistralai/mistral-7b-instruct-v0.1\": {\n \"modelName\": \"mistralai/mistral-7b-instruct-v0.1\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.19999999999999998,\n \"outputPricePerMillion\": 0.19999999999999998\n }\n }\n }\n ]\n },\n \"pygmalionai/mythalion-13b\": {\n \"modelName\": \"pygmalionai/mythalion-13b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.5625,\n \"outputPricePerMillion\": 1.125\n }\n }\n }\n ]\n },\n \"openai/gpt-3.5-turbo-16k\": {\n \"modelName\": \"openai/gpt-3.5-turbo-16k\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 3,\n \"outputPricePerMillion\": 4\n }\n }\n }\n ]\n },\n \"openai/gpt-4-32k\": {\n \"modelName\": \"openai/gpt-4-32k\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 60,\n \"outputPricePerMillion\": 120\n }\n }\n }\n ]\n },\n \"openai/gpt-4-32k-0314\": {\n \"modelName\": \"openai/gpt-4-32k-0314\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 60,\n \"outputPricePerMillion\": 120\n }\n }\n }\n ]\n },\n \"nousresearch/nous-hermes-llama2-13b\": {\n \"modelName\": \"nousresearch/nous-hermes-llama2-13b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.18,\n \"outputPricePerMillion\": 0.18\n }\n }\n }\n ]\n },\n \"mancer/weaver\": {\n \"modelName\": \"mancer/weaver\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1.125,\n \"outputPricePerMillion\": 1.125\n }\n }\n }\n ]\n },\n \"huggingfaceh4/zephyr-7b-beta:free\": {\n \"modelName\": \"huggingfaceh4/zephyr-7b-beta:free\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"anthropic/claude-2.0:beta\": {\n \"modelName\": \"anthropic/claude-2.0:beta\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 8,\n \"outputPricePerMillion\": 24\n }\n }\n }\n ]\n },\n \"anthropic/claude-2.0\": {\n \"modelName\": \"anthropic/claude-2.0\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 8,\n \"outputPricePerMillion\": 24\n }\n }\n }\n ]\n },\n \"undi95/remm-slerp-l2-13b\": {\n \"modelName\": \"undi95/remm-slerp-l2-13b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.5625,\n \"outputPricePerMillion\": 1.125\n }\n }\n }\n ]\n },\n \"google/palm-2-chat-bison\": {\n \"modelName\": \"google/palm-2-chat-bison\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1,\n \"outputPricePerMillion\": 2\n }\n }\n }\n ]\n },\n \"google/palm-2-codechat-bison\": {\n \"modelName\": \"google/palm-2-codechat-bison\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1,\n \"outputPricePerMillion\": 2\n }\n }\n }\n ]\n },\n \"gryphe/mythomax-l2-13b\": {\n \"modelName\": \"gryphe/mythomax-l2-13b\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.065,\n \"outputPricePerMillion\": 0.065\n }\n }\n }\n ]\n },\n \"meta-llama/llama-2-13b-chat\": {\n \"modelName\": \"meta-llama/llama-2-13b-chat\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.22,\n \"outputPricePerMillion\": 0.22\n }\n }\n }\n ]\n },\n \"meta-llama/llama-2-70b-chat\": {\n \"modelName\": \"meta-llama/llama-2-70b-chat\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.8999999999999999,\n \"outputPricePerMillion\": 0.8999999999999999\n }\n }\n }\n ]\n },\n \"openai/gpt-3.5-turbo\": {\n \"modelName\": \"openai/gpt-3.5-turbo\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.5,\n \"outputPricePerMillion\": 1.5\n }\n }\n }\n ]\n },\n \"openai/gpt-3.5-turbo-0125\": {\n \"modelName\": \"openai/gpt-3.5-turbo-0125\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.5,\n \"outputPricePerMillion\": 1.5\n }\n }\n }\n ]\n },\n \"openai/gpt-4\": {\n \"modelName\": \"openai/gpt-4\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 30,\n \"outputPricePerMillion\": 60\n }\n }\n }\n ]\n },\n \"openai/gpt-4-0314\": {\n \"modelName\": \"openai/gpt-4-0314\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 30,\n \"outputPricePerMillion\": 60\n }\n }\n }\n ]\n }\n}\n","import { z } from \"zod\";\n\nimport { AssistantRoleLiteral, SystemRoleLiteral, ToolRoleLiteral, UserRoleLiteral } from \"@adaline/types\";\n\nconst OpenRouterChatModelRoles = z.enum([SystemRoleLiteral, UserRoleLiteral, AssistantRoleLiteral, ToolRoleLiteral]);\n\nconst OpenRouterChatModelRolesMap = {\n system: SystemRoleLiteral,\n user: UserRoleLiteral,\n assistant: AssistantRoleLiteral,\n tool: ToolRoleLiteral,\n} as const;\n\nexport { OpenRouterChatModelRoles, OpenRouterChatModelRolesMap };\n","import { z } from \"zod\";\n\nimport { ChatModelSchemaType } from \"@adaline/provider\";\nimport { ImageModalityLiteral, TextModalityLiteral, ToolCallModalityLiteral, ToolResponseModalityLiteral } from \"@adaline/types\";\n\nconst OpenRouterChatModelModalities: ChatModelSchemaType[\"modalities\"] = [\n TextModalityLiteral,\n ImageModalityLiteral,\n ToolCallModalityLiteral,\n ToolResponseModalityLiteral,\n];\n\nconst OpenRouterChatModelModalitiesEnum = z.enum([\n TextModalityLiteral,\n ImageModalityLiteral,\n ToolCallModalityLiteral,\n ToolResponseModalityLiteral,\n]);\n\nexport { OpenRouterChatModelModalitiesEnum, OpenRouterChatModelModalities };\n","import { z } from \"zod\";\n\nconst OpenRouterBaseLogProb = z.object({\n token: z.string(),\n logprob: z.number(),\n bytes: z.array(z.number()).nullable(),\n});\n\nconst OpenRouterLogProb = z\n .object({\n content: z\n .array(\n OpenRouterBaseLogProb.extend({\n top_logprobs: z.array(OpenRouterBaseLogProb),\n })\n )\n .nullable(),\n refusal: z\n .array(\n OpenRouterBaseLogProb.extend({\n top_logprobs: z.array(OpenRouterBaseLogProb),\n })\n )\n .nullable(),\n })\n .nullable();\n\nconst OpenRouterToolCallsCompleteChatResponse = 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 OpenRouterCompleteChatResponse = z.object({\n id: z.string(),\n object: z.string(),\n created: z.number(),\n model: z.string(),\n system_fingerprint: z.string().nullable().optional(),\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: OpenRouterToolCallsCompleteChatResponse.optional(),\n refusal: z.string().nullable().optional(),\n }),\n logprobs: OpenRouterLogProb.optional(),\n finish_reason: z.string().nullable().optional(),\n })\n ),\n usage: z\n .object({\n prompt_tokens: z.number(),\n completion_tokens: z.number(),\n total_tokens: z.number(),\n })\n .nullable()\n .optional(),\n});\ntype OpenRouterCompleteChatResponseType = z.infer<typeof OpenRouterCompleteChatResponse>;\n\nconst OpenRouterToolCallsStreamChatResponse = 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 OpenRouterStreamChatResponse = z.object({\n id: z.string(),\n object: z.string(),\n created: z.number(),\n model: z.string(),\n system_fingerprint: z.string().nullable().optional(),\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: OpenRouterToolCallsStreamChatResponse.optional(),\n refusal: z.string().nullable().optional(),\n })\n .or(z.object({})),\n logprobs: OpenRouterLogProb,\n finish_reason: z.string().nullable().optional(),\n })\n ),\n usage: z\n .object({\n prompt_tokens: z.number(),\n completion_tokens: z.number(),\n total_tokens: z.number(),\n })\n .nullable()\n .optional(),\n});\ntype OpenRouterStreamChatResponseType = z.infer<typeof OpenRouterStreamChatResponse>;\n\nexport {\n OpenRouterStreamChatResponse,\n OpenRouterCompleteChatResponse,\n OpenRouterToolCallsStreamChatResponse,\n OpenRouterToolCallsCompleteChatResponse,\n type OpenRouterStreamChatResponseType,\n type OpenRouterCompleteChatResponseType,\n};\n","import { z } from \"zod\";\n\nconst OpenRouterChatRequestTool = z.object({\n type: z.literal(\"function\"),\n function: z.object({\n name: z.string().min(1),\n description: z.string().min(1).optional(),\n strict: z.boolean().optional(),\n parameters: z.any(),\n }),\n});\ntype OpenRouterChatRequestToolType = z.infer<typeof OpenRouterChatRequestTool>;\n\nconst OpenRouterChatRequestToolChoiceEnum = z.enum([\"none\", \"auto\", \"required\"]);\ntype OpenRouterChatRequestToolChoiceEnumType = z.infer<typeof OpenRouterChatRequestToolChoiceEnum>;\n\nconst OpenRouterChatRequestToolChoiceFunction = z.object({\n type: z.literal(\"function\"),\n function: z.object({\n name: z.string().min(1),\n }),\n});\ntype OpenRouterChatRequestToolChoiceFunctionType = z.infer<typeof OpenRouterChatRequestToolChoiceFunction>;\n\nconst OpenRouterChatRequestResponseFormat = z\n .object({\n type: z.enum([\"text\", \"json_object\"]),\n })\n .or(\n z.object({\n type: z.literal(\"json_schema\"),\n json_schema: z.object({\n name: z.string().min(1),\n description: z.string().min(1).optional(),\n strict: z.boolean().optional(),\n schema: z.any(),\n }),\n })\n );\ntype OpenRouterChatRequestResponseFormatType = z.infer<typeof OpenRouterChatRequestResponseFormat>;\n\nconst OpenRouterChatRequestTextContent = z.object({\n text: z.string().min(1),\n type: z.literal(\"text\"),\n});\ntype OpenRouterChatRequestTextContentType = z.infer<typeof OpenRouterChatRequestTextContent>;\n\nconst OpenRouterChatRequestImageContent = z.object({\n type: z.literal(\"image_url\"),\n image_url: z.object({\n url: z.string().url().min(1),\n detail: z.enum([\"low\", \"high\", \"auto\"]).optional(),\n }),\n});\ntype OpenRouterChatRequestImageContentType = z.infer<typeof OpenRouterChatRequestImageContent>;\n\nconst OpenRouterChatRequestToolCallContent = z.object({\n id: z.string().min(1),\n type: z.literal(\"function\"),\n function: z.object({\n name: z.string().min(1),\n arguments: z.string().min(1),\n }),\n});\ntype OpenRouterChatRequestToolCallContentType = z.infer<typeof OpenRouterChatRequestToolCallContent>;\n\nconst OpenRouterChatRequestSystemMessage = z.object({\n role: z.literal(\"system\"),\n content: z.string().min(1).or(z.array(OpenRouterChatRequestTextContent).min(1)),\n});\ntype OpenRouterChatRequestSystemMessageType = z.infer<typeof OpenRouterChatRequestSystemMessage>;\n\nconst OpenRouterChatRequestUserMessage = z.object({\n role: z.literal(\"user\"),\n content: z\n .string()\n .min(1)\n .or(z.array(z.union([OpenRouterChatRequestTextContent, OpenRouterChatRequestImageContent])).min(1)),\n});\ntype OpenRouterChatRequestUserMessageType = z.infer<typeof OpenRouterChatRequestUserMessage>;\n\nconst OpenRouterChatRequestAssistantMessage = z.object({\n role: z.literal(\"assistant\"),\n content: z.string().min(1).or(z.array(OpenRouterChatRequestTextContent).min(1)).optional(),\n tool_calls: z.array(OpenRouterChatRequestToolCallContent).min(1).optional(),\n});\ntype OpenRouterChatRequestAssistantMessageType = z.infer<typeof OpenRouterChatRequestAssistantMessage>;\n\nconst OpenRouterChatRequestToolMessage = z.object({\n role: z.literal(\"tool\"),\n tool_call_id: z.string().min(1),\n content: z.string().min(1),\n});\ntype OpenRouterChatRequestToolMessageType = z.infer<typeof OpenRouterChatRequestToolMessage>;\n\nconst OpenRouterChatRequestMessage = z.union([\n OpenRouterChatRequestSystemMessage,\n OpenRouterChatRequestUserMessage,\n OpenRouterChatRequestAssistantMessage,\n OpenRouterChatRequestToolMessage,\n]);\ntype OpenRouterChatRequestMessageType = z.infer<typeof OpenRouterChatRequestMessage>;\n\nconst OpenRouterChatRequest = z.object({\n model: z.string().min(1).optional(),\n messages: z.array(OpenRouterChatRequestMessage).min(1),\n frequency_penalty: z.number().min(-2).max(2).nullable().optional(),\n logprobs: z.boolean().nullable().optional(),\n top_logprobs: z.number().min(0).max(20).nullable().optional(),\n max_tokens: z.number().min(0).nullable().optional(),\n presence_penalty: z.number().min(-2).max(2).nullable().optional(),\n repetition_penalty: z.number().min(0).max(2).nullable().optional(),\n response_format: OpenRouterChatRequestResponseFormat.optional(),\n seed: z.number().nullable().optional(),\n stop: z.string().or(z.array(z.string()).max(4)).nullable().optional(),\n top_a: z.number().min(0).max(1).nullable().optional(),\n temperature: z.number().min(0).max(2).nullable().optional(),\n top_p: z.number().min(0).max(1).nullable().optional(),\n top_k: z.number().min(0).max(100).nullable().optional(),\n min_p: z.number().min(0).max(1).nullable().optional(),\n tools: z.array(OpenRouterChatRequestTool).optional(),\n tool_choice: OpenRouterChatRequestToolChoiceEnum.or(OpenRouterChatRequestToolChoiceFunction).optional(),\n});\ntype OpenRouterChatRequestType = z.infer<typeof OpenRouterChatRequest>;\n\nexport {\n OpenRouterChatRequest,\n OpenRouterChatRequestMessage,\n OpenRouterChatRequestSystemMessage,\n OpenRouterChatRequestUserMessage,\n OpenRouterChatRequestAssistantMessage,\n OpenRouterChatRequestToolMessage,\n OpenRouterChatRequestTextContent,\n OpenRouterChatRequestImageContent,\n OpenRouterChatRequestToolCallContent,\n OpenRouterChatRequestTool,\n OpenRouterChatRequestToolChoiceEnum,\n OpenRouterChatRequestToolChoiceFunction,\n OpenRouterChatRequestResponseFormat,\n type OpenRouterChatRequestType,\n type OpenRouterChatRequestMessageType,\n type OpenRouterChatRequestSystemMessageType,\n type OpenRouterChatRequestUserMessageType,\n type OpenRouterChatRequestAssistantMessageType,\n type OpenRouterChatRequestToolMessageType,\n type OpenRouterChatRequestTextContentType,\n type OpenRouterChatRequestImageContentType,\n type OpenRouterChatRequestToolCallContentType,\n type OpenRouterChatRequestToolType,\n type OpenRouterChatRequestToolChoiceEnumType,\n type OpenRouterChatRequestToolChoiceFunctionType,\n type OpenRouterChatRequestResponseFormatType,\n};\n","import { z } from \"zod\";\n\nimport {\n ChatModelSchemaType,\n ChatModelV1,\n getMimeTypeFromBase64,\n HeadersType,\n InvalidConfigError,\n InvalidMessagesError,\n InvalidModelRequestError,\n InvalidToolsError,\n ModelResponseError,\n ParamsType,\n removeUndefinedEntries,\n SelectStringConfigItemDefType,\n UrlType,\n urlWithoutTrailingSlash,\n} from \"@adaline/provider\";\nimport {\n AssistantRoleLiteral,\n Base64ImageContentTypeLiteral,\n Base64ImageContentValueType,\n ChatLogProbsType,\n ChatModelPriceType,\n ChatResponseType,\n ChatUsageType,\n Config,\n ConfigType,\n ContentType,\n createPartialTextMessage,\n createPartialToolCallMessage,\n createTextContent,\n createToolCallContent,\n ImageModalityLiteral,\n Message,\n MessageType,\n PartialChatResponseType,\n SystemRoleLiteral,\n TextModalityLiteral,\n Tool,\n ToolCallContentType,\n ToolCallModalityLiteral,\n ToolResponseContentType,\n ToolResponseModalityLiteral,\n ToolRoleLiteral,\n ToolType,\n UrlImageContentTypeLiteral,\n UserRoleLiteral,\n} from \"@adaline/types\";\n\nimport { OpenRouter } from \"../../provider/provider.open-router\";\nimport pricingData from \"../pricing.json\";\nimport {\n OpenRouterChatRequest,\n OpenRouterChatRequestImageContentType,\n OpenRouterChatRequestTextContentType,\n OpenRouterChatRequestToolType,\n OpenRouterChatRequestType,\n OpenRouterCompleteChatResponse,\n OpenRouterCompleteChatResponseType,\n OpenRouterStreamChatResponse,\n OpenRouterStreamChatResponseType,\n} from \"./types\";\n\nconst BaseChatModelOptions = z.object({\n modelName: z.string(),\n apiKey: z.string(),\n openRouterReferer: z.string().optional(),\n openRouterTitle: 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 modelName: string;\n private readonly apiKey: string;\n private readonly baseUrl: string;\n private readonly streamChatUrl: string;\n private readonly completeChatUrl: string;\n private readonly openRouterReferer: string | undefined;\n private readonly openRouterTitle: string | undefined;\n\n constructor(modelSchema: ChatModelSchemaType, options: BaseChatModelOptionsType) {\n const parsedOptions = BaseChatModelOptions.parse(options);\n this.modelSchema = modelSchema;\n this.modelName = parsedOptions.modelName;\n this.apiKey = parsedOptions.apiKey;\n this.baseUrl = urlWithoutTrailingSlash(OpenRouter.baseUrl);\n this.streamChatUrl = urlWithoutTrailingSlash(`${this.baseUrl}/chat/completions`);\n this.completeChatUrl = urlWithoutTrailingSlash(`${this.baseUrl}/chat/completions`);\n this.openRouterReferer = parsedOptions.openRouterReferer;\n this.openRouterTitle = parsedOptions.openRouterTitle;\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.openRouterReferer ? { \"HTTP-Referer\": this.openRouterReferer } : {}),\n ...(this.openRouterTitle ? { \"X-Title\": this.openRouterTitle } : {}),\n };\n }\n\n getDefaultParams(): ParamsType {\n return {\n model: this.modelName,\n };\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n getRetryDelay(responseHeaders: HeadersType): { shouldRetry: boolean; delayMs: number } {\n return { shouldRetry: true, delayMs: 0 };\n }\n\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 transformModelRequest(request: OpenRouterChatRequestType): {\n modelName: string | undefined;\n config: ConfigType;\n messages: MessageType[];\n tools: ToolType[] | undefined;\n } {\n const safeRequest = OpenRouterChatRequest.safeParse(request);\n if (!safeRequest.success) {\n throw new InvalidModelRequestError({ info: \"Invalid model request\", cause: safeRequest.error });\n }\n\n const parsedRequest = safeRequest.data;\n\n const modelName = parsedRequest.model;\n\n if (parsedRequest.tool_choice && (!parsedRequest.tools || parsedRequest.tools.length === 0)) {\n throw new InvalidModelRequestError({\n info: `Invalid model request for model : '${this.modelName}'`,\n cause: new Error(\"'tools' are required when 'tool_choice' is specified\"),\n });\n }\n\n const _config: ConfigType = {};\n if (parsedRequest.response_format) {\n _config.responseFormat = parsedRequest.response_format.type;\n if (parsedRequest.response_format.type === \"json_schema\") {\n _config.responseSchema = {\n name: parsedRequest.response_format.json_schema.name,\n description: parsedRequest.response_format.json_schema.description || \"\",\n strict: parsedRequest.response_format.json_schema.strict,\n schema: parsedRequest.response_format.json_schema.schema,\n };\n }\n }\n\n if (parsedRequest.tool_choice) {\n if (typeof parsedRequest.tool_choice === \"string\") {\n _config.toolChoice = parsedRequest.tool_choice;\n } else {\n _config.toolChoice = parsedRequest.tool_choice.function.name;\n }\n }\n\n _config.seed = parsedRequest.seed;\n _config.maxTokens = parsedRequest.max_tokens;\n _config.temperature = parsedRequest.temperature;\n _config.topA = parsedRequest.top_a;\n _config.topP = parsedRequest.top_p;\n _config.minP = parsedRequest.min_p;\n _config.topK = parsedRequest.top_k;\n _config.repetitionPenalty = parsedRequest.repetition_penalty;\n _config.presencePenalty = parsedRequest.presence_penalty;\n _config.frequencyPenalty = parsedRequest.frequency_penalty;\n _config.stop = parsedRequest.stop;\n _config.logProbs = parsedRequest.logprobs;\n _config.topLogProbs = parsedRequest.top_logprobs;\n\n const config = Config().parse(removeUndefinedEntries(_config));\n\n const messages: MessageType[] = [];\n const toolCallMap: { [id: string]: ToolCallContentType } = {};\n parsedRequest.messages.forEach((message) => {\n const role = message.role;\n switch (role) {\n case \"system\":\n {\n const content = message.content as string | OpenRouterChatRequestTextContentType[];\n if (typeof content === \"string\") {\n messages.push({\n role: role,\n content: [{ modality: TextModalityLiteral, value: content }],\n });\n } else {\n const _content = content.map((c) => {\n return { modality: TextModalityLiteral, value: c.text };\n });\n messages.push({ role: role, content: _content });\n }\n }\n break;\n\n case \"user\":\n {\n const content = message.content as string | (OpenRouterChatRequestTextContentType | OpenRouterChatRequestImageContentType)[];\n if (typeof content === \"string\") {\n messages.push({\n role: role,\n content: [{ modality: TextModalityLiteral, value: content }],\n });\n } else {\n const _content = content.map((c) => {\n if (c.type === \"text\") {\n return { modality: TextModalityLiteral, value: c.text };\n } else {\n if (c.image_url.url.startsWith(\"data:\")) {\n return {\n modality: ImageModalityLiteral,\n detail: c.image_url.detail || \"auto\",\n value: {\n type: Base64ImageContentTypeLiteral,\n base64: c.image_url.url,\n mediaType: getMimeTypeFromBase64(c.image_url.url) as Base64ImageContentValueType[\"mediaType\"],\n },\n };\n } else {\n return {\n modality: ImageModalityLiteral,\n detail: c.image_url.detail || \"auto\",\n value: { type: UrlImageContentTypeLiteral, url: c.image_url.url },\n };\n }\n }\n });\n messages.push({ role: role, content: _content });\n }\n }\n break;\n\n case \"assistant\":\n {\n const assistantContent: ContentType[] = [];\n\n if (!message.content && !message.tool_calls) {\n throw new InvalidModelRequestError({\n info: `Invalid model request for model : '${this.modelName}'`,\n cause: new Error(\"one of'content' or 'tool_calls' must be provided\"),\n });\n }\n\n if (message.content) {\n const content = message.content as string | OpenRouterChatRequestTextContentType[];\n if (typeof content === \"string\") {\n assistantContent.push({ modality: TextModalityLiteral, value: content });\n } else {\n content.forEach((c) => {\n assistantContent.push({ modality: TextModalityLiteral, value: c.text });\n });\n }\n }\n\n if (message.tool_calls) {\n const toolCalls = message.tool_calls;\n toolCalls.forEach((toolCall, index) => {\n const toolCallContent: ToolCallContentType = {\n modality: ToolCallModalityLiteral,\n id: toolCall.id,\n index: index,\n name: toolCall.function.name,\n arguments: toolCall.function.arguments,\n };\n assistantContent.push(toolCallContent);\n toolCallMap[toolCallContent.id] = toolCallContent;\n });\n }\n messages.push({ role: role, content: assistantContent });\n }\n break;\n\n case \"tool\":\n {\n const toolResponse = message;\n messages.push({\n role: role,\n content: [\n {\n modality: ToolResponseModalityLiteral,\n id: toolResponse.tool_call_id,\n index: toolCallMap[toolResponse.tool_call_id].index,\n name: toolCallMap[toolResponse.tool_call_id].name,\n data: toolResponse.content,\n },\n ],\n });\n }\n break;\n }\n });\n\n const tools: ToolType[] = [];\n if (parsedRequest.tools) {\n parsedRequest.tools.forEach((tool: OpenRouterChatRequestToolType) => {\n tools.push({\n type: \"function\",\n definition: {\n schema: {\n name: tool.function.name,\n description: tool.function.description || \"\",\n strict: tool.function.strict,\n parameters: tool.function.parameters,\n },\n },\n });\n });\n }\n\n return {\n modelName,\n config,\n messages,\n tools: tools.length > 0 ? tools : undefined,\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 const _parsedConfig = this.modelSchema.config.schema.safeParse(config);\n if (!_parsedConfig.success) {\n throw new InvalidConfigError({\n info: `Invalid config for model : '${this.modelName}'`,\n cause: _parsedConfig.error,\n });\n }\n\n const parsedConfig = _parsedConfig.data as ConfigType;\n if (_toolChoice !== undefined) {\n parsedConfig.toolChoice = _toolChoice;\n }\n\n Object.keys(parsedConfig).forEach((key) => {\n if (!(key in this.modelSchema.config.def)) {\n throw new InvalidConfigError({\n info: `Invalid config for model : '${this.modelName}'`,\n cause: new Error(`Invalid config key : '${key}', \n available keys : [${Object.keys(this.modelSchema.config.def).join(\", \")}]`),\n });\n }\n });\n\n const transformedConfig = Object.keys(parsedConfig).reduce((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 }, {} as ParamsType);\n\n if (transformedConfig.top_logprobs && !transformedConfig.logprobs) {\n throw new InvalidConfigError({\n info: `Invalid config for model : '${this.modelName}'`,\n cause: new Error(\"'logprobs' must be 'true' when 'top_logprobs' is specified\"),\n });\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: `Invalid config for model : '${this.modelName}'`,\n cause: new Error(\"'tools' are required when 'toolChoice' is specified\"),\n });\n } else if (tools && tools.length > 0) {\n const configToolChoice = this.modelSchema.config.def.toolChoice as SelectStringConfigItemDefType;\n if (!configToolChoice.choices.includes(toolChoice)) {\n if (tools.map((tool) => tool.definition.schema.name).includes(toolChoice)) {\n transformedConfig.tool_choice = { type: \"function\", function: { name: toolChoice } };\n } else {\n throw new InvalidConfigError({\n info: `Invalid config for model : '${this.modelName}'`,\n cause: new Error(`toolChoice : '${toolChoice}' is not part of provided 'tools' names or \n one of [${configToolChoice.choices.join(\", \")}]`),\n });\n }\n }\n }\n }\n\n if (\"response_format\" in transformedConfig && transformedConfig.response_format !== undefined) {\n const responseFormat = transformedConfig.response_format as string;\n if (responseFormat === \"json_schema\") {\n if (!(\"response_schema\" in transformedConfig)) {\n throw new InvalidConfigError({\n info: `Invalid config for model : '${this.modelName}'`,\n cause: new Error(\"'responseSchema' is required in config when 'responseFormat' is 'json_schema'\"),\n });\n } else {\n transformedConfig.response_format = {\n type: \"json_schema\",\n json_schema: transformedConfig.response_schema,\n };\n delete transformedConfig.response_schema;\n }\n } else {\n transformedConfig.response_format = { type: responseFormat };\n }\n }\n\n return transformedConfig;\n }\n\n transformMessages(messages: MessageType[]): ParamsType {\n if (!messages || (messages && messages.length === 0)) {\n return { messages: [] };\n }\n\n const parsedMessages = messages.map((message) => {\n const parsedMessage = Message().safeParse(message);\n if (!parsedMessage.success) {\n throw new InvalidMessagesError({ info: \"Invalid messages\", cause: parsedMessage.error });\n }\n return parsedMessage.data;\n });\n\n parsedMessages.forEach((message) => {\n message.content.forEach((content) => {\n if (!this.modelSchema.modalities.includes(content.modality)) {\n throw new InvalidMessagesError({\n info: `Invalid message content for model : '${this.modelName}'`,\n cause: new Error(`model : '${this.modelName}' does not support modality : '${content.modality}', \n available modalities : [${this.modelSchema.modalities.join(\", \")}]`),\n });\n }\n });\n });\n\n parsedMessages.forEach((message) => {\n if (!Object.keys(this.modelSchema.roles).includes(message.role)) {\n throw new InvalidMessagesError({\n info: `Invalid message content for model : '${this.modelName}'`,\n cause: new Error(`model : '${this.modelName}' does not support role : '${message.role}', \n available roles : [${Object.keys(this.modelSchema.roles).join(\", \")}]`),\n });\n }\n });\n\n const transformedMessages = parsedMessages.map((message) => {\n switch (message.role) {\n case SystemRoleLiteral: {\n const textContent: { type: \"text\"; text: string }[] = [];\n message.content.forEach((content) => {\n if (content.modality === TextModalityLiteral) {\n textContent.push({ type: \"text\", text: content.value });\n } else {\n throw new InvalidMessagesError({\n info: `Invalid message 'role' and 'modality' combination for model : ${this.modelName}`,\n cause: new Error(`role : '${message.role}' cannot have content with modality : '${content.modality}'`),\n });\n }\n });\n\n return {\n role: this.modelSchema.roles[message.role],\n content: textContent,\n };\n }\n\n case AssistantRoleLiteral: {\n const textContent: { type: \"text\"; text: string }[] = [];\n const toolCalls: { id: string; type: \"function\"; function: { name: string; arguments: string } }[] = [];\n message.content.forEach((content) => {\n if (content.modality === TextModalityLiteral) {\n textContent.push({ type: \"text\", text: content.value });\n } else if (content.modality === ToolCallModalityLiteral) {\n toolCalls.push({\n id: content.id,\n type: \"function\",\n function: { name: content.name, arguments: content.arguments },\n });\n } else {\n throw new InvalidMessagesError({\n info: `Invalid message 'role' and 'modality' combination for model : ${this.modelName}`,\n cause: new Error(`role : '${message.role}' cannot have content with modality : '${content.modality}'`),\n });\n }\n });\n\n return {\n role: this.modelSchema.roles[message.role],\n ...(textContent.length > 0 ? { content: textContent } : {}),\n ...(toolCalls.length > 0 ? { tool_calls: toolCalls } : {}),\n };\n }\n\n case UserRoleLiteral: {\n const textContent: { type: \"text\"; text: string }[] = [];\n const imageContent: { type: \"image_url\"; image_url: { url: string; detail: string } }[] = [];\n message.content.forEach((content) => {\n if (content.modality === TextModalityLiteral) {\n textContent.push({ type: \"text\", text: content.value });\n } else if (content.modality === ImageModalityLiteral) {\n imageContent.push({\n type: \"image_url\",\n image_url: {\n url: content.value.type === \"url\" ? content.value.url : content.value.base64,\n detail: content.detail,\n },\n });\n } else {\n throw new InvalidMessagesError({\n info: `Invalid message 'role' and 'modality' combination for model : ${this.modelName}`,\n cause: new Error(`role : '${message.role}' cannot have content with modality : '${content.modality}'`),\n });\n }\n });\n\n const combinedContent = [...textContent, ...imageContent];\n\n return {\n role: this.modelSchema.roles[message.role],\n content: combinedContent,\n };\n }\n\n case ToolRoleLiteral: {\n if (message.content.length !== 1) {\n throw new InvalidMessagesError({\n info: `Invalid message for role : '${message.role}'`,\n cause: new Error(`role : '${message.role}' must have exactly one content item`),\n });\n }\n\n if (message.content[0].modality !== ToolResponseModalityLiteral) {\n throw new InvalidMessagesError({\n info: `Invalid message 'role' and 'modality' combination for model : ${this.modelName}`,\n cause: new Error(`role : '${message.role}' must have content with modality : '${ToolResponseModalityLiteral}'`),\n });\n }\n\n const toolResponse = message.content[0] as ToolResponseContentType;\n return {\n role: this.modelSchema.roles[message.role],\n tool_call_id: toolResponse.id,\n content: toolResponse.data,\n };\n }\n\n default: {\n throw new InvalidMessagesError({\n info: `Invalid message 'role' for model : ${this.modelName}`,\n cause: new Error(`role : '${message.role}' is not supported, \n available roles : [${Object.keys(this.modelSchema.roles).join(\", \")}]`),\n });\n }\n }\n });\n\n return { messages: transformedMessages };\n }\n\n transformTools(tools: ToolType[]): ParamsType {\n if (!this.modelSchema.modalities.includes(ToolCallModalityLiteral)) {\n throw new InvalidToolsError({\n info: `Invalid tool 'modality' for model : ${this.modelName}`,\n cause: new Error(`model : '${this.modelName}' does not support tool modality : '${ToolCallModalityLiteral}'`),\n });\n }\n\n if (!tools || (tools && tools.length === 0)) {\n return { tools: [] as ToolType[] };\n }\n\n const parsedTools = tools.map((tool) => {\n const parsedTool = Tool().safeParse(tool);\n if (!parsedTool.success) {\n throw new InvalidToolsError({ info: \"Invalid tools\", cause: parsedTool.error });\n }\n return parsedTool.data;\n });\n\n const transformedTools = parsedTools.map((tool) => ({\n type: \"function\",\n function: tool.definition.schema,\n }));\n\n return { tools: transformedTools };\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n async getCompleteChatUrl(config?: ConfigType, messages?: MessageType[], tools?: ToolType[]): Promise<UrlType> {\n return new Promise((resolve) => {\n resolve(this.completeChatUrl);\n });\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n async getCompleteChatHeaders(config?: ConfigType, messages?: MessageType[], tools?: ToolType[]): Promise<HeadersType> {\n return new Promise((resolve) => {\n resolve(this.getDefaultHeaders());\n });\n }\n\n async getCompleteChatData(config: ConfigType, messages: MessageType[], tools?: ToolType[]): Promise<ParamsType> {\n const transformedConfig = this.transformConfig(config, messages, tools);\n const transformedMessages = this.transformMessages(messages);\n if (transformedMessages.messages && (transformedMessages.messages as MessageType[]).length === 0) {\n throw new InvalidMessagesError({\n info: \"Messages are required\",\n cause: new Error(\"Messages are required\"),\n });\n }\n\n const transformedTools = tools ? this.transformTools(tools) : {};\n\n return new Promise((resolve) => {\n resolve({\n ...this.getDefaultParams(),\n ...transformedConfig,\n ...transformedMessages,\n ...transformedTools,\n });\n });\n }\n\n transformCompleteChatResponse(response: any): ChatResponseType {\n const safe = OpenRouterCompleteChatResponse.safeParse(response);\n if (safe.success) {\n if (safe.data.choices.length === 0) {\n throw new ModelResponseError({\n info: \"Invalid response from model\",\n cause: new Error(`No choices in response : ${JSON.stringify(safe.data)}`),\n });\n }\n\n const parsedResponse: OpenRouterCompleteChatResponseType = safe.data;\n const messages: MessageType[] = [\n {\n role: AssistantRoleLiteral,\n content: [],\n },\n ];\n const message = parsedResponse.choices[0].message;\n if (message.content) {\n messages[0].content.push(createTextContent(message.content));\n }\n\n if (message.refusal) {\n messages[0].content.push(createTextContent(message.refusal));\n }\n\n if (message.tool_calls) {\n message.tool_calls.forEach((toolCall, index) => {\n messages[0].content.push(createToolCallContent(index, toolCall.id, toolCall.function.name, toolCall.function.arguments));\n });\n }\n\n let usage: ChatUsageType | undefined;\n if (parsedResponse.usage) {\n usage = {\n promptTokens: parsedResponse.usage.prompt_tokens,\n completionTokens: parsedResponse.usage.completion_tokens,\n totalTokens: parsedResponse.usage.total_tokens,\n };\n }\n\n const logProbs: ChatLogProbsType = [];\n const _logProbs = parsedResponse.choices[0].logprobs;\n if (_logProbs) {\n if (_logProbs.content) {\n logProbs.push(\n ..._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 }\n if (_logProbs.refusal) {\n logProbs.push(\n ..._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\n return {\n messages: messages,\n usage: usage,\n logProbs: logProbs,\n };\n }\n\n throw new ModelResponseError({ info: \"Invalid response from model\", cause: safe.error });\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n async getStreamChatUrl(config?: ConfigType, messages?: MessageType[], tools?: ToolType[]): Promise<UrlType> {\n return new Promise((resolve) => {\n resolve(this.streamChatUrl);\n });\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n async getStreamChatHeaders(config?: ConfigType, messages?: MessageType[], tools?: ToolType[]): Promise<HeadersType> {\n return new Promise((resolve) => {\n resolve(this.getDefaultHeaders());\n });\n }\n\n async getStreamChatData(config: ConfigType, messages: MessageType[], tools?: ToolType[]): Promise<ParamsType> {\n const transformedConfig = this.transformConfig(config, messages, tools);\n const transformedMessages = this.transformMessages(messages);\n if (transformedMessages.messages && (transformedMessages.messages as MessageType[]).length === 0) {\n throw new InvalidMessagesError({\n info: \"Messages are required\",\n cause: new Error(\"Messages are required\"),\n });\n }\n\n const transformedTools = tools ? this.transformTools(tools) : {};\n\n return new Promise((resolve) => {\n resolve({\n stream: true,\n stream_options: { include_usage: true },\n ...this.getDefaultParams(),\n ...transformedConfig,\n ...transformedMessages,\n ...transformedTools,\n });\n });\n }\n\n async *transformStreamChatResponseChunk(\n chunk: string,\n buffer: string\n ): AsyncGenerator<{ partialResponse: PartialChatResponseType; buffer: string }> {\n const data = buffer + chunk;\n let lines: string[] = [];\n let newBuffer = \"\";\n\n // Split data into complete lines and new buffer\n let currentIndex = 0;\n while (currentIndex < data.length) {\n const newlineIndex = data.indexOf(\"\\n\", currentIndex);\n if (newlineIndex === -1) {\n newBuffer = data.substring(currentIndex);\n break;\n } else {\n const line = data.substring(currentIndex, newlineIndex).trim();\n if (line) {\n lines.push(line);\n }\n currentIndex = newlineIndex + 1;\n }\n }\n\n // Process each complete line\n for (const line of lines) {\n if (line === \"data: [DONE]\") {\n return; // End of stream\n }\n\n if (line.startsWith(\"data: \")) {\n const jsonStr = line.substring(\"data: \".length);\n try {\n const structuredLine = JSON.parse(jsonStr);\n const safe = OpenRouterStreamChatResponse.safeParse(structuredLine);\n if (safe.success) {\n const partialResponse: PartialChatResponseType = { partialMessages: [] };\n const parsedResponse: OpenRouterStreamChatResponseType = safe.data;\n // Process message content\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(\n createPartialToolCallMessage(\n AssistantRoleLiteral,\n toolCall.index,\n toolCall.id,\n toolCall.function?.name,\n toolCall.function?.arguments\n )\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 yield { partialResponse: partialResponse, buffer: newBuffer };\n } else {\n throw new ModelResponseError({ info: \"Invalid response from model\", cause: safe.error });\n }\n } catch (error) {\n throw new ModelResponseError({\n info: `Malformed JSON received in stream: ${jsonStr}`,\n cause: error,\n });\n }\n }\n }\n\n // Yield the updated buffer after processing all lines\n yield { partialResponse: { partialMessages: [] }, buffer: newBuffer };\n }\n async *transformProxyStreamChatResponseChunk(\n chunk: string,\n buffer: string,\n data?: any,\n headers?: Record<string, string>,\n query?: Record<string, string>\n ): AsyncGenerator<{ partialResponse: PartialChatResponseType; buffer: string }> {\n // Directly delegate to transformStreamChatResponseChunk\n yield* this.transformStreamChatResponseChunk(chunk, buffer);\n }\n async getProxyStreamChatUrl(data?: any, headers?: Record<string, string>, query?: Record<string, string>): Promise<UrlType> {\n return new Promise((resolve) => {\n resolve(this.streamChatUrl);\n });\n }\n async getProxyCompleteChatUrl(data?: any, headers?: Record<string, string>, query?: Record<string, string>): Promise<UrlType> {\n return new Promise((resolve) => {\n resolve(this.completeChatUrl);\n });\n }\n\n async getProxyCompleteChatHeaders(data?: any, headers?: Record<string, string>, query?: Record<string, string>): Promise<HeadersType> {\n if (!headers) {\n return {};\n }\n const sanitizedHeaders: Record<string, string> = { ...headers };\n\n delete sanitizedHeaders.host;\n delete sanitizedHeaders[\"content-length\"];\n return sanitizedHeaders;\n }\n async getProxyStreamChatHeaders(data?: any, headers?: Record<string, string>, query?: Record<string, string>): Promise<HeadersType> {\n // Directly delegate to getProxyCompleteChatHeaders for now\n return await this.getProxyCompleteChatHeaders(data, headers, query);\n }\n\n getModelPricing(): ChatModelPriceType {\n // Check if the modelName exists in pricingData before accessing it\n if (!(this.modelName in pricingData)) {\n throw new ModelResponseError({\n info: `Invalid model pricing for model : '${this.modelName}'`,\n cause: new Error(`No pricing configuration found for model \"${this.modelName}\"`),\n });\n }\n\n const entry = pricingData[this.modelName as keyof typeof pricingData];\n return entry as ChatModelPriceType;\n }\n}\n\nexport { BaseChatModel, BaseChatModelOptions, type BaseChatModelOptionsType };\n","import { ChatModelSchema } from \"@adaline/provider\";\n\nimport { OpenRouterChatModelConfigs } from \"../../configs\";\nimport {\n OpenRouterChatModelModalities,\n OpenRouterChatModelModalitiesEnum,\n OpenRouterChatModelRoles,\n OpenRouterChatModelRolesMap,\n} from \"./types\";\n\nconst BaseChatModelSchema = ChatModelSchema(OpenRouterChatModelRoles, OpenRouterChatModelModalitiesEnum).parse({\n name: \"__base__\",\n description: \"Base chat model for Open Router\",\n maxInputTokens: 128000,\n maxOutputTokens: 128000,\n roles: OpenRouterChatModelRolesMap,\n modalities: OpenRouterChatModelModalities,\n config: {\n def: OpenRouterChatModelConfigs.base(128000, 4).def,\n schema: OpenRouterChatModelConfigs.base(128000, 4).schema,\n },\n});\n\nexport { BaseChatModelSchema };\n"]}
|