@theia/ai-vercel-ai 1.71.0-next.8 → 1.71.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/lib/common/vercel-ai-preferences.d.ts.map +1 -1
- package/lib/common/vercel-ai-preferences.js +2 -2
- package/lib/common/vercel-ai-preferences.js.map +1 -1
- package/lib/node/vercel-ai-language-model.d.ts +3 -5
- package/lib/node/vercel-ai-language-model.d.ts.map +1 -1
- package/lib/node/vercel-ai-language-model.js +28 -27
- package/lib/node/vercel-ai-language-model.js.map +1 -1
- package/lib/node/vercel-ai-language-models-manager-impl.d.ts +1 -2
- package/lib/node/vercel-ai-language-models-manager-impl.d.ts.map +1 -1
- package/lib/node/vercel-ai-language-models-manager-impl.js +1 -5
- package/lib/node/vercel-ai-language-models-manager-impl.js.map +1 -1
- package/package.json +10 -10
- package/src/common/vercel-ai-preferences.ts +3 -3
- package/src/node/vercel-ai-language-model.ts +35 -46
- package/src/node/vercel-ai-language-models-manager-impl.ts +2 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vercel-ai-preferences.d.ts","sourceRoot":"","sources":["../../src/common/vercel-ai-preferences.ts"],"names":[],"mappings":"AAiBA,OAAO,
|
|
1
|
+
{"version":3,"file":"vercel-ai-preferences.d.ts","sourceRoot":"","sources":["../../src/common/vercel-ai-preferences.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAuB,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpE,eAAO,MAAM,mBAAmB,sCAAsC,CAAC;AACvE,eAAO,MAAM,sBAAsB,yCAAyC,CAAC;AAC7E,eAAO,MAAM,WAAW,wCAAwC,CAAC;AACjE,eAAO,MAAM,qBAAqB,sCAAsC,CAAC;AAEzE,eAAO,MAAM,qBAAqB,cAAc,CAAC;AAEjD,eAAO,MAAM,yBAAyB,EAAE,gBAkHvC,CAAC"}
|
|
@@ -29,7 +29,7 @@ exports.VercelAiPreferencesSchema = {
|
|
|
29
29
|
type: 'string',
|
|
30
30
|
markdownDescription: core_1.nls.localize('theia/ai/vercelai/openaiApiKey/mdDescription', 'Enter an API Key for OpenAI models used by the Vercel AI SDK. \
|
|
31
31
|
**Please note:** By using this preference the API key will be stored in clear text \
|
|
32
|
-
on the machine running Theia. Use the environment variable `OPENAI_API_KEY` to set the key securely.'),
|
|
32
|
+
on the machine running Theia. Use the environment variable `OPENAI_API_KEY` to set the key securely.') + core_1.LINUX_ENV_HINT,
|
|
33
33
|
title: ai_core_preferences_1.AI_CORE_PREFERENCES_TITLE,
|
|
34
34
|
tags: ['experimental']
|
|
35
35
|
},
|
|
@@ -37,7 +37,7 @@ exports.VercelAiPreferencesSchema = {
|
|
|
37
37
|
type: 'string',
|
|
38
38
|
markdownDescription: core_1.nls.localize('theia/ai/vercelai/anthropicApiKey/mdDescription', 'Enter an API Key for Anthropic models used by the Vercel AI SDK. \
|
|
39
39
|
**Please note:** By using this preference the API key will be stored in clear text \
|
|
40
|
-
on the machine running Theia. Use the environment variable `ANTHROPIC_API_KEY` to set the key securely.'),
|
|
40
|
+
on the machine running Theia. Use the environment variable `ANTHROPIC_API_KEY` to set the key securely.') + core_1.LINUX_ENV_HINT,
|
|
41
41
|
title: ai_core_preferences_1.AI_CORE_PREFERENCES_TITLE,
|
|
42
42
|
tags: ['experimental']
|
|
43
43
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vercel-ai-preferences.js","sourceRoot":"","sources":["../../src/common/vercel-ai-preferences.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;AAEhF,uFAA0F;AAC1F,
|
|
1
|
+
{"version":3,"file":"vercel-ai-preferences.js","sourceRoot":"","sources":["../../src/common/vercel-ai-preferences.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { LanguageModelV1 } from '@ai-sdk/provider';
|
|
2
|
-
import { LanguageModel, LanguageModelMessage, LanguageModelParsedResponse, LanguageModelRequest, LanguageModelResponse, LanguageModelStatus, LanguageModelStreamResponse, LanguageModelStreamResponsePart, LanguageModelTextResponse,
|
|
2
|
+
import { LanguageModel, LanguageModelMessage, LanguageModelParsedResponse, LanguageModelRequest, LanguageModelResponse, LanguageModelStatus, LanguageModelStreamResponse, LanguageModelStreamResponsePart, LanguageModelTextResponse, UserRequest } from '@theia/ai-core';
|
|
3
3
|
import { CancellationToken, Disposable, ILogger } from '@theia/core';
|
|
4
4
|
import { CoreMessage, TextStreamPart, ToolSet } from 'ai';
|
|
5
5
|
import { VercelAiLanguageModelFactory, VercelAiProviderConfig } from './vercel-ai-language-model-factory';
|
|
@@ -20,8 +20,8 @@ export declare class VercelAiStreamTransformer {
|
|
|
20
20
|
protected readonly context: StreamContext;
|
|
21
21
|
private toolCallsMap;
|
|
22
22
|
constructor(fullStream: VercelAiStream, context: StreamContext);
|
|
23
|
-
transform(): AsyncGenerator<LanguageModelStreamResponsePart>;
|
|
24
23
|
private isToolResultPart;
|
|
24
|
+
transform(): AsyncGenerator<LanguageModelStreamResponsePart>;
|
|
25
25
|
private updateToolCall;
|
|
26
26
|
private appendToToolCallArgs;
|
|
27
27
|
private processToolResult;
|
|
@@ -37,15 +37,13 @@ export declare class VercelAiModel implements LanguageModel {
|
|
|
37
37
|
protected readonly languageModelFactory: VercelAiLanguageModelFactory;
|
|
38
38
|
protected providerConfig: () => VercelAiProviderConfig;
|
|
39
39
|
maxRetries: number;
|
|
40
|
-
|
|
41
|
-
constructor(id: string, model: string, status: LanguageModelStatus, enableStreaming: boolean, supportsStructuredOutput: boolean, url: string | undefined, logger: ILogger, languageModelFactory: VercelAiLanguageModelFactory, providerConfig: () => VercelAiProviderConfig, maxRetries?: number, tokenUsageService?: TokenUsageService | undefined);
|
|
40
|
+
constructor(id: string, model: string, status: LanguageModelStatus, enableStreaming: boolean, supportsStructuredOutput: boolean, url: string | undefined, logger: ILogger, languageModelFactory: VercelAiLanguageModelFactory, providerConfig: () => VercelAiProviderConfig, maxRetries?: number);
|
|
42
41
|
protected getSettings(request: LanguageModelRequest): Record<string, unknown>;
|
|
43
42
|
request(request: UserRequest, cancellationToken?: CancellationToken): Promise<LanguageModelResponse>;
|
|
44
43
|
protected createCancellationToken(cancellationToken?: CancellationToken): VercelCancellationToken;
|
|
45
44
|
protected handleNonStreamingRequest(model: LanguageModelV1, request: UserRequest, cancellationToken?: VercelCancellationToken): Promise<LanguageModelTextResponse>;
|
|
46
45
|
protected createTools(request: UserRequest): ToolSet | undefined;
|
|
47
46
|
protected handleStructuredOutputRequest(model: LanguageModelV1, request: UserRequest, cancellationToken?: VercelCancellationToken): Promise<LanguageModelParsedResponse | LanguageModelStreamResponse>;
|
|
48
|
-
private recordTokenUsage;
|
|
49
47
|
protected handleStreamingRequest(model: LanguageModelV1, request: UserRequest, cancellationToken?: VercelCancellationToken): Promise<LanguageModelStreamResponse>;
|
|
50
48
|
protected processMessages(messages: LanguageModelMessage[]): Array<CoreMessage>;
|
|
51
49
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vercel-ai-language-model.d.ts","sourceRoot":"","sources":["../../src/node/vercel-ai-language-model.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EACH,aAAa,EACb,oBAAoB,EACpB,2BAA2B,EAC3B,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,EACnB,2BAA2B,EAC3B,+BAA+B,EAC/B,yBAAyB,
|
|
1
|
+
{"version":3,"file":"vercel-ai-language-model.d.ts","sourceRoot":"","sources":["../../src/node/vercel-ai-language-model.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,6 +25,9 @@ class VercelAiStreamTransformer {
|
|
|
25
25
|
this.context = context;
|
|
26
26
|
this.toolCallsMap = new Map();
|
|
27
27
|
}
|
|
28
|
+
isToolResultPart(part) {
|
|
29
|
+
return part.type === 'tool-result';
|
|
30
|
+
}
|
|
28
31
|
async *transform() {
|
|
29
32
|
this.toolCallsMap.clear();
|
|
30
33
|
try {
|
|
@@ -58,11 +61,19 @@ class VercelAiStreamTransformer {
|
|
|
58
61
|
toolCallUpdated = this.appendToToolCallArgs(part.toolCallId, part.argsTextDelta);
|
|
59
62
|
}
|
|
60
63
|
break;
|
|
61
|
-
|
|
64
|
+
case 'step-finish': {
|
|
65
|
+
const { usage } = part;
|
|
66
|
+
if (usage && !isNaN(usage.promptTokens) && !isNaN(usage.completionTokens)) {
|
|
67
|
+
yield { input_tokens: usage.promptTokens, output_tokens: usage.completionTokens };
|
|
68
|
+
}
|
|
69
|
+
break;
|
|
70
|
+
}
|
|
71
|
+
default: {
|
|
62
72
|
if (this.isToolResultPart(part)) {
|
|
63
73
|
toolCallUpdated = this.processToolResult(part);
|
|
64
74
|
}
|
|
65
75
|
break;
|
|
76
|
+
}
|
|
66
77
|
}
|
|
67
78
|
if (toolCallUpdated && this.toolCallsMap.size > 0) {
|
|
68
79
|
yield { tool_calls: Array.from(this.toolCallsMap.values()) };
|
|
@@ -73,9 +84,6 @@ class VercelAiStreamTransformer {
|
|
|
73
84
|
this.context.logger.error('Error in AI SDK stream:', error);
|
|
74
85
|
}
|
|
75
86
|
}
|
|
76
|
-
isToolResultPart(part) {
|
|
77
|
-
return part.type === 'tool-result';
|
|
78
|
-
}
|
|
79
87
|
updateToolCall(id, name, args) {
|
|
80
88
|
const toolCall = {
|
|
81
89
|
id,
|
|
@@ -108,7 +116,7 @@ class VercelAiStreamTransformer {
|
|
|
108
116
|
}
|
|
109
117
|
exports.VercelAiStreamTransformer = VercelAiStreamTransformer;
|
|
110
118
|
class VercelAiModel {
|
|
111
|
-
constructor(id, model, status, enableStreaming, supportsStructuredOutput, url, logger, languageModelFactory, providerConfig, maxRetries = 3
|
|
119
|
+
constructor(id, model, status, enableStreaming, supportsStructuredOutput, url, logger, languageModelFactory, providerConfig, maxRetries = 3) {
|
|
112
120
|
this.id = id;
|
|
113
121
|
this.model = model;
|
|
114
122
|
this.status = status;
|
|
@@ -119,7 +127,6 @@ class VercelAiModel {
|
|
|
119
127
|
this.languageModelFactory = languageModelFactory;
|
|
120
128
|
this.providerConfig = providerConfig;
|
|
121
129
|
this.maxRetries = maxRetries;
|
|
122
|
-
this.tokenUsageService = tokenUsageService;
|
|
123
130
|
}
|
|
124
131
|
getSettings(request) {
|
|
125
132
|
return request.settings ?? {};
|
|
@@ -185,8 +192,14 @@ class VercelAiModel {
|
|
|
185
192
|
abortSignal,
|
|
186
193
|
...settings
|
|
187
194
|
});
|
|
188
|
-
|
|
189
|
-
|
|
195
|
+
const result = { text: response.text };
|
|
196
|
+
if (!isNaN(response.usage.completionTokens) && !isNaN(response.usage.promptTokens)) {
|
|
197
|
+
result.usage = {
|
|
198
|
+
input_tokens: response.usage.promptTokens,
|
|
199
|
+
output_tokens: response.usage.completionTokens,
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
return result;
|
|
190
203
|
}
|
|
191
204
|
createTools(request) {
|
|
192
205
|
if (!request.tools) {
|
|
@@ -230,20 +243,17 @@ class VercelAiModel {
|
|
|
230
243
|
abortSignal,
|
|
231
244
|
...settings
|
|
232
245
|
});
|
|
233
|
-
|
|
234
|
-
return {
|
|
246
|
+
const result = {
|
|
235
247
|
content: JSON.stringify(response.object),
|
|
236
248
|
parsed: response.object
|
|
237
249
|
};
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
outputTokens: result.usage.completionTokens,
|
|
244
|
-
requestId: request.requestId
|
|
245
|
-
});
|
|
250
|
+
if (!isNaN(response.usage.completionTokens) && !isNaN(response.usage.promptTokens)) {
|
|
251
|
+
result.usage = {
|
|
252
|
+
input_tokens: response.usage.promptTokens,
|
|
253
|
+
output_tokens: response.usage.completionTokens,
|
|
254
|
+
};
|
|
246
255
|
}
|
|
256
|
+
return result;
|
|
247
257
|
}
|
|
248
258
|
async handleStreamingRequest(model, request, cancellationToken) {
|
|
249
259
|
const settings = this.getSettings(request);
|
|
@@ -259,15 +269,6 @@ class VercelAiModel {
|
|
|
259
269
|
maxRetries: this.maxRetries,
|
|
260
270
|
toolCallStreaming: true,
|
|
261
271
|
abortSignal,
|
|
262
|
-
onStepFinish: (stepResult) => {
|
|
263
|
-
if (!isNaN(stepResult.usage.completionTokens) && !isNaN(stepResult.usage.promptTokens)) {
|
|
264
|
-
this.tokenUsageService?.recordTokenUsage(this.id, {
|
|
265
|
-
inputTokens: stepResult.usage.promptTokens,
|
|
266
|
-
outputTokens: stepResult.usage.completionTokens,
|
|
267
|
-
requestId: request.requestId
|
|
268
|
-
});
|
|
269
|
-
}
|
|
270
|
-
},
|
|
271
272
|
...settings
|
|
272
273
|
});
|
|
273
274
|
const transformer = new VercelAiStreamTransformer(fullStream, { cancellationToken, logger: this.logger });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vercel-ai-language-model.js","sourceRoot":"","sources":["../../src/node/vercel-ai-language-model.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;AAGhF,
|
|
1
|
+
{"version":3,"file":"vercel-ai-language-model.js","sourceRoot":"","sources":["../../src/node/vercel-ai-language-model.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { LanguageModelRegistry, LanguageModelStatus
|
|
1
|
+
import { LanguageModelRegistry, LanguageModelStatus } from '@theia/ai-core';
|
|
2
2
|
import { VercelAiLanguageModelsManager, VercelAiModelDescription } from '../common';
|
|
3
3
|
import { ILogger } from '@theia/core';
|
|
4
4
|
import { VercelAiLanguageModelFactory, VercelAiProvider, VercelAiProviderConfig } from './vercel-ai-language-model-factory';
|
|
@@ -6,7 +6,6 @@ export declare class VercelAiLanguageModelsManagerImpl implements VercelAiLangua
|
|
|
6
6
|
apiKey: string | undefined;
|
|
7
7
|
protected providerConfigs: Map<VercelAiProvider, VercelAiProviderConfig>;
|
|
8
8
|
protected readonly languageModelRegistry: LanguageModelRegistry;
|
|
9
|
-
protected readonly tokenUsageService: TokenUsageService;
|
|
10
9
|
protected readonly logger: ILogger;
|
|
11
10
|
protected readonly languageModelFactory: VercelAiLanguageModelFactory;
|
|
12
11
|
protected calculateStatus(effectiveApiKey: string | undefined): LanguageModelStatus;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vercel-ai-language-models-manager-impl.d.ts","sourceRoot":"","sources":["../../src/node/vercel-ai-language-models-manager-impl.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,
|
|
1
|
+
{"version":3,"file":"vercel-ai-language-models-manager-impl.d.ts","sourceRoot":"","sources":["../../src/node/vercel-ai-language-models-manager-impl.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAG5E,OAAO,EAAE,6BAA6B,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC;AACpF,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,4BAA4B,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAE5H,qBACa,iCAAkC,YAAW,6BAA6B;IAEnF,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,SAAS,CAAC,eAAe,EAAE,GAAG,CAAC,gBAAgB,EAAE,sBAAsB,CAAC,CAAa;IAGrF,SAAS,CAAC,QAAQ,CAAC,qBAAqB,EAAE,qBAAqB,CAAC;IAGhE,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IAGnC,SAAS,CAAC,QAAQ,CAAC,oBAAoB,EAAE,4BAA4B,CAAC;IAItE,SAAS,CAAC,eAAe,CAAC,eAAe,EAAE,MAAM,GAAG,SAAS,GAAG,mBAAmB;IAM7E,4BAA4B,CAAC,GAAG,iBAAiB,EAAE,wBAAwB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA0CnG,oBAAoB,CAAC,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI;IAIjD,iBAAiB,CAAC,QAAQ,EAAE,gBAAgB,EAAE,MAAM,EAAE,OAAO,CAAC,sBAAsB,CAAC,GAAG,IAAI;IAK5F,OAAO,CAAC,iBAAiB;IAKzB,OAAO,CAAC,iBAAiB;CAQ5B"}
|
|
@@ -58,7 +58,7 @@ let VercelAiLanguageModelsManagerImpl = class VercelAiLanguageModelsManagerImpl
|
|
|
58
58
|
}
|
|
59
59
|
else {
|
|
60
60
|
this.languageModelRegistry.addLanguageModels([
|
|
61
|
-
new vercel_ai_language_model_1.VercelAiModel(modelDescription.id, modelDescription.model, status, modelDescription.enableStreaming, modelDescription.supportsStructuredOutput, modelDescription.url, this.logger, this.languageModelFactory, () => this.getProviderConfig(provider), modelDescription.maxRetries
|
|
61
|
+
new vercel_ai_language_model_1.VercelAiModel(modelDescription.id, modelDescription.model, status, modelDescription.enableStreaming, modelDescription.supportsStructuredOutput, modelDescription.url, this.logger, this.languageModelFactory, () => this.getProviderConfig(provider), modelDescription.maxRetries)
|
|
62
62
|
]);
|
|
63
63
|
}
|
|
64
64
|
}
|
|
@@ -88,10 +88,6 @@ tslib_1.__decorate([
|
|
|
88
88
|
(0, inversify_1.inject)(ai_core_1.LanguageModelRegistry),
|
|
89
89
|
tslib_1.__metadata("design:type", Object)
|
|
90
90
|
], VercelAiLanguageModelsManagerImpl.prototype, "languageModelRegistry", void 0);
|
|
91
|
-
tslib_1.__decorate([
|
|
92
|
-
(0, inversify_1.inject)(ai_core_1.TokenUsageService),
|
|
93
|
-
tslib_1.__metadata("design:type", Object)
|
|
94
|
-
], VercelAiLanguageModelsManagerImpl.prototype, "tokenUsageService", void 0);
|
|
95
91
|
tslib_1.__decorate([
|
|
96
92
|
(0, inversify_1.inject)(core_1.ILogger),
|
|
97
93
|
(0, inversify_1.named)('vercel-ai'),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vercel-ai-language-models-manager-impl.js","sourceRoot":"","sources":["../../src/node/vercel-ai-language-models-manager-impl.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;;AAEhF,
|
|
1
|
+
{"version":3,"file":"vercel-ai-language-models-manager-impl.js","sourceRoot":"","sources":["../../src/node/vercel-ai-language-models-manager-impl.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@theia/ai-vercel-ai",
|
|
3
|
-
"version": "1.71.0
|
|
3
|
+
"version": "1.71.0",
|
|
4
4
|
"description": "Theia - Vercel AI SDK Integration",
|
|
5
5
|
"dependencies": {
|
|
6
|
-
"@ai-sdk/anthropic": "^1.2.
|
|
7
|
-
"@ai-sdk/openai": "^1.3.
|
|
6
|
+
"@ai-sdk/anthropic": "^1.2.12",
|
|
7
|
+
"@ai-sdk/openai": "^1.3.24",
|
|
8
8
|
"@ai-sdk/provider": "^1.1.3",
|
|
9
|
-
"@theia/ai-core": "1.71.0
|
|
10
|
-
"@theia/core": "1.71.0
|
|
11
|
-
"@theia/filesystem": "1.71.0
|
|
12
|
-
"@theia/workspace": "1.71.0
|
|
13
|
-
"ai": "^4.3.
|
|
9
|
+
"@theia/ai-core": "1.71.0",
|
|
10
|
+
"@theia/core": "1.71.0",
|
|
11
|
+
"@theia/filesystem": "1.71.0",
|
|
12
|
+
"@theia/workspace": "1.71.0",
|
|
13
|
+
"ai": "^4.3.19",
|
|
14
14
|
"tslib": "^2.6.2"
|
|
15
15
|
},
|
|
16
16
|
"publishConfig": {
|
|
@@ -47,10 +47,10 @@
|
|
|
47
47
|
"watch": "theiaext watch"
|
|
48
48
|
},
|
|
49
49
|
"devDependencies": {
|
|
50
|
-
"@theia/ext-scripts": "1.
|
|
50
|
+
"@theia/ext-scripts": "1.71.0"
|
|
51
51
|
},
|
|
52
52
|
"nyc": {
|
|
53
53
|
"extends": "../../configs/nyc.json"
|
|
54
54
|
},
|
|
55
|
-
"gitHead": "
|
|
55
|
+
"gitHead": "d8a596fc99f0a8e68b466828ed162569d79e3a71"
|
|
56
56
|
}
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
// *****************************************************************************
|
|
16
16
|
|
|
17
17
|
import { AI_CORE_PREFERENCES_TITLE } from '@theia/ai-core/lib/common/ai-core-preferences';
|
|
18
|
-
import { nls, PreferenceSchema } from '@theia/core';
|
|
18
|
+
import { LINUX_ENV_HINT, nls, PreferenceSchema } from '@theia/core';
|
|
19
19
|
|
|
20
20
|
export const OPENAI_API_KEY_PREF = 'ai-features.vercelAi.openaiApiKey';
|
|
21
21
|
export const ANTHROPIC_API_KEY_PREF = 'ai-features.vercelAi.anthropicApiKey';
|
|
@@ -31,7 +31,7 @@ export const VercelAiPreferencesSchema: PreferenceSchema = {
|
|
|
31
31
|
markdownDescription: nls.localize('theia/ai/vercelai/openaiApiKey/mdDescription',
|
|
32
32
|
'Enter an API Key for OpenAI models used by the Vercel AI SDK. \
|
|
33
33
|
**Please note:** By using this preference the API key will be stored in clear text \
|
|
34
|
-
on the machine running Theia. Use the environment variable `OPENAI_API_KEY` to set the key securely.'),
|
|
34
|
+
on the machine running Theia. Use the environment variable `OPENAI_API_KEY` to set the key securely.') + LINUX_ENV_HINT,
|
|
35
35
|
title: AI_CORE_PREFERENCES_TITLE,
|
|
36
36
|
tags: ['experimental']
|
|
37
37
|
},
|
|
@@ -40,7 +40,7 @@ export const VercelAiPreferencesSchema: PreferenceSchema = {
|
|
|
40
40
|
markdownDescription: nls.localize('theia/ai/vercelai/anthropicApiKey/mdDescription',
|
|
41
41
|
'Enter an API Key for Anthropic models used by the Vercel AI SDK. \
|
|
42
42
|
**Please note:** By using this preference the API key will be stored in clear text \
|
|
43
|
-
on the machine running Theia. Use the environment variable `ANTHROPIC_API_KEY` to set the key securely.'),
|
|
43
|
+
on the machine running Theia. Use the environment variable `ANTHROPIC_API_KEY` to set the key securely.') + LINUX_ENV_HINT,
|
|
44
44
|
title: AI_CORE_PREFERENCES_TITLE,
|
|
45
45
|
tags: ['experimental']
|
|
46
46
|
},
|
|
@@ -25,7 +25,6 @@ import {
|
|
|
25
25
|
LanguageModelStreamResponse,
|
|
26
26
|
LanguageModelStreamResponsePart,
|
|
27
27
|
LanguageModelTextResponse,
|
|
28
|
-
TokenUsageService,
|
|
29
28
|
ToolCall,
|
|
30
29
|
UserRequest,
|
|
31
30
|
} from '@theia/ai-core';
|
|
@@ -33,11 +32,8 @@ import { CancellationToken, Disposable, ILogger } from '@theia/core';
|
|
|
33
32
|
import {
|
|
34
33
|
CoreMessage,
|
|
35
34
|
generateObject,
|
|
36
|
-
GenerateObjectResult,
|
|
37
35
|
generateText,
|
|
38
|
-
GenerateTextResult,
|
|
39
36
|
jsonSchema,
|
|
40
|
-
StepResult,
|
|
41
37
|
streamText,
|
|
42
38
|
TextStreamPart,
|
|
43
39
|
tool,
|
|
@@ -47,12 +43,6 @@ import {
|
|
|
47
43
|
} from 'ai';
|
|
48
44
|
import { VercelAiLanguageModelFactory, VercelAiProviderConfig } from './vercel-ai-language-model-factory';
|
|
49
45
|
|
|
50
|
-
interface VercelCancellationToken extends Disposable {
|
|
51
|
-
signal: AbortSignal;
|
|
52
|
-
cancellationToken: CancellationToken;
|
|
53
|
-
isCancellationRequested: boolean;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
46
|
type StreamPart = ToolResultPart | {
|
|
57
47
|
type: string;
|
|
58
48
|
textDelta?: string;
|
|
@@ -64,6 +54,12 @@ type StreamPart = ToolResultPart | {
|
|
|
64
54
|
signature?: string;
|
|
65
55
|
};
|
|
66
56
|
|
|
57
|
+
interface VercelCancellationToken extends Disposable {
|
|
58
|
+
signal: AbortSignal;
|
|
59
|
+
cancellationToken: CancellationToken;
|
|
60
|
+
isCancellationRequested: boolean;
|
|
61
|
+
}
|
|
62
|
+
|
|
67
63
|
interface VercelAiStream extends AsyncIterable<TextStreamPart<ToolSet>> {
|
|
68
64
|
cancel: () => void;
|
|
69
65
|
}
|
|
@@ -81,6 +77,10 @@ export class VercelAiStreamTransformer {
|
|
|
81
77
|
protected readonly context: StreamContext
|
|
82
78
|
) { }
|
|
83
79
|
|
|
80
|
+
private isToolResultPart(part: StreamPart): part is ToolResultPart {
|
|
81
|
+
return part.type === 'tool-result';
|
|
82
|
+
}
|
|
83
|
+
|
|
84
84
|
async *transform(): AsyncGenerator<LanguageModelStreamResponsePart> {
|
|
85
85
|
this.toolCallsMap.clear();
|
|
86
86
|
try {
|
|
@@ -120,11 +120,20 @@ export class VercelAiStreamTransformer {
|
|
|
120
120
|
}
|
|
121
121
|
break;
|
|
122
122
|
|
|
123
|
-
|
|
123
|
+
case 'step-finish': {
|
|
124
|
+
const { usage } = part;
|
|
125
|
+
if (usage && !isNaN(usage.promptTokens) && !isNaN(usage.completionTokens)) {
|
|
126
|
+
yield { input_tokens: usage.promptTokens, output_tokens: usage.completionTokens };
|
|
127
|
+
}
|
|
128
|
+
break;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
default: {
|
|
124
132
|
if (this.isToolResultPart(part)) {
|
|
125
133
|
toolCallUpdated = this.processToolResult(part);
|
|
126
134
|
}
|
|
127
135
|
break;
|
|
136
|
+
}
|
|
128
137
|
}
|
|
129
138
|
|
|
130
139
|
if (toolCallUpdated && this.toolCallsMap.size > 0) {
|
|
@@ -136,10 +145,6 @@ export class VercelAiStreamTransformer {
|
|
|
136
145
|
}
|
|
137
146
|
}
|
|
138
147
|
|
|
139
|
-
private isToolResultPart(part: StreamPart): part is ToolResultPart {
|
|
140
|
-
return part.type === 'tool-result';
|
|
141
|
-
}
|
|
142
|
-
|
|
143
148
|
private updateToolCall(id: string, name: string, args?: string): boolean {
|
|
144
149
|
const toolCall: ToolCall = {
|
|
145
150
|
id,
|
|
@@ -189,7 +194,6 @@ export class VercelAiModel implements LanguageModel {
|
|
|
189
194
|
protected readonly languageModelFactory: VercelAiLanguageModelFactory,
|
|
190
195
|
protected providerConfig: () => VercelAiProviderConfig,
|
|
191
196
|
public maxRetries: number = 3,
|
|
192
|
-
protected readonly tokenUsageService?: TokenUsageService
|
|
193
197
|
) { }
|
|
194
198
|
|
|
195
199
|
protected getSettings(request: LanguageModelRequest): Record<string, unknown> {
|
|
@@ -267,9 +271,14 @@ export class VercelAiModel implements LanguageModel {
|
|
|
267
271
|
...settings
|
|
268
272
|
});
|
|
269
273
|
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
274
|
+
const result: LanguageModelTextResponse = { text: response.text };
|
|
275
|
+
if (!isNaN(response.usage.completionTokens) && !isNaN(response.usage.promptTokens)) {
|
|
276
|
+
result.usage = {
|
|
277
|
+
input_tokens: response.usage.promptTokens,
|
|
278
|
+
output_tokens: response.usage.completionTokens,
|
|
279
|
+
};
|
|
280
|
+
}
|
|
281
|
+
return result;
|
|
273
282
|
}
|
|
274
283
|
|
|
275
284
|
protected createTools(request: UserRequest): ToolSet | undefined {
|
|
@@ -323,28 +332,17 @@ export class VercelAiModel implements LanguageModel {
|
|
|
323
332
|
...settings
|
|
324
333
|
});
|
|
325
334
|
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
return {
|
|
335
|
+
const result: LanguageModelParsedResponse = {
|
|
329
336
|
content: JSON.stringify(response.object),
|
|
330
337
|
parsed: response.object
|
|
331
338
|
};
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
): Promise<void> {
|
|
338
|
-
if (this.tokenUsageService && !isNaN(result.usage.completionTokens) && !isNaN(result.usage.promptTokens)) {
|
|
339
|
-
await this.tokenUsageService.recordTokenUsage(
|
|
340
|
-
this.id,
|
|
341
|
-
{
|
|
342
|
-
inputTokens: result.usage.promptTokens,
|
|
343
|
-
outputTokens: result.usage.completionTokens,
|
|
344
|
-
requestId: request.requestId
|
|
345
|
-
}
|
|
346
|
-
);
|
|
339
|
+
if (!isNaN(response.usage.completionTokens) && !isNaN(response.usage.promptTokens)) {
|
|
340
|
+
result.usage = {
|
|
341
|
+
input_tokens: response.usage.promptTokens,
|
|
342
|
+
output_tokens: response.usage.completionTokens,
|
|
343
|
+
};
|
|
347
344
|
}
|
|
345
|
+
return result;
|
|
348
346
|
}
|
|
349
347
|
|
|
350
348
|
protected async handleStreamingRequest(
|
|
@@ -366,15 +364,6 @@ export class VercelAiModel implements LanguageModel {
|
|
|
366
364
|
maxRetries: this.maxRetries,
|
|
367
365
|
toolCallStreaming: true,
|
|
368
366
|
abortSignal,
|
|
369
|
-
onStepFinish: (stepResult: StepResult<ToolSet>) => {
|
|
370
|
-
if (!isNaN(stepResult.usage.completionTokens) && !isNaN(stepResult.usage.promptTokens)) {
|
|
371
|
-
this.tokenUsageService?.recordTokenUsage(this.id, {
|
|
372
|
-
inputTokens: stepResult.usage.promptTokens,
|
|
373
|
-
outputTokens: stepResult.usage.completionTokens,
|
|
374
|
-
requestId: request.requestId
|
|
375
|
-
});
|
|
376
|
-
}
|
|
377
|
-
},
|
|
378
367
|
...settings
|
|
379
368
|
});
|
|
380
369
|
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
15
|
// *****************************************************************************
|
|
16
16
|
|
|
17
|
-
import { LanguageModelRegistry, LanguageModelStatus
|
|
17
|
+
import { LanguageModelRegistry, LanguageModelStatus } from '@theia/ai-core';
|
|
18
18
|
import { inject, injectable, named } from '@theia/core/shared/inversify';
|
|
19
19
|
import { VercelAiModel } from './vercel-ai-language-model';
|
|
20
20
|
import { VercelAiLanguageModelsManager, VercelAiModelDescription } from '../common';
|
|
@@ -30,9 +30,6 @@ export class VercelAiLanguageModelsManagerImpl implements VercelAiLanguageModels
|
|
|
30
30
|
@inject(LanguageModelRegistry)
|
|
31
31
|
protected readonly languageModelRegistry: LanguageModelRegistry;
|
|
32
32
|
|
|
33
|
-
@inject(TokenUsageService)
|
|
34
|
-
protected readonly tokenUsageService: TokenUsageService;
|
|
35
|
-
|
|
36
33
|
@inject(ILogger) @named('vercel-ai')
|
|
37
34
|
protected readonly logger: ILogger;
|
|
38
35
|
|
|
@@ -82,8 +79,7 @@ export class VercelAiLanguageModelsManagerImpl implements VercelAiLanguageModels
|
|
|
82
79
|
this.logger,
|
|
83
80
|
this.languageModelFactory,
|
|
84
81
|
() => this.getProviderConfig(provider),
|
|
85
|
-
modelDescription.maxRetries
|
|
86
|
-
this.tokenUsageService
|
|
82
|
+
modelDescription.maxRetries
|
|
87
83
|
)
|
|
88
84
|
]);
|
|
89
85
|
}
|