@resolveio/server-lib 22.3.125 → 22.3.127
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/package.json
CHANGED
|
@@ -14,10 +14,21 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
14
14
|
exports.estimateOpenAIUsageCost = void 0;
|
|
15
15
|
var resolveio_server_app_1 = require("../resolveio-server-app");
|
|
16
16
|
var common_1 = require("./common");
|
|
17
|
+
var GPT_5_5_PRICING = { inputPer1k: 0.005, cachedInputPer1k: 0.0005, outputPer1k: 0.03 };
|
|
18
|
+
var GPT_5_4_PRICING = { inputPer1k: 0.0025, cachedInputPer1k: 0.00025, outputPer1k: 0.015 };
|
|
19
|
+
var GPT_5_4_MINI_PRICING = { inputPer1k: 0.00075, cachedInputPer1k: 0.000075, outputPer1k: 0.0045 };
|
|
17
20
|
var DEFAULT_OPENAI_MODEL_PRICING = {
|
|
18
|
-
'gpt-5.5':
|
|
19
|
-
'gpt-5.
|
|
20
|
-
'gpt-5
|
|
21
|
+
'gpt-5.5': GPT_5_5_PRICING,
|
|
22
|
+
'gpt-5.5-codex': GPT_5_5_PRICING,
|
|
23
|
+
'gpt-5-codex': GPT_5_5_PRICING,
|
|
24
|
+
'gpt-5.3-codex': GPT_5_5_PRICING,
|
|
25
|
+
'gpt-5.3-codex-spark': GPT_5_5_PRICING,
|
|
26
|
+
'gpt-5.2-codex': GPT_5_5_PRICING,
|
|
27
|
+
'gpt-5.4': GPT_5_4_PRICING,
|
|
28
|
+
'gpt-5.4-codex': GPT_5_4_PRICING,
|
|
29
|
+
'gpt-5.4-mini': GPT_5_4_MINI_PRICING,
|
|
30
|
+
'gpt-5.4-mini-codex': GPT_5_4_MINI_PRICING,
|
|
31
|
+
'codex-mini-latest': GPT_5_4_MINI_PRICING
|
|
21
32
|
};
|
|
22
33
|
var toNumber = function (value) {
|
|
23
34
|
var parsed = Number(value);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/util/openai-usage-cost.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,gEAA0D;AAC1D,mCAAiC;AAQjC,IAAM,
|
|
1
|
+
{"version":3,"sources":["../../src/util/openai-usage-cost.ts"],"names":[],"mappings":"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","file":"openai-usage-cost.js","sourcesContent":["import { ResolveIOServer } from '../resolveio-server-app';\nimport { round } from './common';\n\nexport type OpenAIUsagePricingConfig = {\n\tinputPer1k: number;\n\tcachedInputPer1k?: number;\n\toutputPer1k: number;\n};\n\nconst GPT_5_5_PRICING: OpenAIUsagePricingConfig = { inputPer1k: 0.005, cachedInputPer1k: 0.0005, outputPer1k: 0.03 };\nconst GPT_5_4_PRICING: OpenAIUsagePricingConfig = { inputPer1k: 0.0025, cachedInputPer1k: 0.00025, outputPer1k: 0.015 };\nconst GPT_5_4_MINI_PRICING: OpenAIUsagePricingConfig = { inputPer1k: 0.00075, cachedInputPer1k: 0.000075, outputPer1k: 0.0045 };\n\nconst DEFAULT_OPENAI_MODEL_PRICING: Record<string, OpenAIUsagePricingConfig> = {\n\t'gpt-5.5': GPT_5_5_PRICING,\n\t'gpt-5.5-codex': GPT_5_5_PRICING,\n\t'gpt-5-codex': GPT_5_5_PRICING,\n\t'gpt-5.3-codex': GPT_5_5_PRICING,\n\t'gpt-5.3-codex-spark': GPT_5_5_PRICING,\n\t'gpt-5.2-codex': GPT_5_5_PRICING,\n\t'gpt-5.4': GPT_5_4_PRICING,\n\t'gpt-5.4-codex': GPT_5_4_PRICING,\n\t'gpt-5.4-mini': GPT_5_4_MINI_PRICING,\n\t'gpt-5.4-mini-codex': GPT_5_4_MINI_PRICING,\n\t'codex-mini-latest': GPT_5_4_MINI_PRICING\n};\n\nconst toNumber = (value: any): number => {\n\tconst parsed = Number(value);\n\treturn Number.isFinite(parsed) ? parsed : 0;\n};\n\nconst normalizeModelKey = (value: string): string => {\n\treturn String(value || '').trim().toLowerCase();\n};\n\nconst parsePricingJson = (raw: string): Record<string, OpenAIUsagePricingConfig> => {\n\tif (!raw) {\n\t\treturn {};\n\t}\n\ttry {\n\t\tconst parsed = JSON.parse(raw);\n\t\tif (!parsed || typeof parsed !== 'object') {\n\t\t\treturn {};\n\t\t}\n\t\tconst out: Record<string, OpenAIUsagePricingConfig> = {};\n\t\tObject.keys(parsed).forEach((key) => {\n\t\t\tconst entry = parsed[key] || {};\n\t\t\tconst inputPer1k = toNumber(entry.inputPer1k ?? entry.input ?? entry.prompt ?? 0);\n\t\t\tconst cachedInputPer1k = toNumber(entry.cachedInputPer1k ?? entry.cachedInput ?? entry.cached ?? entry.promptCached ?? 0);\n\t\t\tconst outputPer1k = toNumber(entry.outputPer1k ?? entry.output ?? entry.completion ?? 0);\n\t\t\tif (inputPer1k || cachedInputPer1k || outputPer1k) {\n\t\t\t\tout[normalizeModelKey(key)] = { inputPer1k, cachedInputPer1k, outputPer1k };\n\t\t\t}\n\t\t});\n\t\treturn out;\n\t}\n\tcatch {\n\t\treturn {};\n\t}\n};\n\nconst resolvePricingConfig = (): {\n\tperModel: Record<string, OpenAIUsagePricingConfig>;\n\tdefaultPricing: OpenAIUsagePricingConfig;\n} => {\n\tconst config = ResolveIOServer.getServerConfig() || {};\n\tconst rawJson = String(config['OPENAI_MODEL_PRICING'] ?? process.env.OPENAI_MODEL_PRICING ?? '').trim();\n\tconst defaultInput = toNumber(config['OPENAI_COST_PER_1K_INPUT_TOKENS'] ?? process.env.OPENAI_COST_PER_1K_INPUT_TOKENS ?? 0);\n\tconst defaultCachedInput = toNumber(\n\t\tconfig['OPENAI_COST_PER_1K_CACHED_INPUT_TOKENS']\n\t\t?? process.env.OPENAI_COST_PER_1K_CACHED_INPUT_TOKENS\n\t\t?? process.env.OPENAI_COST_PER_1K_CACHED_TOKENS\n\t\t?? 0\n\t);\n\tconst defaultOutput = toNumber(config['OPENAI_COST_PER_1K_OUTPUT_TOKENS'] ?? process.env.OPENAI_COST_PER_1K_OUTPUT_TOKENS ?? 0);\n\treturn {\n\t\tperModel: { ...DEFAULT_OPENAI_MODEL_PRICING, ...parsePricingJson(rawJson) },\n\t\tdefaultPricing: { inputPer1k: defaultInput, cachedInputPer1k: defaultCachedInput, outputPer1k: defaultOutput }\n\t};\n};\n\nconst resolveModelPricing = (\n\tmodel: string,\n\tperModel: Record<string, OpenAIUsagePricingConfig>,\n\tdefaultPricing: OpenAIUsagePricingConfig\n): OpenAIUsagePricingConfig => {\n\tconst normalizedModel = normalizeModelKey(model);\n\tif (perModel[normalizedModel]) {\n\t\treturn perModel[normalizedModel];\n\t}\n\tconst prefix = Object.keys(perModel)\n\t\t.sort((a, b) => b.length - a.length)\n\t\t.find((key) => normalizedModel.startsWith(`${key}-`));\n\treturn prefix ? perModel[prefix] : defaultPricing;\n};\n\nexport const estimateOpenAIUsageCost = (\n\tmodel: string,\n\tinputTokens: number,\n\toutputTokens: number,\n\tcachedInputTokens = 0\n): number => {\n\tconst { perModel, defaultPricing } = resolvePricingConfig();\n\tconst pricing = resolveModelPricing(model, perModel, defaultPricing);\n\tif (!pricing.inputPer1k && !pricing.cachedInputPer1k && !pricing.outputPer1k) {\n\t\treturn 0;\n\t}\n\tconst uncachedInputTokens = Math.max(0, toNumber(inputTokens) - toNumber(cachedInputTokens));\n\tconst inputCost = (uncachedInputTokens / 1000) * pricing.inputPer1k;\n\tconst cachedInputCost = (toNumber(cachedInputTokens) / 1000) * (pricing.cachedInputPer1k || 0);\n\tconst outputCost = (toNumber(outputTokens) / 1000) * pricing.outputPer1k;\n\treturn round(inputCost + cachedInputCost + outputCost, 6);\n};\n"]}
|