megabuff 0.9.2 → 0.10.1
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/README.md +446 -8
- package/dist/cost.d.ts +59 -0
- package/dist/cost.d.ts.map +1 -0
- package/dist/cost.js +159 -0
- package/dist/cost.js.map +1 -0
- package/dist/index.js +1355 -85
- package/dist/index.js.map +1 -1
- package/dist/models.js +1 -1
- package/dist/models.js.map +1 -1
- package/package.json +1 -1
package/dist/cost.js
ADDED
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
// Pricing data for all supported models
|
|
2
|
+
const MODEL_PRICING = {
|
|
3
|
+
// OpenAI models
|
|
4
|
+
"gpt-5.2": { input: 2.50, output: 10.00 },
|
|
5
|
+
"gpt-4o": { input: 2.50, output: 10.00 },
|
|
6
|
+
"gpt-4o-mini": { input: 0.15, output: 0.60 },
|
|
7
|
+
"gpt-4-turbo": { input: 10.00, output: 30.00 },
|
|
8
|
+
"gpt-4": { input: 30.00, output: 60.00 },
|
|
9
|
+
"gpt-3.5-turbo": { input: 0.50, output: 1.50 },
|
|
10
|
+
// Anthropic models
|
|
11
|
+
"claude-opus-4-5": { input: 15.00, output: 75.00 },
|
|
12
|
+
"claude-sonnet-4-5": { input: 3.00, output: 15.00 },
|
|
13
|
+
"claude-sonnet-4-0": { input: 3.00, output: 15.00 },
|
|
14
|
+
"claude-sonnet-4": { input: 3.00, output: 15.00 },
|
|
15
|
+
"claude-3-5-sonnet-20241022": { input: 3.00, output: 15.00 },
|
|
16
|
+
"claude-sonnet-4-5-20250929": { input: 3.00, output: 15.00 },
|
|
17
|
+
"claude-3-opus-20240229": { input: 15.00, output: 75.00 },
|
|
18
|
+
"claude-3-sonnet-20240229": { input: 3.00, output: 15.00 },
|
|
19
|
+
"claude-3-haiku-20240307": { input: 0.25, output: 1.25 },
|
|
20
|
+
// Google Gemini models (prices are approximate, Google uses different pricing tiers)
|
|
21
|
+
"gemini-flash-latest": { input: 0.075, output: 0.30 },
|
|
22
|
+
"gemini-2.5-flash": { input: 0.075, output: 0.30 },
|
|
23
|
+
"gemini-3-flash-preview": { input: 0.075, output: 0.30 },
|
|
24
|
+
"gemini-3-pro-preview": { input: 1.25, output: 5.00 },
|
|
25
|
+
"gemini-2.5-flash-lite": { input: 0.04, output: 0.15 },
|
|
26
|
+
"gemini-2.5-pro": { input: 1.25, output: 5.00 },
|
|
27
|
+
"gemini-2.0-flash": { input: 0.075, output: 0.30 },
|
|
28
|
+
"gemini-2.0-flash-lite": { input: 0.04, output: 0.15 },
|
|
29
|
+
// xAI (Grok) models
|
|
30
|
+
"grok-beta": { input: 5.00, output: 15.00 },
|
|
31
|
+
"grok-vision-beta": { input: 5.00, output: 15.00 },
|
|
32
|
+
// DeepSeek models
|
|
33
|
+
"deepseek-chat": { input: 0.14, output: 0.28 },
|
|
34
|
+
"deepseek-reasoner": { input: 0.55, output: 2.19 },
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* Estimate token count from text (rough approximation)
|
|
38
|
+
* More accurate token counting would require the actual tokenizer for each model
|
|
39
|
+
*/
|
|
40
|
+
export function estimateTokens(text) {
|
|
41
|
+
// Rough approximation: ~4 characters per token on average
|
|
42
|
+
// This is a conservative estimate and works reasonably well for English text
|
|
43
|
+
return Math.ceil(text.length / 4);
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Get pricing for a specific model
|
|
47
|
+
*/
|
|
48
|
+
export function getModelPricing(model) {
|
|
49
|
+
return MODEL_PRICING[model] || null;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Calculate cost for a given number of tokens
|
|
53
|
+
*/
|
|
54
|
+
export function calculateCost(inputTokens, outputTokens, model) {
|
|
55
|
+
const pricing = getModelPricing(model);
|
|
56
|
+
if (!pricing) {
|
|
57
|
+
return 0; // Unknown model, can't estimate
|
|
58
|
+
}
|
|
59
|
+
const inputCost = (inputTokens / 1_000_000) * pricing.input;
|
|
60
|
+
const outputCost = (outputTokens / 1_000_000) * pricing.output;
|
|
61
|
+
return inputCost + outputCost;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Estimate cost for a prompt optimization
|
|
65
|
+
*/
|
|
66
|
+
export function estimateOptimizationCost(promptText, model, iterations = 1, systemPromptLength = 500 // Approximate system prompt size
|
|
67
|
+
) {
|
|
68
|
+
const promptTokens = estimateTokens(promptText);
|
|
69
|
+
const systemTokens = systemPromptLength;
|
|
70
|
+
// For each iteration:
|
|
71
|
+
// Input = system prompt + current prompt
|
|
72
|
+
// Output = optimized prompt (assume similar size to input, maybe slightly larger)
|
|
73
|
+
let totalInputTokens = 0;
|
|
74
|
+
let totalOutputTokens = 0;
|
|
75
|
+
let currentPromptTokens = promptTokens;
|
|
76
|
+
for (let i = 0; i < iterations; i++) {
|
|
77
|
+
totalInputTokens += systemTokens + currentPromptTokens;
|
|
78
|
+
// Assume output is 1.2x the input prompt size (optimization often adds detail)
|
|
79
|
+
const iterationOutput = Math.ceil(currentPromptTokens * 1.2);
|
|
80
|
+
totalOutputTokens += iterationOutput;
|
|
81
|
+
currentPromptTokens = iterationOutput; // Next iteration uses this output as input
|
|
82
|
+
}
|
|
83
|
+
const estimatedCost = calculateCost(totalInputTokens, totalOutputTokens, model);
|
|
84
|
+
return {
|
|
85
|
+
inputTokens: totalInputTokens,
|
|
86
|
+
outputTokens: totalOutputTokens,
|
|
87
|
+
estimatedCost,
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Estimate cost for a prompt analysis
|
|
92
|
+
*/
|
|
93
|
+
export function estimateAnalysisCost(promptText, model, systemPromptLength = 400) {
|
|
94
|
+
const promptTokens = estimateTokens(promptText);
|
|
95
|
+
const systemTokens = systemPromptLength;
|
|
96
|
+
const inputTokens = systemTokens + promptTokens;
|
|
97
|
+
// Analysis typically generates a detailed report, estimate ~800 tokens
|
|
98
|
+
const outputTokens = 800;
|
|
99
|
+
const estimatedCost = calculateCost(inputTokens, outputTokens, model);
|
|
100
|
+
return {
|
|
101
|
+
inputTokens,
|
|
102
|
+
outputTokens,
|
|
103
|
+
estimatedCost,
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Format cost as a human-readable string
|
|
108
|
+
*/
|
|
109
|
+
export function formatCost(cost) {
|
|
110
|
+
if (cost < 0.0001) {
|
|
111
|
+
return "<$0.0001";
|
|
112
|
+
}
|
|
113
|
+
else if (cost < 0.01) {
|
|
114
|
+
return `$${cost.toFixed(4)}`;
|
|
115
|
+
}
|
|
116
|
+
else if (cost < 1) {
|
|
117
|
+
return `$${cost.toFixed(3)}`;
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
return `$${cost.toFixed(2)}`;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Get default model for a provider (for cost estimation)
|
|
125
|
+
*/
|
|
126
|
+
const DEFAULT_MODELS = {
|
|
127
|
+
openai: "gpt-5.2",
|
|
128
|
+
anthropic: "claude-opus-4-5",
|
|
129
|
+
google: "gemini-2.5-flash",
|
|
130
|
+
xai: "grok-beta",
|
|
131
|
+
deepseek: "deepseek-chat",
|
|
132
|
+
"azure-openai": "gpt-4o-mini",
|
|
133
|
+
};
|
|
134
|
+
export function getDefaultModelForProvider(provider) {
|
|
135
|
+
return DEFAULT_MODELS[provider];
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Format tokens with comma separators
|
|
139
|
+
*/
|
|
140
|
+
export function formatTokens(tokens) {
|
|
141
|
+
return tokens.toLocaleString();
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Get detailed pricing breakdown for a model
|
|
145
|
+
*/
|
|
146
|
+
export function getPricingBreakdown(model) {
|
|
147
|
+
const pricing = getModelPricing(model);
|
|
148
|
+
if (!pricing) {
|
|
149
|
+
return null;
|
|
150
|
+
}
|
|
151
|
+
return {
|
|
152
|
+
model,
|
|
153
|
+
inputPricePer1M: pricing.input,
|
|
154
|
+
outputPricePer1M: pricing.output,
|
|
155
|
+
inputPricePerToken: `$${(pricing.input / 1_000_000).toFixed(9)}`,
|
|
156
|
+
outputPricePerToken: `$${(pricing.output / 1_000_000).toFixed(9)}`,
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
//# sourceMappingURL=cost.js.map
|
package/dist/cost.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cost.js","sourceRoot":"","sources":["../src/cost.ts"],"names":[],"mappings":"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"}
|