@aeye/ai 0.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 +1324 -0
- package/dist/ai.d.ts +204 -0
- package/dist/ai.d.ts.map +1 -0
- package/dist/ai.js +837 -0
- package/dist/ai.js.map +1 -0
- package/dist/apis/base.d.ts +181 -0
- package/dist/apis/base.d.ts.map +1 -0
- package/dist/apis/base.js +359 -0
- package/dist/apis/base.js.map +1 -0
- package/dist/apis/chat.d.ts +82 -0
- package/dist/apis/chat.d.ts.map +1 -0
- package/dist/apis/chat.js +214 -0
- package/dist/apis/chat.js.map +1 -0
- package/dist/apis/embed.d.ts +27 -0
- package/dist/apis/embed.d.ts.map +1 -0
- package/dist/apis/embed.js +70 -0
- package/dist/apis/embed.js.map +1 -0
- package/dist/apis/image.d.ts +77 -0
- package/dist/apis/image.d.ts.map +1 -0
- package/dist/apis/image.js +313 -0
- package/dist/apis/image.js.map +1 -0
- package/dist/apis/models.d.ts +108 -0
- package/dist/apis/models.d.ts.map +1 -0
- package/dist/apis/models.js +118 -0
- package/dist/apis/models.js.map +1 -0
- package/dist/apis/speech.d.ts +27 -0
- package/dist/apis/speech.d.ts.map +1 -0
- package/dist/apis/speech.js +79 -0
- package/dist/apis/speech.js.map +1 -0
- package/dist/apis/transcribe.d.ts +26 -0
- package/dist/apis/transcribe.d.ts.map +1 -0
- package/dist/apis/transcribe.js +103 -0
- package/dist/apis/transcribe.js.map +1 -0
- package/dist/common.d.ts +10 -0
- package/dist/common.d.ts.map +1 -0
- package/dist/common.js +17 -0
- package/dist/common.js.map +1 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +17 -0
- package/dist/index.js.map +1 -0
- package/dist/modelDetection.d.ts +31 -0
- package/dist/modelDetection.d.ts.map +1 -0
- package/dist/modelDetection.js +78 -0
- package/dist/modelDetection.js.map +1 -0
- package/dist/registry.d.ts +150 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/registry.js +639 -0
- package/dist/registry.js.map +1 -0
- package/dist/types.d.ts +767 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +8 -0
- package/dist/types.js.map +1 -0
- package/package.json +53 -0
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Chat API
|
|
3
|
+
*
|
|
4
|
+
* Provides chat completion functionality with automatic model selection, streaming support,
|
|
5
|
+
* and lifecycle hooks. The Chat API is the primary interface for conversational AI.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* // Simple chat completion
|
|
10
|
+
* const response = await ai.chat.get([
|
|
11
|
+
* { role: 'user', content: 'What is TypeScript?' }
|
|
12
|
+
* ]);
|
|
13
|
+
* console.log(response.content);
|
|
14
|
+
*
|
|
15
|
+
* // Streaming chat
|
|
16
|
+
* for await (const chunk of ai.chat.stream([
|
|
17
|
+
* { role: 'user', content: 'Write a poem about TypeScript' }
|
|
18
|
+
* ])) {
|
|
19
|
+
* if (chunk.content) {
|
|
20
|
+
* process.stdout.write(chunk.content);
|
|
21
|
+
* }
|
|
22
|
+
* }
|
|
23
|
+
*
|
|
24
|
+
* // With context and metadata
|
|
25
|
+
* const response = await ai.chat.get(
|
|
26
|
+
* [{ role: 'user', content: 'Hello' }],
|
|
27
|
+
* {
|
|
28
|
+
* userId: '123',
|
|
29
|
+
* metadata: {
|
|
30
|
+
* model: 'gpt-4',
|
|
31
|
+
* required: ['chat', 'streaming']
|
|
32
|
+
* }
|
|
33
|
+
* }
|
|
34
|
+
* );
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
import { type Executor, type Streamer, type Usage } from '@aeye/core';
|
|
38
|
+
import type { AI } from '../ai';
|
|
39
|
+
import type { AIBaseTypes, AIContext, AIContextRequired, AIMetadataRequired, Chunk, ModelCapability, ModelHandlerFor, ModelParameter, Request, Response, SelectedModelFor } from '../types';
|
|
40
|
+
import { BaseAPI } from './base';
|
|
41
|
+
/**
|
|
42
|
+
* ChatAPI provides methods for chat completions with automatic model selection.
|
|
43
|
+
* Inherits get() and stream() methods from BaseAPI.
|
|
44
|
+
*
|
|
45
|
+
* @template T - AIBaseTypes container with all type information
|
|
46
|
+
*/
|
|
47
|
+
export declare class ChatAPI<T extends AIBaseTypes> extends BaseAPI<T, Request, Response, Chunk> {
|
|
48
|
+
constructor(ai: AI<T>);
|
|
49
|
+
protected getRequiredCapabilities(provided: ModelCapability[], request: Request, forStreaming: boolean): ModelCapability[];
|
|
50
|
+
protected getRequiredParameters(provided: ModelParameter[], request: Request, forStreaming: boolean): ModelParameter[];
|
|
51
|
+
protected getNoModelFoundError(): string;
|
|
52
|
+
protected getErrorType(operation: 'request' | 'stream'): string;
|
|
53
|
+
protected getErrorMessage(operation: 'request' | 'stream'): string;
|
|
54
|
+
protected estimateRequestUsage(request: Request, selected: SelectedModelFor<T>): Usage;
|
|
55
|
+
protected executeRequest<TRuntimeContext extends AIContext<T>>(request: Request, selected: SelectedModelFor<T>, ctx: TRuntimeContext): Promise<Response>;
|
|
56
|
+
protected executeStreamRequest<TRuntimeContext extends AIContext<T>>(request: Request, selected: SelectedModelFor<T>, ctx: TRuntimeContext): AsyncIterable<Chunk>;
|
|
57
|
+
protected responseToChunks(response: Response): Chunk[];
|
|
58
|
+
protected chunksToResponse(chunks: Chunk[], model: string): Response;
|
|
59
|
+
protected getHandlerGetMethod(handler?: ModelHandlerFor<T>): (<TRuntimeContext extends AIContext<T>>(request: Request, ctx: TRuntimeContext) => Promise<Response>) | undefined;
|
|
60
|
+
protected getHandlerStreamMethod(handler?: ModelHandlerFor<T>): (<TRuntimeContext extends AIContext<T>>(request: Request, ctx: TRuntimeContext) => AsyncIterable<Chunk>) | undefined;
|
|
61
|
+
protected hasProviderExecutor(selected: SelectedModelFor<T>): boolean;
|
|
62
|
+
protected hasProviderStreamer(selected: SelectedModelFor<T>): boolean;
|
|
63
|
+
/**
|
|
64
|
+
* Create an executor function for use in core Context.
|
|
65
|
+
* This executor routes through ChatAPI's get method, allowing Prompts
|
|
66
|
+
* to execute chat completions through the context.
|
|
67
|
+
*
|
|
68
|
+
* @returns Executor function
|
|
69
|
+
* @internal
|
|
70
|
+
*/
|
|
71
|
+
createExecutor<TRuntimeContext extends AIContextRequired<T>, TRuntimeMetadata extends AIMetadataRequired<T>>(): Executor<TRuntimeContext, TRuntimeMetadata>;
|
|
72
|
+
/**
|
|
73
|
+
* Create a streamer function for use in core Context.
|
|
74
|
+
* This streamer routes through ChatAPI's stream method, allowing Prompts
|
|
75
|
+
* to execute streaming chat completions through the context.
|
|
76
|
+
*
|
|
77
|
+
* @returns Streamer function
|
|
78
|
+
* @internal
|
|
79
|
+
*/
|
|
80
|
+
createStreamer<TRuntimeContext extends AIContextRequired<T>, TRuntimeMetadata extends AIMetadataRequired<T>>(): Streamer<TRuntimeContext, TRuntimeMetadata>;
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=chat.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../src/apis/chat.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Chat API
|
|
3
|
+
*
|
|
4
|
+
* Provides chat completion functionality with automatic model selection, streaming support,
|
|
5
|
+
* and lifecycle hooks. The Chat API is the primary interface for conversational AI.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* // Simple chat completion
|
|
10
|
+
* const response = await ai.chat.get([
|
|
11
|
+
* { role: 'user', content: 'What is TypeScript?' }
|
|
12
|
+
* ]);
|
|
13
|
+
* console.log(response.content);
|
|
14
|
+
*
|
|
15
|
+
* // Streaming chat
|
|
16
|
+
* for await (const chunk of ai.chat.stream([
|
|
17
|
+
* { role: 'user', content: 'Write a poem about TypeScript' }
|
|
18
|
+
* ])) {
|
|
19
|
+
* if (chunk.content) {
|
|
20
|
+
* process.stdout.write(chunk.content);
|
|
21
|
+
* }
|
|
22
|
+
* }
|
|
23
|
+
*
|
|
24
|
+
* // With context and metadata
|
|
25
|
+
* const response = await ai.chat.get(
|
|
26
|
+
* [{ role: 'user', content: 'Hello' }],
|
|
27
|
+
* {
|
|
28
|
+
* userId: '123',
|
|
29
|
+
* metadata: {
|
|
30
|
+
* model: 'gpt-4',
|
|
31
|
+
* required: ['chat', 'streaming']
|
|
32
|
+
* }
|
|
33
|
+
* }
|
|
34
|
+
* );
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
import { getChunksFromResponse, getResponseFromChunks } from '@aeye/core';
|
|
38
|
+
import { BaseAPI } from './base';
|
|
39
|
+
/**
|
|
40
|
+
* ChatAPI provides methods for chat completions with automatic model selection.
|
|
41
|
+
* Inherits get() and stream() methods from BaseAPI.
|
|
42
|
+
*
|
|
43
|
+
* @template T - AIBaseTypes container with all type information
|
|
44
|
+
*/
|
|
45
|
+
export class ChatAPI extends BaseAPI {
|
|
46
|
+
constructor(ai) {
|
|
47
|
+
super(ai);
|
|
48
|
+
}
|
|
49
|
+
// ============================================================================
|
|
50
|
+
// REQUIRED ABSTRACT METHOD IMPLEMENTATIONS
|
|
51
|
+
// ============================================================================
|
|
52
|
+
getRequiredCapabilities(provided, request, forStreaming) {
|
|
53
|
+
const capabilities = new Set(['chat', ...provided]);
|
|
54
|
+
// Check if request contains images - requires vision capability
|
|
55
|
+
if (request) {
|
|
56
|
+
const hasImages = request.messages.some(message => {
|
|
57
|
+
if (Array.isArray(message.content)) {
|
|
58
|
+
return message.content.some(part => part.type === 'image');
|
|
59
|
+
}
|
|
60
|
+
return false;
|
|
61
|
+
});
|
|
62
|
+
if (hasImages) {
|
|
63
|
+
capabilities.add('vision');
|
|
64
|
+
}
|
|
65
|
+
const hasAudio = request.messages.some(message => {
|
|
66
|
+
if (Array.isArray(message.content)) {
|
|
67
|
+
return message.content.some(part => part.type === 'audio');
|
|
68
|
+
}
|
|
69
|
+
return false;
|
|
70
|
+
});
|
|
71
|
+
if (hasAudio) {
|
|
72
|
+
capabilities.add('hearing');
|
|
73
|
+
}
|
|
74
|
+
// Check if request uses reasoning
|
|
75
|
+
if (request.reason !== undefined) {
|
|
76
|
+
capabilities.add('reasoning');
|
|
77
|
+
}
|
|
78
|
+
// Check if request expects JSON output
|
|
79
|
+
if (request.responseFormat) {
|
|
80
|
+
if (request.responseFormat === 'json') {
|
|
81
|
+
capabilities.add('json');
|
|
82
|
+
}
|
|
83
|
+
else if (typeof request.responseFormat === 'object') {
|
|
84
|
+
capabilities.add('structured');
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
// Check if request uses tools
|
|
88
|
+
if (request.tools && request.tools.length > 0) {
|
|
89
|
+
capabilities.add('tools');
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
return Array.from(capabilities);
|
|
93
|
+
}
|
|
94
|
+
getRequiredParameters(provided, request, forStreaming) {
|
|
95
|
+
const params = new Set([...provided]);
|
|
96
|
+
if (request.maxTokens !== undefined) {
|
|
97
|
+
params.add('maxTokens');
|
|
98
|
+
}
|
|
99
|
+
if (request.temperature !== undefined) {
|
|
100
|
+
params.add('temperature');
|
|
101
|
+
}
|
|
102
|
+
if (request.topP !== undefined) {
|
|
103
|
+
params.add('topP');
|
|
104
|
+
}
|
|
105
|
+
if (request.frequencyPenalty !== undefined) {
|
|
106
|
+
params.add('frequencyPenalty');
|
|
107
|
+
}
|
|
108
|
+
if (request.presencePenalty !== undefined) {
|
|
109
|
+
params.add('presencePenalty');
|
|
110
|
+
}
|
|
111
|
+
if (request.stop !== undefined) {
|
|
112
|
+
params.add('stop');
|
|
113
|
+
}
|
|
114
|
+
if (request.logProbabilities !== undefined) {
|
|
115
|
+
params.add('logProbabilities');
|
|
116
|
+
}
|
|
117
|
+
if (request.logitBias !== undefined) {
|
|
118
|
+
params.add('logitBias');
|
|
119
|
+
}
|
|
120
|
+
if (request.responseFormat !== undefined) {
|
|
121
|
+
params.add('responseFormat');
|
|
122
|
+
if (typeof request.responseFormat === 'object') {
|
|
123
|
+
params.add('structuredOutput');
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
if (request.reason !== undefined) {
|
|
127
|
+
params.add('reason');
|
|
128
|
+
}
|
|
129
|
+
if (request.tools !== undefined || request.toolChoice !== undefined) {
|
|
130
|
+
params.add('tools');
|
|
131
|
+
if (request.toolChoice !== undefined) {
|
|
132
|
+
params.add('toolChoice');
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
return Array.from(params);
|
|
136
|
+
}
|
|
137
|
+
getNoModelFoundError() {
|
|
138
|
+
return 'No compatible model found for criteria';
|
|
139
|
+
}
|
|
140
|
+
getErrorType(operation) {
|
|
141
|
+
return operation === 'request' ? 'chat-request-failed' : 'chat-stream-failed';
|
|
142
|
+
}
|
|
143
|
+
getErrorMessage(operation) {
|
|
144
|
+
return operation === 'request' ? 'Chat request failed' : 'Chat streaming failed';
|
|
145
|
+
}
|
|
146
|
+
estimateRequestUsage(request, selected) {
|
|
147
|
+
return this.ai.estimateRequestUsage(request);
|
|
148
|
+
}
|
|
149
|
+
async executeRequest(request, selected, ctx) {
|
|
150
|
+
if (!selected.provider.createExecutor) {
|
|
151
|
+
throw new Error(`Provider ${selected.provider.name} does not support chat requests`);
|
|
152
|
+
}
|
|
153
|
+
const executor = selected.provider.createExecutor(selected.providerConfig);
|
|
154
|
+
return await executor(request, ctx, ctx.metadata);
|
|
155
|
+
}
|
|
156
|
+
async *executeStreamRequest(request, selected, ctx) {
|
|
157
|
+
if (!selected.provider.createStreamer) {
|
|
158
|
+
throw new Error(`Provider ${selected.provider.name} does not support chat streaming`);
|
|
159
|
+
}
|
|
160
|
+
const streamer = selected.provider.createStreamer(selected.providerConfig);
|
|
161
|
+
yield* streamer(request, ctx, ctx.metadata);
|
|
162
|
+
}
|
|
163
|
+
responseToChunks(response) {
|
|
164
|
+
return getChunksFromResponse(response);
|
|
165
|
+
}
|
|
166
|
+
chunksToResponse(chunks, model) {
|
|
167
|
+
return getResponseFromChunks(chunks);
|
|
168
|
+
}
|
|
169
|
+
getHandlerGetMethod(handler) {
|
|
170
|
+
return handler?.chat?.get;
|
|
171
|
+
}
|
|
172
|
+
getHandlerStreamMethod(handler) {
|
|
173
|
+
return handler?.chat?.stream;
|
|
174
|
+
}
|
|
175
|
+
hasProviderExecutor(selected) {
|
|
176
|
+
return !!selected.provider.createExecutor;
|
|
177
|
+
}
|
|
178
|
+
hasProviderStreamer(selected) {
|
|
179
|
+
return !!selected.provider.createStreamer;
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Create an executor function for use in core Context.
|
|
183
|
+
* This executor routes through ChatAPI's get method, allowing Prompts
|
|
184
|
+
* to execute chat completions through the context.
|
|
185
|
+
*
|
|
186
|
+
* @returns Executor function
|
|
187
|
+
* @internal
|
|
188
|
+
*/
|
|
189
|
+
createExecutor() {
|
|
190
|
+
return async (request, ctx, metadata, signal) => {
|
|
191
|
+
return await this.get(request, { ...ctx, metadata, signal });
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Create a streamer function for use in core Context.
|
|
196
|
+
* This streamer routes through ChatAPI's stream method, allowing Prompts
|
|
197
|
+
* to execute streaming chat completions through the context.
|
|
198
|
+
*
|
|
199
|
+
* @returns Streamer function
|
|
200
|
+
* @internal
|
|
201
|
+
*/
|
|
202
|
+
createStreamer() {
|
|
203
|
+
const chatAPI = this;
|
|
204
|
+
return async function* (request, ctx, metadata, signal) {
|
|
205
|
+
const chunks = [];
|
|
206
|
+
for await (const chunk of chatAPI.stream(request, { ...ctx, metadata, signal })) {
|
|
207
|
+
yield chunk;
|
|
208
|
+
chunks.push(chunk);
|
|
209
|
+
}
|
|
210
|
+
return chatAPI.chunksToResponse(chunks, 'unknown');
|
|
211
|
+
};
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
//# sourceMappingURL=chat.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat.js","sourceRoot":"","sources":["../../src/apis/chat.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Embed API
|
|
3
|
+
*
|
|
4
|
+
* Provides text embedding functionality.
|
|
5
|
+
*/
|
|
6
|
+
import type { Usage } from '@aeye/core';
|
|
7
|
+
import type { AI } from '../ai';
|
|
8
|
+
import type { AIBaseTypes, AIContext, EmbeddingRequest, EmbeddingResponse, ModelCapability, ModelParameter, ModelHandlerFor, SelectedModelFor } from '../types';
|
|
9
|
+
import { BaseAPI } from './base';
|
|
10
|
+
export declare class EmbedAPI<T extends AIBaseTypes> extends BaseAPI<T, EmbeddingRequest, EmbeddingResponse, never> {
|
|
11
|
+
constructor(ai: AI<T>);
|
|
12
|
+
protected getRequiredCapabilities(provided: ModelCapability[], request: EmbeddingRequest, forStreaming: boolean): ModelCapability[];
|
|
13
|
+
protected getRequiredParameters(provided: ModelParameter[], request: EmbeddingRequest, forStreaming: boolean): ModelParameter[];
|
|
14
|
+
protected getNoModelFoundError(): string;
|
|
15
|
+
protected getErrorType(): string;
|
|
16
|
+
protected getErrorMessage(): string;
|
|
17
|
+
protected executeRequest(request: EmbeddingRequest, selected: SelectedModelFor<T>, ctx: AIContext<T>): Promise<EmbeddingResponse>;
|
|
18
|
+
protected executeStreamRequest(request: EmbeddingRequest, selected: SelectedModelFor<T>, ctx: AIContext<T>): AsyncIterable<never>;
|
|
19
|
+
protected estimateRequestUsage(request: EmbeddingRequest): Usage;
|
|
20
|
+
protected responseToChunks(response: EmbeddingResponse): never;
|
|
21
|
+
protected chunksToResponse(chunks: never[]): EmbeddingResponse;
|
|
22
|
+
protected getHandlerGetMethod(handler?: ModelHandlerFor<T>): ((request: EmbeddingRequest, ctx: AIContext<T>) => Promise<EmbeddingResponse>) | undefined;
|
|
23
|
+
protected getHandlerStreamMethod(handler?: ModelHandlerFor<T>): ((request: EmbeddingRequest, ctx: AIContext<T>) => AsyncIterable<never>) | undefined;
|
|
24
|
+
protected hasProviderExecutor(selected: SelectedModelFor<T>): boolean;
|
|
25
|
+
protected hasProviderStreamer(selected: SelectedModelFor<T>): boolean;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=embed.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"embed.d.ts","sourceRoot":"","sources":["../../src/apis/embed.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,KAAK,EACV,WAAW,EACX,SAAS,EACT,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,eAAe,EACf,gBAAgB,EACjB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAEjC,qBAAa,QAAQ,CAAC,CAAC,SAAS,WAAW,CAAE,SAAQ,OAAO,CAC1D,CAAC,EACD,gBAAgB,EAChB,iBAAiB,EACjB,KAAK,CACN;gBACa,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IAQrB,SAAS,CAAC,uBAAuB,CAAC,QAAQ,EAAE,eAAe,EAAE,EAAE,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,OAAO,GAAG,eAAe,EAAE;IAInI,SAAS,CAAC,qBAAqB,CAAC,QAAQ,EAAE,cAAc,EAAE,EAAE,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,OAAO,GAAG,cAAc,EAAE;IAQ/H,SAAS,CAAC,oBAAoB,IAAI,MAAM;IAIxC,SAAS,CAAC,YAAY,IAAI,MAAM;IAIhC,SAAS,CAAC,eAAe,IAAI,MAAM;cAInB,cAAc,CAC5B,OAAO,EAAE,gBAAgB,EACzB,QAAQ,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAC7B,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC,GAChB,OAAO,CAAC,iBAAiB,CAAC;cAQZ,oBAAoB,CACnC,OAAO,EAAE,gBAAgB,EACzB,QAAQ,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAC7B,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC,GAChB,aAAa,CAAC,KAAK,CAAC;IAQvB,SAAS,CAAC,oBAAoB,CAAC,OAAO,EAAE,gBAAgB,GAAG,KAAK;IAWhE,SAAS,CAAC,gBAAgB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,KAAK;IAI9D,SAAS,CAAC,gBAAgB,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,iBAAiB;IAI9D,SAAS,CAAC,mBAAmB,CAC3B,OAAO,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,GAC3B,CAAC,CAAC,OAAO,EAAE,gBAAgB,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC,GAAG,SAAS;IAI7F,SAAS,CAAC,sBAAsB,CAC9B,OAAO,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,GAC3B,CAAC,CAAC,OAAO,EAAE,gBAAgB,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC,KAAK,aAAa,CAAC,KAAK,CAAC,CAAC,GAAG,SAAS;IAIvF,SAAS,CAAC,mBAAmB,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,OAAO;IAIrE,SAAS,CAAC,mBAAmB,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,OAAO;CAGtE"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Embed API
|
|
3
|
+
*
|
|
4
|
+
* Provides text embedding functionality.
|
|
5
|
+
*/
|
|
6
|
+
import { BaseAPI } from './base';
|
|
7
|
+
export class EmbedAPI extends BaseAPI {
|
|
8
|
+
constructor(ai) {
|
|
9
|
+
super(ai);
|
|
10
|
+
}
|
|
11
|
+
// ============================================================================
|
|
12
|
+
// REQUIRED ABSTRACT METHOD IMPLEMENTATIONS
|
|
13
|
+
// ============================================================================
|
|
14
|
+
getRequiredCapabilities(provided, request, forStreaming) {
|
|
15
|
+
return ['embedding', ...provided];
|
|
16
|
+
}
|
|
17
|
+
getRequiredParameters(provided, request, forStreaming) {
|
|
18
|
+
const params = new Set([...provided]);
|
|
19
|
+
if (request.dimensions !== undefined)
|
|
20
|
+
params.add('embeddingDimensions');
|
|
21
|
+
return Array.from(params);
|
|
22
|
+
}
|
|
23
|
+
getNoModelFoundError() {
|
|
24
|
+
return 'No compatible model found for embeddings';
|
|
25
|
+
}
|
|
26
|
+
getErrorType() {
|
|
27
|
+
return 'embedding-generation-failed';
|
|
28
|
+
}
|
|
29
|
+
getErrorMessage() {
|
|
30
|
+
return 'Embedding generation failed';
|
|
31
|
+
}
|
|
32
|
+
async executeRequest(request, selected, ctx) {
|
|
33
|
+
return await selected.provider.embed(request, ctx, selected.providerConfig);
|
|
34
|
+
}
|
|
35
|
+
async *executeStreamRequest(request, selected, ctx) {
|
|
36
|
+
throw new Error('Streaming not supported for embeddings');
|
|
37
|
+
}
|
|
38
|
+
// ============================================================================
|
|
39
|
+
// OPTIONAL OVERRIDES
|
|
40
|
+
// ============================================================================
|
|
41
|
+
estimateRequestUsage(request) {
|
|
42
|
+
const totalTextLength = request.texts.reduce((sum, text) => sum + text.length, 0);
|
|
43
|
+
const tokens = Math.ceil(totalTextLength / 4);
|
|
44
|
+
return {
|
|
45
|
+
embeddings: {
|
|
46
|
+
count: request.texts.length,
|
|
47
|
+
tokens
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
responseToChunks(response) {
|
|
52
|
+
throw new Error('Embeddings do not support chunking');
|
|
53
|
+
}
|
|
54
|
+
chunksToResponse(chunks) {
|
|
55
|
+
throw new Error('Embeddings do not support chunking');
|
|
56
|
+
}
|
|
57
|
+
getHandlerGetMethod(handler) {
|
|
58
|
+
return handler?.embed?.get;
|
|
59
|
+
}
|
|
60
|
+
getHandlerStreamMethod(handler) {
|
|
61
|
+
return undefined;
|
|
62
|
+
}
|
|
63
|
+
hasProviderExecutor(selected) {
|
|
64
|
+
return !!selected.provider.embed;
|
|
65
|
+
}
|
|
66
|
+
hasProviderStreamer(selected) {
|
|
67
|
+
return false; // Embed API doesn't support streaming
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=embed.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"embed.js","sourceRoot":"","sources":["../../src/apis/embed.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAcH,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAEjC,MAAM,OAAO,QAAgC,SAAQ,OAKpD;IACC,YAAY,EAAS;QACnB,KAAK,CAAC,EAAE,CAAC,CAAC;IACZ,CAAC;IAED,+EAA+E;IAC/E,2CAA2C;IAC3C,+EAA+E;IAErE,uBAAuB,CAAC,QAA2B,EAAE,OAAyB,EAAE,YAAqB;QAC7G,OAAO,CAAC,WAAW,EAAE,GAAG,QAAQ,CAAC,CAAC;IACpC,CAAC;IAES,qBAAqB,CAAC,QAA0B,EAAE,OAAyB,EAAE,YAAqB;QAC1G,MAAM,MAAM,GAAG,IAAI,GAAG,CAAiB,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC;QAEtD,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS;YAAE,MAAM,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QAExE,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IAES,oBAAoB;QAC5B,OAAO,0CAA0C,CAAC;IACpD,CAAC;IAES,YAAY;QACpB,OAAO,6BAA6B,CAAC;IACvC,CAAC;IAES,eAAe;QACvB,OAAO,6BAA6B,CAAC;IACvC,CAAC;IAES,KAAK,CAAC,cAAc,CAC5B,OAAyB,EACzB,QAA6B,EAC7B,GAAiB;QAEjB,OAAO,MAAM,QAAQ,CAAC,QAAQ,CAAC,KAAM,CACnC,OAAO,EACP,GAAG,EACH,QAAQ,CAAC,cAAc,CACxB,CAAC;IACJ,CAAC;IAES,KAAK,CAAC,CAAC,oBAAoB,CACnC,OAAyB,EACzB,QAA6B,EAC7B,GAAiB;QAEjB,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAC5D,CAAC;IAED,+EAA+E;IAC/E,qBAAqB;IACrB,+EAA+E;IAErE,oBAAoB,CAAC,OAAyB;QACtD,MAAM,eAAe,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAClF,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC,CAAC;QAC9C,OAAO;YACL,UAAU,EAAE;gBACV,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM;gBAC3B,MAAM;aACP;SACF,CAAC;IACJ,CAAC;IAES,gBAAgB,CAAC,QAA2B;QACpD,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,CAAC;IAES,gBAAgB,CAAC,MAAe;QACxC,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,CAAC;IAES,mBAAmB,CAC3B,OAA4B;QAE5B,OAAO,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC;IAC7B,CAAC;IAES,sBAAsB,CAC9B,OAA4B;QAE5B,OAAO,SAAS,CAAC;IACnB,CAAC;IAES,mBAAmB,CAAC,QAA6B;QACzD,OAAO,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC;IACnC,CAAC;IAES,mBAAmB,CAAC,QAA6B;QACzD,OAAO,KAAK,CAAC,CAAC,sCAAsC;IACtD,CAAC;CACF"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Image API
|
|
3
|
+
*
|
|
4
|
+
* Provides image generation, editing, and analysis functionality.
|
|
5
|
+
*/
|
|
6
|
+
import { ModelInput } from '@aeye/core';
|
|
7
|
+
import type { AI } from '../ai';
|
|
8
|
+
import type { AIBaseTypes, AIContext, Chunk, ImageAnalyzeRequest, ImageEditRequest, ImageGenerationChunk, ImageGenerationRequest, ImageGenerationResponse, ModelCapability, ModelParameter, ModelHandlerFor, Response, SelectedModelFor, Usage } from '../types';
|
|
9
|
+
import { BaseAPI } from './base';
|
|
10
|
+
declare class ImageGenerateAPI<T extends AIBaseTypes> extends BaseAPI<T, ImageGenerationRequest, ImageGenerationResponse, ImageGenerationChunk> {
|
|
11
|
+
constructor(ai: AI<T>);
|
|
12
|
+
protected getRequiredCapabilities(provided: ModelCapability[], request?: ImageGenerationRequest): ModelCapability[];
|
|
13
|
+
protected getRequiredParameters(provided: ModelParameter[], request: ImageGenerationRequest, forStreaming: boolean): ModelParameter[];
|
|
14
|
+
protected getNoModelFoundError(): string;
|
|
15
|
+
protected getErrorType(operation: 'request' | 'stream'): string;
|
|
16
|
+
protected getErrorMessage(operation: 'request' | 'stream'): string;
|
|
17
|
+
protected estimateRequestUsage(request: ImageGenerationRequest): Usage;
|
|
18
|
+
protected executeRequest(request: ImageGenerationRequest, selected: SelectedModelFor<T>, ctx: AIContext<T>): Promise<ImageGenerationResponse>;
|
|
19
|
+
protected executeStreamRequest(request: ImageGenerationRequest, selected: SelectedModelFor<T>, ctx: AIContext<T>): AsyncIterable<ImageGenerationChunk>;
|
|
20
|
+
protected responseToChunks(response: ImageGenerationResponse): ImageGenerationChunk[];
|
|
21
|
+
protected chunksToResponse(chunks: ImageGenerationChunk[], model: string): ImageGenerationResponse;
|
|
22
|
+
protected getHandlerGetMethod(handler?: ModelHandlerFor<T>): ((request: ImageGenerationRequest, ctx: AIContext<T>) => Promise<ImageGenerationResponse>) | undefined;
|
|
23
|
+
protected getHandlerStreamMethod(handler?: ModelHandlerFor<T>): ((request: ImageGenerationRequest, ctx: AIContext<T>) => AsyncIterable<ImageGenerationChunk>) | undefined;
|
|
24
|
+
protected hasProviderExecutor(selected: SelectedModelFor<T>): boolean;
|
|
25
|
+
protected hasProviderStreamer(selected: SelectedModelFor<T>): boolean;
|
|
26
|
+
}
|
|
27
|
+
declare class ImageEditAPI<T extends AIBaseTypes> extends BaseAPI<T, ImageEditRequest, ImageGenerationResponse, ImageGenerationChunk> {
|
|
28
|
+
constructor(ai: AI<T>);
|
|
29
|
+
protected getModel(request: ImageEditRequest): ModelInput | undefined;
|
|
30
|
+
protected getRequiredCapabilities(provided: ModelCapability[], request: ImageEditRequest, forStreaming: boolean): ModelCapability[];
|
|
31
|
+
protected getRequiredParameters(provided: ModelParameter[], request: ImageEditRequest, forStreaming: boolean): ModelParameter[];
|
|
32
|
+
protected getNoModelFoundError(): string;
|
|
33
|
+
protected getErrorType(operation: 'request' | 'stream'): string;
|
|
34
|
+
protected getErrorMessage(operation: 'request' | 'stream'): string;
|
|
35
|
+
protected estimateRequestUsage(request: ImageEditRequest): Usage;
|
|
36
|
+
protected executeRequest(request: ImageEditRequest, selected: SelectedModelFor<T>, ctx: AIContext<T>): Promise<ImageGenerationResponse>;
|
|
37
|
+
protected executeStreamRequest(request: ImageEditRequest, selected: SelectedModelFor<T>, ctx: AIContext<T>): AsyncIterable<ImageGenerationChunk>;
|
|
38
|
+
protected responseToChunks(response: ImageGenerationResponse): ImageGenerationChunk[];
|
|
39
|
+
protected chunksToResponse(chunks: ImageGenerationChunk[], model: string): ImageGenerationResponse;
|
|
40
|
+
protected getHandlerGetMethod(handler?: ModelHandlerFor<T>): ((request: ImageEditRequest, ctx: AIContext<T>) => Promise<ImageGenerationResponse>) | undefined;
|
|
41
|
+
protected getHandlerStreamMethod(handler?: ModelHandlerFor<T>): ((request: ImageEditRequest, ctx: AIContext<T>) => AsyncIterable<ImageGenerationChunk>) | undefined;
|
|
42
|
+
protected hasProviderExecutor(selected: SelectedModelFor<T>): boolean;
|
|
43
|
+
protected hasProviderStreamer(selected: SelectedModelFor<T>): boolean;
|
|
44
|
+
}
|
|
45
|
+
declare class ImageAnalyzeAPI<T extends AIBaseTypes = AIBaseTypes> extends BaseAPI<T, ImageAnalyzeRequest, Response, Chunk> {
|
|
46
|
+
constructor(ai: AI<T>);
|
|
47
|
+
protected getRequiredCapabilities(provided: ModelCapability[], request: ImageAnalyzeRequest, forStreaming: boolean): ModelCapability[];
|
|
48
|
+
protected getRequiredParameters(provided: ModelParameter[], request: ImageAnalyzeRequest, forStreaming: boolean): ModelParameter[];
|
|
49
|
+
protected getNoModelFoundError(): string;
|
|
50
|
+
protected getErrorType(operation: 'request' | 'stream'): string;
|
|
51
|
+
protected getErrorMessage(operation: 'request' | 'stream'): string;
|
|
52
|
+
protected getNoModelFoundErrorForStreaming(): string;
|
|
53
|
+
/**
|
|
54
|
+
* Convert ImageAnalyzeRequest to chat Request with multimodal content
|
|
55
|
+
*/
|
|
56
|
+
private convertToChatRequest;
|
|
57
|
+
protected estimateRequestUsage(request: ImageAnalyzeRequest, selected: SelectedModelFor<T>): Usage;
|
|
58
|
+
protected executeRequest(request: ImageAnalyzeRequest, selected: SelectedModelFor<T>, ctx: AIContext<T>): Promise<Response>;
|
|
59
|
+
protected executeStreamRequest(request: ImageAnalyzeRequest, selected: SelectedModelFor<T>, ctx: AIContext<T>): AsyncIterable<Chunk>;
|
|
60
|
+
protected responseToChunks(response: Response): Chunk[];
|
|
61
|
+
protected chunksToResponse(chunks: Chunk[], model: string): Response;
|
|
62
|
+
protected getHandlerGetMethod(handler?: ModelHandlerFor<T>): ((request: ImageAnalyzeRequest, ctx: AIContext<T>) => Promise<Response>) | undefined;
|
|
63
|
+
protected getHandlerStreamMethod(handler?: ModelHandlerFor<T>): ((request: ImageAnalyzeRequest, ctx: AIContext<T>) => AsyncIterable<Chunk>) | undefined;
|
|
64
|
+
protected hasProviderExecutor(selected: SelectedModelFor<T>): boolean;
|
|
65
|
+
protected hasProviderStreamer(selected: SelectedModelFor<T>): boolean;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Image API - Facade providing access to generate, edit, and analyze sub-APIs
|
|
69
|
+
*/
|
|
70
|
+
export declare class ImageAPI<T extends AIBaseTypes> {
|
|
71
|
+
readonly generate: ImageGenerateAPI<T>;
|
|
72
|
+
readonly edit: ImageEditAPI<T>;
|
|
73
|
+
readonly analyze: ImageAnalyzeAPI<T>;
|
|
74
|
+
constructor(ai: AI<T>);
|
|
75
|
+
}
|
|
76
|
+
export {};
|
|
77
|
+
//# sourceMappingURL=image.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"image.d.ts","sourceRoot":"","sources":["../../src/apis/image.ts"],"names":[],"mappings":"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"}
|