@node-llm/core 0.8.0 → 1.1.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 +0 -167
- package/dist/aliases.json +126 -0
- package/dist/chat/Chat.d.ts +7 -3
- package/dist/chat/Chat.d.ts.map +1 -1
- package/dist/chat/Chat.js +6 -7
- package/dist/chat/ChatStream.d.ts +25 -0
- package/dist/chat/ChatStream.d.ts.map +1 -0
- package/dist/chat/ChatStream.js +93 -0
- package/dist/config.d.ts +5 -3
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +2 -0
- package/dist/embedding/Embedding.d.ts +1 -1
- package/dist/embedding/Embedding.d.ts.map +1 -1
- package/dist/errors/index.d.ts +22 -0
- package/dist/errors/index.d.ts.map +1 -1
- package/dist/errors/index.js +32 -0
- package/dist/index.d.ts +10 -15
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -9
- package/dist/llm.d.ts +4 -3
- package/dist/llm.d.ts.map +1 -1
- package/dist/llm.js +44 -37
- package/dist/model_aliases.d.ts +3 -0
- package/dist/model_aliases.d.ts.map +1 -0
- package/dist/model_aliases.js +20 -0
- package/dist/models/ModelRegistry.d.ts +4 -0
- package/dist/models/ModelRegistry.d.ts.map +1 -1
- package/dist/models/ModelRegistry.js +15 -0
- package/dist/models/models.d.ts +729 -60
- package/dist/models/models.d.ts.map +1 -1
- package/dist/models/models.js +24375 -2312
- package/dist/models/types.d.ts +3 -3
- package/dist/models/types.d.ts.map +1 -1
- package/dist/models/types.js +3 -0
- package/dist/providers/BaseProvider.d.ts +23 -0
- package/dist/providers/BaseProvider.d.ts.map +1 -0
- package/dist/providers/BaseProvider.js +31 -0
- package/dist/providers/Provider.d.ts +17 -1
- package/dist/providers/Provider.d.ts.map +1 -1
- package/dist/providers/anthropic/AnthropicProvider.d.ts +6 -7
- package/dist/providers/anthropic/AnthropicProvider.d.ts.map +1 -1
- package/dist/providers/anthropic/AnthropicProvider.js +16 -13
- package/dist/providers/anthropic/Streaming.d.ts +1 -1
- package/dist/providers/anthropic/Streaming.d.ts.map +1 -1
- package/dist/providers/anthropic/Streaming.js +80 -54
- package/dist/providers/deepseek/Capabilities.js +1 -1
- package/dist/providers/deepseek/DeepSeekProvider.d.ts +5 -1
- package/dist/providers/deepseek/DeepSeekProvider.d.ts.map +1 -1
- package/dist/providers/deepseek/DeepSeekProvider.js +15 -1
- package/dist/providers/deepseek/Streaming.d.ts +1 -1
- package/dist/providers/deepseek/Streaming.d.ts.map +1 -1
- package/dist/providers/deepseek/Streaming.js +80 -48
- package/dist/providers/gemini/Capabilities.d.ts.map +1 -1
- package/dist/providers/gemini/Embeddings.d.ts +1 -1
- package/dist/providers/gemini/Embeddings.d.ts.map +1 -1
- package/dist/providers/gemini/GeminiProvider.d.ts +6 -4
- package/dist/providers/gemini/GeminiProvider.d.ts.map +1 -1
- package/dist/providers/gemini/GeminiProvider.js +14 -4
- package/dist/providers/gemini/Streaming.d.ts +1 -1
- package/dist/providers/gemini/Streaming.d.ts.map +1 -1
- package/dist/providers/gemini/Streaming.js +62 -39
- package/dist/providers/gemini/index.d.ts +1 -1
- package/dist/providers/gemini/index.js +1 -1
- package/dist/providers/ollama/Capabilities.d.ts.map +1 -1
- package/dist/providers/ollama/Capabilities.js +5 -1
- package/dist/providers/ollama/OllamaProvider.d.ts +1 -0
- package/dist/providers/ollama/OllamaProvider.d.ts.map +1 -1
- package/dist/providers/ollama/OllamaProvider.js +3 -0
- package/dist/providers/ollama/index.d.ts +1 -1
- package/dist/providers/ollama/index.js +1 -1
- package/dist/providers/openai/Embedding.d.ts +1 -1
- package/dist/providers/openai/Embedding.d.ts.map +1 -1
- package/dist/providers/openai/OpenAIProvider.d.ts +6 -3
- package/dist/providers/openai/OpenAIProvider.d.ts.map +1 -1
- package/dist/providers/openai/OpenAIProvider.js +15 -1
- package/dist/providers/openai/Streaming.d.ts +1 -1
- package/dist/providers/openai/Streaming.d.ts.map +1 -1
- package/dist/providers/openai/Streaming.js +75 -43
- package/dist/providers/openai/index.d.ts +1 -1
- package/dist/providers/openai/index.js +1 -1
- package/dist/providers/openrouter/Capabilities.d.ts +13 -0
- package/dist/providers/openrouter/Capabilities.d.ts.map +1 -0
- package/dist/providers/openrouter/Capabilities.js +67 -0
- package/dist/providers/openrouter/Models.d.ts +11 -0
- package/dist/providers/openrouter/Models.d.ts.map +1 -0
- package/dist/providers/openrouter/Models.js +88 -0
- package/dist/providers/openrouter/OpenRouterProvider.d.ts +21 -0
- package/dist/providers/openrouter/OpenRouterProvider.d.ts.map +1 -0
- package/dist/providers/openrouter/OpenRouterProvider.js +24 -0
- package/dist/providers/openrouter/index.d.ts +11 -0
- package/dist/providers/openrouter/index.d.ts.map +1 -0
- package/dist/providers/openrouter/index.js +26 -0
- package/dist/providers/registry.d.ts +11 -1
- package/dist/providers/registry.d.ts.map +1 -1
- package/dist/providers/registry.js +15 -1
- package/dist/streaming/Stream.d.ts +29 -0
- package/dist/streaming/Stream.d.ts.map +1 -0
- package/dist/streaming/Stream.js +67 -0
- package/dist/utils/FileLoader.d.ts.map +1 -1
- package/dist/utils/FileLoader.js +34 -3
- package/dist/utils/logger.d.ts +13 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +24 -0
- package/package.json +2 -2
- package/dist/chat/Stream.d.ts +0 -21
- package/dist/chat/Stream.d.ts.map +0 -1
- package/dist/chat/Stream.js +0 -73
- package/dist/providers/Embedding.d.ts +0 -20
- package/dist/providers/Embedding.d.ts.map +0 -1
- package/dist/providers/Embedding.js +0 -1
package/dist/models/types.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export interface Model {
|
|
2
2
|
id: string;
|
|
3
3
|
name: string;
|
|
4
|
-
provider:
|
|
4
|
+
provider: ProviderName;
|
|
5
5
|
family?: string | null;
|
|
6
6
|
created_at?: string | null;
|
|
7
7
|
context_window?: number | null;
|
|
@@ -44,7 +44,7 @@ export interface Model {
|
|
|
44
44
|
};
|
|
45
45
|
metadata?: Record<string, any>;
|
|
46
46
|
}
|
|
47
|
-
export type ProviderName = 'openai' | 'anthropic' | 'gemini' | 'deepseek';
|
|
48
|
-
export type ModelCapability = 'streaming' | 'function_calling' | 'structured_output' | 'predicted_outputs' | 'distillation' | 'fine_tuning' | 'batch' | 'realtime' | 'image_generation' | 'speech_generation' | 'transcription' | 'translation' | 'citations' | 'reasoning' | 'caching' | 'moderation' | 'json_mode' | 'vision';
|
|
47
|
+
export type ProviderName = 'openai' | 'anthropic' | 'gemini' | 'deepseek' | 'openrouter' | 'ollama';
|
|
48
|
+
export type ModelCapability = 'streaming' | 'function_calling' | 'structured_output' | 'predicted_outputs' | 'distillation' | 'fine_tuning' | 'batch' | 'realtime' | 'image_generation' | 'speech_generation' | 'transcription' | 'translation' | 'citations' | 'reasoning' | 'caching' | 'moderation' | 'json_mode' | 'vision' | 'chat' | 'tools';
|
|
49
49
|
export type ModelModality = 'text' | 'image' | 'audio' | 'pdf' | 'video' | 'file' | 'embeddings' | 'moderation';
|
|
50
50
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/models/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,KAAK;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/models/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,KAAK;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,YAAY,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,UAAU,EAAE;QACV,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,MAAM,EAAE,MAAM,EAAE,CAAC;KAClB,CAAC;IACF,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,OAAO,CAAC,EAAE;QACR,WAAW,CAAC,EAAE;YACZ,QAAQ,CAAC,EAAE;gBACT,iBAAiB,CAAC,EAAE,MAAM,CAAC;gBAC3B,wBAAwB,CAAC,EAAE,MAAM,CAAC;gBAClC,kBAAkB,CAAC,EAAE,MAAM,CAAC;gBAC5B,4BAA4B,CAAC,EAAE,MAAM,CAAC;aACvC,CAAC;YACF,KAAK,CAAC,EAAE;gBACN,iBAAiB,CAAC,EAAE,MAAM,CAAC;gBAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC;aAC7B,CAAC;SACH,CAAC;QACF,MAAM,CAAC,EAAE;YACP,QAAQ,CAAC,EAAE;gBACT,KAAK,CAAC,EAAE,MAAM,CAAC;gBACf,MAAM,CAAC,EAAE,MAAM,CAAC;aACjB,CAAC;YACF,KAAK,CAAC,EAAE;gBACN,KAAK,CAAC,EAAE,MAAM,CAAC;gBACf,MAAM,CAAC,EAAE,MAAM,CAAC;aACjB,CAAC;SACH,CAAC;QACF,YAAY,CAAC,EAAE;YACb,QAAQ,CAAC,EAAE;gBACT,iBAAiB,CAAC,EAAE,MAAM,CAAC;gBAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC;aAC7B,CAAC;SACH,CAAC;KACH,CAAC;IACF,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAChC;AAED,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,WAAW,GAAG,QAAQ,GAAG,UAAU,GAAG,YAAY,GAAG,QAAQ,CAAC;AAEpG,MAAM,MAAM,eAAe,GACvB,WAAW,GACX,kBAAkB,GAClB,mBAAmB,GACnB,mBAAmB,GACnB,cAAc,GACd,aAAa,GACb,OAAO,GACP,UAAU,GACV,kBAAkB,GAClB,mBAAmB,GACnB,eAAe,GACf,aAAa,GACb,WAAW,GACX,WAAW,GACX,SAAS,GACT,YAAY,GACZ,WAAW,GACX,QAAQ,GACR,MAAM,GACN,OAAO,CAAC;AAEZ,MAAM,MAAM,aAAa,GACrB,MAAM,GACN,OAAO,GACP,OAAO,GACP,KAAK,GACL,OAAO,GACP,MAAM,GACN,YAAY,GACZ,YAAY,CAAC"}
|
package/dist/models/types.js
CHANGED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Provider, ChatRequest, ChatResponse, ChatChunk, ModelInfo, ImageRequest, ImageResponse, TranscriptionRequest, TranscriptionResponse, ModerationRequest, ModerationResponse, EmbeddingRequest, EmbeddingResponse } from "./Provider.js";
|
|
2
|
+
/**
|
|
3
|
+
* Abstract base class for all NodeLLM providers.
|
|
4
|
+
* Provides common functionality and default implementations for unsupported features.
|
|
5
|
+
* Each provider must implement the abstract methods and can override default implementations.
|
|
6
|
+
*/
|
|
7
|
+
export declare abstract class BaseProvider implements Provider {
|
|
8
|
+
abstract apiBase(): string;
|
|
9
|
+
abstract headers(): Record<string, string>;
|
|
10
|
+
abstract headers(): Record<string, string>;
|
|
11
|
+
protected abstract providerName(): string;
|
|
12
|
+
get id(): string;
|
|
13
|
+
protected throwUnsupportedError(feature: string): never;
|
|
14
|
+
abstract chat(request: ChatRequest): Promise<ChatResponse>;
|
|
15
|
+
abstract capabilities?: any;
|
|
16
|
+
stream?(request: ChatRequest): AsyncIterable<ChatChunk>;
|
|
17
|
+
listModels?(): Promise<ModelInfo[]>;
|
|
18
|
+
paint?(request: ImageRequest): Promise<ImageResponse>;
|
|
19
|
+
transcribe?(request: TranscriptionRequest): Promise<TranscriptionResponse>;
|
|
20
|
+
moderate?(request: ModerationRequest): Promise<ModerationResponse>;
|
|
21
|
+
embed?(request: EmbeddingRequest): Promise<EmbeddingResponse>;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=BaseProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseProvider.d.ts","sourceRoot":"","sources":["../../src/providers/BaseProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,SAAS,EACT,SAAS,EACT,YAAY,EACZ,aAAa,EACb,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,eAAe,CAAC;AAEvB;;;;GAIG;AACH,8BAAsB,YAAa,YAAW,QAAQ;aACpC,OAAO,IAAI,MAAM;aACjB,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;aACjC,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IACjD,SAAS,CAAC,QAAQ,CAAC,YAAY,IAAI,MAAM;IAEzC,IAAI,EAAE,IAAI,MAAM,CAEf;IAED,SAAS,CAAC,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK;IAIvD,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;IAC1D,QAAQ,CAAC,YAAY,CAAC,EAAE,GAAG,CAAC;IAErB,MAAM,CAAC,CAAC,OAAO,EAAE,WAAW,GAAG,aAAa,CAAC,SAAS,CAAC;IAIxD,UAAU,CAAC,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAInC,KAAK,CAAC,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC;IAIrD,UAAU,CAAC,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAI1E,QAAQ,CAAC,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAIlE,KAAK,CAAC,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC;CAGpE"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Abstract base class for all NodeLLM providers.
|
|
3
|
+
* Provides common functionality and default implementations for unsupported features.
|
|
4
|
+
* Each provider must implement the abstract methods and can override default implementations.
|
|
5
|
+
*/
|
|
6
|
+
export class BaseProvider {
|
|
7
|
+
get id() {
|
|
8
|
+
return this.providerName();
|
|
9
|
+
}
|
|
10
|
+
throwUnsupportedError(feature) {
|
|
11
|
+
throw new Error(`${this.providerName()} does not support ${feature}`);
|
|
12
|
+
}
|
|
13
|
+
async *stream(request) {
|
|
14
|
+
this.throwUnsupportedError("stream");
|
|
15
|
+
}
|
|
16
|
+
async listModels() {
|
|
17
|
+
this.throwUnsupportedError("listModels");
|
|
18
|
+
}
|
|
19
|
+
async paint(request) {
|
|
20
|
+
this.throwUnsupportedError("paint");
|
|
21
|
+
}
|
|
22
|
+
async transcribe(request) {
|
|
23
|
+
this.throwUnsupportedError("transcribe");
|
|
24
|
+
}
|
|
25
|
+
async moderate(request) {
|
|
26
|
+
this.throwUnsupportedError("moderate");
|
|
27
|
+
}
|
|
28
|
+
async embed(request) {
|
|
29
|
+
this.throwUnsupportedError("embed");
|
|
30
|
+
}
|
|
31
|
+
}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { Message } from "../chat/Message.js";
|
|
2
2
|
import { Tool, ToolCall } from "../chat/Tool.js";
|
|
3
|
-
import { EmbeddingRequest, EmbeddingResponse } from "./Embedding.js";
|
|
4
3
|
export interface ChatRequest {
|
|
5
4
|
model: string;
|
|
6
5
|
messages: Message[];
|
|
@@ -107,7 +106,24 @@ export interface ModerationResponse {
|
|
|
107
106
|
model: string;
|
|
108
107
|
results: ModerationResult[];
|
|
109
108
|
}
|
|
109
|
+
export interface EmbeddingRequest {
|
|
110
|
+
input: string | string[];
|
|
111
|
+
model?: string;
|
|
112
|
+
dimensions?: number;
|
|
113
|
+
user?: string;
|
|
114
|
+
}
|
|
115
|
+
export interface EmbeddingVector {
|
|
116
|
+
embedding: number[];
|
|
117
|
+
index: number;
|
|
118
|
+
}
|
|
119
|
+
export interface EmbeddingResponse {
|
|
120
|
+
vectors: number[][];
|
|
121
|
+
model: string;
|
|
122
|
+
input_tokens: number;
|
|
123
|
+
dimensions: number;
|
|
124
|
+
}
|
|
110
125
|
export interface Provider {
|
|
126
|
+
id: string;
|
|
111
127
|
chat(request: ChatRequest): Promise<ChatResponse>;
|
|
112
128
|
stream?(request: ChatRequest): AsyncIterable<ChatChunk>;
|
|
113
129
|
listModels?(): Promise<ModelInfo[]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Provider.d.ts","sourceRoot":"","sources":["../../src/providers/Provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEjD,
|
|
1
|
+
{"version":3,"file":"Provider.d.ts","sourceRoot":"","sources":["../../src/providers/Provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { Provider, ChatRequest, ChatResponse, ModelInfo, ChatChunk
|
|
2
|
-
import {
|
|
1
|
+
import { Provider, ChatRequest, ChatResponse, ModelInfo, ChatChunk } from "../Provider.js";
|
|
2
|
+
import { BaseProvider } from "../BaseProvider.js";
|
|
3
3
|
export interface AnthropicProviderOptions {
|
|
4
4
|
apiKey: string;
|
|
5
5
|
baseUrl?: string;
|
|
6
6
|
}
|
|
7
|
-
export declare class AnthropicProvider implements Provider {
|
|
7
|
+
export declare class AnthropicProvider extends BaseProvider implements Provider {
|
|
8
8
|
private readonly options;
|
|
9
9
|
private readonly baseUrl;
|
|
10
10
|
private readonly chatHandler;
|
|
@@ -22,12 +22,11 @@ export declare class AnthropicProvider implements Provider {
|
|
|
22
22
|
getContextWindow: (model: string) => number | null;
|
|
23
23
|
};
|
|
24
24
|
constructor(options: AnthropicProviderOptions);
|
|
25
|
+
apiBase(): string;
|
|
26
|
+
headers(): Record<string, string>;
|
|
27
|
+
protected providerName(): string;
|
|
25
28
|
chat(request: ChatRequest): Promise<ChatResponse>;
|
|
26
29
|
stream(request: ChatRequest): AsyncGenerator<ChatChunk>;
|
|
27
30
|
listModels(): Promise<ModelInfo[]>;
|
|
28
|
-
paint(_request: ImageRequest): Promise<ImageResponse>;
|
|
29
|
-
transcribe(_request: TranscriptionRequest): Promise<TranscriptionResponse>;
|
|
30
|
-
moderate(_request: ModerationRequest): Promise<ModerationResponse>;
|
|
31
|
-
embed(_request: EmbeddingRequest): Promise<EmbeddingResponse>;
|
|
32
31
|
}
|
|
33
32
|
//# sourceMappingURL=AnthropicProvider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AnthropicProvider.d.ts","sourceRoot":"","sources":["../../../src/providers/anthropic/AnthropicProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"AnthropicProvider.d.ts","sourceRoot":"","sources":["../../../src/providers/anthropic/AnthropicProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAwJ,MAAM,gBAAgB,CAAC;AACjP,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAMlD,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,iBAAkB,SAAQ,YAAa,YAAW,QAAQ;IAkBzD,OAAO,CAAC,QAAQ,CAAC,OAAO;IAjBpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAgB;IAC5C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAqB;IACnD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAkB;IAEzC,YAAY;gCACO,MAAM;+BACP,MAAM;0CACK,MAAM;qCACX,MAAM;0CACD,MAAM;wCACR,MAAM;qCACT,MAAM;oCACP,MAAM;kCACR,MAAM;MAChC;gBAE2B,OAAO,EAAE,wBAAwB;IAQvD,OAAO,IAAI,MAAM;IAIjB,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAQxC,SAAS,CAAC,YAAY,IAAI,MAAM;IAI1B,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;IAIhD,MAAM,CAAC,OAAO,EAAE,WAAW,GAAG,cAAc,CAAC,SAAS,CAAC;IAIxD,UAAU,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;CAKzC"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
+
import { BaseProvider } from "../BaseProvider.js";
|
|
1
2
|
import { Capabilities } from "./Capabilities.js";
|
|
2
3
|
import { AnthropicChat } from "./Chat.js";
|
|
3
4
|
import { AnthropicStreaming } from "./Streaming.js";
|
|
4
5
|
import { AnthropicModels } from "./Models.js";
|
|
5
|
-
export class AnthropicProvider {
|
|
6
|
+
export class AnthropicProvider extends BaseProvider {
|
|
6
7
|
options;
|
|
7
8
|
baseUrl;
|
|
8
9
|
chatHandler;
|
|
@@ -20,12 +21,26 @@ export class AnthropicProvider {
|
|
|
20
21
|
getContextWindow: (model) => Capabilities.getContextWindow(model),
|
|
21
22
|
};
|
|
22
23
|
constructor(options) {
|
|
24
|
+
super();
|
|
23
25
|
this.options = options;
|
|
24
26
|
this.baseUrl = options.baseUrl ?? "https://api.anthropic.com/v1";
|
|
25
27
|
this.chatHandler = new AnthropicChat(this.baseUrl, options.apiKey);
|
|
26
28
|
this.streamHandler = new AnthropicStreaming(this.baseUrl, options.apiKey);
|
|
27
29
|
this.modelsHandler = new AnthropicModels(this.baseUrl, options.apiKey);
|
|
28
30
|
}
|
|
31
|
+
apiBase() {
|
|
32
|
+
return this.baseUrl;
|
|
33
|
+
}
|
|
34
|
+
headers() {
|
|
35
|
+
return {
|
|
36
|
+
"x-api-key": this.options.apiKey,
|
|
37
|
+
"anthropic-version": "2023-06-01",
|
|
38
|
+
"Content-Type": "application/json",
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
providerName() {
|
|
42
|
+
return "Anthropic";
|
|
43
|
+
}
|
|
29
44
|
async chat(request) {
|
|
30
45
|
return this.chatHandler.execute(request);
|
|
31
46
|
}
|
|
@@ -35,16 +50,4 @@ export class AnthropicProvider {
|
|
|
35
50
|
async listModels() {
|
|
36
51
|
return this.modelsHandler.execute();
|
|
37
52
|
}
|
|
38
|
-
async paint(_request) {
|
|
39
|
-
throw new Error("Anthropic doesn't support image generation");
|
|
40
|
-
}
|
|
41
|
-
async transcribe(_request) {
|
|
42
|
-
throw new Error("Anthropic doesn't support transcription");
|
|
43
|
-
}
|
|
44
|
-
async moderate(_request) {
|
|
45
|
-
throw new Error("Anthropic doesn't support moderation");
|
|
46
|
-
}
|
|
47
|
-
async embed(_request) {
|
|
48
|
-
throw new Error("Anthropic doesn't support embeddings");
|
|
49
|
-
}
|
|
50
53
|
}
|
|
@@ -3,6 +3,6 @@ export declare class AnthropicStreaming {
|
|
|
3
3
|
private readonly baseUrl;
|
|
4
4
|
private readonly apiKey;
|
|
5
5
|
constructor(baseUrl: string, apiKey: string);
|
|
6
|
-
execute(request: ChatRequest): AsyncGenerator<ChatChunk>;
|
|
6
|
+
execute(request: ChatRequest, controller?: AbortController): AsyncGenerator<ChatChunk>;
|
|
7
7
|
}
|
|
8
8
|
//# sourceMappingURL=Streaming.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Streaming.d.ts","sourceRoot":"","sources":["../../../src/providers/anthropic/Streaming.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAMxD,qBAAa,kBAAkB;IACjB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAAU,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAxC,OAAO,EAAE,MAAM,EAAmB,MAAM,EAAE,MAAM;IAEtE,OAAO,
|
|
1
|
+
{"version":3,"file":"Streaming.d.ts","sourceRoot":"","sources":["../../../src/providers/anthropic/Streaming.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAMxD,qBAAa,kBAAkB;IACjB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAAU,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAxC,OAAO,EAAE,MAAM,EAAmB,MAAM,EAAE,MAAM;IAEtE,OAAO,CACZ,OAAO,EAAE,WAAW,EACpB,UAAU,CAAC,EAAE,eAAe,GAC3B,cAAc,CAAC,SAAS,CAAC;CAqJ7B"}
|
|
@@ -8,7 +8,8 @@ export class AnthropicStreaming {
|
|
|
8
8
|
this.baseUrl = baseUrl;
|
|
9
9
|
this.apiKey = apiKey;
|
|
10
10
|
}
|
|
11
|
-
async *execute(request) {
|
|
11
|
+
async *execute(request, controller) {
|
|
12
|
+
const abortController = controller || new AbortController();
|
|
12
13
|
const model = request.model;
|
|
13
14
|
const maxTokens = request.max_tokens || Capabilities.getMaxOutputTokens(model) || 4096;
|
|
14
15
|
const systemPrompt = formatSystemPrompt(request.messages);
|
|
@@ -50,63 +51,88 @@ export class AnthropicStreaming {
|
|
|
50
51
|
if (hasPdf) {
|
|
51
52
|
headers["anthropic-beta"] = "pdfs-2024-09-25";
|
|
52
53
|
}
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
const
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
const
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
const eventLine = parts[0];
|
|
84
|
-
const dataLine = parts.find(p => p.startsWith("data: "));
|
|
85
|
-
if (!dataLine || !eventLine)
|
|
86
|
-
continue;
|
|
87
|
-
const eventType = eventLine.replace("event: ", "").trim();
|
|
88
|
-
const dataStr = dataLine.replace("data: ", "").trim();
|
|
89
|
-
try {
|
|
90
|
-
const data = JSON.parse(dataStr);
|
|
91
|
-
// Handle different event types from Anthropic
|
|
92
|
-
if (eventType === "content_block_delta") {
|
|
93
|
-
if (data.delta && data.delta.type === "text_delta") {
|
|
94
|
-
yield { content: data.delta.text };
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
else if (eventType === "message_start") {
|
|
98
|
-
// Could extract initial usage here
|
|
54
|
+
let done = false;
|
|
55
|
+
try {
|
|
56
|
+
const response = await fetch(`${this.baseUrl}/messages`, {
|
|
57
|
+
method: "POST",
|
|
58
|
+
headers: headers,
|
|
59
|
+
body: JSON.stringify(body),
|
|
60
|
+
signal: abortController.signal,
|
|
61
|
+
});
|
|
62
|
+
if (!response.ok) {
|
|
63
|
+
await handleAnthropicError(response, model);
|
|
64
|
+
}
|
|
65
|
+
if (!response.body) {
|
|
66
|
+
throw new Error("No response body for streaming");
|
|
67
|
+
}
|
|
68
|
+
const reader = response.body.getReader();
|
|
69
|
+
const decoder = new TextDecoder();
|
|
70
|
+
let buffer = "";
|
|
71
|
+
while (true) {
|
|
72
|
+
const { value, done: readerDone } = await reader.read();
|
|
73
|
+
if (readerDone)
|
|
74
|
+
break;
|
|
75
|
+
const chunk = decoder.decode(value, { stream: true });
|
|
76
|
+
buffer += chunk;
|
|
77
|
+
const lines = buffer.split("\n\n");
|
|
78
|
+
buffer = lines.pop() || "";
|
|
79
|
+
for (const line of lines) {
|
|
80
|
+
let trimmed = line.trim();
|
|
81
|
+
// Handle carriage returns
|
|
82
|
+
if (trimmed.endsWith('\r')) {
|
|
83
|
+
trimmed = trimmed.substring(0, trimmed.length - 1);
|
|
99
84
|
}
|
|
100
|
-
|
|
101
|
-
|
|
85
|
+
if (!trimmed.startsWith("event: "))
|
|
86
|
+
continue;
|
|
87
|
+
// Format is:
|
|
88
|
+
// event: type
|
|
89
|
+
// data: json
|
|
90
|
+
const parts = trimmed.split("\n");
|
|
91
|
+
const eventLine = parts[0];
|
|
92
|
+
const dataLine = parts.find(p => p.startsWith("data: "));
|
|
93
|
+
if (!dataLine || !eventLine)
|
|
94
|
+
continue;
|
|
95
|
+
const eventType = eventLine.replace("event: ", "").trim();
|
|
96
|
+
const dataStr = dataLine.replace("data: ", "").trim();
|
|
97
|
+
try {
|
|
98
|
+
const data = JSON.parse(dataStr);
|
|
99
|
+
// Handle different event types from Anthropic
|
|
100
|
+
if (eventType === "content_block_delta") {
|
|
101
|
+
if (data.delta && data.delta.type === "text_delta") {
|
|
102
|
+
yield { content: data.delta.text };
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
else if (eventType === "message_start") {
|
|
106
|
+
// Could extract initial usage here
|
|
107
|
+
}
|
|
108
|
+
else if (eventType === "message_delta") {
|
|
109
|
+
// Update usage or stop reason
|
|
110
|
+
}
|
|
111
|
+
else if (eventType === "error") {
|
|
112
|
+
throw new Error(`Stream error: ${data.error?.message}`);
|
|
113
|
+
}
|
|
102
114
|
}
|
|
103
|
-
|
|
104
|
-
throw
|
|
115
|
+
catch (e) {
|
|
116
|
+
// Re-throw errors
|
|
117
|
+
if (e instanceof Error && e.message.startsWith("Stream error"))
|
|
118
|
+
throw e;
|
|
119
|
+
// Ignore parse errors
|
|
105
120
|
}
|
|
106
121
|
}
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
122
|
+
}
|
|
123
|
+
done = true;
|
|
124
|
+
}
|
|
125
|
+
catch (e) {
|
|
126
|
+
// Graceful exit on abort
|
|
127
|
+
if (e instanceof Error && e.name === 'AbortError') {
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
throw e;
|
|
131
|
+
}
|
|
132
|
+
finally {
|
|
133
|
+
// Cleanup: abort if user breaks early
|
|
134
|
+
if (!done) {
|
|
135
|
+
abortController.abort();
|
|
110
136
|
}
|
|
111
137
|
}
|
|
112
138
|
}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { Provider, ChatRequest, ChatResponse, ModelInfo, ChatChunk } from "../Provider.js";
|
|
2
|
+
import { BaseProvider } from "../BaseProvider.js";
|
|
2
3
|
export interface DeepSeekProviderOptions {
|
|
3
4
|
apiKey: string;
|
|
4
5
|
baseUrl?: string;
|
|
5
6
|
}
|
|
6
|
-
export declare class DeepSeekProvider implements Provider {
|
|
7
|
+
export declare class DeepSeekProvider extends BaseProvider implements Provider {
|
|
7
8
|
private readonly options;
|
|
8
9
|
private readonly baseUrl;
|
|
9
10
|
private readonly chatHandler;
|
|
@@ -21,6 +22,9 @@ export declare class DeepSeekProvider implements Provider {
|
|
|
21
22
|
getContextWindow: (model: string) => number | null;
|
|
22
23
|
};
|
|
23
24
|
constructor(options: DeepSeekProviderOptions);
|
|
25
|
+
apiBase(): string;
|
|
26
|
+
headers(): Record<string, string>;
|
|
27
|
+
protected providerName(): string;
|
|
24
28
|
chat(request: ChatRequest): Promise<ChatResponse>;
|
|
25
29
|
stream(request: ChatRequest): AsyncGenerator<ChatChunk>;
|
|
26
30
|
listModels(): Promise<ModelInfo[]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DeepSeekProvider.d.ts","sourceRoot":"","sources":["../../../src/providers/deepseek/DeepSeekProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"DeepSeekProvider.d.ts","sourceRoot":"","sources":["../../../src/providers/deepseek/DeepSeekProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3F,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAMlD,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,gBAAiB,SAAQ,YAAa,YAAW,QAAQ;IAkBxD,OAAO,CAAC,QAAQ,CAAC,OAAO;IAjBpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAe;IAC3C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAoB;IACrD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAiB;IAExC,YAAY;gCACO,MAAM;+BACP,MAAM;0CACK,MAAM;oCACZ,MAAM;yCACD,MAAM;uCACR,MAAM;oCACT,MAAM;mCACP,MAAM;kCACP,MAAM;MAChC;gBAE2B,OAAO,EAAE,uBAAuB;IAQtD,OAAO,IAAI,MAAM;IAIjB,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAOxC,SAAS,CAAC,YAAY,IAAI,MAAM;IAI1B,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;IAIhD,MAAM,CAAC,OAAO,EAAE,WAAW,GAAG,cAAc,CAAC,SAAS,CAAC;IAIxD,UAAU,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;CAKzC"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
+
import { BaseProvider } from "../BaseProvider.js";
|
|
1
2
|
import { DeepSeekChat } from "./Chat.js";
|
|
2
3
|
import { DeepSeekModels } from "./Models.js";
|
|
3
4
|
import { DeepSeekStreaming } from "./Streaming.js";
|
|
4
5
|
import { Capabilities } from "./Capabilities.js";
|
|
5
|
-
export class DeepSeekProvider {
|
|
6
|
+
export class DeepSeekProvider extends BaseProvider {
|
|
6
7
|
options;
|
|
7
8
|
baseUrl;
|
|
8
9
|
chatHandler;
|
|
@@ -20,12 +21,25 @@ export class DeepSeekProvider {
|
|
|
20
21
|
getContextWindow: (model) => Capabilities.getContextWindow(model),
|
|
21
22
|
};
|
|
22
23
|
constructor(options) {
|
|
24
|
+
super();
|
|
23
25
|
this.options = options;
|
|
24
26
|
this.baseUrl = options.baseUrl ?? "https://api.deepseek.com";
|
|
25
27
|
this.chatHandler = new DeepSeekChat(this.baseUrl, options.apiKey);
|
|
26
28
|
this.streamingHandler = new DeepSeekStreaming(this.baseUrl, options.apiKey);
|
|
27
29
|
this.modelsHandler = new DeepSeekModels(this.baseUrl, options.apiKey);
|
|
28
30
|
}
|
|
31
|
+
apiBase() {
|
|
32
|
+
return this.baseUrl;
|
|
33
|
+
}
|
|
34
|
+
headers() {
|
|
35
|
+
return {
|
|
36
|
+
"Authorization": `Bearer ${this.options.apiKey}`,
|
|
37
|
+
"Content-Type": "application/json",
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
providerName() {
|
|
41
|
+
return "DeepSeek";
|
|
42
|
+
}
|
|
29
43
|
async chat(request) {
|
|
30
44
|
return this.chatHandler.execute(request);
|
|
31
45
|
}
|
|
@@ -3,6 +3,6 @@ export declare class DeepSeekStreaming {
|
|
|
3
3
|
private readonly baseUrl;
|
|
4
4
|
private readonly apiKey;
|
|
5
5
|
constructor(baseUrl: string, apiKey: string);
|
|
6
|
-
execute(request: ChatRequest): AsyncGenerator<ChatChunk>;
|
|
6
|
+
execute(request: ChatRequest, controller?: AbortController): AsyncGenerator<ChatChunk>;
|
|
7
7
|
}
|
|
8
8
|
//# sourceMappingURL=Streaming.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Streaming.d.ts","sourceRoot":"","sources":["../../../src/providers/deepseek/Streaming.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"Streaming.d.ts","sourceRoot":"","sources":["../../../src/providers/deepseek/Streaming.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAGxD,qBAAa,iBAAiB;IAChB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAAU,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAxC,OAAO,EAAE,MAAM,EAAmB,MAAM,EAAE,MAAM;IAEtE,OAAO,CACZ,OAAO,EAAE,WAAW,EACpB,UAAU,CAAC,EAAE,eAAe,GAC3B,cAAc,CAAC,SAAS,CAAC;CA8G7B"}
|