@theia/ai-google 1.63.0-next.52 → 1.63.1
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/browser/google-frontend-application-contribution.d.ts.map +1 -1
- package/lib/browser/google-frontend-application-contribution.js +12 -0
- package/lib/browser/google-frontend-application-contribution.js.map +1 -1
- package/lib/browser/google-preferences.d.ts +3 -0
- package/lib/browser/google-preferences.d.ts.map +1 -1
- package/lib/browser/google-preferences.js +27 -1
- package/lib/browser/google-preferences.js.map +1 -1
- package/lib/common/google-language-models-manager.d.ts +3 -0
- package/lib/common/google-language-models-manager.d.ts.map +1 -1
- package/lib/node/google-language-model.d.ts +13 -3
- package/lib/node/google-language-model.d.ts.map +1 -1
- package/lib/node/google-language-model.js +65 -15
- package/lib/node/google-language-model.js.map +1 -1
- package/lib/node/google-language-models-manager-impl.d.ts +9 -0
- package/lib/node/google-language-models-manager-impl.d.ts.map +1 -1
- package/lib/node/google-language-models-manager-impl.js +19 -1
- package/lib/node/google-language-models-manager-impl.js.map +1 -1
- package/package.json +5 -5
- package/src/browser/google-frontend-application-contribution.ts +11 -1
- package/src/browser/google-preferences.ts +29 -0
- package/src/common/google-language-models-manager.ts +4 -0
- package/src/node/google-language-model.ts +86 -31
- package/src/node/google-language-models-manager-impl.ts +26 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"google-frontend-application-contribution.d.ts","sourceRoot":"","sources":["../../src/browser/google-frontend-application-contribution.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,+BAA+B,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE7F,OAAO,EAAE,2BAA2B,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAKhF,qBACa,qCAAsC,YAAW,+BAA+B;IAGzF,SAAS,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAG/C,SAAS,CAAC,OAAO,EAAE,2BAA2B,CAAC;IAE/C,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,CAAM;IAEpC,OAAO,IAAI,IAAI;
|
|
1
|
+
{"version":3,"file":"google-frontend-application-contribution.d.ts","sourceRoot":"","sources":["../../src/browser/google-frontend-application-contribution.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,+BAA+B,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE7F,OAAO,EAAE,2BAA2B,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAKhF,qBACa,qCAAsC,YAAW,+BAA+B;IAGzF,SAAS,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAG/C,SAAS,CAAC,OAAO,EAAE,2BAA2B,CAAC;IAE/C,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,CAAM;IAEpC,OAAO,IAAI,IAAI;IA6Bf,SAAS,CAAC,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI;IAYvD,SAAS,CAAC,4BAA4B,CAAC,OAAO,EAAE,MAAM,GAAG,sBAAsB;CAYlF"}
|
|
@@ -30,6 +30,9 @@ let GoogleFrontendApplicationContribution = class GoogleFrontendApplicationContr
|
|
|
30
30
|
this.preferenceService.ready.then(() => {
|
|
31
31
|
const apiKey = this.preferenceService.get(google_preferences_1.API_KEY_PREF, undefined);
|
|
32
32
|
this.manager.setApiKey(apiKey);
|
|
33
|
+
this.manager.setMaxRetriesOnErrors(this.preferenceService.get(google_preferences_1.MAX_RETRIES, 3));
|
|
34
|
+
this.manager.setRetryDelayOnRateLimitError(this.preferenceService.get(google_preferences_1.RETRY_DELAY_RATE_LIMIT, 60));
|
|
35
|
+
this.manager.setRetryDelayOnOtherErrors(this.preferenceService.get(google_preferences_1.RETRY_DELAY_OTHER_ERRORS, -1));
|
|
33
36
|
const models = this.preferenceService.get(google_preferences_1.MODELS_PREF, []);
|
|
34
37
|
this.manager.createOrUpdateLanguageModels(...models.map(modelId => this.createGeminiModelDescription(modelId)));
|
|
35
38
|
this.prevModels = [...models];
|
|
@@ -37,6 +40,15 @@ let GoogleFrontendApplicationContribution = class GoogleFrontendApplicationContr
|
|
|
37
40
|
if (event.preferenceName === google_preferences_1.API_KEY_PREF) {
|
|
38
41
|
this.manager.setApiKey(event.newValue);
|
|
39
42
|
}
|
|
43
|
+
else if (event.preferenceName === google_preferences_1.MAX_RETRIES) {
|
|
44
|
+
this.manager.setMaxRetriesOnErrors(event.newValue);
|
|
45
|
+
}
|
|
46
|
+
else if (event.preferenceName === google_preferences_1.RETRY_DELAY_RATE_LIMIT) {
|
|
47
|
+
this.manager.setRetryDelayOnRateLimitError(event.newValue);
|
|
48
|
+
}
|
|
49
|
+
else if (event.preferenceName === google_preferences_1.RETRY_DELAY_OTHER_ERRORS) {
|
|
50
|
+
this.manager.setRetryDelayOnOtherErrors(event.newValue);
|
|
51
|
+
}
|
|
40
52
|
else if (event.preferenceName === google_preferences_1.MODELS_PREF) {
|
|
41
53
|
this.handleModelChanges(event.newValue);
|
|
42
54
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"google-frontend-application-contribution.js","sourceRoot":"","sources":["../../src/browser/google-frontend-application-contribution.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,qDAA6F;AAC7F,4DAAkE;AAClE,sCAAgF;AAChF,
|
|
1
|
+
{"version":3,"file":"google-frontend-application-contribution.js","sourceRoot":"","sources":["../../src/browser/google-frontend-application-contribution.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import { PreferenceSchema } from '@theia/core/lib/browser/preferences/preference-contribution';
|
|
2
2
|
export declare const API_KEY_PREF = "ai-features.google.apiKey";
|
|
3
3
|
export declare const MODELS_PREF = "ai-features.google.models";
|
|
4
|
+
export declare const MAX_RETRIES = "ai-features.google.maxRetriesOnErrors";
|
|
5
|
+
export declare const RETRY_DELAY_RATE_LIMIT = "ai-features.google.retryDelayOnRateLimitError";
|
|
6
|
+
export declare const RETRY_DELAY_OTHER_ERRORS = "ai-features.google.retryDelayOnOtherErrors";
|
|
4
7
|
export declare const GooglePreferencesSchema: PreferenceSchema;
|
|
5
8
|
//# sourceMappingURL=google-preferences.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"google-preferences.d.ts","sourceRoot":"","sources":["../../src/browser/google-preferences.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,gBAAgB,EAAE,MAAM,6DAA6D,CAAC;AAI/F,eAAO,MAAM,YAAY,8BAA8B,CAAC;AACxD,eAAO,MAAM,WAAW,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"google-preferences.d.ts","sourceRoot":"","sources":["../../src/browser/google-preferences.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,gBAAgB,EAAE,MAAM,6DAA6D,CAAC;AAI/F,eAAO,MAAM,YAAY,8BAA8B,CAAC;AACxD,eAAO,MAAM,WAAW,8BAA8B,CAAC;AACvD,eAAO,MAAM,WAAW,0CAA0C,CAAC;AACnE,eAAO,MAAM,sBAAsB,kDAAkD,CAAC;AACtF,eAAO,MAAM,wBAAwB,+CAA+C,CAAC;AAErF,eAAO,MAAM,uBAAuB,EAAE,gBA8CrC,CAAC"}
|
|
@@ -15,11 +15,14 @@
|
|
|
15
15
|
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
16
16
|
// *****************************************************************************
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
-
exports.GooglePreferencesSchema = exports.MODELS_PREF = exports.API_KEY_PREF = void 0;
|
|
18
|
+
exports.GooglePreferencesSchema = exports.RETRY_DELAY_OTHER_ERRORS = exports.RETRY_DELAY_RATE_LIMIT = exports.MAX_RETRIES = exports.MODELS_PREF = exports.API_KEY_PREF = void 0;
|
|
19
19
|
const ai_core_preferences_1 = require("@theia/ai-core/lib/browser/ai-core-preferences");
|
|
20
20
|
const core_1 = require("@theia/core");
|
|
21
21
|
exports.API_KEY_PREF = 'ai-features.google.apiKey';
|
|
22
22
|
exports.MODELS_PREF = 'ai-features.google.models';
|
|
23
|
+
exports.MAX_RETRIES = 'ai-features.google.maxRetriesOnErrors';
|
|
24
|
+
exports.RETRY_DELAY_RATE_LIMIT = 'ai-features.google.retryDelayOnRateLimitError';
|
|
25
|
+
exports.RETRY_DELAY_OTHER_ERRORS = 'ai-features.google.retryDelayOnOtherErrors';
|
|
23
26
|
exports.GooglePreferencesSchema = {
|
|
24
27
|
type: 'object',
|
|
25
28
|
properties: {
|
|
@@ -38,6 +41,29 @@ exports.GooglePreferencesSchema = {
|
|
|
38
41
|
type: 'string'
|
|
39
42
|
}
|
|
40
43
|
},
|
|
44
|
+
[exports.MAX_RETRIES]: {
|
|
45
|
+
type: 'integer',
|
|
46
|
+
description: core_1.nls.localize('theia/ai/google/maxRetriesOnErrors/description', 'Maximum number of retries in case of errors. If smaller than 1, then the retry logic is disabled'),
|
|
47
|
+
title: ai_core_preferences_1.AI_CORE_PREFERENCES_TITLE,
|
|
48
|
+
default: 3,
|
|
49
|
+
minimum: 0
|
|
50
|
+
},
|
|
51
|
+
[exports.RETRY_DELAY_RATE_LIMIT]: {
|
|
52
|
+
type: 'number',
|
|
53
|
+
description: core_1.nls.localize('theia/ai/google/retryDelayOnRateLimitError/description', 'Delay in seconds between retries in case of rate limit errors. See https://ai.google.dev/gemini-api/docs/rate-limits'),
|
|
54
|
+
title: ai_core_preferences_1.AI_CORE_PREFERENCES_TITLE,
|
|
55
|
+
default: 60,
|
|
56
|
+
minimum: 0
|
|
57
|
+
},
|
|
58
|
+
[exports.RETRY_DELAY_OTHER_ERRORS]: {
|
|
59
|
+
type: 'number',
|
|
60
|
+
description: core_1.nls.localize('theia/ai/google/retryDelayOnOtherErrors/description', 'Delay in seconds between retries in case of other errors (sometimes the Google GenAI reports errors such as incomplete JSON syntax returned from the model \
|
|
61
|
+
or 500 Internal Server Error). Setting this to -1 prevents retries in these cases. Otherwise a retry happens either immediately (if set to 0) or after \
|
|
62
|
+
this delay in seconds (if set to a positive number).'),
|
|
63
|
+
title: ai_core_preferences_1.AI_CORE_PREFERENCES_TITLE,
|
|
64
|
+
default: -1,
|
|
65
|
+
minimum: -1
|
|
66
|
+
}
|
|
41
67
|
}
|
|
42
68
|
};
|
|
43
69
|
//# sourceMappingURL=google-preferences.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"google-preferences.js","sourceRoot":"","sources":["../../src/browser/google-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;;;AAGhF,wFAA2F;AAC3F,sCAAkC;AAErB,QAAA,YAAY,GAAG,2BAA2B,CAAC;AAC3C,QAAA,WAAW,GAAG,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"google-preferences.js","sourceRoot":"","sources":["../../src/browser/google-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;;;AAGhF,wFAA2F;AAC3F,sCAAkC;AAErB,QAAA,YAAY,GAAG,2BAA2B,CAAC;AAC3C,QAAA,WAAW,GAAG,2BAA2B,CAAC;AAC1C,QAAA,WAAW,GAAG,uCAAuC,CAAC;AACtD,QAAA,sBAAsB,GAAG,+CAA+C,CAAC;AACzE,QAAA,wBAAwB,GAAG,4CAA4C,CAAC;AAExE,QAAA,uBAAuB,GAAqB;IACrD,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACR,CAAC,oBAAY,CAAC,EAAE;YACZ,IAAI,EAAE,QAAQ;YACd,mBAAmB,EAAE,UAAG,CAAC,QAAQ,CAAC,oCAAoC,EAClE;iHACiG,CAAC;YACtG,KAAK,EAAE,+CAAyB;SACnC;QACD,CAAC,mBAAW,CAAC,EAAE;YACX,IAAI,EAAE,OAAO;YACb,WAAW,EAAE,UAAG,CAAC,QAAQ,CAAC,oCAAoC,EAAE,sCAAsC,CAAC;YACvG,KAAK,EAAE,+CAAyB;YAChC,OAAO,EAAE,CAAC,kBAAkB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,gCAAgC,EAAE,8BAA8B,CAAC;YAC9J,KAAK,EAAE;gBACH,IAAI,EAAE,QAAQ;aACjB;SACJ;QACD,CAAC,mBAAW,CAAC,EAAE;YACX,IAAI,EAAE,SAAS;YACf,WAAW,EAAE,UAAG,CAAC,QAAQ,CAAC,gDAAgD,EACtE,kGAAkG,CAAC;YACvG,KAAK,EAAE,+CAAyB;YAChC,OAAO,EAAE,CAAC;YACV,OAAO,EAAE,CAAC;SACb;QACD,CAAC,8BAAsB,CAAC,EAAE;YACtB,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,UAAG,CAAC,QAAQ,CAAC,wDAAwD,EAC9E,sHAAsH,CAAC;YAC3H,KAAK,EAAE,+CAAyB;YAChC,OAAO,EAAE,EAAE;YACX,OAAO,EAAE,CAAC;SACb;QACD,CAAC,gCAAwB,CAAC,EAAE;YACxB,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,UAAG,CAAC,QAAQ,CAAC,qDAAqD,EAC3E;;qEAEqD,CAAC;YAC1D,KAAK,EAAE,+CAAyB;YAChC,OAAO,EAAE,CAAC,CAAC;YACX,OAAO,EAAE,CAAC,CAAC;SACd;KACJ;CACJ,CAAC"}
|
|
@@ -25,6 +25,9 @@ export interface GoogleModelDescription {
|
|
|
25
25
|
export interface GoogleLanguageModelsManager {
|
|
26
26
|
apiKey: string | undefined;
|
|
27
27
|
setApiKey(key: string | undefined): void;
|
|
28
|
+
setMaxRetriesOnErrors(maxRetries: number): void;
|
|
29
|
+
setRetryDelayOnRateLimitError(retryDelay: number): void;
|
|
30
|
+
setRetryDelayOnOtherErrors(retryDelay: number): void;
|
|
28
31
|
createOrUpdateLanguageModels(...models: GoogleModelDescription[]): Promise<void>;
|
|
29
32
|
removeLanguageModels(...modelIds: string[]): void;
|
|
30
33
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"google-language-models-manager.d.ts","sourceRoot":"","sources":["../../src/common/google-language-models-manager.ts"],"names":[],"mappings":"AAeA,eAAO,MAAM,mCAAmC,4CAA4C,CAAC;AAC7F,eAAO,MAAM,2BAA2B,eAAwC,CAAC;AACjF,MAAM,WAAW,sBAAsB;IACnC;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IACX;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAClC;;OAEG;IACH,eAAe,EAAE,OAAO,CAAC;IACzB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CAEtB;
|
|
1
|
+
{"version":3,"file":"google-language-models-manager.d.ts","sourceRoot":"","sources":["../../src/common/google-language-models-manager.ts"],"names":[],"mappings":"AAeA,eAAO,MAAM,mCAAmC,4CAA4C,CAAC;AAC7F,eAAO,MAAM,2BAA2B,eAAwC,CAAC;AACjF,MAAM,WAAW,sBAAsB;IACnC;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IACX;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAClC;;OAEG;IACH,eAAe,EAAE,OAAO,CAAC;IACzB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CAEtB;AAED,MAAM,WAAW,2BAA2B;IACxC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IACzC,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAChD,6BAA6B,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACxD,0BAA0B,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACrD,4BAA4B,CAAC,GAAG,MAAM,EAAE,sBAAsB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjF,oBAAoB,CAAC,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;CACpD"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { LanguageModel, LanguageModelRequest, LanguageModelResponse, LanguageModelStreamResponse, LanguageModelTextResponse, TokenUsageService, UserRequest } from '@theia/ai-core';
|
|
1
|
+
import { LanguageModel, LanguageModelRequest, LanguageModelResponse, LanguageModelStreamResponse, LanguageModelTextResponse, TokenUsageService, UserRequest, ToolCallResult } from '@theia/ai-core';
|
|
2
2
|
import { CancellationToken } from '@theia/core';
|
|
3
|
-
import { GoogleGenAI, Content } from '@google/genai';
|
|
3
|
+
import { GoogleGenAI, Content, FunctionResponse } from '@google/genai';
|
|
4
|
+
import { GoogleLanguageModelRetrySettings } from './google-language-models-manager-impl';
|
|
4
5
|
export declare const GoogleModelIdentifier: unique symbol;
|
|
5
6
|
/**
|
|
6
7
|
* Implements the Gemini language model integration for Theia
|
|
@@ -10,13 +11,22 @@ export declare class GoogleModel implements LanguageModel {
|
|
|
10
11
|
model: string;
|
|
11
12
|
enableStreaming: boolean;
|
|
12
13
|
apiKey: () => string | undefined;
|
|
14
|
+
retrySettings: () => GoogleLanguageModelRetrySettings;
|
|
13
15
|
protected readonly tokenUsageService?: TokenUsageService | undefined;
|
|
14
|
-
constructor(id: string, model: string, enableStreaming: boolean, apiKey: () => string | undefined, tokenUsageService?: TokenUsageService | undefined);
|
|
16
|
+
constructor(id: string, model: string, enableStreaming: boolean, apiKey: () => string | undefined, retrySettings: () => GoogleLanguageModelRetrySettings, tokenUsageService?: TokenUsageService | undefined);
|
|
15
17
|
protected getSettings(request: LanguageModelRequest): Readonly<Record<string, unknown>>;
|
|
16
18
|
request(request: UserRequest, cancellationToken?: CancellationToken): Promise<LanguageModelResponse>;
|
|
17
19
|
protected handleStreamingRequest(genAI: GoogleGenAI, request: UserRequest, cancellationToken?: CancellationToken, toolMessages?: Content[]): Promise<LanguageModelStreamResponse>;
|
|
20
|
+
protected formatToolCallResult(result: ToolCallResult): FunctionResponse['response'];
|
|
18
21
|
private createFunctionDeclarations;
|
|
19
22
|
protected handleNonStreamingRequest(genAI: GoogleGenAI, request: UserRequest): Promise<LanguageModelTextResponse>;
|
|
20
23
|
protected initializeGemini(): GoogleGenAI;
|
|
24
|
+
/**
|
|
25
|
+
* Implements a retry mechanism for the handle(non)Streaming request functions.
|
|
26
|
+
* @param fn the wrapped function to which the retry logic should be applied.
|
|
27
|
+
* @param retrySettings the configuration settings for the retry mechanism.
|
|
28
|
+
* @returns the result of the wrapped function.
|
|
29
|
+
*/
|
|
30
|
+
private withRetry;
|
|
21
31
|
}
|
|
22
32
|
//# sourceMappingURL=google-language-model.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"google-language-model.d.ts","sourceRoot":"","sources":["../../src/node/google-language-model.ts"],"names":[],"mappings":"AAgBA,OAAO,EACH,aAAa,EACb,oBAAoB,EAEpB,qBAAqB,EACrB,2BAA2B,EAE3B,yBAAyB,EACzB,iBAAiB,EACjB,WAAW,
|
|
1
|
+
{"version":3,"file":"google-language-model.d.ts","sourceRoot":"","sources":["../../src/node/google-language-model.ts"],"names":[],"mappings":"AAgBA,OAAO,EACH,aAAa,EACb,oBAAoB,EAEpB,qBAAqB,EACrB,2BAA2B,EAE3B,yBAAyB,EACzB,iBAAiB,EACjB,WAAW,EAEX,cAAc,EACjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,WAAW,EAAkD,OAAO,EAA0B,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAE/I,OAAO,EAAE,gCAAgC,EAAE,MAAM,uCAAuC,CAAC;AAsEzF,eAAO,MAAM,qBAAqB,eAAkC,CAAC;AAgBrE;;GAEG;AACH,qBAAa,WAAY,YAAW,aAAa;aAGzB,EAAE,EAAE,MAAM;IACnB,KAAK,EAAE,MAAM;IACb,eAAe,EAAE,OAAO;IACxB,MAAM,EAAE,MAAM,MAAM,GAAG,SAAS;IAChC,aAAa,EAAE,MAAM,gCAAgC;IAC5D,SAAS,CAAC,QAAQ,CAAC,iBAAiB,CAAC;gBALrB,EAAE,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,eAAe,EAAE,OAAO,EACxB,MAAM,EAAE,MAAM,MAAM,GAAG,SAAS,EAChC,aAAa,EAAE,MAAM,gCAAgC,EACzC,iBAAiB,CAAC,+BAAmB;IAG5D,SAAS,CAAC,WAAW,CAAC,OAAO,EAAE,oBAAoB,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAIjF,OAAO,CAAC,OAAO,EAAE,WAAW,EAAE,iBAAiB,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,qBAAqB,CAAC;cAiB1F,sBAAsB,CAClC,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,WAAW,EACpB,iBAAiB,CAAC,EAAE,iBAAiB,EACrC,YAAY,CAAC,EAAE,OAAO,EAAE,GACzB,OAAO,CAAC,2BAA2B,CAAC;IA2KvC,SAAS,CAAC,oBAAoB,CAAC,MAAM,EAAE,cAAc,GAAG,gBAAgB,CAAC,UAAU,CAAC;IAOpF,OAAO,CAAC,0BAA0B;cAYlB,yBAAyB,CACrC,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,WAAW,GACrB,OAAO,CAAC,yBAAyB,CAAC;IA2CrC,SAAS,CAAC,gBAAgB,IAAI,WAAW;IAUzC;;;;;OAKG;YACW,SAAS;CAqC1B"}
|
|
@@ -19,6 +19,7 @@ exports.GoogleModel = exports.GoogleModelIdentifier = void 0;
|
|
|
19
19
|
const node_crypto_1 = require("node:crypto");
|
|
20
20
|
const ai_core_1 = require("@theia/ai-core");
|
|
21
21
|
const genai_1 = require("@google/genai");
|
|
22
|
+
const promise_util_1 = require("@theia/core/lib/common/promise-util");
|
|
22
23
|
const convertMessageToPart = (message) => {
|
|
23
24
|
if (ai_core_1.LanguageModelMessage.isTextMessage(message) && message.text.length > 0) {
|
|
24
25
|
return [{ text: message.text }];
|
|
@@ -96,11 +97,12 @@ function toGoogleRole(message) {
|
|
|
96
97
|
* Implements the Gemini language model integration for Theia
|
|
97
98
|
*/
|
|
98
99
|
class GoogleModel {
|
|
99
|
-
constructor(id, model, enableStreaming, apiKey, tokenUsageService) {
|
|
100
|
+
constructor(id, model, enableStreaming, apiKey, retrySettings, tokenUsageService) {
|
|
100
101
|
this.id = id;
|
|
101
102
|
this.model = model;
|
|
102
103
|
this.enableStreaming = enableStreaming;
|
|
103
104
|
this.apiKey = apiKey;
|
|
105
|
+
this.retrySettings = retrySettings;
|
|
104
106
|
this.tokenUsageService = tokenUsageService;
|
|
105
107
|
}
|
|
106
108
|
getSettings(request) {
|
|
@@ -128,7 +130,8 @@ class GoogleModel {
|
|
|
128
130
|
const settings = this.getSettings(request);
|
|
129
131
|
const { contents: parts, systemMessage } = transformToGeminiMessages(request.messages);
|
|
130
132
|
const functionDeclarations = this.createFunctionDeclarations(request);
|
|
131
|
-
|
|
133
|
+
// Wrap the API call in the retry mechanism
|
|
134
|
+
const stream = await this.withRetry(async () => genAI.models.generateContentStream({
|
|
132
135
|
model: this.model,
|
|
133
136
|
config: {
|
|
134
137
|
systemInstruction: systemMessage,
|
|
@@ -145,7 +148,7 @@ class GoogleModel {
|
|
|
145
148
|
...settings
|
|
146
149
|
},
|
|
147
150
|
contents: [...parts, ...(toolMessages !== null && toolMessages !== void 0 ? toolMessages : [])]
|
|
148
|
-
});
|
|
151
|
+
}));
|
|
149
152
|
const that = this;
|
|
150
153
|
const asyncIterator = {
|
|
151
154
|
async *[Symbol.asyncIterator]() {
|
|
@@ -242,22 +245,19 @@ class GoogleModel {
|
|
|
242
245
|
};
|
|
243
246
|
}));
|
|
244
247
|
// Generate tool call responses
|
|
245
|
-
const calls = toolResult.map(tr => {
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
function: { name: tr.name, arguments: tr.arguments }
|
|
252
|
-
};
|
|
253
|
-
});
|
|
248
|
+
const calls = toolResult.map(tr => ({
|
|
249
|
+
finished: true,
|
|
250
|
+
id: tr.id,
|
|
251
|
+
result: tr.result,
|
|
252
|
+
function: { name: tr.name, arguments: tr.arguments }
|
|
253
|
+
}));
|
|
254
254
|
yield { tool_calls: calls };
|
|
255
255
|
// Format tool responses for Gemini
|
|
256
256
|
const toolResponses = toolResult.map(call => ({
|
|
257
257
|
functionResponse: {
|
|
258
258
|
id: call.id,
|
|
259
259
|
name: call.name,
|
|
260
|
-
response:
|
|
260
|
+
response: that.formatToolCallResult(call.result)
|
|
261
261
|
}
|
|
262
262
|
}));
|
|
263
263
|
const responseMessage = { role: 'user', parts: toolResponses };
|
|
@@ -282,6 +282,12 @@ class GoogleModel {
|
|
|
282
282
|
};
|
|
283
283
|
return { stream: asyncIterator };
|
|
284
284
|
}
|
|
285
|
+
formatToolCallResult(result) {
|
|
286
|
+
// If "output" and "error" keys are not specified, then whole "response" is treated as function output.
|
|
287
|
+
// There is no particular support for different types of output such as images so we use the structure provided by the tool call.
|
|
288
|
+
// Using the format that is used for image messages does not seem to yield any different results.
|
|
289
|
+
return { output: result };
|
|
290
|
+
}
|
|
285
291
|
createFunctionDeclarations(request) {
|
|
286
292
|
if (!request.tools || request.tools.length === 0) {
|
|
287
293
|
return [];
|
|
@@ -296,7 +302,8 @@ class GoogleModel {
|
|
|
296
302
|
const settings = this.getSettings(request);
|
|
297
303
|
const { contents: parts, systemMessage } = transformToGeminiMessages(request.messages);
|
|
298
304
|
const functionDeclarations = this.createFunctionDeclarations(request);
|
|
299
|
-
|
|
305
|
+
// Wrap the API call in the retry mechanism
|
|
306
|
+
const model = await this.withRetry(async () => genAI.models.generateContent({
|
|
300
307
|
model: this.model,
|
|
301
308
|
config: {
|
|
302
309
|
systemInstruction: systemMessage,
|
|
@@ -309,7 +316,7 @@ class GoogleModel {
|
|
|
309
316
|
...settings
|
|
310
317
|
},
|
|
311
318
|
contents: parts
|
|
312
|
-
});
|
|
319
|
+
}));
|
|
313
320
|
try {
|
|
314
321
|
const responseText = model.text;
|
|
315
322
|
// Record token usage if available
|
|
@@ -338,6 +345,49 @@ class GoogleModel {
|
|
|
338
345
|
// TODO test vertexai
|
|
339
346
|
return new genai_1.GoogleGenAI({ apiKey, vertexai: false });
|
|
340
347
|
}
|
|
348
|
+
/**
|
|
349
|
+
* Implements a retry mechanism for the handle(non)Streaming request functions.
|
|
350
|
+
* @param fn the wrapped function to which the retry logic should be applied.
|
|
351
|
+
* @param retrySettings the configuration settings for the retry mechanism.
|
|
352
|
+
* @returns the result of the wrapped function.
|
|
353
|
+
*/
|
|
354
|
+
async withRetry(fn) {
|
|
355
|
+
const { maxRetriesOnErrors, retryDelayOnRateLimitError, retryDelayOnOtherErrors } = this.retrySettings();
|
|
356
|
+
for (let i = 0; i <= maxRetriesOnErrors; i++) {
|
|
357
|
+
try {
|
|
358
|
+
return await fn();
|
|
359
|
+
}
|
|
360
|
+
catch (error) {
|
|
361
|
+
if (i === maxRetriesOnErrors) {
|
|
362
|
+
// no retries left - throw the original error
|
|
363
|
+
throw error;
|
|
364
|
+
}
|
|
365
|
+
const message = error.message;
|
|
366
|
+
// Check for rate limit exhaustion (usually, there is a rate limit per minute, so we can retry after a delay...)
|
|
367
|
+
if (message && message.includes('429 Too Many Requests')) {
|
|
368
|
+
if (retryDelayOnRateLimitError < 0) {
|
|
369
|
+
// rate limit error should not retried because of the setting
|
|
370
|
+
throw error;
|
|
371
|
+
}
|
|
372
|
+
const delayMs = retryDelayOnRateLimitError * 1000;
|
|
373
|
+
console.warn(`Received 429 (Too Many Requests). Retrying in ${retryDelayOnRateLimitError}s. Attempt ${i + 1} of ${maxRetriesOnErrors}.`);
|
|
374
|
+
await (0, promise_util_1.wait)(delayMs);
|
|
375
|
+
}
|
|
376
|
+
else if (retryDelayOnOtherErrors < 0) {
|
|
377
|
+
// Other errors should not retried because of the setting
|
|
378
|
+
throw error;
|
|
379
|
+
}
|
|
380
|
+
else {
|
|
381
|
+
const delayMs = retryDelayOnOtherErrors * 1000;
|
|
382
|
+
console.warn(`Request failed: ${message}. Retrying in ${retryDelayOnOtherErrors}s. Attempt ${i + 1} of ${maxRetriesOnErrors}.`);
|
|
383
|
+
await (0, promise_util_1.wait)(delayMs);
|
|
384
|
+
}
|
|
385
|
+
// -> reiterate the loop for the next attempt
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
// This should not be reached
|
|
389
|
+
throw new Error('Retry mechanism failed unexpectedly.');
|
|
390
|
+
}
|
|
341
391
|
}
|
|
342
392
|
exports.GoogleModel = GoogleModel;
|
|
343
393
|
//# sourceMappingURL=google-language-model.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"google-language-model.js","sourceRoot":"","sources":["../../src/node/google-language-model.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"google-language-model.js","sourceRoot":"","sources":["../../src/node/google-language-model.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,21 @@
|
|
|
1
1
|
import { LanguageModelRegistry, TokenUsageService } from '@theia/ai-core';
|
|
2
2
|
import { GoogleLanguageModelsManager, GoogleModelDescription } from '../common';
|
|
3
|
+
export interface GoogleLanguageModelRetrySettings {
|
|
4
|
+
maxRetriesOnErrors: number;
|
|
5
|
+
retryDelayOnRateLimitError: number;
|
|
6
|
+
retryDelayOnOtherErrors: number;
|
|
7
|
+
}
|
|
3
8
|
export declare class GoogleLanguageModelsManagerImpl implements GoogleLanguageModelsManager {
|
|
4
9
|
protected _apiKey: string | undefined;
|
|
10
|
+
protected retrySettings: GoogleLanguageModelRetrySettings;
|
|
5
11
|
protected readonly languageModelRegistry: LanguageModelRegistry;
|
|
6
12
|
protected readonly tokenUsageService: TokenUsageService;
|
|
7
13
|
get apiKey(): string | undefined;
|
|
8
14
|
createOrUpdateLanguageModels(...modelDescriptions: GoogleModelDescription[]): Promise<void>;
|
|
9
15
|
removeLanguageModels(...modelIds: string[]): void;
|
|
10
16
|
setApiKey(apiKey: string | undefined): void;
|
|
17
|
+
setMaxRetriesOnErrors(maxRetries: number): void;
|
|
18
|
+
setRetryDelayOnRateLimitError(retryDelay: number): void;
|
|
19
|
+
setRetryDelayOnOtherErrors(retryDelay: number): void;
|
|
11
20
|
}
|
|
12
21
|
//# sourceMappingURL=google-language-models-manager-impl.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"google-language-models-manager-impl.d.ts","sourceRoot":"","sources":["../../src/node/google-language-models-manager-impl.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAG1E,OAAO,EAAE,2BAA2B,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAEhF,qBACa,+BAAgC,YAAW,2BAA2B;
|
|
1
|
+
{"version":3,"file":"google-language-models-manager-impl.d.ts","sourceRoot":"","sources":["../../src/node/google-language-models-manager-impl.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAG1E,OAAO,EAAE,2BAA2B,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAEhF,MAAM,WAAW,gCAAgC;IAC7C,kBAAkB,EAAE,MAAM,CAAC;IAC3B,0BAA0B,EAAE,MAAM,CAAC;IACnC,uBAAuB,EAAE,MAAM,CAAC;CACnC;AAED,qBACa,+BAAgC,YAAW,2BAA2B;IAC/E,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,SAAS,CAAC,aAAa,EAAE,gCAAgC,CAIvD;IAGF,SAAS,CAAC,QAAQ,CAAC,qBAAqB,EAAE,qBAAqB,CAAC;IAGhE,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAExD,IAAI,MAAM,IAAI,MAAM,GAAG,SAAS,CAE/B;IAEK,4BAA4B,CAAC,GAAG,iBAAiB,EAAE,sBAAsB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAsCjG,oBAAoB,CAAC,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI;IAIjD,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAQ3C,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAI/C,6BAA6B,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAIvD,0BAA0B,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;CAGvD"}
|
|
@@ -21,6 +21,13 @@ const ai_core_1 = require("@theia/ai-core");
|
|
|
21
21
|
const inversify_1 = require("@theia/core/shared/inversify");
|
|
22
22
|
const google_language_model_1 = require("./google-language-model");
|
|
23
23
|
let GoogleLanguageModelsManagerImpl = class GoogleLanguageModelsManagerImpl {
|
|
24
|
+
constructor() {
|
|
25
|
+
this.retrySettings = {
|
|
26
|
+
maxRetriesOnErrors: 3,
|
|
27
|
+
retryDelayOnRateLimitError: 60,
|
|
28
|
+
retryDelayOnOtherErrors: -1
|
|
29
|
+
};
|
|
30
|
+
}
|
|
24
31
|
get apiKey() {
|
|
25
32
|
var _a, _b;
|
|
26
33
|
return (_b = (_a = this._apiKey) !== null && _a !== void 0 ? _a : process.env.GOOGLE_API_KEY) !== null && _b !== void 0 ? _b : process.env.GEMINI_API_KEY;
|
|
@@ -37,6 +44,7 @@ let GoogleLanguageModelsManagerImpl = class GoogleLanguageModelsManagerImpl {
|
|
|
37
44
|
}
|
|
38
45
|
return undefined;
|
|
39
46
|
};
|
|
47
|
+
const retrySettingsProvider = () => this.retrySettings;
|
|
40
48
|
if (model) {
|
|
41
49
|
if (!(model instanceof google_language_model_1.GoogleModel)) {
|
|
42
50
|
console.warn(`Gemini: model ${modelDescription.id} is not a Gemini model`);
|
|
@@ -45,10 +53,11 @@ let GoogleLanguageModelsManagerImpl = class GoogleLanguageModelsManagerImpl {
|
|
|
45
53
|
model.model = modelDescription.model;
|
|
46
54
|
model.enableStreaming = modelDescription.enableStreaming;
|
|
47
55
|
model.apiKey = apiKeyProvider;
|
|
56
|
+
model.retrySettings = retrySettingsProvider;
|
|
48
57
|
}
|
|
49
58
|
else {
|
|
50
59
|
this.languageModelRegistry.addLanguageModels([
|
|
51
|
-
new google_language_model_1.GoogleModel(modelDescription.id, modelDescription.model, modelDescription.enableStreaming, apiKeyProvider, this.tokenUsageService)
|
|
60
|
+
new google_language_model_1.GoogleModel(modelDescription.id, modelDescription.model, modelDescription.enableStreaming, apiKeyProvider, retrySettingsProvider, this.tokenUsageService)
|
|
52
61
|
]);
|
|
53
62
|
}
|
|
54
63
|
}
|
|
@@ -64,6 +73,15 @@ let GoogleLanguageModelsManagerImpl = class GoogleLanguageModelsManagerImpl {
|
|
|
64
73
|
this._apiKey = undefined;
|
|
65
74
|
}
|
|
66
75
|
}
|
|
76
|
+
setMaxRetriesOnErrors(maxRetries) {
|
|
77
|
+
this.retrySettings.maxRetriesOnErrors = maxRetries;
|
|
78
|
+
}
|
|
79
|
+
setRetryDelayOnRateLimitError(retryDelay) {
|
|
80
|
+
this.retrySettings.retryDelayOnRateLimitError = retryDelay;
|
|
81
|
+
}
|
|
82
|
+
setRetryDelayOnOtherErrors(retryDelay) {
|
|
83
|
+
this.retrySettings.retryDelayOnOtherErrors = retryDelay;
|
|
84
|
+
}
|
|
67
85
|
};
|
|
68
86
|
exports.GoogleLanguageModelsManagerImpl = GoogleLanguageModelsManagerImpl;
|
|
69
87
|
tslib_1.__decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"google-language-models-manager-impl.js","sourceRoot":"","sources":["../../src/node/google-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,4CAA0E;AAC1E,4DAAkE;AAClE,mEAAsD;
|
|
1
|
+
{"version":3,"file":"google-language-models-manager-impl.js","sourceRoot":"","sources":["../../src/node/google-language-models-manager-impl.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@theia/ai-google",
|
|
3
|
-
"version": "1.63.
|
|
3
|
+
"version": "1.63.1",
|
|
4
4
|
"description": "Theia - Google AI Integration",
|
|
5
5
|
"dependencies": {
|
|
6
6
|
"@google/genai": "^1.3.0",
|
|
7
|
-
"@theia/ai-core": "1.63.
|
|
8
|
-
"@theia/core": "1.63.
|
|
7
|
+
"@theia/ai-core": "1.63.1",
|
|
8
|
+
"@theia/core": "1.63.1"
|
|
9
9
|
},
|
|
10
10
|
"publishConfig": {
|
|
11
11
|
"access": "public"
|
|
@@ -44,10 +44,10 @@
|
|
|
44
44
|
"watch": "theiaext watch"
|
|
45
45
|
},
|
|
46
46
|
"devDependencies": {
|
|
47
|
-
"@theia/ext-scripts": "1.
|
|
47
|
+
"@theia/ext-scripts": "1.63.1"
|
|
48
48
|
},
|
|
49
49
|
"nyc": {
|
|
50
50
|
"extends": "../../configs/nyc.json"
|
|
51
51
|
},
|
|
52
|
-
"gitHead": "
|
|
52
|
+
"gitHead": "c1f24d58391fec06087b0c4526ce97aa248c3405"
|
|
53
53
|
}
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
import { FrontendApplicationContribution, PreferenceService } from '@theia/core/lib/browser';
|
|
18
18
|
import { inject, injectable } from '@theia/core/shared/inversify';
|
|
19
19
|
import { GoogleLanguageModelsManager, GoogleModelDescription } from '../common';
|
|
20
|
-
import { API_KEY_PREF, MODELS_PREF } from './google-preferences';
|
|
20
|
+
import { API_KEY_PREF, MODELS_PREF, MAX_RETRIES, RETRY_DELAY_OTHER_ERRORS, RETRY_DELAY_RATE_LIMIT } from './google-preferences';
|
|
21
21
|
|
|
22
22
|
const GOOGLE_PROVIDER_ID = 'google';
|
|
23
23
|
|
|
@@ -37,6 +37,10 @@ export class GoogleFrontendApplicationContribution implements FrontendApplicatio
|
|
|
37
37
|
const apiKey = this.preferenceService.get<string>(API_KEY_PREF, undefined);
|
|
38
38
|
this.manager.setApiKey(apiKey);
|
|
39
39
|
|
|
40
|
+
this.manager.setMaxRetriesOnErrors(this.preferenceService.get<number>(MAX_RETRIES, 3));
|
|
41
|
+
this.manager.setRetryDelayOnRateLimitError(this.preferenceService.get<number>(RETRY_DELAY_RATE_LIMIT, 60));
|
|
42
|
+
this.manager.setRetryDelayOnOtherErrors(this.preferenceService.get<number>(RETRY_DELAY_OTHER_ERRORS, -1));
|
|
43
|
+
|
|
40
44
|
const models = this.preferenceService.get<string[]>(MODELS_PREF, []);
|
|
41
45
|
this.manager.createOrUpdateLanguageModels(...models.map(modelId => this.createGeminiModelDescription(modelId)));
|
|
42
46
|
this.prevModels = [...models];
|
|
@@ -44,6 +48,12 @@ export class GoogleFrontendApplicationContribution implements FrontendApplicatio
|
|
|
44
48
|
this.preferenceService.onPreferenceChanged(event => {
|
|
45
49
|
if (event.preferenceName === API_KEY_PREF) {
|
|
46
50
|
this.manager.setApiKey(event.newValue);
|
|
51
|
+
} else if (event.preferenceName === MAX_RETRIES) {
|
|
52
|
+
this.manager.setMaxRetriesOnErrors(event.newValue);
|
|
53
|
+
} else if (event.preferenceName === RETRY_DELAY_RATE_LIMIT) {
|
|
54
|
+
this.manager.setRetryDelayOnRateLimitError(event.newValue);
|
|
55
|
+
} else if (event.preferenceName === RETRY_DELAY_OTHER_ERRORS) {
|
|
56
|
+
this.manager.setRetryDelayOnOtherErrors(event.newValue);
|
|
47
57
|
} else if (event.preferenceName === MODELS_PREF) {
|
|
48
58
|
this.handleModelChanges(event.newValue as string[]);
|
|
49
59
|
}
|
|
@@ -20,6 +20,9 @@ import { nls } from '@theia/core';
|
|
|
20
20
|
|
|
21
21
|
export const API_KEY_PREF = 'ai-features.google.apiKey';
|
|
22
22
|
export const MODELS_PREF = 'ai-features.google.models';
|
|
23
|
+
export const MAX_RETRIES = 'ai-features.google.maxRetriesOnErrors';
|
|
24
|
+
export const RETRY_DELAY_RATE_LIMIT = 'ai-features.google.retryDelayOnRateLimitError';
|
|
25
|
+
export const RETRY_DELAY_OTHER_ERRORS = 'ai-features.google.retryDelayOnOtherErrors';
|
|
23
26
|
|
|
24
27
|
export const GooglePreferencesSchema: PreferenceSchema = {
|
|
25
28
|
type: 'object',
|
|
@@ -40,5 +43,31 @@ export const GooglePreferencesSchema: PreferenceSchema = {
|
|
|
40
43
|
type: 'string'
|
|
41
44
|
}
|
|
42
45
|
},
|
|
46
|
+
[MAX_RETRIES]: {
|
|
47
|
+
type: 'integer',
|
|
48
|
+
description: nls.localize('theia/ai/google/maxRetriesOnErrors/description',
|
|
49
|
+
'Maximum number of retries in case of errors. If smaller than 1, then the retry logic is disabled'),
|
|
50
|
+
title: AI_CORE_PREFERENCES_TITLE,
|
|
51
|
+
default: 3,
|
|
52
|
+
minimum: 0
|
|
53
|
+
},
|
|
54
|
+
[RETRY_DELAY_RATE_LIMIT]: {
|
|
55
|
+
type: 'number',
|
|
56
|
+
description: nls.localize('theia/ai/google/retryDelayOnRateLimitError/description',
|
|
57
|
+
'Delay in seconds between retries in case of rate limit errors. See https://ai.google.dev/gemini-api/docs/rate-limits'),
|
|
58
|
+
title: AI_CORE_PREFERENCES_TITLE,
|
|
59
|
+
default: 60,
|
|
60
|
+
minimum: 0
|
|
61
|
+
},
|
|
62
|
+
[RETRY_DELAY_OTHER_ERRORS]: {
|
|
63
|
+
type: 'number',
|
|
64
|
+
description: nls.localize('theia/ai/google/retryDelayOnOtherErrors/description',
|
|
65
|
+
'Delay in seconds between retries in case of other errors (sometimes the Google GenAI reports errors such as incomplete JSON syntax returned from the model \
|
|
66
|
+
or 500 Internal Server Error). Setting this to -1 prevents retries in these cases. Otherwise a retry happens either immediately (if set to 0) or after \
|
|
67
|
+
this delay in seconds (if set to a positive number).'),
|
|
68
|
+
title: AI_CORE_PREFERENCES_TITLE,
|
|
69
|
+
default: -1,
|
|
70
|
+
minimum: -1
|
|
71
|
+
}
|
|
43
72
|
}
|
|
44
73
|
};
|
|
@@ -38,9 +38,13 @@ export interface GoogleModelDescription {
|
|
|
38
38
|
maxTokens?: number;
|
|
39
39
|
|
|
40
40
|
}
|
|
41
|
+
|
|
41
42
|
export interface GoogleLanguageModelsManager {
|
|
42
43
|
apiKey: string | undefined;
|
|
43
44
|
setApiKey(key: string | undefined): void;
|
|
45
|
+
setMaxRetriesOnErrors(maxRetries: number): void;
|
|
46
|
+
setRetryDelayOnRateLimitError(retryDelay: number): void;
|
|
47
|
+
setRetryDelayOnOtherErrors(retryDelay: number): void;
|
|
44
48
|
createOrUpdateLanguageModels(...models: GoogleModelDescription[]): Promise<void>;
|
|
45
49
|
removeLanguageModels(...modelIds: string[]): void
|
|
46
50
|
}
|
|
@@ -24,10 +24,13 @@ import {
|
|
|
24
24
|
LanguageModelTextResponse,
|
|
25
25
|
TokenUsageService,
|
|
26
26
|
UserRequest,
|
|
27
|
-
ImageContent
|
|
27
|
+
ImageContent,
|
|
28
|
+
ToolCallResult
|
|
28
29
|
} from '@theia/ai-core';
|
|
29
30
|
import { CancellationToken } from '@theia/core';
|
|
30
|
-
import { GoogleGenAI, FunctionCallingConfigMode, FunctionDeclaration, Content, Schema, Part, Modality } from '@google/genai';
|
|
31
|
+
import { GoogleGenAI, FunctionCallingConfigMode, FunctionDeclaration, Content, Schema, Part, Modality, FunctionResponse } from '@google/genai';
|
|
32
|
+
import { wait } from '@theia/core/lib/common/promise-util';
|
|
33
|
+
import { GoogleLanguageModelRetrySettings } from './google-language-models-manager-impl';
|
|
31
34
|
|
|
32
35
|
interface ToolCallback {
|
|
33
36
|
readonly name: string;
|
|
@@ -123,6 +126,7 @@ export class GoogleModel implements LanguageModel {
|
|
|
123
126
|
public model: string,
|
|
124
127
|
public enableStreaming: boolean,
|
|
125
128
|
public apiKey: () => string | undefined,
|
|
129
|
+
public retrySettings: () => GoogleLanguageModelRetrySettings,
|
|
126
130
|
protected readonly tokenUsageService?: TokenUsageService
|
|
127
131
|
) { }
|
|
128
132
|
|
|
@@ -157,24 +161,26 @@ export class GoogleModel implements LanguageModel {
|
|
|
157
161
|
const { contents: parts, systemMessage } = transformToGeminiMessages(request.messages);
|
|
158
162
|
const functionDeclarations = this.createFunctionDeclarations(request);
|
|
159
163
|
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
164
|
+
// Wrap the API call in the retry mechanism
|
|
165
|
+
const stream = await this.withRetry(async () =>
|
|
166
|
+
genAI.models.generateContentStream({
|
|
167
|
+
model: this.model,
|
|
168
|
+
config: {
|
|
169
|
+
systemInstruction: systemMessage,
|
|
170
|
+
toolConfig: {
|
|
171
|
+
functionCallingConfig: {
|
|
172
|
+
mode: FunctionCallingConfigMode.AUTO,
|
|
173
|
+
}
|
|
174
|
+
},
|
|
175
|
+
responseModalities: [Modality.TEXT],
|
|
176
|
+
tools: [{
|
|
177
|
+
functionDeclarations
|
|
178
|
+
}],
|
|
179
|
+
temperature: 1,
|
|
180
|
+
...settings
|
|
168
181
|
},
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
functionDeclarations
|
|
172
|
-
}],
|
|
173
|
-
temperature: 1,
|
|
174
|
-
...settings
|
|
175
|
-
},
|
|
176
|
-
contents: [...parts, ...(toolMessages ?? [])]
|
|
177
|
-
});
|
|
182
|
+
contents: [...parts, ...(toolMessages ?? [])]
|
|
183
|
+
}));
|
|
178
184
|
|
|
179
185
|
const that = this;
|
|
180
186
|
|
|
@@ -275,15 +281,12 @@ export class GoogleModel implements LanguageModel {
|
|
|
275
281
|
}));
|
|
276
282
|
|
|
277
283
|
// Generate tool call responses
|
|
278
|
-
const calls = toolResult.map(tr => {
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
function: { name: tr.name, arguments: tr.arguments }
|
|
285
|
-
};
|
|
286
|
-
});
|
|
284
|
+
const calls = toolResult.map(tr => ({
|
|
285
|
+
finished: true,
|
|
286
|
+
id: tr.id,
|
|
287
|
+
result: tr.result,
|
|
288
|
+
function: { name: tr.name, arguments: tr.arguments }
|
|
289
|
+
}));
|
|
287
290
|
yield { tool_calls: calls };
|
|
288
291
|
|
|
289
292
|
// Format tool responses for Gemini
|
|
@@ -291,7 +294,7 @@ export class GoogleModel implements LanguageModel {
|
|
|
291
294
|
functionResponse: {
|
|
292
295
|
id: call.id,
|
|
293
296
|
name: call.name,
|
|
294
|
-
response:
|
|
297
|
+
response: that.formatToolCallResult(call.result)
|
|
295
298
|
}
|
|
296
299
|
}));
|
|
297
300
|
const responseMessage: Content = { role: 'user', parts: toolResponses };
|
|
@@ -324,6 +327,13 @@ export class GoogleModel implements LanguageModel {
|
|
|
324
327
|
return { stream: asyncIterator };
|
|
325
328
|
}
|
|
326
329
|
|
|
330
|
+
protected formatToolCallResult(result: ToolCallResult): FunctionResponse['response'] {
|
|
331
|
+
// If "output" and "error" keys are not specified, then whole "response" is treated as function output.
|
|
332
|
+
// There is no particular support for different types of output such as images so we use the structure provided by the tool call.
|
|
333
|
+
// Using the format that is used for image messages does not seem to yield any different results.
|
|
334
|
+
return { output: result };
|
|
335
|
+
}
|
|
336
|
+
|
|
327
337
|
private createFunctionDeclarations(request: LanguageModelRequest): FunctionDeclaration[] {
|
|
328
338
|
if (!request.tools || request.tools.length === 0) {
|
|
329
339
|
return [];
|
|
@@ -344,7 +354,8 @@ export class GoogleModel implements LanguageModel {
|
|
|
344
354
|
const { contents: parts, systemMessage } = transformToGeminiMessages(request.messages);
|
|
345
355
|
const functionDeclarations = this.createFunctionDeclarations(request);
|
|
346
356
|
|
|
347
|
-
|
|
357
|
+
// Wrap the API call in the retry mechanism
|
|
358
|
+
const model = await this.withRetry(async () => genAI.models.generateContent({
|
|
348
359
|
model: this.model,
|
|
349
360
|
config: {
|
|
350
361
|
systemInstruction: systemMessage,
|
|
@@ -357,7 +368,7 @@ export class GoogleModel implements LanguageModel {
|
|
|
357
368
|
...settings
|
|
358
369
|
},
|
|
359
370
|
contents: parts
|
|
360
|
-
});
|
|
371
|
+
}));
|
|
361
372
|
|
|
362
373
|
try {
|
|
363
374
|
const responseText = model.text;
|
|
@@ -390,4 +401,48 @@ export class GoogleModel implements LanguageModel {
|
|
|
390
401
|
// TODO test vertexai
|
|
391
402
|
return new GoogleGenAI({ apiKey, vertexai: false });
|
|
392
403
|
}
|
|
404
|
+
|
|
405
|
+
/**
|
|
406
|
+
* Implements a retry mechanism for the handle(non)Streaming request functions.
|
|
407
|
+
* @param fn the wrapped function to which the retry logic should be applied.
|
|
408
|
+
* @param retrySettings the configuration settings for the retry mechanism.
|
|
409
|
+
* @returns the result of the wrapped function.
|
|
410
|
+
*/
|
|
411
|
+
private async withRetry<T>(fn: () => Promise<T>): Promise<T> {
|
|
412
|
+
const { maxRetriesOnErrors, retryDelayOnRateLimitError, retryDelayOnOtherErrors } = this.retrySettings();
|
|
413
|
+
|
|
414
|
+
for (let i = 0; i <= maxRetriesOnErrors; i++) {
|
|
415
|
+
try {
|
|
416
|
+
return await fn();
|
|
417
|
+
} catch (error) {
|
|
418
|
+
if (i === maxRetriesOnErrors) {
|
|
419
|
+
// no retries left - throw the original error
|
|
420
|
+
throw error;
|
|
421
|
+
}
|
|
422
|
+
|
|
423
|
+
const message = (error as Error).message;
|
|
424
|
+
// Check for rate limit exhaustion (usually, there is a rate limit per minute, so we can retry after a delay...)
|
|
425
|
+
if (message && message.includes('429 Too Many Requests')) {
|
|
426
|
+
if (retryDelayOnRateLimitError < 0) {
|
|
427
|
+
// rate limit error should not retried because of the setting
|
|
428
|
+
throw error;
|
|
429
|
+
}
|
|
430
|
+
|
|
431
|
+
const delayMs = retryDelayOnRateLimitError * 1000;
|
|
432
|
+
console.warn(`Received 429 (Too Many Requests). Retrying in ${retryDelayOnRateLimitError}s. Attempt ${i + 1} of ${maxRetriesOnErrors}.`);
|
|
433
|
+
await wait(delayMs);
|
|
434
|
+
} else if (retryDelayOnOtherErrors < 0) {
|
|
435
|
+
// Other errors should not retried because of the setting
|
|
436
|
+
throw error;
|
|
437
|
+
} else {
|
|
438
|
+
const delayMs = retryDelayOnOtherErrors * 1000;
|
|
439
|
+
console.warn(`Request failed: ${message}. Retrying in ${retryDelayOnOtherErrors}s. Attempt ${i + 1} of ${maxRetriesOnErrors}.`);
|
|
440
|
+
await wait(delayMs);
|
|
441
|
+
}
|
|
442
|
+
// -> reiterate the loop for the next attempt
|
|
443
|
+
}
|
|
444
|
+
}
|
|
445
|
+
// This should not be reached
|
|
446
|
+
throw new Error('Retry mechanism failed unexpectedly.');
|
|
447
|
+
}
|
|
393
448
|
}
|
|
@@ -19,10 +19,20 @@ import { inject, injectable } from '@theia/core/shared/inversify';
|
|
|
19
19
|
import { GoogleModel } from './google-language-model';
|
|
20
20
|
import { GoogleLanguageModelsManager, GoogleModelDescription } from '../common';
|
|
21
21
|
|
|
22
|
+
export interface GoogleLanguageModelRetrySettings {
|
|
23
|
+
maxRetriesOnErrors: number;
|
|
24
|
+
retryDelayOnRateLimitError: number;
|
|
25
|
+
retryDelayOnOtherErrors: number;
|
|
26
|
+
}
|
|
27
|
+
|
|
22
28
|
@injectable()
|
|
23
29
|
export class GoogleLanguageModelsManagerImpl implements GoogleLanguageModelsManager {
|
|
24
|
-
|
|
25
30
|
protected _apiKey: string | undefined;
|
|
31
|
+
protected retrySettings: GoogleLanguageModelRetrySettings = {
|
|
32
|
+
maxRetriesOnErrors: 3,
|
|
33
|
+
retryDelayOnRateLimitError: 60,
|
|
34
|
+
retryDelayOnOtherErrors: -1
|
|
35
|
+
};
|
|
26
36
|
|
|
27
37
|
@inject(LanguageModelRegistry)
|
|
28
38
|
protected readonly languageModelRegistry: LanguageModelRegistry;
|
|
@@ -46,6 +56,7 @@ export class GoogleLanguageModelsManagerImpl implements GoogleLanguageModelsMana
|
|
|
46
56
|
}
|
|
47
57
|
return undefined;
|
|
48
58
|
};
|
|
59
|
+
const retrySettingsProvider = () => this.retrySettings;
|
|
49
60
|
|
|
50
61
|
if (model) {
|
|
51
62
|
if (!(model instanceof GoogleModel)) {
|
|
@@ -55,6 +66,7 @@ export class GoogleLanguageModelsManagerImpl implements GoogleLanguageModelsMana
|
|
|
55
66
|
model.model = modelDescription.model;
|
|
56
67
|
model.enableStreaming = modelDescription.enableStreaming;
|
|
57
68
|
model.apiKey = apiKeyProvider;
|
|
69
|
+
model.retrySettings = retrySettingsProvider;
|
|
58
70
|
} else {
|
|
59
71
|
this.languageModelRegistry.addLanguageModels([
|
|
60
72
|
new GoogleModel(
|
|
@@ -62,6 +74,7 @@ export class GoogleLanguageModelsManagerImpl implements GoogleLanguageModelsMana
|
|
|
62
74
|
modelDescription.model,
|
|
63
75
|
modelDescription.enableStreaming,
|
|
64
76
|
apiKeyProvider,
|
|
77
|
+
retrySettingsProvider,
|
|
65
78
|
this.tokenUsageService
|
|
66
79
|
)
|
|
67
80
|
]);
|
|
@@ -80,4 +93,16 @@ export class GoogleLanguageModelsManagerImpl implements GoogleLanguageModelsMana
|
|
|
80
93
|
this._apiKey = undefined;
|
|
81
94
|
}
|
|
82
95
|
}
|
|
96
|
+
|
|
97
|
+
setMaxRetriesOnErrors(maxRetries: number): void {
|
|
98
|
+
this.retrySettings.maxRetriesOnErrors = maxRetries;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
setRetryDelayOnRateLimitError(retryDelay: number): void {
|
|
102
|
+
this.retrySettings.retryDelayOnRateLimitError = retryDelay;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
setRetryDelayOnOtherErrors(retryDelay: number): void {
|
|
106
|
+
this.retrySettings.retryDelayOnOtherErrors = retryDelay;
|
|
107
|
+
}
|
|
83
108
|
}
|