ai.matey.backend 0.2.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/LICENSE +21 -0
- package/dist/cjs/index.js +60 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/providers/ai21.js +331 -0
- package/dist/cjs/providers/ai21.js.map +1 -0
- package/dist/cjs/providers/anthropic.js +664 -0
- package/dist/cjs/providers/anthropic.js.map +1 -0
- package/dist/cjs/providers/anyscale.js +338 -0
- package/dist/cjs/providers/anyscale.js.map +1 -0
- package/dist/cjs/providers/aws-bedrock.js +374 -0
- package/dist/cjs/providers/aws-bedrock.js.map +1 -0
- package/dist/cjs/providers/azure-openai.js +406 -0
- package/dist/cjs/providers/azure-openai.js.map +1 -0
- package/dist/cjs/providers/cerebras.js +356 -0
- package/dist/cjs/providers/cerebras.js.map +1 -0
- package/dist/cjs/providers/cloudflare.js +359 -0
- package/dist/cjs/providers/cloudflare.js.map +1 -0
- package/dist/cjs/providers/cohere.js +368 -0
- package/dist/cjs/providers/cohere.js.map +1 -0
- package/dist/cjs/providers/deepinfra.js +343 -0
- package/dist/cjs/providers/deepinfra.js.map +1 -0
- package/dist/cjs/providers/deepseek.js +104 -0
- package/dist/cjs/providers/deepseek.js.map +1 -0
- package/dist/cjs/providers/fireworks.js +363 -0
- package/dist/cjs/providers/fireworks.js.map +1 -0
- package/dist/cjs/providers/gemini.js +292 -0
- package/dist/cjs/providers/gemini.js.map +1 -0
- package/dist/cjs/providers/groq.js +143 -0
- package/dist/cjs/providers/groq.js.map +1 -0
- package/dist/cjs/providers/huggingface.js +392 -0
- package/dist/cjs/providers/huggingface.js.map +1 -0
- package/dist/cjs/providers/lmstudio.js +144 -0
- package/dist/cjs/providers/lmstudio.js.map +1 -0
- package/dist/cjs/providers/mistral.js +288 -0
- package/dist/cjs/providers/mistral.js.map +1 -0
- package/dist/cjs/providers/nvidia.js +167 -0
- package/dist/cjs/providers/nvidia.js.map +1 -0
- package/dist/cjs/providers/ollama.js +257 -0
- package/dist/cjs/providers/ollama.js.map +1 -0
- package/dist/cjs/providers/openai.js +640 -0
- package/dist/cjs/providers/openai.js.map +1 -0
- package/dist/cjs/providers/openrouter.js +379 -0
- package/dist/cjs/providers/openrouter.js.map +1 -0
- package/dist/cjs/providers/perplexity.js +372 -0
- package/dist/cjs/providers/perplexity.js.map +1 -0
- package/dist/cjs/providers/replicate.js +340 -0
- package/dist/cjs/providers/replicate.js.map +1 -0
- package/dist/cjs/providers/together-ai.js +341 -0
- package/dist/cjs/providers/together-ai.js.map +1 -0
- package/dist/cjs/providers/xai.js +339 -0
- package/dist/cjs/providers/xai.js.map +1 -0
- package/dist/cjs/shared.js +279 -0
- package/dist/cjs/shared.js.map +1 -0
- package/dist/esm/index.js +44 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/providers/ai21.js +327 -0
- package/dist/esm/providers/ai21.js.map +1 -0
- package/dist/esm/providers/anthropic.js +660 -0
- package/dist/esm/providers/anthropic.js.map +1 -0
- package/dist/esm/providers/anyscale.js +334 -0
- package/dist/esm/providers/anyscale.js.map +1 -0
- package/dist/esm/providers/aws-bedrock.js +370 -0
- package/dist/esm/providers/aws-bedrock.js.map +1 -0
- package/dist/esm/providers/azure-openai.js +402 -0
- package/dist/esm/providers/azure-openai.js.map +1 -0
- package/dist/esm/providers/cerebras.js +352 -0
- package/dist/esm/providers/cerebras.js.map +1 -0
- package/dist/esm/providers/cloudflare.js +355 -0
- package/dist/esm/providers/cloudflare.js.map +1 -0
- package/dist/esm/providers/cohere.js +364 -0
- package/dist/esm/providers/cohere.js.map +1 -0
- package/dist/esm/providers/deepinfra.js +339 -0
- package/dist/esm/providers/deepinfra.js.map +1 -0
- package/dist/esm/providers/deepseek.js +99 -0
- package/dist/esm/providers/deepseek.js.map +1 -0
- package/dist/esm/providers/fireworks.js +359 -0
- package/dist/esm/providers/fireworks.js.map +1 -0
- package/dist/esm/providers/gemini.js +288 -0
- package/dist/esm/providers/gemini.js.map +1 -0
- package/dist/esm/providers/groq.js +138 -0
- package/dist/esm/providers/groq.js.map +1 -0
- package/dist/esm/providers/huggingface.js +387 -0
- package/dist/esm/providers/huggingface.js.map +1 -0
- package/dist/esm/providers/lmstudio.js +139 -0
- package/dist/esm/providers/lmstudio.js.map +1 -0
- package/dist/esm/providers/mistral.js +284 -0
- package/dist/esm/providers/mistral.js.map +1 -0
- package/dist/esm/providers/nvidia.js +162 -0
- package/dist/esm/providers/nvidia.js.map +1 -0
- package/dist/esm/providers/ollama.js +253 -0
- package/dist/esm/providers/ollama.js.map +1 -0
- package/dist/esm/providers/openai.js +636 -0
- package/dist/esm/providers/openai.js.map +1 -0
- package/dist/esm/providers/openrouter.js +375 -0
- package/dist/esm/providers/openrouter.js.map +1 -0
- package/dist/esm/providers/perplexity.js +368 -0
- package/dist/esm/providers/perplexity.js.map +1 -0
- package/dist/esm/providers/replicate.js +336 -0
- package/dist/esm/providers/replicate.js.map +1 -0
- package/dist/esm/providers/together-ai.js +337 -0
- package/dist/esm/providers/together-ai.js.map +1 -0
- package/dist/esm/providers/xai.js +335 -0
- package/dist/esm/providers/xai.js.map +1 -0
- package/dist/esm/shared.js +272 -0
- package/dist/esm/shared.js.map +1 -0
- package/dist/types/index.d.ts +38 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/providers/ai21.d.ts +106 -0
- package/dist/types/providers/ai21.d.ts.map +1 -0
- package/dist/types/providers/anthropic.d.ts +194 -0
- package/dist/types/providers/anthropic.d.ts.map +1 -0
- package/dist/types/providers/anyscale.d.ts +109 -0
- package/dist/types/providers/anyscale.d.ts.map +1 -0
- package/dist/types/providers/aws-bedrock.d.ts +152 -0
- package/dist/types/providers/aws-bedrock.d.ts.map +1 -0
- package/dist/types/providers/azure-openai.d.ts +142 -0
- package/dist/types/providers/azure-openai.d.ts.map +1 -0
- package/dist/types/providers/cerebras.d.ts +130 -0
- package/dist/types/providers/cerebras.d.ts.map +1 -0
- package/dist/types/providers/cloudflare.d.ts +125 -0
- package/dist/types/providers/cloudflare.d.ts.map +1 -0
- package/dist/types/providers/cohere.d.ts +114 -0
- package/dist/types/providers/cohere.d.ts.map +1 -0
- package/dist/types/providers/deepinfra.d.ts +118 -0
- package/dist/types/providers/deepinfra.d.ts.map +1 -0
- package/dist/types/providers/deepseek.d.ts +68 -0
- package/dist/types/providers/deepseek.d.ts.map +1 -0
- package/dist/types/providers/fireworks.d.ts +127 -0
- package/dist/types/providers/fireworks.d.ts.map +1 -0
- package/dist/types/providers/gemini.d.ts +71 -0
- package/dist/types/providers/gemini.d.ts.map +1 -0
- package/dist/types/providers/groq.d.ts +83 -0
- package/dist/types/providers/groq.d.ts.map +1 -0
- package/dist/types/providers/huggingface.d.ts +154 -0
- package/dist/types/providers/huggingface.d.ts.map +1 -0
- package/dist/types/providers/lmstudio.d.ts +88 -0
- package/dist/types/providers/lmstudio.d.ts.map +1 -0
- package/dist/types/providers/mistral.d.ts +65 -0
- package/dist/types/providers/mistral.d.ts.map +1 -0
- package/dist/types/providers/nvidia.d.ts +100 -0
- package/dist/types/providers/nvidia.d.ts.map +1 -0
- package/dist/types/providers/ollama.d.ts +59 -0
- package/dist/types/providers/ollama.d.ts.map +1 -0
- package/dist/types/providers/openai.d.ts +205 -0
- package/dist/types/providers/openai.d.ts.map +1 -0
- package/dist/types/providers/openrouter.d.ts +135 -0
- package/dist/types/providers/openrouter.d.ts.map +1 -0
- package/dist/types/providers/perplexity.d.ts +116 -0
- package/dist/types/providers/perplexity.d.ts.map +1 -0
- package/dist/types/providers/replicate.d.ts +91 -0
- package/dist/types/providers/replicate.d.ts.map +1 -0
- package/dist/types/providers/together-ai.d.ts +118 -0
- package/dist/types/providers/together-ai.d.ts.map +1 -0
- package/dist/types/providers/xai.d.ts +119 -0
- package/dist/types/providers/xai.d.ts.map +1 -0
- package/dist/types/shared.d.ts +116 -0
- package/dist/types/shared.d.ts.map +1 -0
- package/package.json +327 -0
- package/readme.md +86 -0
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AI Matey Backend Adapters
|
|
3
|
+
*
|
|
4
|
+
* Consolidated package containing all server-side backend provider adapters.
|
|
5
|
+
* Each provider adapter handles converting Universal IR to provider-specific
|
|
6
|
+
* API calls and responses.
|
|
7
|
+
*
|
|
8
|
+
* Note: Browser-compatible adapters (chrome-ai, function, mock) are in the
|
|
9
|
+
* separate ai.matey.backend.browser package for use in browser environments.
|
|
10
|
+
*
|
|
11
|
+
* @module ai.matey.backend
|
|
12
|
+
*/
|
|
13
|
+
export * from './shared.js';
|
|
14
|
+
export * from './providers/openai.js';
|
|
15
|
+
export * from './providers/anthropic.js';
|
|
16
|
+
export * from './providers/gemini.js';
|
|
17
|
+
export * from './providers/mistral.js';
|
|
18
|
+
export * from './providers/cohere.js';
|
|
19
|
+
export * from './providers/groq.js';
|
|
20
|
+
export * from './providers/ollama.js';
|
|
21
|
+
export * from './providers/ai21.js';
|
|
22
|
+
export * from './providers/anyscale.js';
|
|
23
|
+
export * from './providers/aws-bedrock.js';
|
|
24
|
+
export * from './providers/azure-openai.js';
|
|
25
|
+
export * from './providers/cerebras.js';
|
|
26
|
+
export * from './providers/cloudflare.js';
|
|
27
|
+
export * from './providers/deepinfra.js';
|
|
28
|
+
export * from './providers/deepseek.js';
|
|
29
|
+
export * from './providers/fireworks.js';
|
|
30
|
+
export * from './providers/huggingface.js';
|
|
31
|
+
export * from './providers/lmstudio.js';
|
|
32
|
+
export * from './providers/nvidia.js';
|
|
33
|
+
export * from './providers/openrouter.js';
|
|
34
|
+
export * from './providers/perplexity.js';
|
|
35
|
+
export * from './providers/replicate.js';
|
|
36
|
+
export * from './providers/together-ai.js';
|
|
37
|
+
export * from './providers/xai.js';
|
|
38
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,cAAc,aAAa,CAAC;AAG5B,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AI21 Labs Backend Adapter
|
|
3
|
+
*
|
|
4
|
+
* Adapts Universal IR to AI21 Labs Chat Completions API.
|
|
5
|
+
* AI21 is OpenAI-compatible with Jamba models featuring efficient tokenization.
|
|
6
|
+
*
|
|
7
|
+
* @module
|
|
8
|
+
*/
|
|
9
|
+
import type { BackendAdapter, BackendAdapterConfig, AdapterMetadata } from 'ai.matey.types';
|
|
10
|
+
import type { IRChatRequest, IRChatResponse, IRChatStream } from 'ai.matey.types';
|
|
11
|
+
export interface AI21Message {
|
|
12
|
+
role: 'system' | 'user' | 'assistant';
|
|
13
|
+
content: string;
|
|
14
|
+
}
|
|
15
|
+
export interface AI21Request {
|
|
16
|
+
model: string;
|
|
17
|
+
messages: AI21Message[];
|
|
18
|
+
temperature?: number;
|
|
19
|
+
max_tokens?: number;
|
|
20
|
+
top_p?: number;
|
|
21
|
+
frequency_penalty?: number;
|
|
22
|
+
presence_penalty?: number;
|
|
23
|
+
stop?: string[];
|
|
24
|
+
stream?: boolean;
|
|
25
|
+
n?: number;
|
|
26
|
+
documents?: Array<{
|
|
27
|
+
content: string;
|
|
28
|
+
metadata?: Record<string, any>;
|
|
29
|
+
}>;
|
|
30
|
+
}
|
|
31
|
+
export interface AI21Response {
|
|
32
|
+
id: string;
|
|
33
|
+
object: 'chat.completion';
|
|
34
|
+
created: number;
|
|
35
|
+
model: string;
|
|
36
|
+
choices: Array<{
|
|
37
|
+
index: number;
|
|
38
|
+
message: AI21Message;
|
|
39
|
+
finish_reason: 'stop' | 'length' | null;
|
|
40
|
+
}>;
|
|
41
|
+
usage?: {
|
|
42
|
+
prompt_tokens: number;
|
|
43
|
+
completion_tokens: number;
|
|
44
|
+
total_tokens: number;
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
export interface AI21StreamChunk {
|
|
48
|
+
id: string;
|
|
49
|
+
object: 'chat.completion.chunk';
|
|
50
|
+
created: number;
|
|
51
|
+
model: string;
|
|
52
|
+
choices: Array<{
|
|
53
|
+
index: number;
|
|
54
|
+
delta: {
|
|
55
|
+
role?: 'assistant';
|
|
56
|
+
content?: string;
|
|
57
|
+
};
|
|
58
|
+
finish_reason: 'stop' | 'length' | null;
|
|
59
|
+
}>;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Backend adapter for AI21 Labs Chat Completions API.
|
|
63
|
+
*
|
|
64
|
+
* Features:
|
|
65
|
+
* - Jamba models with efficient tokenization
|
|
66
|
+
* - OpenAI-compatible API
|
|
67
|
+
* - RAG support with document parameter
|
|
68
|
+
* - Text-only (no vision support)
|
|
69
|
+
* - No function calling
|
|
70
|
+
* - Pricing from $0.50 per 1M tokens
|
|
71
|
+
*/
|
|
72
|
+
export declare class AI21BackendAdapter implements BackendAdapter<AI21Request, AI21Response> {
|
|
73
|
+
readonly metadata: AdapterMetadata;
|
|
74
|
+
private readonly config;
|
|
75
|
+
private readonly baseURL;
|
|
76
|
+
constructor(config: BackendAdapterConfig);
|
|
77
|
+
/**
|
|
78
|
+
* Convert IR to AI21 format.
|
|
79
|
+
*/
|
|
80
|
+
fromIR(request: IRChatRequest): AI21Request;
|
|
81
|
+
/**
|
|
82
|
+
* Convert AI21 response to IR.
|
|
83
|
+
*/
|
|
84
|
+
toIR(response: AI21Response, originalRequest: IRChatRequest, latencyMs: number): IRChatResponse;
|
|
85
|
+
/**
|
|
86
|
+
* Execute non-streaming request.
|
|
87
|
+
*/
|
|
88
|
+
execute(request: IRChatRequest, signal?: AbortSignal): Promise<IRChatResponse>;
|
|
89
|
+
/**
|
|
90
|
+
* Execute streaming request.
|
|
91
|
+
*/
|
|
92
|
+
executeStream(request: IRChatRequest, signal?: AbortSignal): IRChatStream;
|
|
93
|
+
/**
|
|
94
|
+
* Get HTTP headers.
|
|
95
|
+
*/
|
|
96
|
+
private getHeaders;
|
|
97
|
+
/**
|
|
98
|
+
* Health check.
|
|
99
|
+
*/
|
|
100
|
+
healthCheck(): Promise<boolean>;
|
|
101
|
+
/**
|
|
102
|
+
* Estimate cost.
|
|
103
|
+
*/
|
|
104
|
+
estimateCost(request: IRChatRequest): Promise<number | null>;
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=ai21.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai21.d.ts","sourceRoot":"","sources":["../../../src/providers/ai21.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Anthropic Backend Adapter
|
|
3
|
+
*
|
|
4
|
+
* Adapts Universal IR to Anthropic Messages API.
|
|
5
|
+
* Handles Anthropic's separate system parameter and SSE streaming format.
|
|
6
|
+
*
|
|
7
|
+
* @module
|
|
8
|
+
*/
|
|
9
|
+
import type { BackendAdapter, BackendAdapterConfig, AdapterMetadata } from 'ai.matey.types';
|
|
10
|
+
import type { IRChatRequest, IRChatResponse, IRChatStream } from 'ai.matey.types';
|
|
11
|
+
import type { ListModelsOptions, ListModelsResult } from 'ai.matey.types';
|
|
12
|
+
/**
|
|
13
|
+
* Anthropic message content block.
|
|
14
|
+
*/
|
|
15
|
+
export type AnthropicContentBlock = {
|
|
16
|
+
type: 'text';
|
|
17
|
+
text: string;
|
|
18
|
+
} | {
|
|
19
|
+
type: 'image';
|
|
20
|
+
source: {
|
|
21
|
+
type: 'url';
|
|
22
|
+
url: string;
|
|
23
|
+
} | {
|
|
24
|
+
type: 'base64';
|
|
25
|
+
media_type: string;
|
|
26
|
+
data: string;
|
|
27
|
+
};
|
|
28
|
+
} | {
|
|
29
|
+
type: 'tool_use';
|
|
30
|
+
id: string;
|
|
31
|
+
name: string;
|
|
32
|
+
input: Record<string, unknown>;
|
|
33
|
+
} | {
|
|
34
|
+
type: 'tool_result';
|
|
35
|
+
tool_use_id: string;
|
|
36
|
+
content: string | {
|
|
37
|
+
type: 'text';
|
|
38
|
+
text: string;
|
|
39
|
+
}[];
|
|
40
|
+
};
|
|
41
|
+
/**
|
|
42
|
+
* Anthropic message.
|
|
43
|
+
*/
|
|
44
|
+
export interface AnthropicMessage {
|
|
45
|
+
role: 'user' | 'assistant';
|
|
46
|
+
content: string | AnthropicContentBlock[];
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Anthropic Messages API request.
|
|
50
|
+
*/
|
|
51
|
+
export interface AnthropicRequest {
|
|
52
|
+
model: string;
|
|
53
|
+
messages: AnthropicMessage[];
|
|
54
|
+
system?: string;
|
|
55
|
+
max_tokens: number;
|
|
56
|
+
temperature?: number;
|
|
57
|
+
top_p?: number;
|
|
58
|
+
top_k?: number;
|
|
59
|
+
stop_sequences?: string[];
|
|
60
|
+
stream?: boolean;
|
|
61
|
+
metadata?: {
|
|
62
|
+
user_id?: string;
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Anthropic Messages API response.
|
|
67
|
+
*/
|
|
68
|
+
export interface AnthropicResponse {
|
|
69
|
+
id: string;
|
|
70
|
+
type: 'message';
|
|
71
|
+
role: 'assistant';
|
|
72
|
+
content: AnthropicContentBlock[];
|
|
73
|
+
model: string;
|
|
74
|
+
stop_reason: 'end_turn' | 'max_tokens' | 'stop_sequence' | 'tool_use' | null;
|
|
75
|
+
stop_sequence?: string | null;
|
|
76
|
+
usage: {
|
|
77
|
+
input_tokens: number;
|
|
78
|
+
output_tokens: number;
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Anthropic SSE stream event.
|
|
83
|
+
*/
|
|
84
|
+
export type AnthropicStreamEvent = {
|
|
85
|
+
type: 'message_start';
|
|
86
|
+
message: {
|
|
87
|
+
id: string;
|
|
88
|
+
type: 'message';
|
|
89
|
+
role: 'assistant';
|
|
90
|
+
model: string;
|
|
91
|
+
usage: {
|
|
92
|
+
input_tokens: number;
|
|
93
|
+
output_tokens: number;
|
|
94
|
+
};
|
|
95
|
+
};
|
|
96
|
+
} | {
|
|
97
|
+
type: 'content_block_start';
|
|
98
|
+
index: number;
|
|
99
|
+
content_block: AnthropicContentBlock;
|
|
100
|
+
} | {
|
|
101
|
+
type: 'ping';
|
|
102
|
+
} | {
|
|
103
|
+
type: 'content_block_delta';
|
|
104
|
+
index: number;
|
|
105
|
+
delta: {
|
|
106
|
+
type: 'text_delta';
|
|
107
|
+
text: string;
|
|
108
|
+
} | {
|
|
109
|
+
type: 'input_json_delta';
|
|
110
|
+
partial_json: string;
|
|
111
|
+
};
|
|
112
|
+
} | {
|
|
113
|
+
type: 'content_block_stop';
|
|
114
|
+
index: number;
|
|
115
|
+
} | {
|
|
116
|
+
type: 'message_delta';
|
|
117
|
+
delta: {
|
|
118
|
+
stop_reason: string;
|
|
119
|
+
stop_sequence?: string | null;
|
|
120
|
+
};
|
|
121
|
+
usage: {
|
|
122
|
+
output_tokens: number;
|
|
123
|
+
};
|
|
124
|
+
} | {
|
|
125
|
+
type: 'message_stop';
|
|
126
|
+
} | {
|
|
127
|
+
type: 'error';
|
|
128
|
+
error: {
|
|
129
|
+
type: string;
|
|
130
|
+
message: string;
|
|
131
|
+
};
|
|
132
|
+
};
|
|
133
|
+
/**
|
|
134
|
+
* Backend adapter for Anthropic Messages API.
|
|
135
|
+
*/
|
|
136
|
+
export declare class AnthropicBackendAdapter implements BackendAdapter<AnthropicRequest, AnthropicResponse> {
|
|
137
|
+
readonly metadata: AdapterMetadata;
|
|
138
|
+
private readonly config;
|
|
139
|
+
private readonly baseURL;
|
|
140
|
+
constructor(config: BackendAdapterConfig);
|
|
141
|
+
/**
|
|
142
|
+
* Execute non-streaming chat completion request.
|
|
143
|
+
*/
|
|
144
|
+
execute(request: IRChatRequest, signal?: AbortSignal): Promise<IRChatResponse>;
|
|
145
|
+
/**
|
|
146
|
+
* Execute streaming chat completion request.
|
|
147
|
+
*/
|
|
148
|
+
executeStream(request: IRChatRequest, signal?: AbortSignal): IRChatStream;
|
|
149
|
+
/**
|
|
150
|
+
* Health check to verify Anthropic API is accessible.
|
|
151
|
+
*/
|
|
152
|
+
healthCheck(): Promise<boolean>;
|
|
153
|
+
/**
|
|
154
|
+
* Estimate cost for a request (rough heuristic).
|
|
155
|
+
*/
|
|
156
|
+
estimateCost(request: IRChatRequest): Promise<number | null>;
|
|
157
|
+
/**
|
|
158
|
+
* List available Anthropic models.
|
|
159
|
+
*
|
|
160
|
+
* Since Anthropic doesn't have a public models endpoint, this uses:
|
|
161
|
+
* 1. Static config (config.models) - if provided
|
|
162
|
+
* 2. Default model list - built-in list of Claude models
|
|
163
|
+
*/
|
|
164
|
+
listModels(options?: ListModelsOptions): Promise<ListModelsResult>;
|
|
165
|
+
/**
|
|
166
|
+
* Convert IR request to Anthropic format.
|
|
167
|
+
*
|
|
168
|
+
* Public method for testing and debugging - see what will be sent to Anthropic.
|
|
169
|
+
*/
|
|
170
|
+
fromIR(request: IRChatRequest): AnthropicRequest;
|
|
171
|
+
/**
|
|
172
|
+
* Convert Anthropic response to IR format.
|
|
173
|
+
*
|
|
174
|
+
* Public method for testing and debugging - parse Anthropic responses manually.
|
|
175
|
+
*/
|
|
176
|
+
toIR(response: AnthropicResponse, originalRequest: IRChatRequest, latencyMs: number): IRChatResponse;
|
|
177
|
+
/**
|
|
178
|
+
* Convert IR message to Anthropic message.
|
|
179
|
+
*/
|
|
180
|
+
private convertMessageToAnthropic;
|
|
181
|
+
/**
|
|
182
|
+
* Map Anthropic stop reason to IR finish reason.
|
|
183
|
+
*/
|
|
184
|
+
private mapStopReason;
|
|
185
|
+
/**
|
|
186
|
+
* Make HTTP request to Anthropic API.
|
|
187
|
+
*/
|
|
188
|
+
private makeRequest;
|
|
189
|
+
/**
|
|
190
|
+
* Get HTTP headers for Anthropic API requests.
|
|
191
|
+
*/
|
|
192
|
+
private getHeaders;
|
|
193
|
+
}
|
|
194
|
+
//# sourceMappingURL=anthropic.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../../src/providers/anthropic.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Anyscale Backend Adapter
|
|
3
|
+
*
|
|
4
|
+
* Adapts Universal IR to Anyscale Endpoints Chat Completions API.
|
|
5
|
+
* Anyscale is OpenAI-compatible with platform-oriented features.
|
|
6
|
+
*
|
|
7
|
+
* @module
|
|
8
|
+
*/
|
|
9
|
+
import type { BackendAdapter, BackendAdapterConfig, AdapterMetadata } from 'ai.matey.types';
|
|
10
|
+
import type { IRChatRequest, IRChatResponse, IRChatStream } from 'ai.matey.types';
|
|
11
|
+
export type AnyscaleMessageContent = string | Array<{
|
|
12
|
+
type: 'text';
|
|
13
|
+
text: string;
|
|
14
|
+
} | {
|
|
15
|
+
type: 'image_url';
|
|
16
|
+
image_url: {
|
|
17
|
+
url: string;
|
|
18
|
+
};
|
|
19
|
+
}>;
|
|
20
|
+
export interface AnyscaleMessage {
|
|
21
|
+
role: 'system' | 'user' | 'assistant';
|
|
22
|
+
content: AnyscaleMessageContent;
|
|
23
|
+
}
|
|
24
|
+
export interface AnyscaleRequest {
|
|
25
|
+
model: string;
|
|
26
|
+
messages: AnyscaleMessage[];
|
|
27
|
+
temperature?: number;
|
|
28
|
+
max_tokens?: number;
|
|
29
|
+
top_p?: number;
|
|
30
|
+
frequency_penalty?: number;
|
|
31
|
+
presence_penalty?: number;
|
|
32
|
+
stop?: string[];
|
|
33
|
+
stream?: boolean;
|
|
34
|
+
}
|
|
35
|
+
export interface AnyscaleResponse {
|
|
36
|
+
id: string;
|
|
37
|
+
object: 'chat.completion';
|
|
38
|
+
created: number;
|
|
39
|
+
model: string;
|
|
40
|
+
choices: Array<{
|
|
41
|
+
index: number;
|
|
42
|
+
message: AnyscaleMessage;
|
|
43
|
+
finish_reason: 'stop' | 'length' | null;
|
|
44
|
+
}>;
|
|
45
|
+
usage?: {
|
|
46
|
+
prompt_tokens: number;
|
|
47
|
+
completion_tokens: number;
|
|
48
|
+
total_tokens: number;
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
export interface AnyscaleStreamChunk {
|
|
52
|
+
id: string;
|
|
53
|
+
object: 'chat.completion.chunk';
|
|
54
|
+
created: number;
|
|
55
|
+
model: string;
|
|
56
|
+
choices: Array<{
|
|
57
|
+
index: number;
|
|
58
|
+
delta: {
|
|
59
|
+
role?: 'assistant';
|
|
60
|
+
content?: string;
|
|
61
|
+
};
|
|
62
|
+
finish_reason: 'stop' | 'length' | null;
|
|
63
|
+
}>;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Backend adapter for Anyscale Endpoints Chat Completions API.
|
|
67
|
+
*
|
|
68
|
+
* Features:
|
|
69
|
+
* - OpenAI-compatible API
|
|
70
|
+
* - Platform-oriented features
|
|
71
|
+
* - Text-only (no vision support)
|
|
72
|
+
* - No function calling
|
|
73
|
+
* - Pricing around $1.00 per 1M tokens
|
|
74
|
+
*/
|
|
75
|
+
export declare class AnyscaleBackendAdapter implements BackendAdapter<AnyscaleRequest, AnyscaleResponse> {
|
|
76
|
+
readonly metadata: AdapterMetadata;
|
|
77
|
+
private readonly config;
|
|
78
|
+
private readonly baseURL;
|
|
79
|
+
constructor(config: BackendAdapterConfig);
|
|
80
|
+
/**
|
|
81
|
+
* Convert IR to Anyscale format.
|
|
82
|
+
*/
|
|
83
|
+
fromIR(request: IRChatRequest): AnyscaleRequest;
|
|
84
|
+
/**
|
|
85
|
+
* Convert Anyscale response to IR.
|
|
86
|
+
*/
|
|
87
|
+
toIR(response: AnyscaleResponse, originalRequest: IRChatRequest, latencyMs: number): IRChatResponse;
|
|
88
|
+
/**
|
|
89
|
+
* Execute non-streaming request.
|
|
90
|
+
*/
|
|
91
|
+
execute(request: IRChatRequest, signal?: AbortSignal): Promise<IRChatResponse>;
|
|
92
|
+
/**
|
|
93
|
+
* Execute streaming request.
|
|
94
|
+
*/
|
|
95
|
+
executeStream(request: IRChatRequest, signal?: AbortSignal): IRChatStream;
|
|
96
|
+
/**
|
|
97
|
+
* Get HTTP headers.
|
|
98
|
+
*/
|
|
99
|
+
private getHeaders;
|
|
100
|
+
/**
|
|
101
|
+
* Health check.
|
|
102
|
+
*/
|
|
103
|
+
healthCheck(): Promise<boolean>;
|
|
104
|
+
/**
|
|
105
|
+
* Estimate cost.
|
|
106
|
+
*/
|
|
107
|
+
estimateCost(request: IRChatRequest): Promise<number | null>;
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=anyscale.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anyscale.d.ts","sourceRoot":"","sources":["../../../src/providers/anyscale.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AWS Bedrock Backend Adapter
|
|
3
|
+
*
|
|
4
|
+
* Adapts Universal IR to AWS Bedrock Converse API.
|
|
5
|
+
* AWS Bedrock provides unified access to multiple foundation models with AWS SigV4 authentication.
|
|
6
|
+
*
|
|
7
|
+
* @module
|
|
8
|
+
*/
|
|
9
|
+
import type { BackendAdapter, BackendAdapterConfig, AdapterMetadata } from 'ai.matey.types';
|
|
10
|
+
import type { IRChatRequest, IRChatResponse, IRChatStream } from 'ai.matey.types';
|
|
11
|
+
export type BedrockMessageContent = {
|
|
12
|
+
text: string;
|
|
13
|
+
} | {
|
|
14
|
+
image: {
|
|
15
|
+
format: 'png' | 'jpeg' | 'gif' | 'webp';
|
|
16
|
+
source: {
|
|
17
|
+
bytes: string;
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
export interface BedrockMessage {
|
|
22
|
+
role: 'user' | 'assistant';
|
|
23
|
+
content: BedrockMessageContent[];
|
|
24
|
+
}
|
|
25
|
+
export interface BedrockSystemContent {
|
|
26
|
+
text: string;
|
|
27
|
+
}
|
|
28
|
+
export interface BedrockInferenceConfig {
|
|
29
|
+
temperature?: number;
|
|
30
|
+
maxTokens?: number;
|
|
31
|
+
topP?: number;
|
|
32
|
+
stopSequences?: string[];
|
|
33
|
+
}
|
|
34
|
+
export interface BedrockRequest {
|
|
35
|
+
modelId: string;
|
|
36
|
+
messages: BedrockMessage[];
|
|
37
|
+
system?: BedrockSystemContent[];
|
|
38
|
+
inferenceConfig?: BedrockInferenceConfig;
|
|
39
|
+
}
|
|
40
|
+
export interface BedrockResponse {
|
|
41
|
+
output: {
|
|
42
|
+
message: {
|
|
43
|
+
role: 'assistant';
|
|
44
|
+
content: Array<{
|
|
45
|
+
text: string;
|
|
46
|
+
}>;
|
|
47
|
+
};
|
|
48
|
+
};
|
|
49
|
+
stopReason: 'end_turn' | 'max_tokens' | 'stop_sequence' | 'content_filtered';
|
|
50
|
+
usage: {
|
|
51
|
+
inputTokens: number;
|
|
52
|
+
outputTokens: number;
|
|
53
|
+
totalTokens: number;
|
|
54
|
+
};
|
|
55
|
+
metrics?: {
|
|
56
|
+
latencyMs: number;
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
export interface BedrockStreamChunk {
|
|
60
|
+
messageStart?: {
|
|
61
|
+
role: 'assistant';
|
|
62
|
+
};
|
|
63
|
+
contentBlockStart?: {
|
|
64
|
+
contentBlockIndex: number;
|
|
65
|
+
};
|
|
66
|
+
contentBlockDelta?: {
|
|
67
|
+
delta: {
|
|
68
|
+
text: string;
|
|
69
|
+
};
|
|
70
|
+
contentBlockIndex: number;
|
|
71
|
+
};
|
|
72
|
+
contentBlockStop?: {
|
|
73
|
+
contentBlockIndex: number;
|
|
74
|
+
};
|
|
75
|
+
messageStop?: {
|
|
76
|
+
stopReason: 'end_turn' | 'max_tokens' | 'stop_sequence' | 'content_filtered';
|
|
77
|
+
};
|
|
78
|
+
metadata?: {
|
|
79
|
+
usage: {
|
|
80
|
+
inputTokens: number;
|
|
81
|
+
outputTokens: number;
|
|
82
|
+
totalTokens: number;
|
|
83
|
+
};
|
|
84
|
+
metrics?: {
|
|
85
|
+
latencyMs: number;
|
|
86
|
+
};
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
export interface AWSBedrockConfig extends BackendAdapterConfig {
|
|
90
|
+
region?: string;
|
|
91
|
+
awsAccessKeyId?: string;
|
|
92
|
+
awsSecretAccessKey?: string;
|
|
93
|
+
awsSessionToken?: string;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Backend adapter for AWS Bedrock Converse API.
|
|
97
|
+
*
|
|
98
|
+
* Features:
|
|
99
|
+
* - Unified API for multiple foundation models
|
|
100
|
+
* - AWS SigV4 authentication
|
|
101
|
+
* - Vision support (select models)
|
|
102
|
+
* - No function calling in Converse API
|
|
103
|
+
* - Enterprise features (VPC, encryption, compliance)
|
|
104
|
+
* - Pay-per-use pricing
|
|
105
|
+
*
|
|
106
|
+
* Note: This adapter requires AWS credentials. Authentication can be provided via:
|
|
107
|
+
* 1. Config (awsAccessKeyId, awsSecretAccessKey, awsSessionToken)
|
|
108
|
+
* 2. Environment variables (AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY)
|
|
109
|
+
* 3. IAM roles (when running on AWS infrastructure)
|
|
110
|
+
*/
|
|
111
|
+
export declare class AWSBedrockBackendAdapter implements BackendAdapter<BedrockRequest, BedrockResponse> {
|
|
112
|
+
readonly metadata: AdapterMetadata;
|
|
113
|
+
private readonly config;
|
|
114
|
+
private readonly region;
|
|
115
|
+
private readonly baseURL;
|
|
116
|
+
constructor(config: AWSBedrockConfig);
|
|
117
|
+
/**
|
|
118
|
+
* Convert IR to Bedrock format.
|
|
119
|
+
*/
|
|
120
|
+
fromIR(request: IRChatRequest): BedrockRequest;
|
|
121
|
+
/**
|
|
122
|
+
* Convert Bedrock response to IR.
|
|
123
|
+
*/
|
|
124
|
+
toIR(response: BedrockResponse, originalRequest: IRChatRequest, latencyMs: number): IRChatResponse;
|
|
125
|
+
/**
|
|
126
|
+
* Execute non-streaming request.
|
|
127
|
+
*/
|
|
128
|
+
execute(request: IRChatRequest, signal?: AbortSignal): Promise<IRChatResponse>;
|
|
129
|
+
/**
|
|
130
|
+
* Execute streaming request.
|
|
131
|
+
* Note: Streaming support varies by model and region.
|
|
132
|
+
*/
|
|
133
|
+
executeStream(request: IRChatRequest, signal?: AbortSignal): IRChatStream;
|
|
134
|
+
/**
|
|
135
|
+
* Get HTTP headers with AWS SigV4 signing.
|
|
136
|
+
*
|
|
137
|
+
* SIMPLIFIED VERSION: This implementation assumes AWS credentials are handled
|
|
138
|
+
* externally or uses basic headers. For production, use AWS SDK or aws4fetch
|
|
139
|
+
* for proper SigV4 signing.
|
|
140
|
+
*/
|
|
141
|
+
private getHeaders;
|
|
142
|
+
/**
|
|
143
|
+
* Health check.
|
|
144
|
+
*/
|
|
145
|
+
healthCheck(): Promise<boolean>;
|
|
146
|
+
/**
|
|
147
|
+
* Estimate cost.
|
|
148
|
+
* AWS Bedrock pricing varies by model and region.
|
|
149
|
+
*/
|
|
150
|
+
estimateCost(request: IRChatRequest): Promise<number | null>;
|
|
151
|
+
}
|
|
152
|
+
//# sourceMappingURL=aws-bedrock.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aws-bedrock.d.ts","sourceRoot":"","sources":["../../../src/providers/aws-bedrock.ts"],"names":[],"mappings":"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"}
|