@node-llm/core 0.6.0 → 0.8.0
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 +89 -458
- package/dist/chat/Chat.d.ts.map +1 -1
- package/dist/chat/Chat.js +5 -3
- package/dist/chat/ChatResponse.d.ts +2 -1
- package/dist/chat/ChatResponse.d.ts.map +1 -1
- package/dist/chat/ChatResponse.js +3 -1
- package/dist/chat/Stream.d.ts.map +1 -1
- package/dist/chat/Stream.js +7 -1
- package/dist/config.d.ts +31 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +12 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/llm.d.ts +16 -9
- package/dist/llm.d.ts.map +1 -1
- package/dist/llm.js +41 -20
- package/dist/models/ModelRegistry.d.ts +0 -3
- package/dist/models/ModelRegistry.d.ts.map +1 -1
- package/dist/models/ModelRegistry.js +0 -3
- package/dist/models/models.d.ts.map +1 -1
- package/dist/models/models.js +386 -0
- package/dist/models/types.d.ts +2 -2
- package/dist/models/types.d.ts.map +1 -1
- package/dist/providers/Provider.d.ts +3 -0
- package/dist/providers/Provider.d.ts.map +1 -1
- package/dist/providers/anthropic/AnthropicProvider.d.ts +1 -0
- package/dist/providers/anthropic/AnthropicProvider.d.ts.map +1 -1
- package/dist/providers/anthropic/AnthropicProvider.js +1 -0
- package/dist/providers/anthropic/index.d.ts.map +1 -1
- package/dist/providers/anthropic/index.js +3 -2
- package/dist/providers/deepseek/Capabilities.d.ts +14 -0
- package/dist/providers/deepseek/Capabilities.d.ts.map +1 -0
- package/dist/providers/deepseek/Capabilities.js +52 -0
- package/dist/providers/deepseek/Chat.d.ts +8 -0
- package/dist/providers/deepseek/Chat.d.ts.map +1 -0
- package/dist/providers/deepseek/Chat.js +89 -0
- package/dist/providers/deepseek/DeepSeekProvider.d.ts +28 -0
- package/dist/providers/deepseek/DeepSeekProvider.d.ts.map +1 -0
- package/dist/providers/deepseek/DeepSeekProvider.js +38 -0
- package/dist/providers/deepseek/Models.d.ts +8 -0
- package/dist/providers/deepseek/Models.d.ts.map +1 -0
- package/dist/providers/deepseek/Models.js +67 -0
- package/dist/providers/deepseek/Streaming.d.ts +8 -0
- package/dist/providers/deepseek/Streaming.d.ts.map +1 -0
- package/dist/providers/deepseek/Streaming.js +74 -0
- package/dist/providers/deepseek/index.d.ts +7 -0
- package/dist/providers/deepseek/index.d.ts.map +1 -0
- package/dist/providers/deepseek/index.js +22 -0
- package/dist/providers/gemini/Capabilities.d.ts.map +1 -1
- package/dist/providers/gemini/GeminiProvider.d.ts +1 -0
- package/dist/providers/gemini/GeminiProvider.d.ts.map +1 -1
- package/dist/providers/gemini/GeminiProvider.js +1 -0
- package/dist/providers/gemini/index.d.ts.map +1 -1
- package/dist/providers/gemini/index.js +3 -2
- package/dist/providers/ollama/Capabilities.d.ts +13 -0
- package/dist/providers/ollama/Capabilities.d.ts.map +1 -0
- package/dist/providers/ollama/Capabilities.js +50 -0
- package/dist/providers/ollama/Embedding.d.ts +6 -0
- package/dist/providers/ollama/Embedding.d.ts.map +1 -0
- package/dist/providers/ollama/Embedding.js +12 -0
- package/dist/providers/ollama/Models.d.ts +8 -0
- package/dist/providers/ollama/Models.d.ts.map +1 -0
- package/dist/providers/ollama/Models.js +31 -0
- package/dist/providers/ollama/OllamaProvider.d.ts +8 -0
- package/dist/providers/ollama/OllamaProvider.d.ts.map +1 -0
- package/dist/providers/ollama/OllamaProvider.js +28 -0
- package/dist/providers/ollama/index.d.ts +9 -0
- package/dist/providers/ollama/index.d.ts.map +1 -0
- package/dist/providers/ollama/index.js +17 -0
- package/dist/providers/openai/Capabilities.d.ts +2 -1
- package/dist/providers/openai/Capabilities.d.ts.map +1 -1
- package/dist/providers/openai/Capabilities.js +10 -2
- package/dist/providers/openai/Embedding.d.ts +4 -2
- package/dist/providers/openai/Embedding.d.ts.map +1 -1
- package/dist/providers/openai/Embedding.js +13 -8
- package/dist/providers/openai/Models.d.ts +12 -2
- package/dist/providers/openai/Models.d.ts.map +1 -1
- package/dist/providers/openai/Models.js +50 -16
- package/dist/providers/openai/OpenAIProvider.d.ts +17 -9
- package/dist/providers/openai/OpenAIProvider.d.ts.map +1 -1
- package/dist/providers/openai/OpenAIProvider.js +2 -1
- package/dist/providers/openai/index.d.ts.map +1 -1
- package/dist/providers/openai/index.js +4 -3
- package/package.json +1 -1
|
@@ -6,7 +6,8 @@ import { Usage } from "../providers/Provider.js";
|
|
|
6
6
|
export declare class ChatResponseString extends String {
|
|
7
7
|
readonly usage: Usage;
|
|
8
8
|
readonly model: string;
|
|
9
|
-
|
|
9
|
+
readonly reasoning?: string | null | undefined;
|
|
10
|
+
constructor(content: string, usage: Usage, model: string, reasoning?: string | null | undefined);
|
|
10
11
|
get input_tokens(): number;
|
|
11
12
|
get output_tokens(): number;
|
|
12
13
|
get total_tokens(): number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatResponse.d.ts","sourceRoot":"","sources":["../../src/chat/ChatResponse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAEjD;;;GAGG;AACH,qBAAa,kBAAmB,SAAQ,MAAM;aAG1B,KAAK,EAAE,KAAK;aACZ,KAAK,EAAE,MAAM;
|
|
1
|
+
{"version":3,"file":"ChatResponse.d.ts","sourceRoot":"","sources":["../../src/chat/ChatResponse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAEjD;;;GAGG;AACH,qBAAa,kBAAmB,SAAQ,MAAM;aAG1B,KAAK,EAAE,KAAK;aACZ,KAAK,EAAE,MAAM;aACb,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI;gBAHzC,OAAO,EAAE,MAAM,EACC,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,MAAM,EACb,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,YAAA;IAK3C,IAAI,YAAY,WAAsC;IACtD,IAAI,aAAa,WAAuC;IACxD,IAAI,YAAY,WAAsC;IACtD,IAAI,aAAa,uBAAuC;IACxD,IAAI,IAAI,uBAA8B;IACtC,IAAI,UAAU,uBAAoC;IAClD,IAAI,WAAW,uBAAqC;IAEpD,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,QAAQ;IAIR;;;OAGG;IACH,IAAI,MAAM,IAAI,GAAG,CAMhB;CACF"}
|
|
@@ -5,10 +5,12 @@
|
|
|
5
5
|
export class ChatResponseString extends String {
|
|
6
6
|
usage;
|
|
7
7
|
model;
|
|
8
|
-
|
|
8
|
+
reasoning;
|
|
9
|
+
constructor(content, usage, model, reasoning) {
|
|
9
10
|
super(content);
|
|
10
11
|
this.usage = usage;
|
|
11
12
|
this.model = model;
|
|
13
|
+
this.reasoning = reasoning;
|
|
12
14
|
}
|
|
13
15
|
get input_tokens() { return this.usage.input_tokens; }
|
|
14
16
|
get output_tokens() { return this.usage.output_tokens; }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Stream.d.ts","sourceRoot":"","sources":["../../src/chat/Stream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAGpD,qBAAa,MAAM;IAIf,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAL1B,OAAO,CAAC,QAAQ,CAAY;gBAGT,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,WAAgB,EAC1C,QAAQ,CAAC,EAAE,OAAO,EAAE;IAmBtB;;OAEG;IACH,IAAI,OAAO,IAAI,SAAS,OAAO,EAAE,CAEhC;IAED;;;;OAIG;IACI,MAAM,CAAC,OAAO,EAAE,MAAM;
|
|
1
|
+
{"version":3,"file":"Stream.d.ts","sourceRoot":"","sources":["../../src/chat/Stream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAGpD,qBAAa,MAAM;IAIf,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAL1B,OAAO,CAAC,QAAQ,CAAY;gBAGT,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,WAAgB,EAC1C,QAAQ,CAAC,EAAE,OAAO,EAAE;IAmBtB;;OAEG;IACH,IAAI,OAAO,IAAI,SAAS,OAAO,EAAE,CAEhC;IAED;;;;OAIG;IACI,MAAM,CAAC,OAAO,EAAE,MAAM;CA+C9B"}
|
package/dist/chat/Stream.js
CHANGED
|
@@ -39,6 +39,7 @@ export class Stream {
|
|
|
39
39
|
throw new Error("Streaming not supported by provider");
|
|
40
40
|
}
|
|
41
41
|
let full = "";
|
|
42
|
+
let fullReasoning = "";
|
|
42
43
|
let isFirst = true;
|
|
43
44
|
for await (const chunk of this.provider.stream({
|
|
44
45
|
model: this.model,
|
|
@@ -54,14 +55,19 @@ export class Stream {
|
|
|
54
55
|
if (chunk.content) {
|
|
55
56
|
full += chunk.content;
|
|
56
57
|
}
|
|
58
|
+
if (chunk.reasoning) {
|
|
59
|
+
fullReasoning += chunk.reasoning;
|
|
60
|
+
}
|
|
57
61
|
yield chunk;
|
|
58
62
|
}
|
|
59
63
|
this.messages.push({
|
|
60
64
|
role: "assistant",
|
|
61
65
|
content: full,
|
|
66
|
+
// @ts-ignore
|
|
67
|
+
reasoning: fullReasoning || undefined
|
|
62
68
|
});
|
|
63
69
|
if (this.options.onEndMessage) {
|
|
64
|
-
this.options.onEndMessage(new ChatResponseString(full, { input_tokens: 0, output_tokens: 0, total_tokens: 0 }, this.model));
|
|
70
|
+
this.options.onEndMessage(new ChatResponseString(full, { input_tokens: 0, output_tokens: 0, total_tokens: 0 }, this.model, fullReasoning || undefined));
|
|
65
71
|
}
|
|
66
72
|
}
|
|
67
73
|
}
|
package/dist/config.d.ts
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Global configuration for Node-LLM providers.
|
|
3
|
+
* Values are initialized from environment variables but can be overridden programmatically.
|
|
4
|
+
*/
|
|
5
|
+
export interface NodeLLMConfig {
|
|
6
|
+
openaiApiKey?: string;
|
|
7
|
+
openaiApiBase?: string;
|
|
8
|
+
anthropicApiKey?: string;
|
|
9
|
+
anthropicApiBase?: string;
|
|
10
|
+
geminiApiKey?: string;
|
|
11
|
+
geminiApiBase?: string;
|
|
12
|
+
deepseekApiKey?: string;
|
|
13
|
+
deepseekApiBase?: string;
|
|
14
|
+
ollamaApiBase?: string;
|
|
15
|
+
[key: string]: any;
|
|
16
|
+
}
|
|
17
|
+
declare class Configuration implements NodeLLMConfig {
|
|
18
|
+
openaiApiKey?: string;
|
|
19
|
+
openaiApiBase?: string;
|
|
20
|
+
anthropicApiKey?: string;
|
|
21
|
+
anthropicApiBase?: string;
|
|
22
|
+
geminiApiKey?: string;
|
|
23
|
+
geminiApiBase?: string;
|
|
24
|
+
deepseekApiKey?: string;
|
|
25
|
+
deepseekApiBase?: string;
|
|
26
|
+
ollamaApiBase?: string;
|
|
27
|
+
[key: string]: any;
|
|
28
|
+
}
|
|
29
|
+
export declare const config: Configuration;
|
|
30
|
+
export {};
|
|
31
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,cAAM,aAAc,YAAW,aAAa;IACnC,YAAY,CAAC,EAAE,MAAM,CAAsC;IAC3D,aAAa,CAAC,EAAE,MAAM,CAAuC;IAC7D,eAAe,CAAC,EAAE,MAAM,CAAyC;IACjE,gBAAgB,CAAC,EAAE,MAAM,CAA0C;IACnE,YAAY,CAAC,EAAE,MAAM,CAAsC;IAC3D,aAAa,CAAC,EAAE,MAAM,CAAuC;IAC7D,cAAc,CAAC,EAAE,MAAM,CAAwC;IAC/D,eAAe,CAAC,EAAE,MAAM,CAAyC;IACjE,aAAa,CAAC,EAAE,MAAM,CAAsE;IAEnG,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,eAAO,MAAM,MAAM,eAAsB,CAAC"}
|
package/dist/config.js
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
class Configuration {
|
|
2
|
+
openaiApiKey = process.env.OPENAI_API_KEY?.trim();
|
|
3
|
+
openaiApiBase = process.env.OPENAI_API_BASE?.trim();
|
|
4
|
+
anthropicApiKey = process.env.ANTHROPIC_API_KEY?.trim();
|
|
5
|
+
anthropicApiBase = process.env.ANTHROPIC_API_BASE?.trim();
|
|
6
|
+
geminiApiKey = process.env.GEMINI_API_KEY?.trim();
|
|
7
|
+
geminiApiBase = process.env.GEMINI_API_BASE?.trim();
|
|
8
|
+
deepseekApiKey = process.env.DEEPSEEK_API_KEY?.trim();
|
|
9
|
+
deepseekApiBase = process.env.DEEPSEEK_API_BASE?.trim();
|
|
10
|
+
ollamaApiBase = process.env.OLLAMA_API_BASE?.trim() || "http://localhost:11434/v1";
|
|
11
|
+
}
|
|
12
|
+
export const config = new Configuration();
|
package/dist/index.d.ts
CHANGED
|
@@ -8,10 +8,13 @@ export type { Tool, ToolCall } from "./chat/Tool.js";
|
|
|
8
8
|
export type { MessageContent, ContentPart } from "./chat/Content.js";
|
|
9
9
|
export { z } from "zod";
|
|
10
10
|
export { LLM, Transcription, Moderation, Embedding } from "./llm.js";
|
|
11
|
+
export { config } from "./config.js";
|
|
12
|
+
export type { NodeLLMConfig } from "./config.js";
|
|
11
13
|
export { providerRegistry } from "./providers/registry.js";
|
|
12
14
|
export { OpenAIProvider } from "./providers/openai/OpenAIProvider.js";
|
|
13
15
|
export { registerOpenAIProvider } from "./providers/openai/index.js";
|
|
14
16
|
export { registerAnthropicProvider } from "./providers/anthropic/index.js";
|
|
17
|
+
export { registerOllamaProvider, OllamaProvider } from "./providers/ollama/index.js";
|
|
15
18
|
export type { ImageRequest, ImageResponse } from "./providers/Provider.js";
|
|
16
19
|
export * from "./errors/index.js";
|
|
17
20
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,YAAY,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACjD,YAAY,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAC3C,YAAY,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACrD,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,GAAG,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE3D,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AACtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC3E,cAAc,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,YAAY,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACjD,YAAY,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAC3C,YAAY,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACrD,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,GAAG,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE3D,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AACtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AACrF,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC3E,cAAc,mBAAmB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -3,8 +3,10 @@ export { Stream } from "./chat/Stream.js";
|
|
|
3
3
|
export { GeneratedImage } from "./image/GeneratedImage.js";
|
|
4
4
|
export { z } from "zod";
|
|
5
5
|
export { LLM, Transcription, Moderation, Embedding } from "./llm.js";
|
|
6
|
+
export { config } from "./config.js";
|
|
6
7
|
export { providerRegistry } from "./providers/registry.js";
|
|
7
8
|
export { OpenAIProvider } from "./providers/openai/OpenAIProvider.js";
|
|
8
9
|
export { registerOpenAIProvider } from "./providers/openai/index.js";
|
|
9
10
|
export { registerAnthropicProvider } from "./providers/anthropic/index.js";
|
|
11
|
+
export { registerOllamaProvider, OllamaProvider } from "./providers/ollama/index.js";
|
|
10
12
|
export * from "./errors/index.js";
|
package/dist/llm.d.ts
CHANGED
|
@@ -6,31 +6,38 @@ import { ModelRegistry } from "./models/ModelRegistry.js";
|
|
|
6
6
|
import { Transcription } from "./transcription/Transcription.js";
|
|
7
7
|
import { Moderation } from "./moderation/Moderation.js";
|
|
8
8
|
import { Embedding } from "./embedding/Embedding.js";
|
|
9
|
+
import { NodeLLMConfig } from "./config.js";
|
|
9
10
|
export interface RetryOptions {
|
|
10
11
|
attempts?: number;
|
|
11
12
|
delayMs?: number;
|
|
12
13
|
}
|
|
13
14
|
type LLMConfig = {
|
|
14
|
-
provider
|
|
15
|
+
provider?: Provider | string;
|
|
15
16
|
retry?: RetryOptions;
|
|
16
17
|
defaultTranscriptionModel?: string;
|
|
17
18
|
defaultModerationModel?: string;
|
|
18
19
|
defaultEmbeddingModel?: string;
|
|
19
|
-
}
|
|
20
|
-
provider: string;
|
|
21
|
-
retry?: RetryOptions;
|
|
22
|
-
defaultTranscriptionModel?: string;
|
|
23
|
-
defaultModerationModel?: string;
|
|
24
|
-
defaultEmbeddingModel?: string;
|
|
25
|
-
};
|
|
20
|
+
} & Partial<NodeLLMConfig>;
|
|
26
21
|
declare class LLMCore {
|
|
27
22
|
readonly models: typeof ModelRegistry;
|
|
23
|
+
readonly config: {
|
|
24
|
+
[key: string]: any;
|
|
25
|
+
openaiApiKey?: string;
|
|
26
|
+
openaiApiBase?: string;
|
|
27
|
+
anthropicApiKey?: string;
|
|
28
|
+
anthropicApiBase?: string;
|
|
29
|
+
geminiApiKey?: string;
|
|
30
|
+
geminiApiBase?: string;
|
|
31
|
+
deepseekApiKey?: string;
|
|
32
|
+
deepseekApiBase?: string;
|
|
33
|
+
ollamaApiBase?: string;
|
|
34
|
+
};
|
|
28
35
|
private provider?;
|
|
29
36
|
private defaultTranscriptionModelId?;
|
|
30
37
|
private defaultModerationModelId?;
|
|
31
38
|
private defaultEmbeddingModelId?;
|
|
32
39
|
private retry;
|
|
33
|
-
configure(config:
|
|
40
|
+
configure(configOrCallback: LLMConfig | ((config: NodeLLMConfig) => void)): void;
|
|
34
41
|
private ensureProviderSupport;
|
|
35
42
|
chat(model: string, options?: ChatOptions): Chat;
|
|
36
43
|
listModels(): Promise<ModelInfo[]>;
|
package/dist/llm.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"llm.d.ts","sourceRoot":"","sources":["../src/llm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EACL,QAAQ,EACR,SAAS,EAKV,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"llm.d.ts","sourceRoot":"","sources":["../src/llm.ts"],"names":[],"mappings":"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"}
|
package/dist/llm.js
CHANGED
|
@@ -3,13 +3,17 @@ import { providerRegistry } from "./providers/registry.js";
|
|
|
3
3
|
import { ensureOpenAIRegistered } from "./providers/openai/index.js";
|
|
4
4
|
import { registerGeminiProvider } from "./providers/gemini/index.js";
|
|
5
5
|
import { registerAnthropicProvider } from "./providers/anthropic/index.js";
|
|
6
|
+
import { registerDeepSeekProvider } from "./providers/deepseek/index.js";
|
|
7
|
+
import { registerOllamaProvider } from "./providers/ollama/index.js";
|
|
6
8
|
import { GeneratedImage } from "./image/GeneratedImage.js";
|
|
7
9
|
import { ModelRegistry } from "./models/ModelRegistry.js";
|
|
8
10
|
import { Transcription } from "./transcription/Transcription.js";
|
|
9
11
|
import { Moderation } from "./moderation/Moderation.js";
|
|
10
12
|
import { Embedding } from "./embedding/Embedding.js";
|
|
13
|
+
import { config } from "./config.js";
|
|
11
14
|
class LLMCore {
|
|
12
15
|
models = ModelRegistry;
|
|
16
|
+
config = config;
|
|
13
17
|
provider;
|
|
14
18
|
defaultTranscriptionModelId;
|
|
15
19
|
defaultModerationModelId;
|
|
@@ -18,36 +22,53 @@ class LLMCore {
|
|
|
18
22
|
attempts: 1,
|
|
19
23
|
delayMs: 0,
|
|
20
24
|
};
|
|
21
|
-
configure(
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
}
|
|
31
|
-
|
|
25
|
+
configure(configOrCallback) {
|
|
26
|
+
// Callback style: for setting API keys
|
|
27
|
+
if (typeof configOrCallback === "function") {
|
|
28
|
+
configOrCallback(this.config);
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
// Object style: for setting provider and other options
|
|
32
|
+
const options = configOrCallback;
|
|
33
|
+
// Extract known control keys
|
|
34
|
+
const { provider, retry, defaultTranscriptionModel, defaultModerationModel, defaultEmbeddingModel, ...apiConfig } = options;
|
|
35
|
+
// Merge API keys into global config
|
|
36
|
+
Object.assign(this.config, apiConfig);
|
|
37
|
+
if (defaultTranscriptionModel) {
|
|
38
|
+
this.defaultTranscriptionModelId = defaultTranscriptionModel;
|
|
39
|
+
}
|
|
40
|
+
if (defaultModerationModel) {
|
|
41
|
+
this.defaultModerationModelId = defaultModerationModel;
|
|
42
|
+
}
|
|
43
|
+
if (defaultEmbeddingModel) {
|
|
44
|
+
this.defaultEmbeddingModelId = defaultEmbeddingModel;
|
|
45
|
+
}
|
|
46
|
+
if (retry) {
|
|
32
47
|
this.retry = {
|
|
33
|
-
attempts:
|
|
34
|
-
delayMs:
|
|
48
|
+
attempts: retry.attempts ?? 1,
|
|
49
|
+
delayMs: retry.delayMs ?? 0,
|
|
35
50
|
};
|
|
36
51
|
}
|
|
37
|
-
if (typeof
|
|
38
|
-
if (
|
|
52
|
+
if (typeof provider === "string") {
|
|
53
|
+
if (provider === "openai") {
|
|
39
54
|
ensureOpenAIRegistered();
|
|
40
55
|
}
|
|
41
|
-
if (
|
|
56
|
+
if (provider === "gemini") {
|
|
42
57
|
registerGeminiProvider();
|
|
43
58
|
}
|
|
44
|
-
if (
|
|
59
|
+
if (provider === "anthropic") {
|
|
45
60
|
registerAnthropicProvider();
|
|
46
61
|
}
|
|
47
|
-
|
|
62
|
+
if (provider === "deepseek") {
|
|
63
|
+
registerDeepSeekProvider();
|
|
64
|
+
}
|
|
65
|
+
if (provider === "ollama") {
|
|
66
|
+
registerOllamaProvider();
|
|
67
|
+
}
|
|
68
|
+
this.provider = providerRegistry.resolve(provider);
|
|
48
69
|
}
|
|
49
|
-
else {
|
|
50
|
-
this.provider =
|
|
70
|
+
else if (provider) {
|
|
71
|
+
this.provider = provider;
|
|
51
72
|
}
|
|
52
73
|
}
|
|
53
74
|
ensureProviderSupport(method) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModelRegistry.d.ts","sourceRoot":"","sources":["../../src/models/ModelRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAGnC,qBAAa,aAAa;IACtB,OAAO,CAAC,MAAM,CAAC,MAAM,CAA6C;IAElE
|
|
1
|
+
{"version":3,"file":"ModelRegistry.d.ts","sourceRoot":"","sources":["../../src/models/ModelRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAGnC,qBAAa,aAAa;IACtB,OAAO,CAAC,MAAM,CAAC,MAAM,CAA6C;IAElE,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS;IAMlE;;OAEG;IACH,MAAM,CAAC,GAAG,IAAI,KAAK,EAAE;IAIrB;;OAEG;IACH,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAKhF;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO;IAK/E;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAK9E;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAC;QAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;sBAA3I,MAAM;uBAAiB,MAAM;sBAAgB,MAAM;wBAAkB,MAAM;2BAAqB,MAAM;;;;;sBAAtG,MAAM;uBAAiB,MAAM;sBAAgB,MAAM;wBAAkB,MAAM;2BAAqB,MAAM;;CA+BrJ"}
|
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
import { modelsData } from "./models.js";
|
|
2
2
|
export class ModelRegistry {
|
|
3
3
|
static models = modelsData;
|
|
4
|
-
/**
|
|
5
|
-
* Find a model by its ID.
|
|
6
|
-
*/
|
|
7
4
|
static find(modelId, provider) {
|
|
8
5
|
return this.models.find(m => (m.id === modelId || m.family === modelId) && (!provider || m.provider === provider));
|
|
9
6
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../src/models/models.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../src/models/models.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAovOtB,CAAC"}
|