From 64e07a0429bf4eb62ff8ae813f85b9847730e961 Mon Sep 17 00:00:00 2001 From: reanon <85157-reanon@users.noreply.gitgud.io> Date: Mon, 14 Apr 2025 21:07:38 +0000 Subject: [PATCH] 4.1 maybe --- src/info-page.ts | 6 ++++++ .../preprocessors/validate-context-size.ts | 6 ++++++ src/shared/key-management/azure/provider.ts | 3 +++ src/shared/key-management/openai/provider.ts | 3 +++ src/shared/models.ts | 18 ++++++++++++++++++ src/shared/stats.ts | 8 ++++++++ 6 files changed, 44 insertions(+) diff --git a/src/info-page.ts b/src/info-page.ts index 66852ed..783cecd 100644 --- a/src/info-page.ts +++ b/src/info-page.ts @@ -19,6 +19,9 @@ const MODEL_FAMILY_FRIENDLY_NAME: { [f in ModelFamily]: string } = { "gpt4-32k": "GPT-4 32k", "gpt4-turbo": "GPT-4 Turbo", gpt4o: "GPT-4o", + gpt41: "GPT-4.1", + "gpt41-mini": "GPT-4.1 Mini", + "gpt41-nano": "GPT-4.1 Nano", gpt45: "GPT-4.5", o1: "OpenAI o1", "o1-mini": "OpenAI o1 mini", @@ -47,6 +50,9 @@ const MODEL_FAMILY_FRIENDLY_NAME: { [f in ModelFamily]: string } = { "azure-gpt4-turbo": "Azure GPT-4 Turbo", "azure-gpt4o": "Azure GPT-4o", "azure-gpt45": "Azure GPT-4.5", + "azure-gpt41": "Azure GPT-4.1", + "azure-gpt41-mini": "Azure GPT-4.1 Mini", + "azure-gpt41-nano": "Azure GPT-4.1 Nano", "azure-o1": "Azure o1", "azure-o1-mini": "Azure o1 mini", "azure-o3-mini": "Azure o3 mini", diff --git a/src/proxy/middleware/request/preprocessors/validate-context-size.ts b/src/proxy/middleware/request/preprocessors/validate-context-size.ts index 00d27f6..0846e16 100644 --- a/src/proxy/middleware/request/preprocessors/validate-context-size.ts +++ b/src/proxy/middleware/request/preprocessors/validate-context-size.ts @@ -60,6 +60,12 @@ export const validateContextSize: RequestPreprocessor = async (req) => { modelMax = 128000; } else if (model.match(/^gpt-4.5/)) { modelMax = 128000; + } else if (model.match(/^gpt-4\.1(-\d{4}-\d{2}-\d{2})?$/)) { + modelMax = 1000000; + } else if (model.match(/^gpt-4\.1-mini(-\d{4}-\d{2}-\d{2})?$/)) { + modelMax = 1000000; + } else if (model.match(/^gpt-4\.1-nano(-\d{4}-\d{2}-\d{2})?$/)) { + modelMax = 1000000; } else if (model.match(/^chatgpt-4o/)) { modelMax = 128000; } else if (model.match(/gpt-4-turbo(-\d{4}-\d{2}-\d{2})?$/)) { diff --git a/src/shared/key-management/azure/provider.ts b/src/shared/key-management/azure/provider.ts index 08a7805..2039396 100644 --- a/src/shared/key-management/azure/provider.ts +++ b/src/shared/key-management/azure/provider.ts @@ -74,6 +74,9 @@ export class AzureOpenAIKeyProvider implements KeyProvider { "azure-gpt4-turboTokens": 0, "azure-gpt4oTokens": 0, "azure-gpt45Tokens": 0, + "azure-gpt41Tokens": 0, + "azure-gpt41-miniTokens": 0, + "azure-gpt41-nanoTokens": 0, "azure-o1Tokens": 0, "azure-o1-miniTokens": 0, "azure-o3-miniTokens": 0, diff --git a/src/shared/key-management/openai/provider.ts b/src/shared/key-management/openai/provider.ts index 0d38a2a..94b2282 100644 --- a/src/shared/key-management/openai/provider.ts +++ b/src/shared/key-management/openai/provider.ts @@ -114,6 +114,9 @@ export class OpenAIKeyProvider implements KeyProvider { "gpt4-turboTokens": 0, gpt4oTokens: 0, gpt45Tokens: 0, + gpt41Tokens: 0, + "gpt41-minitokens": 0, + "gpt41-nanotokens": 0, "o1Tokens": 0, "o1-miniTokens": 0, "o3-miniTokens": 0, diff --git a/src/shared/models.ts b/src/shared/models.ts index e417eae..f8081cb 100644 --- a/src/shared/models.ts +++ b/src/shared/models.ts @@ -24,6 +24,9 @@ export type OpenAIModelFamily = | "gpt4-32k" | "gpt4-turbo" | "gpt4o" + | "gpt41" + | "gpt41-mini" + | "gpt41-nano" | "gpt45" | "o1" | "o1-mini" @@ -68,6 +71,9 @@ export const MODEL_FAMILIES = (( "gpt4-turbo", "gpt4o", "gpt45", + "gpt41", + "gpt41-mini", + "gpt41-nano", "o1", "o1-mini", "o3-mini", @@ -95,6 +101,9 @@ export const MODEL_FAMILIES = (( "azure-gpt4-turbo", "azure-gpt4o", "azure-gpt45", + "azure-gpt41", + "azure-gpt41-mini", + "azure-gpt41-nano", "azure-dall-e", "azure-o1", "azure-o1-mini", @@ -126,6 +135,9 @@ export const MODEL_FAMILY_SERVICE: { "gpt4-32k": "openai", gpt4o: "openai", gpt45: "openai", + gpt41: "openai", + "gpt41-mini": "openai", + "gpt41-nano": "openai", "o1": "openai", "o1-mini": "openai", "o3-mini": "openai", @@ -146,6 +158,9 @@ export const MODEL_FAMILY_SERVICE: { "azure-gpt4-turbo": "azure", "azure-gpt4o": "azure", "azure-gpt45": "azure", + "azure-gpt41": "azure", + "azure-gpt41-mini": "azure", + "azure-gpt41-nano": "azure", "azure-dall-e": "azure", "azure-o1": "azure", "azure-o1-mini": "azure", @@ -163,6 +178,9 @@ export const IMAGE_GEN_MODELS: ModelFamily[] = ["dall-e", "azure-dall-e"]; export const OPENAI_MODEL_FAMILY_MAP: { [regex: string]: OpenAIModelFamily } = { "^gpt-4\\.5(-preview)?(-\\d{4}-\\d{2}-\\d{2})?$": "gpt45", + "^gpt-4\\.1(-\\d{4}-\\d{2}-\\d{2})?$": "gpt41", + "^gpt-4\\.1-mini(-\\d{4}-\\d{2}-\\d{2})?$": "gpt41-mini", + "^gpt-4\\.1-nano(-\\d{4}-\\d{2}-\\d{2})?$": "gpt41-nano", "^gpt-4o(-\\d{4}-\\d{2}-\\d{2})?$": "gpt4o", "^chatgpt-4o": "gpt4o", "^gpt-4o-mini(-\\d{4}-\\d{2}-\\d{2})?$": "turbo", // closest match diff --git a/src/shared/stats.ts b/src/shared/stats.ts index 1881271..3959376 100644 --- a/src/shared/stats.ts +++ b/src/shared/stats.ts @@ -6,6 +6,14 @@ import { ModelFamily } from "./models"; export function getTokenCostUsd(model: ModelFamily, tokens: number) { let cost = 0; switch (model) { + case "gpt41": + case "azure-gpt41": + case "gpt41-mini": + case "azure-gpt41-mini": + case "gpt41-nano": + case "azure-gpt41-nano": + cost = 0.0000001; + break; case "gpt45": case "azure-gpt45": // $75/$150 for 1M input/output tokens pricing, averaged to $80