@artemiskit/core 0.2.0 → 0.2.2
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/CHANGELOG.md +42 -0
- package/dist/adapters/types.d.ts +5 -0
- package/dist/adapters/types.d.ts.map +1 -1
- package/dist/cost/pricing.d.ts +2 -1
- package/dist/cost/pricing.d.ts.map +1 -1
- package/dist/evaluators/llm-grader.d.ts.map +1 -1
- package/dist/index.js +299 -68
- package/dist/scenario/schema.d.ts +8 -0
- package/dist/scenario/schema.d.ts.map +1 -1
- package/dist/storage/local.d.ts +44 -2
- package/dist/storage/local.d.ts.map +1 -1
- package/dist/storage/types.d.ts +62 -0
- package/dist/storage/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/adapters/types.ts +5 -0
- package/src/cost/pricing.ts +242 -65
- package/src/evaluators/llm-grader.ts +45 -13
- package/src/scenario/schema.ts +4 -0
- package/src/storage/local.test.ts +243 -0
- package/src/storage/local.ts +162 -2
- package/src/storage/types.ts +73 -0
- package/dist/events/emitter.d.ts +0 -111
- package/dist/events/emitter.d.ts.map +0 -1
- package/dist/events/index.d.ts +0 -6
- package/dist/events/index.d.ts.map +0 -1
- package/dist/events/types.d.ts +0 -177
- package/dist/events/types.d.ts.map +0 -1
|
@@ -22,6 +22,7 @@ export declare const ProviderConfigSchema: z.ZodOptional<z.ZodObject<{
|
|
|
22
22
|
deploymentName: z.ZodOptional<z.ZodString>;
|
|
23
23
|
apiVersion: z.ZodOptional<z.ZodString>;
|
|
24
24
|
embeddingDeploymentName: z.ZodOptional<z.ZodString>;
|
|
25
|
+
modelFamily: z.ZodOptional<z.ZodString>;
|
|
25
26
|
underlyingProvider: z.ZodOptional<z.ZodEnum<["openai", "azure", "anthropic", "google", "mistral"]>>;
|
|
26
27
|
}, "strip", z.ZodTypeAny, {
|
|
27
28
|
apiKey?: string | undefined;
|
|
@@ -34,6 +35,7 @@ export declare const ProviderConfigSchema: z.ZodOptional<z.ZodObject<{
|
|
|
34
35
|
deploymentName?: string | undefined;
|
|
35
36
|
apiVersion?: string | undefined;
|
|
36
37
|
embeddingDeploymentName?: string | undefined;
|
|
38
|
+
modelFamily?: string | undefined;
|
|
37
39
|
underlyingProvider?: "openai" | "anthropic" | "google" | "mistral" | "azure" | undefined;
|
|
38
40
|
}, {
|
|
39
41
|
apiKey?: string | undefined;
|
|
@@ -46,6 +48,7 @@ export declare const ProviderConfigSchema: z.ZodOptional<z.ZodObject<{
|
|
|
46
48
|
deploymentName?: string | undefined;
|
|
47
49
|
apiVersion?: string | undefined;
|
|
48
50
|
embeddingDeploymentName?: string | undefined;
|
|
51
|
+
modelFamily?: string | undefined;
|
|
49
52
|
underlyingProvider?: "openai" | "anthropic" | "google" | "mistral" | "azure" | undefined;
|
|
50
53
|
}>>;
|
|
51
54
|
/**
|
|
@@ -1137,6 +1140,7 @@ export declare const ScenarioSchema: z.ZodObject<{
|
|
|
1137
1140
|
deploymentName: z.ZodOptional<z.ZodString>;
|
|
1138
1141
|
apiVersion: z.ZodOptional<z.ZodString>;
|
|
1139
1142
|
embeddingDeploymentName: z.ZodOptional<z.ZodString>;
|
|
1143
|
+
modelFamily: z.ZodOptional<z.ZodString>;
|
|
1140
1144
|
underlyingProvider: z.ZodOptional<z.ZodEnum<["openai", "azure", "anthropic", "google", "mistral"]>>;
|
|
1141
1145
|
}, "strip", z.ZodTypeAny, {
|
|
1142
1146
|
apiKey?: string | undefined;
|
|
@@ -1149,6 +1153,7 @@ export declare const ScenarioSchema: z.ZodObject<{
|
|
|
1149
1153
|
deploymentName?: string | undefined;
|
|
1150
1154
|
apiVersion?: string | undefined;
|
|
1151
1155
|
embeddingDeploymentName?: string | undefined;
|
|
1156
|
+
modelFamily?: string | undefined;
|
|
1152
1157
|
underlyingProvider?: "openai" | "anthropic" | "google" | "mistral" | "azure" | undefined;
|
|
1153
1158
|
}, {
|
|
1154
1159
|
apiKey?: string | undefined;
|
|
@@ -1161,6 +1166,7 @@ export declare const ScenarioSchema: z.ZodObject<{
|
|
|
1161
1166
|
deploymentName?: string | undefined;
|
|
1162
1167
|
apiVersion?: string | undefined;
|
|
1163
1168
|
embeddingDeploymentName?: string | undefined;
|
|
1169
|
+
modelFamily?: string | undefined;
|
|
1164
1170
|
underlyingProvider?: "openai" | "anthropic" | "google" | "mistral" | "azure" | undefined;
|
|
1165
1171
|
}>>;
|
|
1166
1172
|
seed: z.ZodOptional<z.ZodNumber>;
|
|
@@ -2000,6 +2006,7 @@ export declare const ScenarioSchema: z.ZodObject<{
|
|
|
2000
2006
|
deploymentName?: string | undefined;
|
|
2001
2007
|
apiVersion?: string | undefined;
|
|
2002
2008
|
embeddingDeploymentName?: string | undefined;
|
|
2009
|
+
modelFamily?: string | undefined;
|
|
2003
2010
|
underlyingProvider?: "openai" | "anthropic" | "google" | "mistral" | "azure" | undefined;
|
|
2004
2011
|
} | undefined;
|
|
2005
2012
|
seed?: number | undefined;
|
|
@@ -2156,6 +2163,7 @@ export declare const ScenarioSchema: z.ZodObject<{
|
|
|
2156
2163
|
deploymentName?: string | undefined;
|
|
2157
2164
|
apiVersion?: string | undefined;
|
|
2158
2165
|
embeddingDeploymentName?: string | undefined;
|
|
2166
|
+
modelFamily?: string | undefined;
|
|
2159
2167
|
underlyingProvider?: "openai" | "anthropic" | "google" | "mistral" | "azure" | undefined;
|
|
2160
2168
|
} | undefined;
|
|
2161
2169
|
seed?: number | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/scenario/schema.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB;;GAEG;AACH,eAAO,MAAM,cAAc,mIAWzB,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,oBAAoB
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/scenario/schema.ts"],"names":[],"mappings":"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"}
|
package/dist/storage/local.d.ts
CHANGED
|
@@ -2,9 +2,10 @@
|
|
|
2
2
|
* Local filesystem storage adapter
|
|
3
3
|
*/
|
|
4
4
|
import type { AnyManifest, RedTeamManifest, RunManifest, StressManifest } from '../artifacts/types';
|
|
5
|
-
import type { ComparisonResult, ListOptions, RunListItem
|
|
6
|
-
export declare class LocalStorageAdapter implements
|
|
5
|
+
import type { BaselineMetadata, BaselineStorageAdapter, ComparisonResult, ListOptions, RunListItem } from './types';
|
|
6
|
+
export declare class LocalStorageAdapter implements BaselineStorageAdapter {
|
|
7
7
|
private basePath;
|
|
8
|
+
private baselinesPath;
|
|
8
9
|
constructor(basePath?: string);
|
|
9
10
|
save(manifest: AnyManifest): Promise<string>;
|
|
10
11
|
load(runId: string): Promise<AnyManifest>;
|
|
@@ -16,5 +17,46 @@ export declare class LocalStorageAdapter implements StorageAdapter {
|
|
|
16
17
|
compare(baselineId: string, currentId: string): Promise<ComparisonResult>;
|
|
17
18
|
private listDirectories;
|
|
18
19
|
private listFiles;
|
|
20
|
+
/**
|
|
21
|
+
* Load baselines file
|
|
22
|
+
*/
|
|
23
|
+
private loadBaselinesFile;
|
|
24
|
+
/**
|
|
25
|
+
* Save baselines file
|
|
26
|
+
*/
|
|
27
|
+
private saveBaselinesFile;
|
|
28
|
+
/**
|
|
29
|
+
* Set a baseline for a scenario
|
|
30
|
+
*/
|
|
31
|
+
setBaseline(scenario: string, runId: string, tag?: string): Promise<BaselineMetadata>;
|
|
32
|
+
/**
|
|
33
|
+
* Get the baseline for a scenario
|
|
34
|
+
*/
|
|
35
|
+
getBaseline(scenario: string): Promise<BaselineMetadata | null>;
|
|
36
|
+
/**
|
|
37
|
+
* Get a baseline by run ID
|
|
38
|
+
*/
|
|
39
|
+
getBaselineByRunId(runId: string): Promise<BaselineMetadata | null>;
|
|
40
|
+
/**
|
|
41
|
+
* List all baselines
|
|
42
|
+
*/
|
|
43
|
+
listBaselines(): Promise<BaselineMetadata[]>;
|
|
44
|
+
/**
|
|
45
|
+
* Remove a baseline by scenario name
|
|
46
|
+
*/
|
|
47
|
+
removeBaseline(scenario: string): Promise<boolean>;
|
|
48
|
+
/**
|
|
49
|
+
* Remove a baseline by run ID
|
|
50
|
+
*/
|
|
51
|
+
removeBaselineByRunId(runId: string): Promise<boolean>;
|
|
52
|
+
/**
|
|
53
|
+
* Compare a run against its baseline (if exists)
|
|
54
|
+
*/
|
|
55
|
+
compareToBaseline(runId: string, regressionThreshold?: number): Promise<{
|
|
56
|
+
baseline: BaselineMetadata;
|
|
57
|
+
comparison: ComparisonResult;
|
|
58
|
+
hasRegression: boolean;
|
|
59
|
+
regressionThreshold: number;
|
|
60
|
+
} | null>;
|
|
19
61
|
}
|
|
20
62
|
//# sourceMappingURL=local.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local.d.ts","sourceRoot":"","sources":["../../src/storage/local.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpG,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"local.d.ts","sourceRoot":"","sources":["../../src/storage/local.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpG,OAAO,KAAK,EACV,gBAAgB,EAChB,sBAAsB,EACtB,gBAAgB,EAChB,WAAW,EACX,WAAW,EACZ,MAAM,SAAS,CAAC;AA0CjB,qBAAa,mBAAoB,YAAW,sBAAsB;IAChE,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,aAAa,CAAS;gBAElB,QAAQ,SAAmB;IAKjC,IAAI,CAAC,QAAQ,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;IAU5C,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAczC,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAQ5C,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAQpD,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAQlD,IAAI,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAmDnD,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAYpC,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;YAiBjE,eAAe;YASf,SAAS;IAWvB;;OAEG;YACW,iBAAiB;IAS/B;;OAEG;YACW,iBAAiB;IAM/B;;OAEG;IACG,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IA4B3F;;OAEG;IACG,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAKrE;;OAEG;IACG,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAMzE;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAOlD;;OAEG;IACG,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAUxD;;OAEG;IACG,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAW5D;;OAEG;IACG,iBAAiB,CACrB,KAAK,EAAE,MAAM,EACb,mBAAmB,SAAO,GACzB,OAAO,CAAC;QACT,QAAQ,EAAE,gBAAgB,CAAC;QAC3B,UAAU,EAAE,gBAAgB,CAAC;QAC7B,aAAa,EAAE,OAAO,CAAC;QACvB,mBAAmB,EAAE,MAAM,CAAC;KAC7B,GAAG,IAAI,CAAC;CAwBV"}
|
package/dist/storage/types.d.ts
CHANGED
|
@@ -83,4 +83,66 @@ export interface StorageConfig {
|
|
|
83
83
|
bucket?: string;
|
|
84
84
|
basePath?: string;
|
|
85
85
|
}
|
|
86
|
+
/**
|
|
87
|
+
* Baseline metadata for regression comparison
|
|
88
|
+
*/
|
|
89
|
+
export interface BaselineMetadata {
|
|
90
|
+
/** Scenario name or identifier */
|
|
91
|
+
scenario: string;
|
|
92
|
+
/** Run ID of the baseline */
|
|
93
|
+
runId: string;
|
|
94
|
+
/** ISO timestamp when baseline was set */
|
|
95
|
+
createdAt: string;
|
|
96
|
+
/** Key metrics captured at baseline time */
|
|
97
|
+
metrics: {
|
|
98
|
+
successRate: number;
|
|
99
|
+
medianLatencyMs: number;
|
|
100
|
+
totalTokens: number;
|
|
101
|
+
passedCases: number;
|
|
102
|
+
failedCases: number;
|
|
103
|
+
totalCases: number;
|
|
104
|
+
};
|
|
105
|
+
/** Optional description or tag */
|
|
106
|
+
tag?: string;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Extended storage adapter with baseline support
|
|
110
|
+
*/
|
|
111
|
+
export interface BaselineStorageAdapter extends StorageAdapter {
|
|
112
|
+
/**
|
|
113
|
+
* Set a baseline for a scenario
|
|
114
|
+
*/
|
|
115
|
+
setBaseline(scenario: string, runId: string, tag?: string): Promise<BaselineMetadata>;
|
|
116
|
+
/**
|
|
117
|
+
* Get the baseline by scenario name
|
|
118
|
+
*/
|
|
119
|
+
getBaseline(scenario: string): Promise<BaselineMetadata | null>;
|
|
120
|
+
/**
|
|
121
|
+
* Get the baseline by run ID
|
|
122
|
+
*/
|
|
123
|
+
getBaselineByRunId(runId: string): Promise<BaselineMetadata | null>;
|
|
124
|
+
/**
|
|
125
|
+
* List all baselines
|
|
126
|
+
*/
|
|
127
|
+
listBaselines(): Promise<BaselineMetadata[]>;
|
|
128
|
+
/**
|
|
129
|
+
* Remove a baseline by scenario name
|
|
130
|
+
*/
|
|
131
|
+
removeBaseline(scenario: string): Promise<boolean>;
|
|
132
|
+
/**
|
|
133
|
+
* Remove a baseline by run ID
|
|
134
|
+
*/
|
|
135
|
+
removeBaselineByRunId(runId: string): Promise<boolean>;
|
|
136
|
+
/**
|
|
137
|
+
* Compare a run against its baseline (if exists)
|
|
138
|
+
* @param runId - The run ID to compare
|
|
139
|
+
* @param regressionThreshold - Threshold for regression detection (0-1), default 0.05
|
|
140
|
+
*/
|
|
141
|
+
compareToBaseline?(runId: string, regressionThreshold?: number): Promise<{
|
|
142
|
+
baseline: BaselineMetadata;
|
|
143
|
+
comparison: ComparisonResult;
|
|
144
|
+
hasRegression: boolean;
|
|
145
|
+
regressionThreshold: number;
|
|
146
|
+
} | null>;
|
|
147
|
+
}
|
|
86
148
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/storage/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpG;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,8CAA8C;IAC9C,IAAI,CAAC,EAAE,KAAK,GAAG,SAAS,GAAG,QAAQ,CAAC;CACrC;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,WAAW,CAAC;IACtB,OAAO,EAAE,WAAW,CAAC;IACrB,KAAK,EAAE;QACL,WAAW,EAAE,MAAM,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8BAA8B;IAC9B,IAAI,CAAC,EAAE,KAAK,GAAG,SAAS,GAAG,QAAQ,CAAC;CACrC;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,IAAI,CAAC,QAAQ,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAE7C;;OAEG;IACH,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAE1C;;OAEG;IACH,OAAO,CAAC,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAE9C;;OAEG;IACH,WAAW,CAAC,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IAEtD;;OAEG;IACH,UAAU,CAAC,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IAEpD;;OAEG;IACH,IAAI,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAEpD;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAErC;;OAEG;IACH,OAAO,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;CAC5E;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC;IAC3B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/storage/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/adapters/types.ts
CHANGED
|
@@ -157,6 +157,11 @@ export interface AzureOpenAIAdapterConfig extends BaseAdapterConfig {
|
|
|
157
157
|
apiVersion: string;
|
|
158
158
|
/** Optional separate deployment name for embedding models */
|
|
159
159
|
embeddingDeploymentName?: string;
|
|
160
|
+
/**
|
|
161
|
+
* Model family for parameter detection (e.g., 'gpt-5-mini' when deployment is '5-mini')
|
|
162
|
+
* Used to determine which API parameters to use (max_tokens vs max_completion_tokens)
|
|
163
|
+
*/
|
|
164
|
+
modelFamily?: string;
|
|
160
165
|
}
|
|
161
166
|
|
|
162
167
|
/**
|
package/src/cost/pricing.ts
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Pricing is per 1,000 tokens (1K tokens) in USD
|
|
5
5
|
* Data is updated periodically - always verify with provider's official pricing
|
|
6
|
+
* Last comprehensive update: January 2026
|
|
6
7
|
*/
|
|
7
8
|
|
|
8
9
|
export interface ModelPricing {
|
|
@@ -34,132 +35,230 @@ export interface CostEstimate {
|
|
|
34
35
|
* Prices are in USD per 1,000 tokens
|
|
35
36
|
*/
|
|
36
37
|
export const MODEL_PRICING: Record<string, ModelPricing> = {
|
|
37
|
-
//
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
38
|
+
// ============================================
|
|
39
|
+
// OpenAI GPT-5 family (Latest - 2025)
|
|
40
|
+
// ============================================
|
|
41
|
+
'gpt-5': {
|
|
42
|
+
promptPer1K: 0.00125,
|
|
43
|
+
completionPer1K: 0.01,
|
|
44
|
+
lastUpdated: '2026-01',
|
|
45
|
+
notes: '400K context window',
|
|
42
46
|
},
|
|
43
|
-
'gpt-
|
|
44
|
-
promptPer1K: 0.
|
|
45
|
-
completionPer1K: 0.
|
|
46
|
-
lastUpdated: '
|
|
47
|
+
'gpt-5.1': {
|
|
48
|
+
promptPer1K: 0.00125,
|
|
49
|
+
completionPer1K: 0.01,
|
|
50
|
+
lastUpdated: '2026-01',
|
|
47
51
|
},
|
|
48
|
-
'gpt-
|
|
49
|
-
promptPer1K: 0.
|
|
50
|
-
completionPer1K: 0.
|
|
51
|
-
lastUpdated: '
|
|
52
|
+
'gpt-5.2': {
|
|
53
|
+
promptPer1K: 0.00175,
|
|
54
|
+
completionPer1K: 0.014,
|
|
55
|
+
lastUpdated: '2026-01',
|
|
52
56
|
},
|
|
53
|
-
'gpt-
|
|
54
|
-
promptPer1K: 0.
|
|
55
|
-
completionPer1K: 0.
|
|
56
|
-
lastUpdated: '
|
|
57
|
+
'gpt-5-mini': {
|
|
58
|
+
promptPer1K: 0.00025,
|
|
59
|
+
completionPer1K: 0.002,
|
|
60
|
+
lastUpdated: '2026-01',
|
|
61
|
+
},
|
|
62
|
+
'gpt-5-nano': {
|
|
63
|
+
promptPer1K: 0.00005,
|
|
64
|
+
completionPer1K: 0.0004,
|
|
65
|
+
lastUpdated: '2026-01',
|
|
66
|
+
},
|
|
67
|
+
|
|
68
|
+
// ============================================
|
|
69
|
+
// OpenAI GPT-4.1 family (2025)
|
|
70
|
+
// ============================================
|
|
71
|
+
'gpt-4.1': {
|
|
72
|
+
promptPer1K: 0.002,
|
|
73
|
+
completionPer1K: 0.008,
|
|
74
|
+
lastUpdated: '2026-01',
|
|
75
|
+
notes: '1M context window',
|
|
76
|
+
},
|
|
77
|
+
'gpt-4.1-mini': {
|
|
78
|
+
promptPer1K: 0.0004,
|
|
79
|
+
completionPer1K: 0.0016,
|
|
80
|
+
lastUpdated: '2026-01',
|
|
81
|
+
},
|
|
82
|
+
'gpt-4.1-nano': {
|
|
83
|
+
promptPer1K: 0.0001,
|
|
84
|
+
completionPer1K: 0.0004,
|
|
85
|
+
lastUpdated: '2026-01',
|
|
57
86
|
},
|
|
87
|
+
|
|
88
|
+
// ============================================
|
|
89
|
+
// OpenAI GPT-4o family (2024-2025)
|
|
90
|
+
// ============================================
|
|
58
91
|
'gpt-4o': {
|
|
59
|
-
promptPer1K: 0.
|
|
60
|
-
completionPer1K: 0.
|
|
61
|
-
lastUpdated: '
|
|
92
|
+
promptPer1K: 0.0025,
|
|
93
|
+
completionPer1K: 0.01,
|
|
94
|
+
lastUpdated: '2026-01',
|
|
95
|
+
notes: '128K context window',
|
|
62
96
|
},
|
|
63
97
|
'gpt-4o-mini': {
|
|
64
98
|
promptPer1K: 0.00015,
|
|
65
99
|
completionPer1K: 0.0006,
|
|
66
|
-
lastUpdated: '
|
|
100
|
+
lastUpdated: '2026-01',
|
|
101
|
+
notes: '128K context window',
|
|
67
102
|
},
|
|
68
103
|
|
|
69
|
-
//
|
|
104
|
+
// ============================================
|
|
105
|
+
// OpenAI O-series (Reasoning models)
|
|
106
|
+
// ============================================
|
|
107
|
+
o1: {
|
|
108
|
+
promptPer1K: 0.015,
|
|
109
|
+
completionPer1K: 0.06,
|
|
110
|
+
lastUpdated: '2026-01',
|
|
111
|
+
notes: 'Reasoning model - internal thinking tokens billed as output',
|
|
112
|
+
},
|
|
113
|
+
o3: {
|
|
114
|
+
promptPer1K: 0.002,
|
|
115
|
+
completionPer1K: 0.008,
|
|
116
|
+
lastUpdated: '2026-01',
|
|
117
|
+
},
|
|
118
|
+
'o3-mini': {
|
|
119
|
+
promptPer1K: 0.0011,
|
|
120
|
+
completionPer1K: 0.0044,
|
|
121
|
+
lastUpdated: '2026-01',
|
|
122
|
+
},
|
|
123
|
+
'o4-mini': {
|
|
124
|
+
promptPer1K: 0.0011,
|
|
125
|
+
completionPer1K: 0.0044,
|
|
126
|
+
lastUpdated: '2026-01',
|
|
127
|
+
},
|
|
128
|
+
|
|
129
|
+
// ============================================
|
|
130
|
+
// OpenAI Legacy GPT-4 family
|
|
131
|
+
// ============================================
|
|
132
|
+
'gpt-4-turbo': {
|
|
133
|
+
promptPer1K: 0.01,
|
|
134
|
+
completionPer1K: 0.03,
|
|
135
|
+
lastUpdated: '2026-01',
|
|
136
|
+
},
|
|
137
|
+
'gpt-4': {
|
|
138
|
+
promptPer1K: 0.03,
|
|
139
|
+
completionPer1K: 0.06,
|
|
140
|
+
lastUpdated: '2026-01',
|
|
141
|
+
},
|
|
70
142
|
'gpt-3.5-turbo': {
|
|
71
143
|
promptPer1K: 0.0005,
|
|
72
144
|
completionPer1K: 0.0015,
|
|
73
|
-
lastUpdated: '
|
|
145
|
+
lastUpdated: '2026-01',
|
|
74
146
|
},
|
|
75
|
-
|
|
147
|
+
|
|
148
|
+
// ============================================
|
|
149
|
+
// Anthropic Claude 4.5 family (Latest - 2025)
|
|
150
|
+
// ============================================
|
|
151
|
+
'claude-opus-4.5': {
|
|
152
|
+
promptPer1K: 0.005,
|
|
153
|
+
completionPer1K: 0.025,
|
|
154
|
+
lastUpdated: '2026-01',
|
|
155
|
+
notes: 'Most capable Claude model',
|
|
156
|
+
},
|
|
157
|
+
'claude-sonnet-4.5': {
|
|
76
158
|
promptPer1K: 0.003,
|
|
77
|
-
completionPer1K: 0.
|
|
78
|
-
lastUpdated: '
|
|
159
|
+
completionPer1K: 0.015,
|
|
160
|
+
lastUpdated: '2026-01',
|
|
161
|
+
notes: 'Balanced performance and cost',
|
|
162
|
+
},
|
|
163
|
+
'claude-haiku-4.5': {
|
|
164
|
+
promptPer1K: 0.001,
|
|
165
|
+
completionPer1K: 0.005,
|
|
166
|
+
lastUpdated: '2026-01',
|
|
167
|
+
notes: 'Fastest Claude model',
|
|
79
168
|
},
|
|
80
169
|
|
|
81
|
-
//
|
|
82
|
-
|
|
170
|
+
// ============================================
|
|
171
|
+
// Anthropic Claude 4 family (2025)
|
|
172
|
+
// ============================================
|
|
173
|
+
'claude-opus-4': {
|
|
83
174
|
promptPer1K: 0.015,
|
|
84
175
|
completionPer1K: 0.075,
|
|
85
|
-
lastUpdated: '
|
|
176
|
+
lastUpdated: '2026-01',
|
|
86
177
|
},
|
|
87
|
-
'claude-
|
|
178
|
+
'claude-opus-4.1': {
|
|
179
|
+
promptPer1K: 0.015,
|
|
180
|
+
completionPer1K: 0.075,
|
|
181
|
+
lastUpdated: '2026-01',
|
|
182
|
+
},
|
|
183
|
+
'claude-sonnet-4': {
|
|
88
184
|
promptPer1K: 0.003,
|
|
89
185
|
completionPer1K: 0.015,
|
|
90
|
-
lastUpdated: '
|
|
186
|
+
lastUpdated: '2026-01',
|
|
91
187
|
},
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
188
|
+
|
|
189
|
+
// ============================================
|
|
190
|
+
// Anthropic Claude 3.7 family
|
|
191
|
+
// ============================================
|
|
192
|
+
'claude-sonnet-3.7': {
|
|
193
|
+
promptPer1K: 0.003,
|
|
194
|
+
completionPer1K: 0.015,
|
|
195
|
+
lastUpdated: '2026-01',
|
|
96
196
|
},
|
|
97
|
-
'claude-3-
|
|
197
|
+
'claude-3-7-sonnet': {
|
|
98
198
|
promptPer1K: 0.003,
|
|
99
199
|
completionPer1K: 0.015,
|
|
100
|
-
lastUpdated: '
|
|
200
|
+
lastUpdated: '2026-01',
|
|
101
201
|
},
|
|
202
|
+
|
|
203
|
+
// ============================================
|
|
204
|
+
// Anthropic Claude 3.5 family (Legacy)
|
|
205
|
+
// ============================================
|
|
102
206
|
'claude-3-5-sonnet-20241022': {
|
|
103
207
|
promptPer1K: 0.003,
|
|
104
208
|
completionPer1K: 0.015,
|
|
105
|
-
lastUpdated: '
|
|
209
|
+
lastUpdated: '2026-01',
|
|
106
210
|
},
|
|
107
211
|
'claude-3-5-haiku-20241022': {
|
|
108
212
|
promptPer1K: 0.0008,
|
|
109
213
|
completionPer1K: 0.004,
|
|
110
|
-
lastUpdated: '
|
|
214
|
+
lastUpdated: '2026-01',
|
|
111
215
|
},
|
|
112
|
-
|
|
216
|
+
'claude-haiku-3.5': {
|
|
217
|
+
promptPer1K: 0.0008,
|
|
218
|
+
completionPer1K: 0.004,
|
|
219
|
+
lastUpdated: '2026-01',
|
|
220
|
+
},
|
|
221
|
+
|
|
222
|
+
// ============================================
|
|
223
|
+
// Anthropic Claude 3 family (Legacy)
|
|
224
|
+
// ============================================
|
|
113
225
|
'claude-3-opus': {
|
|
114
226
|
promptPer1K: 0.015,
|
|
115
227
|
completionPer1K: 0.075,
|
|
116
|
-
lastUpdated: '
|
|
228
|
+
lastUpdated: '2026-01',
|
|
117
229
|
},
|
|
118
230
|
'claude-3-sonnet': {
|
|
119
231
|
promptPer1K: 0.003,
|
|
120
232
|
completionPer1K: 0.015,
|
|
121
|
-
lastUpdated: '
|
|
233
|
+
lastUpdated: '2026-01',
|
|
122
234
|
},
|
|
123
235
|
'claude-3-haiku': {
|
|
124
236
|
promptPer1K: 0.00025,
|
|
125
237
|
completionPer1K: 0.00125,
|
|
126
|
-
lastUpdated: '
|
|
238
|
+
lastUpdated: '2026-01',
|
|
127
239
|
},
|
|
240
|
+
|
|
241
|
+
// Aliases for common naming patterns
|
|
128
242
|
'claude-3.5-sonnet': {
|
|
129
243
|
promptPer1K: 0.003,
|
|
130
244
|
completionPer1K: 0.015,
|
|
131
|
-
lastUpdated: '
|
|
245
|
+
lastUpdated: '2026-01',
|
|
132
246
|
},
|
|
133
247
|
'claude-3.5-haiku': {
|
|
134
248
|
promptPer1K: 0.0008,
|
|
135
249
|
completionPer1K: 0.004,
|
|
136
|
-
lastUpdated: '
|
|
137
|
-
},
|
|
138
|
-
|
|
139
|
-
// Legacy Claude
|
|
140
|
-
'claude-2': {
|
|
141
|
-
promptPer1K: 0.008,
|
|
142
|
-
completionPer1K: 0.024,
|
|
143
|
-
lastUpdated: '2024-01',
|
|
250
|
+
lastUpdated: '2026-01',
|
|
144
251
|
},
|
|
145
|
-
'claude-instant-1': {
|
|
146
|
-
promptPer1K: 0.0008,
|
|
147
|
-
completionPer1K: 0.0024,
|
|
148
|
-
lastUpdated: '2024-01',
|
|
149
|
-
},
|
|
150
|
-
|
|
151
|
-
// Azure OpenAI (same pricing as OpenAI typically)
|
|
152
|
-
// Add 'azure-' prefix versions if needed
|
|
153
252
|
};
|
|
154
253
|
|
|
155
254
|
/**
|
|
156
255
|
* Default pricing for unknown models
|
|
157
|
-
* Uses conservative estimates
|
|
256
|
+
* Uses conservative estimates based on mid-tier model pricing
|
|
158
257
|
*/
|
|
159
258
|
export const DEFAULT_PRICING: ModelPricing = {
|
|
160
|
-
promptPer1K: 0.
|
|
161
|
-
completionPer1K: 0.
|
|
162
|
-
lastUpdated: '
|
|
259
|
+
promptPer1K: 0.003,
|
|
260
|
+
completionPer1K: 0.015,
|
|
261
|
+
lastUpdated: '2026-01',
|
|
163
262
|
notes: 'Default pricing - verify with provider',
|
|
164
263
|
};
|
|
165
264
|
|
|
@@ -183,12 +282,57 @@ export function getModelPricing(model: string): ModelPricing {
|
|
|
183
282
|
}
|
|
184
283
|
|
|
185
284
|
// Try partial match for common patterns
|
|
285
|
+
// GPT-5 family
|
|
286
|
+
if (lowerModel.includes('gpt-5.2')) {
|
|
287
|
+
return MODEL_PRICING['gpt-5.2'];
|
|
288
|
+
}
|
|
289
|
+
if (lowerModel.includes('gpt-5.1')) {
|
|
290
|
+
return MODEL_PRICING['gpt-5.1'];
|
|
291
|
+
}
|
|
292
|
+
if (lowerModel.includes('gpt-5-mini')) {
|
|
293
|
+
return MODEL_PRICING['gpt-5-mini'];
|
|
294
|
+
}
|
|
295
|
+
if (lowerModel.includes('gpt-5-nano')) {
|
|
296
|
+
return MODEL_PRICING['gpt-5-nano'];
|
|
297
|
+
}
|
|
298
|
+
if (lowerModel.includes('gpt-5')) {
|
|
299
|
+
return MODEL_PRICING['gpt-5'];
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
// GPT-4.1 family
|
|
303
|
+
if (lowerModel.includes('gpt-4.1-mini')) {
|
|
304
|
+
return MODEL_PRICING['gpt-4.1-mini'];
|
|
305
|
+
}
|
|
306
|
+
if (lowerModel.includes('gpt-4.1-nano')) {
|
|
307
|
+
return MODEL_PRICING['gpt-4.1-nano'];
|
|
308
|
+
}
|
|
309
|
+
if (lowerModel.includes('gpt-4.1')) {
|
|
310
|
+
return MODEL_PRICING['gpt-4.1'];
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
// GPT-4o family
|
|
186
314
|
if (lowerModel.includes('gpt-4o-mini')) {
|
|
187
315
|
return MODEL_PRICING['gpt-4o-mini'];
|
|
188
316
|
}
|
|
189
317
|
if (lowerModel.includes('gpt-4o')) {
|
|
190
318
|
return MODEL_PRICING['gpt-4o'];
|
|
191
319
|
}
|
|
320
|
+
|
|
321
|
+
// O-series
|
|
322
|
+
if (lowerModel.includes('o4-mini')) {
|
|
323
|
+
return MODEL_PRICING['o4-mini'];
|
|
324
|
+
}
|
|
325
|
+
if (lowerModel.includes('o3-mini')) {
|
|
326
|
+
return MODEL_PRICING['o3-mini'];
|
|
327
|
+
}
|
|
328
|
+
if (lowerModel.includes('o3')) {
|
|
329
|
+
return MODEL_PRICING.o3;
|
|
330
|
+
}
|
|
331
|
+
if (lowerModel.includes('o1')) {
|
|
332
|
+
return MODEL_PRICING.o1;
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
// Legacy GPT
|
|
192
336
|
if (lowerModel.includes('gpt-4-turbo')) {
|
|
193
337
|
return MODEL_PRICING['gpt-4-turbo'];
|
|
194
338
|
}
|
|
@@ -198,12 +342,43 @@ export function getModelPricing(model: string): ModelPricing {
|
|
|
198
342
|
if (lowerModel.includes('gpt-3.5')) {
|
|
199
343
|
return MODEL_PRICING['gpt-3.5-turbo'];
|
|
200
344
|
}
|
|
345
|
+
|
|
346
|
+
// Claude 4.5 family
|
|
347
|
+
if (lowerModel.includes('opus-4.5') || lowerModel.includes('opus-4-5')) {
|
|
348
|
+
return MODEL_PRICING['claude-opus-4.5'];
|
|
349
|
+
}
|
|
350
|
+
if (lowerModel.includes('sonnet-4.5') || lowerModel.includes('sonnet-4-5')) {
|
|
351
|
+
return MODEL_PRICING['claude-sonnet-4.5'];
|
|
352
|
+
}
|
|
353
|
+
if (lowerModel.includes('haiku-4.5') || lowerModel.includes('haiku-4-5')) {
|
|
354
|
+
return MODEL_PRICING['claude-haiku-4.5'];
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
// Claude 4 family
|
|
358
|
+
if (lowerModel.includes('opus-4.1') || lowerModel.includes('opus-4-1')) {
|
|
359
|
+
return MODEL_PRICING['claude-opus-4.1'];
|
|
360
|
+
}
|
|
361
|
+
if (lowerModel.includes('opus-4')) {
|
|
362
|
+
return MODEL_PRICING['claude-opus-4'];
|
|
363
|
+
}
|
|
364
|
+
if (lowerModel.includes('sonnet-4')) {
|
|
365
|
+
return MODEL_PRICING['claude-sonnet-4'];
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
// Claude 3.7 family
|
|
369
|
+
if (lowerModel.includes('sonnet-3.7') || lowerModel.includes('sonnet-3-7')) {
|
|
370
|
+
return MODEL_PRICING['claude-sonnet-3.7'];
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
// Claude 3.5 family
|
|
201
374
|
if (lowerModel.includes('claude-3-5-sonnet') || lowerModel.includes('claude-3.5-sonnet')) {
|
|
202
375
|
return MODEL_PRICING['claude-3.5-sonnet'];
|
|
203
376
|
}
|
|
204
377
|
if (lowerModel.includes('claude-3-5-haiku') || lowerModel.includes('claude-3.5-haiku')) {
|
|
205
378
|
return MODEL_PRICING['claude-3.5-haiku'];
|
|
206
379
|
}
|
|
380
|
+
|
|
381
|
+
// Claude 3 family
|
|
207
382
|
if (lowerModel.includes('claude-3-opus')) {
|
|
208
383
|
return MODEL_PRICING['claude-3-opus'];
|
|
209
384
|
}
|
|
@@ -213,8 +388,10 @@ export function getModelPricing(model: string): ModelPricing {
|
|
|
213
388
|
if (lowerModel.includes('claude-3-haiku')) {
|
|
214
389
|
return MODEL_PRICING['claude-3-haiku'];
|
|
215
390
|
}
|
|
391
|
+
|
|
392
|
+
// Generic Claude fallback
|
|
216
393
|
if (lowerModel.includes('claude')) {
|
|
217
|
-
return MODEL_PRICING['claude-
|
|
394
|
+
return MODEL_PRICING['claude-sonnet-4.5'];
|
|
218
395
|
}
|
|
219
396
|
|
|
220
397
|
return DEFAULT_PRICING;
|