@node-llm/core 1.18.0 → 1.19.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 +14 -12
- package/dist/agent/Agent.d.ts +17 -3
- package/dist/agent/Agent.d.ts.map +1 -1
- package/dist/agent/Agent.js +11 -0
- package/dist/aliases.d.ts +341 -316
- package/dist/aliases.d.ts.map +1 -1
- package/dist/aliases.js +467 -442
- package/dist/chat/Chat.d.ts +12 -5
- package/dist/chat/Chat.d.ts.map +1 -1
- package/dist/chat/Chat.js +45 -13
- package/dist/chat/ChatOptions.d.ts +17 -0
- package/dist/chat/ChatOptions.d.ts.map +1 -1
- package/dist/chat/ChatResponse.d.ts +5 -0
- package/dist/chat/ChatResponse.d.ts.map +1 -1
- package/dist/chat/ChatResponse.js +12 -4
- package/dist/chat/ChatStream.d.ts.map +1 -1
- package/dist/chat/ChatStream.js +20 -10
- package/dist/chat/PromptCache.d.ts +7 -0
- package/dist/chat/PromptCache.d.ts.map +1 -0
- package/dist/chat/PromptCache.js +7 -0
- package/dist/chat/Temperature.d.ts +7 -0
- package/dist/chat/Temperature.d.ts.map +1 -0
- package/dist/chat/Temperature.js +17 -0
- package/dist/chat/Tool.d.ts +26 -3
- package/dist/chat/Tool.d.ts.map +1 -1
- package/dist/chat/Tool.js +28 -2
- package/dist/chat/ToolCallOutcome.d.ts +12 -0
- package/dist/chat/ToolCallOutcome.d.ts.map +1 -1
- package/dist/chat/ToolCallOutcome.js +14 -0
- package/dist/chat/ToolResultWindow.d.ts +16 -0
- package/dist/chat/ToolResultWindow.d.ts.map +1 -0
- package/dist/chat/ToolResultWindow.js +25 -0
- package/dist/config.d.ts +30 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +66 -30
- package/dist/errors/billing.d.ts +7 -0
- package/dist/errors/billing.d.ts.map +1 -0
- package/dist/errors/billing.js +24 -0
- package/dist/errors/index.d.ts +28 -0
- package/dist/errors/index.d.ts.map +1 -1
- package/dist/errors/index.js +32 -0
- package/dist/executor/Executor.d.ts.map +1 -1
- package/dist/executor/Executor.js +5 -3
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/llm.d.ts +2 -1
- package/dist/llm.d.ts.map +1 -1
- package/dist/llm.js +8 -2
- package/dist/models/ModelRegistry.d.ts +12 -1
- package/dist/models/ModelRegistry.d.ts.map +1 -1
- package/dist/models/ModelRegistry.js +22 -2
- package/dist/models/models.json +11900 -4568
- package/dist/models/types.d.ts +14 -1
- package/dist/models/types.d.ts.map +1 -1
- package/dist/providers/Provider.d.ts +23 -1
- package/dist/providers/Provider.d.ts.map +1 -1
- package/dist/providers/anthropic/AnthropicProvider.d.ts +2 -0
- package/dist/providers/anthropic/AnthropicProvider.d.ts.map +1 -1
- package/dist/providers/anthropic/AnthropicProvider.js +2 -0
- package/dist/providers/anthropic/Capabilities.d.ts +1 -0
- package/dist/providers/anthropic/Capabilities.d.ts.map +1 -1
- package/dist/providers/anthropic/Capabilities.js +3 -0
- package/dist/providers/anthropic/Chat.d.ts.map +1 -1
- package/dist/providers/anthropic/Chat.js +7 -75
- package/dist/providers/anthropic/Errors.d.ts.map +1 -1
- package/dist/providers/anthropic/Errors.js +4 -3
- package/dist/providers/anthropic/Streaming.d.ts.map +1 -1
- package/dist/providers/anthropic/Streaming.js +4 -66
- package/dist/providers/anthropic/Utils.d.ts +33 -1
- package/dist/providers/anthropic/Utils.d.ts.map +1 -1
- package/dist/providers/anthropic/Utils.js +114 -0
- package/dist/providers/anthropic/types.d.ts +17 -3
- package/dist/providers/anthropic/types.d.ts.map +1 -1
- package/dist/providers/azure/AzureProvider.d.ts +54 -0
- package/dist/providers/azure/AzureProvider.d.ts.map +1 -0
- package/dist/providers/azure/AzureProvider.js +110 -0
- package/dist/providers/azure/Capabilities.d.ts +16 -0
- package/dist/providers/azure/Capabilities.d.ts.map +1 -0
- package/dist/providers/azure/Capabilities.js +36 -0
- package/dist/providers/azure/Embedding.d.ts +11 -0
- package/dist/providers/azure/Embedding.d.ts.map +1 -0
- package/dist/providers/azure/Embedding.js +23 -0
- package/dist/providers/azure/Models.d.ts +18 -0
- package/dist/providers/azure/Models.d.ts.map +1 -0
- package/dist/providers/azure/Models.js +29 -0
- package/dist/providers/azure/index.d.ts +5 -0
- package/dist/providers/azure/index.d.ts.map +1 -0
- package/dist/providers/azure/index.js +28 -0
- package/dist/providers/bedrock/BedrockProvider.d.ts.map +1 -1
- package/dist/providers/bedrock/BedrockProvider.js +1 -0
- package/dist/providers/bedrock/Capabilities.d.ts +1 -0
- package/dist/providers/bedrock/Capabilities.d.ts.map +1 -1
- package/dist/providers/bedrock/Capabilities.js +3 -0
- package/dist/providers/bedrock/Chat.d.ts.map +1 -1
- package/dist/providers/bedrock/Chat.js +6 -2
- package/dist/providers/bedrock/Errors.d.ts.map +1 -1
- package/dist/providers/bedrock/Errors.js +4 -0
- package/dist/providers/bedrock/Streaming.d.ts.map +1 -1
- package/dist/providers/bedrock/Streaming.js +4 -1
- package/dist/providers/deepseek/Capabilities.d.ts +1 -0
- package/dist/providers/deepseek/Capabilities.d.ts.map +1 -1
- package/dist/providers/deepseek/Capabilities.js +3 -0
- package/dist/providers/deepseek/Chat.d.ts.map +1 -1
- package/dist/providers/deepseek/Chat.js +3 -2
- package/dist/providers/deepseek/DeepSeekProvider.d.ts +1 -0
- package/dist/providers/deepseek/DeepSeekProvider.d.ts.map +1 -1
- package/dist/providers/deepseek/DeepSeekProvider.js +1 -0
- package/dist/providers/deepseek/Errors.d.ts.map +1 -1
- package/dist/providers/deepseek/Errors.js +5 -4
- package/dist/providers/gemini/Capabilities.d.ts +1 -0
- package/dist/providers/gemini/Capabilities.d.ts.map +1 -1
- package/dist/providers/gemini/Capabilities.js +3 -0
- package/dist/providers/gemini/Chat.d.ts.map +1 -1
- package/dist/providers/gemini/Chat.js +3 -2
- package/dist/providers/gemini/Errors.d.ts.map +1 -1
- package/dist/providers/gemini/Errors.js +4 -3
- 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/mistral/Capabilities.d.ts +1 -0
- package/dist/providers/mistral/Capabilities.d.ts.map +1 -1
- package/dist/providers/mistral/Capabilities.js +3 -0
- package/dist/providers/mistral/Chat.d.ts.map +1 -1
- package/dist/providers/mistral/Chat.js +3 -2
- package/dist/providers/mistral/Errors.d.ts.map +1 -1
- package/dist/providers/mistral/Errors.js +4 -3
- package/dist/providers/mistral/MistralProvider.d.ts +1 -0
- package/dist/providers/mistral/MistralProvider.d.ts.map +1 -1
- package/dist/providers/mistral/MistralProvider.js +1 -0
- package/dist/providers/ollama/OllamaProvider.d.ts.map +1 -1
- package/dist/providers/ollama/OllamaProvider.js +1 -0
- package/dist/providers/openai/Capabilities.d.ts +6 -0
- package/dist/providers/openai/Capabilities.d.ts.map +1 -1
- package/dist/providers/openai/Capabilities.js +10 -0
- package/dist/providers/openai/Chat.d.ts +3 -0
- package/dist/providers/openai/Chat.d.ts.map +1 -1
- package/dist/providers/openai/Chat.js +26 -7
- package/dist/providers/openai/Embedding.d.ts +2 -0
- package/dist/providers/openai/Embedding.d.ts.map +1 -1
- package/dist/providers/openai/Embedding.js +8 -5
- package/dist/providers/openai/Errors.d.ts.map +1 -1
- package/dist/providers/openai/Errors.js +4 -3
- package/dist/providers/openai/Models.d.ts +10 -0
- package/dist/providers/openai/Models.d.ts.map +1 -1
- package/dist/providers/openai/Models.js +12 -8
- package/dist/providers/openai/OpenAIProvider.d.ts +11 -1
- package/dist/providers/openai/OpenAIProvider.d.ts.map +1 -1
- package/dist/providers/openai/OpenAIProvider.js +36 -0
- package/dist/providers/openai/Responses.d.ts +30 -0
- package/dist/providers/openai/Responses.d.ts.map +1 -0
- package/dist/providers/openai/Responses.js +176 -0
- package/dist/providers/openai/Streaming.d.ts +2 -0
- package/dist/providers/openai/Streaming.d.ts.map +1 -1
- package/dist/providers/openai/Streaming.js +19 -5
- package/dist/providers/openrouter/Capabilities.d.ts +1 -0
- package/dist/providers/openrouter/Capabilities.d.ts.map +1 -1
- package/dist/providers/openrouter/Capabilities.js +3 -0
- package/dist/providers/openrouter/OpenRouterProvider.d.ts +1 -0
- package/dist/providers/openrouter/OpenRouterProvider.d.ts.map +1 -1
- package/dist/providers/openrouter/OpenRouterProvider.js +1 -0
- package/dist/providers/registry.d.ts +2 -1
- package/dist/providers/registry.d.ts.map +1 -1
- package/dist/providers/registry.js +2 -1
- package/dist/providers/xai/Capabilities.d.ts +1 -0
- package/dist/providers/xai/Capabilities.d.ts.map +1 -1
- package/dist/providers/xai/Capabilities.js +3 -0
- package/dist/providers/xai/Chat.d.ts.map +1 -1
- package/dist/providers/xai/Chat.js +3 -2
- package/dist/providers/xai/Errors.d.ts.map +1 -1
- package/dist/providers/xai/Errors.js +5 -2
- package/dist/providers/xai/XAIProvider.d.ts +1 -0
- package/dist/providers/xai/XAIProvider.d.ts.map +1 -1
- package/dist/providers/xai/XAIProvider.js +1 -0
- package/dist/schema/Schema.d.ts +3 -3
- package/dist/schema/Schema.d.ts.map +1 -1
- package/dist/schema/to-json-schema.d.ts +2 -2
- package/dist/schema/to-json-schema.d.ts.map +1 -1
- package/dist/schema/to-json-schema.js +3 -8
- package/dist/schema/zod.d.ts +32 -0
- package/dist/schema/zod.d.ts.map +1 -0
- package/dist/schema/zod.js +31 -0
- package/package.json +14 -15
package/dist/models/types.d.ts
CHANGED
|
@@ -3,12 +3,14 @@ export interface ModelPricing {
|
|
|
3
3
|
standard?: {
|
|
4
4
|
input_per_million?: number;
|
|
5
5
|
cached_input_per_million?: number;
|
|
6
|
+
cache_write_per_million?: number;
|
|
6
7
|
output_per_million?: number;
|
|
7
8
|
reasoning_output_per_million?: number;
|
|
8
9
|
};
|
|
9
10
|
batch?: {
|
|
10
11
|
input_per_million?: number;
|
|
11
12
|
cached_input_per_million?: number;
|
|
13
|
+
cache_write_per_million?: number;
|
|
12
14
|
output_per_million?: number;
|
|
13
15
|
reasoning_output_per_million?: number;
|
|
14
16
|
};
|
|
@@ -30,6 +32,17 @@ export interface ModelPricing {
|
|
|
30
32
|
};
|
|
31
33
|
};
|
|
32
34
|
}
|
|
35
|
+
/**
|
|
36
|
+
* A thinking control a model accepts, as published by models.dev.
|
|
37
|
+
* e.g. { type: "effort", values: ["low", "high"] } or { type: "budget_tokens", min: 1024 }.
|
|
38
|
+
*/
|
|
39
|
+
export interface ReasoningOption {
|
|
40
|
+
type: "effort" | "budget_tokens" | "toggle" | (string & {});
|
|
41
|
+
values?: string[];
|
|
42
|
+
min?: number;
|
|
43
|
+
max?: number;
|
|
44
|
+
default?: string | number;
|
|
45
|
+
}
|
|
33
46
|
export interface Model {
|
|
34
47
|
id: string;
|
|
35
48
|
name: string;
|
|
@@ -47,7 +60,7 @@ export interface Model {
|
|
|
47
60
|
pricing?: ModelPricing;
|
|
48
61
|
metadata?: Record<string, unknown>;
|
|
49
62
|
}
|
|
50
|
-
export type ProviderName = "openai" | "anthropic" | "gemini" | "deepseek" | "openrouter" | "ollama" | "mistral" | (string & {});
|
|
63
|
+
export type ProviderName = "openai" | "anthropic" | "gemini" | "deepseek" | "openrouter" | "ollama" | "mistral" | "azure" | (string & {});
|
|
51
64
|
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";
|
|
52
65
|
export type ModelModality = "text" | "image" | "audio" | "pdf" | "video" | "file" | "embeddings" | "moderation";
|
|
53
66
|
//# 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,YAAY;IAC3B,WAAW,CAAC,EAAE;QACZ,QAAQ,CAAC,EAAE;YACT,iBAAiB,CAAC,EAAE,MAAM,CAAC;YAC3B,wBAAwB,CAAC,EAAE,MAAM,CAAC;YAClC,kBAAkB,CAAC,EAAE,MAAM,CAAC;YAC5B,4BAA4B,CAAC,EAAE,MAAM,CAAC;SACvC,CAAC;QACF,KAAK,CAAC,EAAE;YACN,iBAAiB,CAAC,EAAE,MAAM,CAAC;YAC3B,wBAAwB,CAAC,EAAE,MAAM,CAAC;YAClC,kBAAkB,CAAC,EAAE,MAAM,CAAC;YAC5B,4BAA4B,CAAC,EAAE,MAAM,CAAC;SACvC,CAAC;KACH,CAAC;IACF,MAAM,CAAC,EAAE;QACP,QAAQ,CAAC,EAAE;YACT,KAAK,CAAC,EAAE,MAAM,CAAC;YACf,MAAM,CAAC,EAAE,MAAM,CAAC;SACjB,CAAC;QACF,KAAK,CAAC,EAAE;YACN,KAAK,CAAC,EAAE,MAAM,CAAC;YACf,MAAM,CAAC,EAAE,MAAM,CAAC;SACjB,CAAC;KACH,CAAC;IACF,YAAY,CAAC,EAAE;QACb,QAAQ,CAAC,EAAE;YACT,iBAAiB,CAAC,EAAE,MAAM,CAAC;YAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC;SAC7B,CAAC;KACH,CAAC;CACH;AAED,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,YAAY,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,MAAM,YAAY,GACpB,QAAQ,GACR,WAAW,GACX,QAAQ,GACR,UAAU,GACV,YAAY,GACZ,QAAQ,GACR,SAAS,GACT,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAElB,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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/models/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,14 +17,22 @@ export interface ThinkingConfig {
|
|
|
17
17
|
/**
|
|
18
18
|
* Effort level for thinking-capable models.
|
|
19
19
|
* 'low', 'medium', 'high' map to provider-specific qualitative settings.
|
|
20
|
+
* 'xhigh' and 'max' are accepted by newer models (e.g. Claude Opus 4.7+, Sonnet 5).
|
|
20
21
|
* 'none' disables thinking if the model allows it.
|
|
21
22
|
*/
|
|
22
|
-
effort?:
|
|
23
|
+
effort?: ThinkingEffort;
|
|
23
24
|
/**
|
|
24
25
|
* Maximum budget (in tokens) dedicated to thinking.
|
|
26
|
+
* Not accepted by models that only think adaptively (e.g. Claude Opus 4.7+, Sonnet 5).
|
|
25
27
|
*/
|
|
26
28
|
budget?: number;
|
|
29
|
+
/**
|
|
30
|
+
* How much thinking text the provider returns (Anthropic).
|
|
31
|
+
* Newer Claude models omit it by default; pass 'summarized' to read it.
|
|
32
|
+
*/
|
|
33
|
+
display?: "summarized" | "omitted";
|
|
27
34
|
}
|
|
35
|
+
export type ThinkingEffort = "low" | "medium" | "high" | "xhigh" | "max" | "none";
|
|
28
36
|
export interface ThinkingResult {
|
|
29
37
|
/**
|
|
30
38
|
* The thinking text (chain of thought).
|
|
@@ -58,6 +66,10 @@ export interface ChatRequest {
|
|
|
58
66
|
prediction?: string | ContentPart[];
|
|
59
67
|
headers?: Record<string, string>;
|
|
60
68
|
requestTimeout?: number;
|
|
69
|
+
/** Cancels the request */
|
|
70
|
+
signal?: AbortSignal;
|
|
71
|
+
/** Set only for providers that support prompt caching */
|
|
72
|
+
promptCache?: boolean;
|
|
61
73
|
[key: string]: unknown;
|
|
62
74
|
}
|
|
63
75
|
export interface ChatChunk {
|
|
@@ -72,12 +84,15 @@ export interface ChatChunk {
|
|
|
72
84
|
metadata?: Record<string, unknown>;
|
|
73
85
|
}
|
|
74
86
|
export interface Usage {
|
|
87
|
+
/** Every input token, including those read from or written to a prompt cache */
|
|
75
88
|
input_tokens: number;
|
|
76
89
|
output_tokens: number;
|
|
77
90
|
total_tokens: number;
|
|
78
91
|
reasoning_tokens?: number;
|
|
79
92
|
image_tokens?: number;
|
|
93
|
+
/** Input tokens read from a prompt cache */
|
|
80
94
|
cached_tokens?: number;
|
|
95
|
+
/** Input tokens written to a prompt cache */
|
|
81
96
|
cache_creation_tokens?: number;
|
|
82
97
|
cost?: number;
|
|
83
98
|
input_cost?: number;
|
|
@@ -111,6 +126,8 @@ export interface ProviderCapabilities {
|
|
|
111
126
|
supportsReasoning(modelId: string): boolean;
|
|
112
127
|
supportsDeveloperRole(modelId: string): boolean;
|
|
113
128
|
supportsPrediction?(modelId: string): boolean;
|
|
129
|
+
supportsTemperature?(modelId: string): boolean;
|
|
130
|
+
supportsPromptCaching?(modelId: string): boolean;
|
|
114
131
|
supportsToolChoice?(modelId: string): boolean;
|
|
115
132
|
getContextWindow(modelId: string): number | null;
|
|
116
133
|
}
|
|
@@ -226,6 +243,11 @@ export interface Provider {
|
|
|
226
243
|
embed?(request: EmbeddingRequest): Promise<EmbeddingResponse>;
|
|
227
244
|
judge?(request: JudgmentRequest): Promise<JudgmentResponse>;
|
|
228
245
|
defaultModel(feature?: string): string;
|
|
246
|
+
/**
|
|
247
|
+
* The model the registry knows a request's model as, for pricing: an Azure deployment's name
|
|
248
|
+
* maps to the model it runs. Without it, a model is priced by its own name.
|
|
249
|
+
*/
|
|
250
|
+
registryModel?(model: string): string;
|
|
229
251
|
capabilities?: ProviderCapabilities;
|
|
230
252
|
formatToolResultMessage(toolCallId: string, content: string, options?: {
|
|
231
253
|
isError?: boolean;
|
|
@@ -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,cAAc,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAErE,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,aAAa,CAAC;IAC7C,WAAW,CAAC,EAAE;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACjC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,CAAC;IACF,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,WAAW,cAAc;IAC7B
|
|
1
|
+
{"version":3,"file":"Provider.d.ts","sourceRoot":"","sources":["../../src/providers/Provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,6 +20,8 @@ export declare class AnthropicProvider extends BaseProvider implements Provider
|
|
|
20
20
|
supportsModeration: (_model: string) => boolean;
|
|
21
21
|
supportsReasoning: (_model: string) => boolean;
|
|
22
22
|
supportsDeveloperRole: (_model: string) => boolean;
|
|
23
|
+
supportsTemperature: (model: string) => boolean;
|
|
24
|
+
supportsPromptCaching: (_model: string) => boolean;
|
|
23
25
|
getContextWindow: (model: string) => number | null;
|
|
24
26
|
};
|
|
25
27
|
constructor(options: AnthropicProviderOptions);
|
|
@@ -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,EAAE,MAAM,gBAAgB,CAAC;AAC3F,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAOlD,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,iBAAkB,SAAQ,YAAa,YAAW,QAAQ;
|
|
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,EAAE,MAAM,gBAAgB,CAAC;AAC3F,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAOlD,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,iBAAkB,SAAQ,YAAa,YAAW,QAAQ;IAqBzD,OAAO,CAAC,QAAQ,CAAC,OAAO;IApBpC,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;wCACF,MAAM;qCACT,MAAM;wCACH,MAAM;kCACZ,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;IAIhB,YAAY,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM;IAIjD,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"}
|
|
@@ -20,6 +20,8 @@ export class AnthropicProvider extends BaseProvider {
|
|
|
20
20
|
supportsModeration: (_model) => false,
|
|
21
21
|
supportsReasoning: (_model) => false,
|
|
22
22
|
supportsDeveloperRole: (_model) => true,
|
|
23
|
+
supportsTemperature: (model) => Capabilities.supportsTemperature(model),
|
|
24
|
+
supportsPromptCaching: (_model) => true,
|
|
23
25
|
getContextWindow: (model) => Capabilities.getContextWindow(model)
|
|
24
26
|
};
|
|
25
27
|
constructor(options) {
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ModelPricing } from "../../models/types.js";
|
|
2
2
|
export declare class Capabilities {
|
|
3
|
+
static supportsTemperature(modelId: string): boolean;
|
|
3
4
|
static getContextWindow(modelId: string): number | null;
|
|
4
5
|
static getMaxOutputTokens(modelId: string): number | null;
|
|
5
6
|
static supportsVision(modelId: string): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Capabilities.d.ts","sourceRoot":"","sources":["../../../src/providers/anthropic/Capabilities.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,qBAAa,YAAY;IACvB,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAIvD,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAIzD,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAI/C,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAO9C,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIjD,MAAM,CAAC,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIzD,MAAM,CAAC,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAIpD,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;IAgBjD,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAI5D,OAAO,CAAC,MAAM,CAAC,SAAS;CAGzB"}
|
|
1
|
+
{"version":3,"file":"Capabilities.d.ts","sourceRoot":"","sources":["../../../src/providers/anthropic/Capabilities.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,qBAAa,YAAY;IACvB,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIpD,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAIvD,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAIzD,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAI/C,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAO9C,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIjD,MAAM,CAAC,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIzD,MAAM,CAAC,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAIpD,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;IAgBjD,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAI5D,OAAO,CAAC,MAAM,CAAC,SAAS;CAGzB"}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { ModelRegistry } from "../../models/ModelRegistry.js";
|
|
2
2
|
import { PricingRegistry } from "../../models/PricingRegistry.js";
|
|
3
3
|
export class Capabilities {
|
|
4
|
+
static supportsTemperature(modelId) {
|
|
5
|
+
return ModelRegistry.supportsTemperature(modelId, "anthropic");
|
|
6
|
+
}
|
|
4
7
|
static getContextWindow(modelId) {
|
|
5
8
|
return ModelRegistry.getContextWindow(modelId, "anthropic") ?? 200_000;
|
|
6
9
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Chat.d.ts","sourceRoot":"","sources":["../../../src/providers/anthropic/Chat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAkB,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"Chat.d.ts","sourceRoot":"","sources":["../../../src/providers/anthropic/Chat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAkB,MAAM,gBAAgB,CAAC;AAS3E,qBAAa,aAAa;IAEtB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBADN,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM;IAG3B,OAAO,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;CA8E3D"}
|
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
import { Capabilities } from "./Capabilities.js";
|
|
2
1
|
import { handleAnthropicError } from "./Errors.js";
|
|
3
2
|
import { ModelRegistry } from "../../models/ModelRegistry.js";
|
|
4
3
|
import { logger } from "../../utils/logger.js";
|
|
5
4
|
import { fetchWithTimeout } from "../../utils/fetch.js";
|
|
6
|
-
import {
|
|
7
|
-
import { DEFAULT_MAX_TOKENS } from "../../constants.js";
|
|
5
|
+
import { buildMessageRequest, hasPdf, toUsage } from "./Utils.js";
|
|
8
6
|
export class AnthropicChat {
|
|
9
7
|
baseUrl;
|
|
10
8
|
apiKey;
|
|
@@ -14,73 +12,14 @@ export class AnthropicChat {
|
|
|
14
12
|
}
|
|
15
13
|
async execute(request) {
|
|
16
14
|
const model = request.model;
|
|
17
|
-
const
|
|
18
|
-
const systemPrompt = formatSystemPrompt(request.messages);
|
|
19
|
-
const messages = formatMessages(request.messages);
|
|
20
|
-
let system = systemPrompt;
|
|
21
|
-
if (request.response_format) {
|
|
22
|
-
let schemaText = "";
|
|
23
|
-
if (request.response_format.type === "json_schema" &&
|
|
24
|
-
request.response_format.json_schema?.schema) {
|
|
25
|
-
schemaText =
|
|
26
|
-
"\nSchema:\n" + JSON.stringify(request.response_format.json_schema.schema, null, 2);
|
|
27
|
-
}
|
|
28
|
-
const instruction = `CRITICAL: Respond ONLY with a valid JSON object matching the requested schema.${schemaText}\n\nDo not include any other text or explanation.`;
|
|
29
|
-
system = system ? `${system}\n\n${instruction}` : instruction;
|
|
30
|
-
}
|
|
31
|
-
const { model: _model, messages: _messages, tools: _tools, temperature: _temp, max_tokens: _max, response_format: _format, thinking: _thinking, headers: _headers, tool_choice: _choice, parallel_tool_calls: _parallel, requestTimeout, ...rest } = request;
|
|
32
|
-
const body = {
|
|
33
|
-
model: model,
|
|
34
|
-
messages: messages,
|
|
35
|
-
max_tokens: maxTokens,
|
|
36
|
-
system: system,
|
|
37
|
-
stream: false,
|
|
38
|
-
...rest
|
|
39
|
-
};
|
|
40
|
-
if (_thinking?.budget) {
|
|
41
|
-
body.thinking = {
|
|
42
|
-
type: "enabled",
|
|
43
|
-
budget_tokens: _thinking.budget
|
|
44
|
-
};
|
|
45
|
-
// Extended thinking models require a larger max_tokens
|
|
46
|
-
if (!request.max_tokens) {
|
|
47
|
-
body.max_tokens = Math.max(maxTokens, _thinking.budget + 1024);
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
if (request.temperature !== undefined) {
|
|
51
|
-
body.temperature = request.temperature;
|
|
52
|
-
}
|
|
53
|
-
// Map tools
|
|
54
|
-
if (request.tools && request.tools.length > 0 && request.tool_choice !== "none") {
|
|
55
|
-
body.tools = request.tools.map((tool) => ({
|
|
56
|
-
name: tool.function.name,
|
|
57
|
-
description: tool.function.description,
|
|
58
|
-
input_schema: tool.function.parameters
|
|
59
|
-
}));
|
|
60
|
-
}
|
|
61
|
-
if (request.tool_choice && request.tool_choice !== "none") {
|
|
62
|
-
if (request.tool_choice === "auto") {
|
|
63
|
-
body.tool_choice = { type: "auto" };
|
|
64
|
-
}
|
|
65
|
-
else if (request.tool_choice === "required") {
|
|
66
|
-
body.tool_choice = { type: "any" };
|
|
67
|
-
}
|
|
68
|
-
else if (typeof request.tool_choice === "string") {
|
|
69
|
-
body.tool_choice = { type: "tool", name: request.tool_choice };
|
|
70
|
-
}
|
|
71
|
-
else if (typeof request.tool_choice === "object" && "function" in request.tool_choice) {
|
|
72
|
-
body.tool_choice = { type: "tool", name: request.tool_choice.function.name };
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
// Check if any message contains PDF content to add beta header
|
|
76
|
-
const hasPdf = messages.some((msg) => Array.isArray(msg.content) && msg.content.some((block) => block.type === "document"));
|
|
15
|
+
const body = buildMessageRequest(request, false);
|
|
77
16
|
const headers = {
|
|
78
17
|
"x-api-key": this.apiKey,
|
|
79
18
|
"anthropic-version": "2023-06-01",
|
|
80
19
|
"content-type": "application/json",
|
|
81
20
|
...request.headers
|
|
82
21
|
};
|
|
83
|
-
if (hasPdf) {
|
|
22
|
+
if (hasPdf(body)) {
|
|
84
23
|
headers["anthropic-beta"] = "pdfs-2024-09-25";
|
|
85
24
|
}
|
|
86
25
|
const url = `${this.baseUrl}/messages`;
|
|
@@ -88,8 +27,9 @@ export class AnthropicChat {
|
|
|
88
27
|
const response = await fetchWithTimeout(url, {
|
|
89
28
|
method: "POST",
|
|
90
29
|
headers: headers,
|
|
91
|
-
body: JSON.stringify(body)
|
|
92
|
-
|
|
30
|
+
body: JSON.stringify(body),
|
|
31
|
+
signal: request.signal
|
|
32
|
+
}, request.requestTimeout);
|
|
93
33
|
if (!response.ok) {
|
|
94
34
|
await handleAnthropicError(response, model);
|
|
95
35
|
}
|
|
@@ -127,15 +67,7 @@ export class AnthropicChat {
|
|
|
127
67
|
});
|
|
128
68
|
}
|
|
129
69
|
}
|
|
130
|
-
const usage = json.usage
|
|
131
|
-
? {
|
|
132
|
-
input_tokens: json.usage.input_tokens,
|
|
133
|
-
output_tokens: json.usage.output_tokens,
|
|
134
|
-
total_tokens: json.usage.input_tokens + json.usage.output_tokens,
|
|
135
|
-
cached_tokens: json.usage.cache_read_input_tokens,
|
|
136
|
-
cache_creation_tokens: json.usage.cache_creation_input_tokens
|
|
137
|
-
}
|
|
138
|
-
: undefined;
|
|
70
|
+
const usage = json.usage ? toUsage(json.usage) : undefined;
|
|
139
71
|
const calculatedUsage = usage
|
|
140
72
|
? ModelRegistry.calculateCost(usage, model, "anthropic")
|
|
141
73
|
: undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Errors.d.ts","sourceRoot":"","sources":["../../../src/providers/anthropic/Errors.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Errors.d.ts","sourceRoot":"","sources":["../../../src/providers/anthropic/Errors.ts"],"names":[],"mappings":"AAcA,wBAAsB,oBAAoB,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAyD9F"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { BadRequestError, ContextWindowExceededError, InsufficientQuotaError, InvalidModelError, NotFoundError, AuthenticationError, RateLimitError, ServerError, ServiceUnavailableError, APIError } from "../../errors/index.js";
|
|
2
|
+
import { isBillingProblem } from "../../errors/billing.js";
|
|
2
3
|
export async function handleAnthropicError(response, modelId) {
|
|
3
4
|
const status = response.status;
|
|
4
5
|
let body;
|
|
@@ -19,6 +20,9 @@ export async function handleAnthropicError(response, modelId) {
|
|
|
19
20
|
message = `Anthropic error (${status}): ${body}`;
|
|
20
21
|
}
|
|
21
22
|
const provider = "anthropic";
|
|
23
|
+
if (isBillingProblem(status, message)) {
|
|
24
|
+
throw new InsufficientQuotaError(message, body, provider, modelId);
|
|
25
|
+
}
|
|
22
26
|
if (status === 400) {
|
|
23
27
|
if (message.includes("prompt is too long") || message.includes("context_length")) {
|
|
24
28
|
throw new ContextWindowExceededError(message, body, provider, modelId);
|
|
@@ -35,9 +39,6 @@ export async function handleAnthropicError(response, modelId) {
|
|
|
35
39
|
throw new NotFoundError(message, status, body, provider, modelId);
|
|
36
40
|
}
|
|
37
41
|
if (status === 429) {
|
|
38
|
-
if (message.includes("quota") || message.includes("credit")) {
|
|
39
|
-
throw new InsufficientQuotaError(message, body, provider, modelId);
|
|
40
|
-
}
|
|
41
42
|
throw new RateLimitError(message, body, provider, modelId);
|
|
42
43
|
}
|
|
43
44
|
if (status === 502 || status === 503 || status === 529) {
|
|
@@ -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;
|
|
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;IAE3B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBADN,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM;IAG1B,OAAO,CAAC,OAAO,EAAE,WAAW,EAAE,UAAU,CAAC,EAAE,eAAe,GAAG,cAAc,CAAC,SAAS,CAAC;CAgL9F"}
|
|
@@ -1,9 +1,7 @@
|
|
|
1
|
-
import { Capabilities } from "./Capabilities.js";
|
|
2
1
|
import { handleAnthropicError } from "./Errors.js";
|
|
3
|
-
import {
|
|
2
|
+
import { buildMessageRequest, hasPdf, toUsage } from "./Utils.js";
|
|
4
3
|
import { logger } from "../../utils/logger.js";
|
|
5
4
|
import { fetchWithTimeout } from "../../utils/fetch.js";
|
|
6
|
-
import { DEFAULT_MAX_TOKENS } from "../../constants.js";
|
|
7
5
|
export class AnthropicStreaming {
|
|
8
6
|
baseUrl;
|
|
9
7
|
apiKey;
|
|
@@ -14,69 +12,14 @@ export class AnthropicStreaming {
|
|
|
14
12
|
async *execute(request, controller) {
|
|
15
13
|
const abortController = controller || new AbortController();
|
|
16
14
|
const model = request.model;
|
|
17
|
-
const
|
|
18
|
-
const systemPrompt = formatSystemPrompt(request.messages);
|
|
19
|
-
const messages = formatMessages(request.messages);
|
|
20
|
-
let system = systemPrompt;
|
|
21
|
-
if (request.response_format) {
|
|
22
|
-
let schemaText = "";
|
|
23
|
-
if (request.response_format.type === "json_schema" &&
|
|
24
|
-
request.response_format.json_schema?.schema) {
|
|
25
|
-
schemaText =
|
|
26
|
-
"\nSchema:\n" + JSON.stringify(request.response_format.json_schema.schema, null, 2);
|
|
27
|
-
}
|
|
28
|
-
const instruction = `CRITICAL: Respond ONLY with a valid JSON object matching the requested schema.${schemaText}\n\nDo not include any other text or explanation.`;
|
|
29
|
-
system = system ? `${system}\n\n${instruction}` : instruction;
|
|
30
|
-
}
|
|
31
|
-
const body = {
|
|
32
|
-
model: model,
|
|
33
|
-
messages: messages,
|
|
34
|
-
max_tokens: maxTokens,
|
|
35
|
-
system: system,
|
|
36
|
-
stream: true
|
|
37
|
-
};
|
|
38
|
-
if (request.temperature !== undefined) {
|
|
39
|
-
body.temperature = request.temperature;
|
|
40
|
-
}
|
|
41
|
-
if (request.tools && request.tools.length > 0 && request.tool_choice !== "none") {
|
|
42
|
-
body.tools = request.tools.map((tool) => ({
|
|
43
|
-
name: tool.function.name,
|
|
44
|
-
description: tool.function.description,
|
|
45
|
-
input_schema: tool.function.parameters
|
|
46
|
-
}));
|
|
47
|
-
}
|
|
48
|
-
if (request.tool_choice && request.tool_choice !== "none") {
|
|
49
|
-
if (request.tool_choice === "auto") {
|
|
50
|
-
body.tool_choice = { type: "auto" };
|
|
51
|
-
}
|
|
52
|
-
else if (request.tool_choice === "required") {
|
|
53
|
-
body.tool_choice = { type: "any" };
|
|
54
|
-
}
|
|
55
|
-
else if (typeof request.tool_choice === "string") {
|
|
56
|
-
body.tool_choice = { type: "tool", name: request.tool_choice };
|
|
57
|
-
}
|
|
58
|
-
else if (typeof request.tool_choice === "object" && "function" in request.tool_choice) {
|
|
59
|
-
body.tool_choice = { type: "tool", name: request.tool_choice.function.name };
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
if (request.thinking?.budget) {
|
|
63
|
-
body.thinking = {
|
|
64
|
-
type: "enabled",
|
|
65
|
-
budget_tokens: request.thinking.budget
|
|
66
|
-
};
|
|
67
|
-
if (!request.max_tokens) {
|
|
68
|
-
body.max_tokens = Math.max(maxTokens, request.thinking.budget + 1024);
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
// Check if any message contains PDF content to add beta header
|
|
72
|
-
const hasPdf = messages.some((msg) => Array.isArray(msg.content) && msg.content.some((block) => block.type === "document"));
|
|
15
|
+
const body = buildMessageRequest(request, true);
|
|
73
16
|
const headers = {
|
|
74
17
|
"x-api-key": this.apiKey,
|
|
75
18
|
"anthropic-version": "2023-06-01",
|
|
76
19
|
"content-type": "application/json",
|
|
77
20
|
...request.headers
|
|
78
21
|
};
|
|
79
|
-
if (hasPdf) {
|
|
22
|
+
if (hasPdf(body)) {
|
|
80
23
|
headers["anthropic-beta"] = "pdfs-2024-09-25";
|
|
81
24
|
}
|
|
82
25
|
let done = false;
|
|
@@ -172,12 +115,7 @@ export class AnthropicStreaming {
|
|
|
172
115
|
}
|
|
173
116
|
else if (eventType === "message_start") {
|
|
174
117
|
if (data.message?.usage) {
|
|
175
|
-
|
|
176
|
-
input_tokens: data.message.usage.input_tokens,
|
|
177
|
-
output_tokens: data.message.usage.output_tokens,
|
|
178
|
-
total_tokens: data.message.usage.input_tokens + data.message.usage.output_tokens
|
|
179
|
-
};
|
|
180
|
-
yield { content: "", usage };
|
|
118
|
+
yield { content: "", usage: toUsage(data.message.usage) };
|
|
181
119
|
}
|
|
182
120
|
}
|
|
183
121
|
else if (eventType === "message_delta") {
|
|
@@ -1,5 +1,37 @@
|
|
|
1
1
|
import { Message } from "../../chat/Message.js";
|
|
2
|
-
import {
|
|
2
|
+
import { ChatRequest, ThinkingConfig, Usage } from "../Provider.js";
|
|
3
|
+
import { AnthropicMessage, AnthropicMessageRequest } from "./types.js";
|
|
3
4
|
export declare function formatSystemPrompt(messages: Message[]): string | undefined;
|
|
4
5
|
export declare function formatMessages(requestMessages: Message[]): AnthropicMessage[];
|
|
6
|
+
/**
|
|
7
|
+
* Add the thinking fields for a ThinkingConfig to a request body.
|
|
8
|
+
* Call after tool_choice is set.
|
|
9
|
+
*
|
|
10
|
+
* - `budget` is sent as a fixed thinking budget, exactly as given.
|
|
11
|
+
* - On generations that only think adaptively (no budget option in the registry:
|
|
12
|
+
* Opus 4.7+, Sonnet 5+, Fable), `effort` turns on adaptive thinking and is sent
|
|
13
|
+
* as `output_config.effort`. Forced tool choice skips the thinking block, which
|
|
14
|
+
* the API rejects alongside it.
|
|
15
|
+
* - On generations that take a budget, `effort` alone is not sent, so calls that
|
|
16
|
+
* worked before keep the same request.
|
|
17
|
+
* - `display` is forwarded on the thinking block, and alone turns on adaptive thinking.
|
|
18
|
+
*/
|
|
19
|
+
export declare function applyThinking(body: AnthropicMessageRequest, thinking: ThinkingConfig | undefined, maxTokensSet: boolean): void;
|
|
20
|
+
/**
|
|
21
|
+
* The Messages API request body for a chat request, shared by streaming and non-streaming calls.
|
|
22
|
+
* Fields NodeLLM doesn't map itself, such as those from `withParams()`, are sent as they are.
|
|
23
|
+
*/
|
|
24
|
+
export declare function buildMessageRequest(request: ChatRequest, stream: boolean): AnthropicMessageRequest;
|
|
25
|
+
/** Whether the request sends a PDF, which needs the PDF beta header. */
|
|
26
|
+
export declare function hasPdf(body: AnthropicMessageRequest): boolean;
|
|
27
|
+
/**
|
|
28
|
+
* NodeLLM usage from Anthropic's. Anthropic's input_tokens leave out cache reads and writes;
|
|
29
|
+
* NodeLLM's input_tokens count every input token, so costs and totals include cached input.
|
|
30
|
+
*/
|
|
31
|
+
export declare function toUsage(usage: {
|
|
32
|
+
input_tokens: number;
|
|
33
|
+
output_tokens: number;
|
|
34
|
+
cache_read_input_tokens?: number;
|
|
35
|
+
cache_creation_input_tokens?: number;
|
|
36
|
+
}): Usage;
|
|
5
37
|
//# sourceMappingURL=Utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Utils.d.ts","sourceRoot":"","sources":["../../../src/providers/anthropic/Utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAEhD,OAAO,EAAE,gBAAgB,EAAyB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"Utils.d.ts","sourceRoot":"","sources":["../../../src/providers/anthropic/Utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAEhD,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAEpE,OAAO,EAAE,gBAAgB,EAAyB,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAI9F,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,GAAG,SAAS,CAiB1E;AAED,wBAAgB,cAAc,CAAC,eAAe,EAAE,OAAO,EAAE,GAAG,gBAAgB,EAAE,CAyB7E;AAgGD;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,uBAAuB,EAC7B,QAAQ,EAAE,cAAc,GAAG,SAAS,EACpC,YAAY,EAAE,OAAO,GACpB,IAAI,CAuBN;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,OAAO,GACd,uBAAuB,CAqEzB;AAED,wEAAwE;AACxE,wBAAgB,MAAM,CAAC,IAAI,EAAE,uBAAuB,GAAG,OAAO,CAI7D;AAED;;;GAGG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,2BAA2B,CAAC,EAAE,MAAM,CAAC;CACtC,GAAG,KAAK,CAWR"}
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import { ModelRegistry } from "../../models/ModelRegistry.js";
|
|
2
|
+
import { Capabilities } from "./Capabilities.js";
|
|
3
|
+
import { DEFAULT_MAX_TOKENS } from "../../constants.js";
|
|
1
4
|
export function formatSystemPrompt(messages) {
|
|
2
5
|
let systemPrompt;
|
|
3
6
|
for (const msg of messages) {
|
|
@@ -126,3 +129,114 @@ function formatSingleMessage(msg) {
|
|
|
126
129
|
}
|
|
127
130
|
return { role, content: blocks };
|
|
128
131
|
}
|
|
132
|
+
/**
|
|
133
|
+
* Add the thinking fields for a ThinkingConfig to a request body.
|
|
134
|
+
* Call after tool_choice is set.
|
|
135
|
+
*
|
|
136
|
+
* - `budget` is sent as a fixed thinking budget, exactly as given.
|
|
137
|
+
* - On generations that only think adaptively (no budget option in the registry:
|
|
138
|
+
* Opus 4.7+, Sonnet 5+, Fable), `effort` turns on adaptive thinking and is sent
|
|
139
|
+
* as `output_config.effort`. Forced tool choice skips the thinking block, which
|
|
140
|
+
* the API rejects alongside it.
|
|
141
|
+
* - On generations that take a budget, `effort` alone is not sent, so calls that
|
|
142
|
+
* worked before keep the same request.
|
|
143
|
+
* - `display` is forwarded on the thinking block, and alone turns on adaptive thinking.
|
|
144
|
+
*/
|
|
145
|
+
export function applyThinking(body, thinking, maxTokensSet) {
|
|
146
|
+
if (!thinking)
|
|
147
|
+
return;
|
|
148
|
+
const options = ModelRegistry.getReasoningOptions(body.model, "anthropic");
|
|
149
|
+
const takesEffort = options.some((option) => option.type === "effort");
|
|
150
|
+
const adaptiveOnly = takesEffort && !options.some((option) => option.type === "budget_tokens");
|
|
151
|
+
const effort = thinking.effort && thinking.effort !== "none" ? thinking.effort : undefined;
|
|
152
|
+
const display = thinking.display ? { display: thinking.display } : {};
|
|
153
|
+
const forcedTool = body.tool_choice?.type === "any" || body.tool_choice?.type === "tool";
|
|
154
|
+
if (thinking.budget) {
|
|
155
|
+
body.thinking = { type: "enabled", budget_tokens: thinking.budget, ...display };
|
|
156
|
+
// Extended thinking models require a larger max_tokens
|
|
157
|
+
if (!maxTokensSet) {
|
|
158
|
+
body.max_tokens = Math.max(body.max_tokens, thinking.budget + 1024);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
else if (thinking.display || (effort && adaptiveOnly && !forcedTool)) {
|
|
162
|
+
body.thinking = { type: "adaptive", ...display };
|
|
163
|
+
}
|
|
164
|
+
if (effort && takesEffort && (thinking.budget || adaptiveOnly)) {
|
|
165
|
+
body.output_config = { ...body.output_config, effort };
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* The Messages API request body for a chat request, shared by streaming and non-streaming calls.
|
|
170
|
+
* Fields NodeLLM doesn't map itself, such as those from `withParams()`, are sent as they are.
|
|
171
|
+
*/
|
|
172
|
+
export function buildMessageRequest(request, stream) {
|
|
173
|
+
const { model, messages: _messages, tools, temperature, max_tokens, response_format, thinking, headers: _headers, tool_choice, parallel_tool_calls: _parallel, requestTimeout: _timeout, signal: _signal, promptCache, ...params } = request;
|
|
174
|
+
let system = formatSystemPrompt(request.messages);
|
|
175
|
+
if (response_format) {
|
|
176
|
+
let schemaText = "";
|
|
177
|
+
if (response_format.type === "json_schema" && response_format.json_schema?.schema) {
|
|
178
|
+
schemaText = "\nSchema:\n" + JSON.stringify(response_format.json_schema.schema, null, 2);
|
|
179
|
+
}
|
|
180
|
+
const instruction = `CRITICAL: Respond ONLY with a valid JSON object matching the requested schema.${schemaText}\n\nDo not include any other text or explanation.`;
|
|
181
|
+
system = system ? `${system}\n\n${instruction}` : instruction;
|
|
182
|
+
}
|
|
183
|
+
const body = {
|
|
184
|
+
model,
|
|
185
|
+
messages: formatMessages(request.messages),
|
|
186
|
+
max_tokens: max_tokens || Capabilities.getMaxOutputTokens(model) || DEFAULT_MAX_TOKENS,
|
|
187
|
+
system,
|
|
188
|
+
...params,
|
|
189
|
+
stream
|
|
190
|
+
};
|
|
191
|
+
if (temperature !== undefined) {
|
|
192
|
+
body.temperature = temperature;
|
|
193
|
+
}
|
|
194
|
+
if (tools && tools.length > 0 && tool_choice !== "none") {
|
|
195
|
+
body.tools = tools.map((tool) => ({
|
|
196
|
+
name: tool.function.name,
|
|
197
|
+
description: tool.function.description,
|
|
198
|
+
input_schema: tool.function.parameters
|
|
199
|
+
}));
|
|
200
|
+
}
|
|
201
|
+
if (tool_choice && tool_choice !== "none") {
|
|
202
|
+
if (tool_choice === "auto") {
|
|
203
|
+
body.tool_choice = { type: "auto" };
|
|
204
|
+
}
|
|
205
|
+
else if (tool_choice === "required") {
|
|
206
|
+
body.tool_choice = { type: "any" };
|
|
207
|
+
}
|
|
208
|
+
else if (typeof tool_choice === "string") {
|
|
209
|
+
body.tool_choice = { type: "tool", name: tool_choice };
|
|
210
|
+
}
|
|
211
|
+
else if (typeof tool_choice === "object" && "function" in tool_choice) {
|
|
212
|
+
body.tool_choice = { type: "tool", name: tool_choice.function.name };
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
// Top-level cache_control caches everything up to the last cacheable block, and moves the
|
|
216
|
+
// breakpoint forward as the conversation grows.
|
|
217
|
+
if (promptCache) {
|
|
218
|
+
body.cache_control = { type: "ephemeral" };
|
|
219
|
+
}
|
|
220
|
+
applyThinking(body, thinking, Boolean(max_tokens));
|
|
221
|
+
return body;
|
|
222
|
+
}
|
|
223
|
+
/** Whether the request sends a PDF, which needs the PDF beta header. */
|
|
224
|
+
export function hasPdf(body) {
|
|
225
|
+
return body.messages.some((msg) => Array.isArray(msg.content) && msg.content.some((block) => block.type === "document"));
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* NodeLLM usage from Anthropic's. Anthropic's input_tokens leave out cache reads and writes;
|
|
229
|
+
* NodeLLM's input_tokens count every input token, so costs and totals include cached input.
|
|
230
|
+
*/
|
|
231
|
+
export function toUsage(usage) {
|
|
232
|
+
const cached = usage.cache_read_input_tokens || 0;
|
|
233
|
+
const written = usage.cache_creation_input_tokens || 0;
|
|
234
|
+
const input = usage.input_tokens + cached + written;
|
|
235
|
+
return {
|
|
236
|
+
input_tokens: input,
|
|
237
|
+
output_tokens: usage.output_tokens,
|
|
238
|
+
total_tokens: input + usage.output_tokens,
|
|
239
|
+
cached_tokens: usage.cache_read_input_tokens,
|
|
240
|
+
cache_creation_tokens: usage.cache_creation_input_tokens
|
|
241
|
+
};
|
|
242
|
+
}
|