@mariozechner/pi-ai 0.5.27 → 0.5.28
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 +355 -275
- package/dist/generate.d.ts +22 -0
- package/dist/generate.d.ts.map +1 -0
- package/dist/generate.js +204 -0
- package/dist/generate.js.map +1 -0
- package/dist/index.d.ts +7 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -12
- package/dist/index.js.map +1 -1
- package/dist/models.d.ts +10 -71
- package/dist/models.d.ts.map +1 -1
- package/dist/models.generated.d.ts +3056 -2659
- package/dist/models.generated.d.ts.map +1 -1
- package/dist/models.generated.js +3063 -2663
- package/dist/models.generated.js.map +1 -1
- package/dist/models.js +17 -59
- package/dist/models.js.map +1 -1
- package/dist/providers/anthropic.d.ts +5 -18
- package/dist/providers/anthropic.d.ts.map +1 -1
- package/dist/providers/anthropic.js +249 -227
- package/dist/providers/anthropic.js.map +1 -1
- package/dist/providers/google.d.ts +3 -14
- package/dist/providers/google.d.ts.map +1 -1
- package/dist/providers/google.js +215 -220
- package/dist/providers/google.js.map +1 -1
- package/dist/providers/openai-completions.d.ts +4 -14
- package/dist/providers/openai-completions.d.ts.map +1 -1
- package/dist/providers/openai-completions.js +247 -215
- package/dist/providers/openai-completions.js.map +1 -1
- package/dist/providers/openai-responses.d.ts +6 -13
- package/dist/providers/openai-responses.d.ts.map +1 -1
- package/dist/providers/openai-responses.js +242 -244
- package/dist/providers/openai-responses.js.map +1 -1
- package/dist/providers/utils.d.ts +2 -14
- package/dist/providers/utils.d.ts.map +1 -1
- package/dist/providers/utils.js +2 -15
- package/dist/providers/utils.js.map +1 -1
- package/dist/types.d.ts +39 -16
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -0
- package/dist/types.js.map +1 -1
- package/package.json +1 -1
package/dist/models.js
CHANGED
|
@@ -1,64 +1,22 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
create: (model, apiKey) => new GoogleLLM(model, apiKey),
|
|
11
|
-
},
|
|
12
|
-
openai: {
|
|
13
|
-
envKey: "OPENAI_API_KEY",
|
|
14
|
-
create: (model, apiKey) => new OpenAIResponsesLLM(model, apiKey),
|
|
15
|
-
},
|
|
16
|
-
anthropic: {
|
|
17
|
-
envKey: "ANTHROPIC_API_KEY",
|
|
18
|
-
create: (model, apiKey) => new AnthropicLLM(model, apiKey),
|
|
19
|
-
},
|
|
20
|
-
xai: {
|
|
21
|
-
envKey: "XAI_API_KEY",
|
|
22
|
-
create: (model, apiKey) => new OpenAICompletionsLLM(model, apiKey),
|
|
23
|
-
},
|
|
24
|
-
groq: {
|
|
25
|
-
envKey: "GROQ_API_KEY",
|
|
26
|
-
create: (model, apiKey) => new OpenAICompletionsLLM(model, apiKey),
|
|
27
|
-
},
|
|
28
|
-
cerebras: {
|
|
29
|
-
envKey: "CEREBRAS_API_KEY",
|
|
30
|
-
create: (model, apiKey) => new OpenAICompletionsLLM(model, apiKey),
|
|
31
|
-
},
|
|
32
|
-
openrouter: {
|
|
33
|
-
envKey: "OPENROUTER_API_KEY",
|
|
34
|
-
create: (model, apiKey) => new OpenAICompletionsLLM(model, apiKey),
|
|
35
|
-
},
|
|
36
|
-
};
|
|
37
|
-
// Single generic factory function
|
|
38
|
-
export function createLLM(provider, model, apiKey) {
|
|
39
|
-
const config = PROVIDER_CONFIG[provider];
|
|
40
|
-
if (!config)
|
|
41
|
-
throw new Error(`Unknown provider: ${provider}`);
|
|
42
|
-
const providerData = PROVIDERS[provider];
|
|
43
|
-
if (!providerData)
|
|
44
|
-
throw new Error(`Unknown provider: ${provider}`);
|
|
45
|
-
// Type-safe model lookup
|
|
46
|
-
const models = providerData.models;
|
|
47
|
-
const modelData = models[model];
|
|
48
|
-
if (!modelData)
|
|
49
|
-
throw new Error(`Unknown model: ${String(model)} for provider ${provider}`);
|
|
50
|
-
const key = apiKey || process.env[config.envKey];
|
|
51
|
-
if (!key)
|
|
52
|
-
throw new Error(`No API key provided for ${provider}. Set ${config.envKey} or pass apiKey.`);
|
|
53
|
-
return config.create(modelData, key);
|
|
1
|
+
import { MODELS } from "./models.generated.js";
|
|
2
|
+
const modelRegistry = new Map();
|
|
3
|
+
// Initialize registry from MODELS on module load
|
|
4
|
+
for (const [provider, models] of Object.entries(MODELS)) {
|
|
5
|
+
const providerModels = new Map();
|
|
6
|
+
for (const [id, model] of Object.entries(models)) {
|
|
7
|
+
providerModels.set(id, model);
|
|
8
|
+
}
|
|
9
|
+
modelRegistry.set(provider, providerModels);
|
|
54
10
|
}
|
|
55
|
-
// Helper function to get model info with type-safe model IDs
|
|
56
11
|
export function getModel(provider, modelId) {
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
12
|
+
return modelRegistry.get(provider)?.get(modelId);
|
|
13
|
+
}
|
|
14
|
+
export function getProviders() {
|
|
15
|
+
return Array.from(modelRegistry.keys());
|
|
16
|
+
}
|
|
17
|
+
export function getModels(provider) {
|
|
18
|
+
const models = modelRegistry.get(provider);
|
|
19
|
+
return models ? Array.from(models.values()) : [];
|
|
62
20
|
}
|
|
63
21
|
export function calculateCost(model, usage) {
|
|
64
22
|
usage.cost.input = (model.cost.input / 1000000) * usage.input;
|
package/dist/models.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"models.js","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"models.js","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAG/C,MAAM,aAAa,GAAyC,IAAI,GAAG,EAAE,CAAC;AAEtE,iDAAiD;AACjD,KAAK,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;IACzD,MAAM,cAAc,GAAG,IAAI,GAAG,EAAsB,CAAC;IACrD,KAAK,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,cAAc,CAAC,GAAG,CAAC,EAAE,EAAE,KAAmB,CAAC,CAAC;IAC7C,CAAC;IACD,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;AAC7C,CAAC;AAOD,MAAM,UAAU,QAAQ,CACvB,QAAmB,EACnB,OAAiB;IAEjB,OAAO,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,OAAiB,CAAyC,CAAC;AACpG,CAAC;AAED,MAAM,UAAU,YAAY;IAC3B,OAAO,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAoB,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,SAAS,CACxB,QAAmB;IAEnB,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC3C,OAAO,MAAM,CAAC,CAAC,CAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAoE,CAAC,CAAC,CAAC,EAAE,CAAC;AACtH,CAAC;AAED,MAAM,UAAU,aAAa,CAAmB,KAAkB,EAAE,KAAY;IAC/E,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;IAC9D,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;IACjE,KAAK,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC;IAC1E,KAAK,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC;IAC7E,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;IACvG,OAAO,KAAK,CAAC,IAAI,CAAC;AACnB,CAAC","sourcesContent":["import { MODELS } from \"./models.generated.js\";\nimport type { Api, KnownProvider, Model, Usage } from \"./types.js\";\n\nconst modelRegistry: Map<string, Map<string, Model<Api>>> = new Map();\n\n// Initialize registry from MODELS on module load\nfor (const [provider, models] of Object.entries(MODELS)) {\n\tconst providerModels = new Map<string, Model<Api>>();\n\tfor (const [id, model] of Object.entries(models)) {\n\t\tproviderModels.set(id, model as Model<Api>);\n\t}\n\tmodelRegistry.set(provider, providerModels);\n}\n\ntype ModelApi<\n\tTProvider extends KnownProvider,\n\tTModelId extends keyof (typeof MODELS)[TProvider],\n> = (typeof MODELS)[TProvider][TModelId] extends { api: infer TApi } ? (TApi extends Api ? TApi : never) : never;\n\nexport function getModel<TProvider extends KnownProvider, TModelId extends keyof (typeof MODELS)[TProvider]>(\n\tprovider: TProvider,\n\tmodelId: TModelId,\n): Model<ModelApi<TProvider, TModelId>> {\n\treturn modelRegistry.get(provider)?.get(modelId as string) as Model<ModelApi<TProvider, TModelId>>;\n}\n\nexport function getProviders(): KnownProvider[] {\n\treturn Array.from(modelRegistry.keys()) as KnownProvider[];\n}\n\nexport function getModels<TProvider extends KnownProvider>(\n\tprovider: TProvider,\n): Model<ModelApi<TProvider, keyof (typeof MODELS)[TProvider]>>[] {\n\tconst models = modelRegistry.get(provider);\n\treturn models ? (Array.from(models.values()) as Model<ModelApi<TProvider, keyof (typeof MODELS)[TProvider]>>[]) : [];\n}\n\nexport function calculateCost<TApi extends Api>(model: Model<TApi>, usage: Usage): Usage[\"cost\"] {\n\tusage.cost.input = (model.cost.input / 1000000) * usage.input;\n\tusage.cost.output = (model.cost.output / 1000000) * usage.output;\n\tusage.cost.cacheRead = (model.cost.cacheRead / 1000000) * usage.cacheRead;\n\tusage.cost.cacheWrite = (model.cost.cacheWrite / 1000000) * usage.cacheWrite;\n\tusage.cost.total = usage.cost.input + usage.cost.output + usage.cost.cacheRead + usage.cost.cacheWrite;\n\treturn usage.cost;\n}\n"]}
|
|
@@ -1,24 +1,11 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
export interface
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
budgetTokens?: number;
|
|
6
|
-
};
|
|
1
|
+
import type { GenerateFunction, GenerateOptions } from "../types.js";
|
|
2
|
+
export interface AnthropicOptions extends GenerateOptions {
|
|
3
|
+
thinkingEnabled?: boolean;
|
|
4
|
+
thinkingBudgetTokens?: number;
|
|
7
5
|
toolChoice?: "auto" | "any" | "none" | {
|
|
8
6
|
type: "tool";
|
|
9
7
|
name: string;
|
|
10
8
|
};
|
|
11
9
|
}
|
|
12
|
-
export declare
|
|
13
|
-
private client;
|
|
14
|
-
private modelInfo;
|
|
15
|
-
private isOAuthToken;
|
|
16
|
-
constructor(model: Model, apiKey?: string);
|
|
17
|
-
getModel(): Model;
|
|
18
|
-
getApi(): string;
|
|
19
|
-
generate(context: Context, options?: AnthropicLLMOptions): Promise<AssistantMessage>;
|
|
20
|
-
private convertMessages;
|
|
21
|
-
private convertTools;
|
|
22
|
-
private mapStopReason;
|
|
23
|
-
}
|
|
10
|
+
export declare const streamAnthropic: GenerateFunction<"anthropic-messages">;
|
|
24
11
|
//# sourceMappingURL=anthropic.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../src/providers/anthropic.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../src/providers/anthropic.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAIX,gBAAgB,EAChB,eAAe,EASf,MAAM,aAAa,CAAC;AAGrB,MAAM,WAAW,gBAAiB,SAAQ,eAAe;IACxD,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,UAAU,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CACtE;AAED,eAAO,MAAM,eAAe,EAAE,gBAAgB,CAAC,oBAAoB,CAiJlE,CAAC"}
|