@theia/ai-huggingface 1.70.0-next.12 → 1.70.0-next.18
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/huggingface-frontend-application-contribution.d.ts +1 -4
- package/lib/browser/huggingface-frontend-application-contribution.d.ts.map +1 -1
- package/lib/browser/huggingface-frontend-application-contribution.js +8 -5
- package/lib/browser/huggingface-frontend-application-contribution.js.map +1 -1
- package/lib/common/huggingface-language-models-manager.d.ts +1 -0
- package/lib/common/huggingface-language-models-manager.d.ts.map +1 -1
- package/lib/node/huggingface-language-model.d.ts +2 -1
- package/lib/node/huggingface-language-model.d.ts.map +1 -1
- package/lib/node/huggingface-language-model.js +4 -2
- package/lib/node/huggingface-language-model.js.map +1 -1
- package/lib/node/huggingface-language-models-manager-impl.d.ts +2 -0
- package/lib/node/huggingface-language-models-manager-impl.d.ts.map +1 -1
- package/lib/node/huggingface-language-models-manager-impl.js +12 -2
- package/lib/node/huggingface-language-models-manager-impl.js.map +1 -1
- package/package.json +4 -4
- package/src/browser/huggingface-frontend-application-contribution.ts +8 -5
- package/src/common/huggingface-language-models-manager.ts +1 -0
- package/src/node/huggingface-language-model.ts +4 -2
- package/src/node/huggingface-language-models-manager-impl.ts +14 -1
|
@@ -7,10 +7,7 @@ export declare class HuggingFaceFrontendApplicationContribution implements Front
|
|
|
7
7
|
protected prevModels: string[];
|
|
8
8
|
onStart(): void;
|
|
9
9
|
protected handleModelChanges(newModels: string[]): void;
|
|
10
|
-
|
|
11
|
-
* Called when the API key changes. Updates all HuggingFace models on the manager to ensure the new key is used.
|
|
12
|
-
*/
|
|
13
|
-
protected handleKeyChange(newApiKey: string | undefined): void;
|
|
10
|
+
protected updateAllModels(): void;
|
|
14
11
|
protected createHuggingFaceModelDescription(modelId: string): HuggingFaceModelDescription;
|
|
15
12
|
}
|
|
16
13
|
//# sourceMappingURL=huggingface-frontend-application-contribution.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"huggingface-frontend-application-contribution.d.ts","sourceRoot":"","sources":["../../src/browser/huggingface-frontend-application-contribution.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,+BAA+B,EAAE,MAAM,yBAAyB,CAAC;AAE1E,OAAO,EAAE,gCAAgC,EAAE,2BAA2B,EAAE,MAAM,WAAW,CAAC;AAE1F,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAGhD,qBACa,0CAA2C,YAAW,+BAA+B;IAG9F,SAAS,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAG/C,SAAS,CAAC,OAAO,EAAE,gCAAgC,CAAC;IAEpD,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,CAAM;IAEpC,OAAO,IAAI,IAAI;
|
|
1
|
+
{"version":3,"file":"huggingface-frontend-application-contribution.d.ts","sourceRoot":"","sources":["../../src/browser/huggingface-frontend-application-contribution.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,+BAA+B,EAAE,MAAM,yBAAyB,CAAC;AAE1E,OAAO,EAAE,gCAAgC,EAAE,2BAA2B,EAAE,MAAM,WAAW,CAAC;AAE1F,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAGhD,qBACa,0CAA2C,YAAW,+BAA+B;IAG9F,SAAS,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAG/C,SAAS,CAAC,OAAO,EAAE,gCAAgC,CAAC;IAEpD,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,CAAM;IAEpC,OAAO,IAAI,IAAI;IA2Bf,SAAS,CAAC,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI;IAYvD,SAAS,CAAC,eAAe,IAAI,IAAI;IAMjC,SAAS,CAAC,iCAAiC,CACvC,OAAO,EAAE,MAAM,GAChB,2BAA2B;CAOjC"}
|
|
@@ -30,6 +30,8 @@ let HuggingFaceFrontendApplicationContribution = class HuggingFaceFrontendApplic
|
|
|
30
30
|
this.preferenceService.ready.then(() => {
|
|
31
31
|
const apiKey = this.preferenceService.get(huggingface_preferences_1.API_KEY_PREF, undefined);
|
|
32
32
|
this.manager.setApiKey(apiKey);
|
|
33
|
+
const proxyUri = this.preferenceService.get('http.proxy', undefined);
|
|
34
|
+
this.manager.setProxyUrl(proxyUri);
|
|
33
35
|
const models = this.preferenceService.get(huggingface_preferences_1.MODELS_PREF, []);
|
|
34
36
|
this.manager.createOrUpdateLanguageModels(...models.map(modelId => this.createHuggingFaceModelDescription(modelId)));
|
|
35
37
|
this.prevModels = [...models];
|
|
@@ -37,11 +39,15 @@ let HuggingFaceFrontendApplicationContribution = class HuggingFaceFrontendApplic
|
|
|
37
39
|
if (event.preferenceName === huggingface_preferences_1.API_KEY_PREF) {
|
|
38
40
|
const newApiKey = this.preferenceService.get(huggingface_preferences_1.API_KEY_PREF, undefined);
|
|
39
41
|
this.manager.setApiKey(newApiKey);
|
|
40
|
-
this.
|
|
42
|
+
this.updateAllModels();
|
|
41
43
|
}
|
|
42
44
|
else if (event.preferenceName === huggingface_preferences_1.MODELS_PREF) {
|
|
43
45
|
this.handleModelChanges(this.preferenceService.get(huggingface_preferences_1.MODELS_PREF, []));
|
|
44
46
|
}
|
|
47
|
+
else if (event.preferenceName === 'http.proxy') {
|
|
48
|
+
this.manager.setProxyUrl(this.preferenceService.get('http.proxy', undefined));
|
|
49
|
+
this.updateAllModels();
|
|
50
|
+
}
|
|
45
51
|
});
|
|
46
52
|
});
|
|
47
53
|
}
|
|
@@ -54,10 +60,7 @@ let HuggingFaceFrontendApplicationContribution = class HuggingFaceFrontendApplic
|
|
|
54
60
|
this.manager.createOrUpdateLanguageModels(...modelsToAdd.map(modelId => this.createHuggingFaceModelDescription(modelId)));
|
|
55
61
|
this.prevModels = newModels;
|
|
56
62
|
}
|
|
57
|
-
|
|
58
|
-
* Called when the API key changes. Updates all HuggingFace models on the manager to ensure the new key is used.
|
|
59
|
-
*/
|
|
60
|
-
handleKeyChange(newApiKey) {
|
|
63
|
+
updateAllModels() {
|
|
61
64
|
if (this.prevModels && this.prevModels.length > 0) {
|
|
62
65
|
this.manager.createOrUpdateLanguageModels(...this.prevModels.map(modelId => this.createHuggingFaceModelDescription(modelId)));
|
|
63
66
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"huggingface-frontend-application-contribution.js","sourceRoot":"","sources":["../../src/browser/huggingface-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;;;;AAGhF,4DAAkE;AAClE,sCAA0F;AAC1F,+EAA8E;AAC9E,sCAAgD;AAEhD,MAAM,uBAAuB,GAAG,aAAa,CAAC;AAEvC,IAAM,0CAA0C,GAAhD,MAAM,0CAA0C;IAAhD;QAQO,eAAU,GAAa,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"huggingface-frontend-application-contribution.js","sourceRoot":"","sources":["../../src/browser/huggingface-frontend-application-contribution.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,6 +13,7 @@ export interface HuggingFaceModelDescription {
|
|
|
13
13
|
export interface HuggingFaceLanguageModelsManager {
|
|
14
14
|
apiKey: string | undefined;
|
|
15
15
|
setApiKey(key: string | undefined): void;
|
|
16
|
+
setProxyUrl(proxyUrl: string | undefined): void;
|
|
16
17
|
createOrUpdateLanguageModels(...models: HuggingFaceModelDescription[]): Promise<void>;
|
|
17
18
|
removeLanguageModels(...modelIds: string[]): void;
|
|
18
19
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"huggingface-language-models-manager.d.ts","sourceRoot":"","sources":["../../src/common/huggingface-language-models-manager.ts"],"names":[],"mappings":"AAgBA,eAAO,MAAM,wCAAwC,iDAAiD,CAAC;AACvG,eAAO,MAAM,gCAAgC,eAA6C,CAAC;AAE3F,MAAM,WAAW,2BAA2B;IACxC;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IACX;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gCAAgC;IAC7C,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IACzC,4BAA4B,CAAC,GAAG,MAAM,EAAE,2BAA2B,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtF,oBAAoB,CAAC,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;CACrD"}
|
|
1
|
+
{"version":3,"file":"huggingface-language-models-manager.d.ts","sourceRoot":"","sources":["../../src/common/huggingface-language-models-manager.ts"],"names":[],"mappings":"AAgBA,eAAO,MAAM,wCAAwC,iDAAiD,CAAC;AACvG,eAAO,MAAM,gCAAgC,eAA6C,CAAC;AAE3F,MAAM,WAAW,2BAA2B;IACxC;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IACX;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gCAAgC;IAC7C,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IACzC,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IAChD,4BAA4B,CAAC,GAAG,MAAM,EAAE,2BAA2B,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtF,oBAAoB,CAAC,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;CACrD"}
|
|
@@ -13,12 +13,13 @@ export declare class HuggingFaceModel implements LanguageModel {
|
|
|
13
13
|
readonly family?: string | undefined;
|
|
14
14
|
readonly maxInputTokens?: number | undefined;
|
|
15
15
|
readonly maxOutputTokens?: number | undefined;
|
|
16
|
+
proxy?: string | undefined;
|
|
16
17
|
/**
|
|
17
18
|
* @param id the unique id for this language model. It will be used to identify the model in the UI.
|
|
18
19
|
* @param model the model id as it is used by the Hugging Face API
|
|
19
20
|
* @param apiKey function to retrieve the API key for Hugging Face
|
|
20
21
|
*/
|
|
21
|
-
constructor(id: string, model: string, status: LanguageModelStatus, apiKey: () => string | undefined, name?: string | undefined, vendor?: string | undefined, version?: string | undefined, family?: string | undefined, maxInputTokens?: number | undefined, maxOutputTokens?: number | undefined);
|
|
22
|
+
constructor(id: string, model: string, status: LanguageModelStatus, apiKey: () => string | undefined, name?: string | undefined, vendor?: string | undefined, version?: string | undefined, family?: string | undefined, maxInputTokens?: number | undefined, maxOutputTokens?: number | undefined, proxy?: string | undefined);
|
|
22
23
|
request(request: LanguageModelRequest, cancellationToken?: CancellationToken): Promise<LanguageModelResponse>;
|
|
23
24
|
protected getSettings(request: LanguageModelRequest): Record<string, unknown>;
|
|
24
25
|
protected handleNonStreamingRequest(hfInference: InferenceClient, request: LanguageModelRequest): Promise<LanguageModelTextResponse>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"huggingface-language-model.d.ts","sourceRoot":"","sources":["../../src/node/huggingface-language-model.ts"],"names":[],"mappings":"AAgBA,OAAO,EACH,aAAa,EACb,oBAAoB,EAEpB,qBAAqB,EAErB,yBAAyB,EAEzB,mBAAmB,EACtB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"huggingface-language-model.d.ts","sourceRoot":"","sources":["../../src/node/huggingface-language-model.ts"],"names":[],"mappings":"AAgBA,OAAO,EACH,aAAa,EACb,oBAAoB,EAEpB,qBAAqB,EAErB,yBAAyB,EAEzB,mBAAmB,EACtB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAGzD,eAAO,MAAM,0BAA0B,eAAuC,CAAC;AAwB/E,qBAAa,gBAAiB,YAAW,aAAa;aAQ9B,EAAE,EAAE,MAAM;IACnB,KAAK,EAAE,MAAM;IACb,MAAM,EAAE,mBAAmB;IAC3B,MAAM,EAAE,MAAM,MAAM,GAAG,SAAS;aACvB,IAAI,CAAC,EAAE,MAAM;aACb,MAAM,CAAC,EAAE,MAAM;aACf,OAAO,CAAC,EAAE,MAAM;aAChB,MAAM,CAAC,EAAE,MAAM;aACf,cAAc,CAAC,EAAE,MAAM;aACvB,eAAe,CAAC,EAAE,MAAM;IACjC,KAAK,CAAC,EAAE,MAAM;IAhBzB;;;;OAIG;gBAEiB,EAAE,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,mBAAmB,EAC3B,MAAM,EAAE,MAAM,MAAM,GAAG,SAAS,EACvB,IAAI,CAAC,EAAE,MAAM,YAAA,EACb,MAAM,CAAC,EAAE,MAAM,YAAA,EACf,OAAO,CAAC,EAAE,MAAM,YAAA,EAChB,MAAM,CAAC,EAAE,MAAM,YAAA,EACf,cAAc,CAAC,EAAE,MAAM,YAAA,EACvB,eAAe,CAAC,EAAE,MAAM,YAAA,EACjC,KAAK,CAAC,EAAE,MAAM,YAAA;IAGnB,OAAO,CAAC,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IASnH,SAAS,CAAC,WAAW,CAAC,OAAO,EAAE,oBAAoB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;cAI7D,yBAAyB,CAAC,WAAW,EAAE,eAAe,EAAE,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,yBAAyB,CAAC;cAgB1H,sBAAsB,CAClC,WAAW,EAAE,eAAe,EAC5B,OAAO,EAAE,oBAAoB,EAC7B,iBAAiB,CAAC,EAAE,iBAAiB,GACtC,OAAO,CAAC,qBAAqB,CAAC;IA6BjC,SAAS,CAAC,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAKtD,OAAO,CAAC,yBAAyB;CAOpC"}
|
|
@@ -18,6 +18,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
18
18
|
exports.HuggingFaceModel = exports.HuggingFaceModelIdentifier = void 0;
|
|
19
19
|
const ai_core_1 = require("@theia/ai-core");
|
|
20
20
|
const inference_1 = require("@huggingface/inference");
|
|
21
|
+
const node_1 = require("@theia/ai-core/lib/node");
|
|
21
22
|
exports.HuggingFaceModelIdentifier = Symbol('HuggingFaceModelIdentifier');
|
|
22
23
|
function toRole(actor) {
|
|
23
24
|
switch (actor) {
|
|
@@ -45,7 +46,7 @@ class HuggingFaceModel {
|
|
|
45
46
|
* @param model the model id as it is used by the Hugging Face API
|
|
46
47
|
* @param apiKey function to retrieve the API key for Hugging Face
|
|
47
48
|
*/
|
|
48
|
-
constructor(id, model, status, apiKey, name, vendor, version, family, maxInputTokens, maxOutputTokens) {
|
|
49
|
+
constructor(id, model, status, apiKey, name, vendor, version, family, maxInputTokens, maxOutputTokens, proxy) {
|
|
49
50
|
this.id = id;
|
|
50
51
|
this.model = model;
|
|
51
52
|
this.status = status;
|
|
@@ -56,6 +57,7 @@ class HuggingFaceModel {
|
|
|
56
57
|
this.family = family;
|
|
57
58
|
this.maxInputTokens = maxInputTokens;
|
|
58
59
|
this.maxOutputTokens = maxOutputTokens;
|
|
60
|
+
this.proxy = proxy;
|
|
59
61
|
}
|
|
60
62
|
async request(request, cancellationToken) {
|
|
61
63
|
const hfInference = this.initializeInferenceClient();
|
|
@@ -112,7 +114,7 @@ class HuggingFaceModel {
|
|
|
112
114
|
if (!token) {
|
|
113
115
|
throw new Error('Please provide a Hugging Face API token.');
|
|
114
116
|
}
|
|
115
|
-
return new inference_1.InferenceClient(token);
|
|
117
|
+
return new inference_1.InferenceClient(token, { fetch: (0, node_1.createProxyFetch)(this.proxy) });
|
|
116
118
|
}
|
|
117
119
|
}
|
|
118
120
|
exports.HuggingFaceModel = HuggingFaceModel;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"huggingface-language-model.js","sourceRoot":"","sources":["../../src/node/huggingface-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;;;AAEhF,4CASwB;AAExB,sDAAyD;
|
|
1
|
+
{"version":3,"file":"huggingface-language-model.js","sourceRoot":"","sources":["../../src/node/huggingface-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;;;AAEhF,4CASwB;AAExB,sDAAyD;AACzD,kDAA2D;AAE9C,QAAA,0BAA0B,GAAG,MAAM,CAAC,4BAA4B,CAAC,CAAC;AAE/E,SAAS,MAAM,CAAC,KAAmB;IAC/B,QAAQ,KAAK,EAAE,CAAC;QACZ,KAAK,MAAM;YACP,OAAO,MAAM,CAAC;QAClB,KAAK,IAAI;YACL,OAAO,WAAW,CAAC;QACvB,KAAK,QAAQ;YACT,OAAO,QAAQ,CAAC;QACpB;YACI,OAAO,MAAM,CAAC;IACtB,CAAC;AACL,CAAC;AAED,SAAS,cAAc,CAAC,QAAgC;IACpD,OAAO,QAAQ;SACV,MAAM,CAAC,8BAAoB,CAAC,aAAa,CAAC;SAC1C,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACb,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;QAC3B,OAAO,EAAE,OAAO,CAAC,IAAI;KACxB,CAAC,CAAC,CAAC;AACZ,CAAC;AAED,MAAa,gBAAgB;IAEzB;;;;OAIG;IACH,YACoB,EAAU,EACnB,KAAa,EACb,MAA2B,EAC3B,MAAgC,EACvB,IAAa,EACb,MAAe,EACf,OAAgB,EAChB,MAAe,EACf,cAAuB,EACvB,eAAwB,EACjC,KAAc;QAVL,OAAE,GAAF,EAAE,CAAQ;QACnB,UAAK,GAAL,KAAK,CAAQ;QACb,WAAM,GAAN,MAAM,CAAqB;QAC3B,WAAM,GAAN,MAAM,CAA0B;QACvB,SAAI,GAAJ,IAAI,CAAS;QACb,WAAM,GAAN,MAAM,CAAS;QACf,YAAO,GAAP,OAAO,CAAS;QAChB,WAAM,GAAN,MAAM,CAAS;QACf,mBAAc,GAAd,cAAc,CAAS;QACvB,oBAAe,GAAf,eAAe,CAAS;QACjC,UAAK,GAAL,KAAK,CAAS;IACrB,CAAC;IAEL,KAAK,CAAC,OAAO,CAAC,OAA6B,EAAE,iBAAqC;QAC9E,MAAM,WAAW,GAAG,IAAI,CAAC,yBAAyB,EAAE,CAAC;QACrD,IAAI,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACxC,OAAO,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,OAAO,EAAE,iBAAiB,CAAC,CAAC;QAChF,CAAC;aAAM,CAAC;YACJ,OAAO,IAAI,CAAC,yBAAyB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAChE,CAAC;IACL,CAAC;IAES,WAAW,CAAC,OAA6B;QAC/C,OAAO,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC;IAClC,CAAC;IAES,KAAK,CAAC,yBAAyB,CAAC,WAA4B,EAAE,OAA6B;QACjG,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAE3C,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,cAAc,CAAC;YAC9C,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,QAAQ,EAAE,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC;YAC1C,GAAG,QAAQ;SACd,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,IAAI,EAAE,CAAC;QAEzD,OAAO;YACH,IAAI;SACP,CAAC;IACN,CAAC;IAES,KAAK,CAAC,sBAAsB,CAClC,WAA4B,EAC5B,OAA6B,EAC7B,iBAAqC;QAGrC,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAE3C,MAAM,MAAM,GAAG,WAAW,CAAC,oBAAoB,CAAC;YAC5C,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,QAAQ,EAAE,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC;YAC1C,GAAG,QAAQ;SACd,CAAC,CAAC;QAEH,MAAM,aAAa,GAAG;YAClB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC;gBACzB,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;oBAC/B,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC;oBAEjD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;wBACxB,MAAM,EAAE,OAAO,EAAE,CAAC;oBACtB,CAAC;oBAED,IAAI,iBAAiB,EAAE,uBAAuB,EAAE,CAAC;wBAC7C,MAAM;oBACV,CAAC;gBACL,CAAC;YACL,CAAC;SACJ,CAAC;QAEF,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;IACrC,CAAC;IAES,oBAAoB,CAAC,KAAa;QACxC,0EAA0E;QAC1E,OAAO,IAAI,CAAC;IAChB,CAAC;IAEO,yBAAyB;QAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC5B,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAChE,CAAC;QACD,OAAO,IAAI,2BAAe,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,IAAA,uBAAgB,EAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC/E,CAAC;CACJ;AA/FD,4CA+FC"}
|
|
@@ -2,11 +2,13 @@ import { LanguageModelRegistry, LanguageModelStatus } from '@theia/ai-core';
|
|
|
2
2
|
import { HuggingFaceLanguageModelsManager, HuggingFaceModelDescription } from '../common';
|
|
3
3
|
export declare class HuggingFaceLanguageModelsManagerImpl implements HuggingFaceLanguageModelsManager {
|
|
4
4
|
protected _apiKey: string | undefined;
|
|
5
|
+
protected _proxyUrl: string | undefined;
|
|
5
6
|
protected readonly languageModelRegistry: LanguageModelRegistry;
|
|
6
7
|
get apiKey(): string | undefined;
|
|
7
8
|
protected calculateStatus(apiKey: string | undefined): LanguageModelStatus;
|
|
8
9
|
createOrUpdateLanguageModels(...modelDescriptions: HuggingFaceModelDescription[]): Promise<void>;
|
|
9
10
|
removeLanguageModels(...modelIds: string[]): void;
|
|
10
11
|
setApiKey(apiKey: string | undefined): void;
|
|
12
|
+
setProxyUrl(proxyUrl: string | undefined): void;
|
|
11
13
|
}
|
|
12
14
|
//# sourceMappingURL=huggingface-language-models-manager-impl.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"huggingface-language-models-manager-impl.d.ts","sourceRoot":"","sources":["../../src/node/huggingface-language-models-manager-impl.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"huggingface-language-models-manager-impl.d.ts","sourceRoot":"","sources":["../../src/node/huggingface-language-models-manager-impl.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAI5E,OAAO,EAAE,gCAAgC,EAAE,2BAA2B,EAAE,MAAM,WAAW,CAAC;AAE1F,qBACa,oCAAqC,YAAW,gCAAgC;IAEzF,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAGxC,SAAS,CAAC,QAAQ,CAAC,qBAAqB,EAAE,qBAAqB,CAAC;IAEhE,IAAI,MAAM,IAAI,MAAM,GAAG,SAAS,CAE/B;IAED,SAAS,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,mBAAmB;IAIpE,4BAA4B,CAAC,GAAG,iBAAiB,EAAE,2BAA2B,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAkCtG,oBAAoB,CAAC,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI;IAIjD,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAI3C,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;CAOlD"}
|
|
@@ -18,6 +18,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
18
18
|
exports.HuggingFaceLanguageModelsManagerImpl = void 0;
|
|
19
19
|
const tslib_1 = require("tslib");
|
|
20
20
|
const ai_core_1 = require("@theia/ai-core");
|
|
21
|
+
const node_1 = require("@theia/ai-core/lib/node");
|
|
21
22
|
const inversify_1 = require("@theia/core/shared/inversify");
|
|
22
23
|
const huggingface_language_model_1 = require("./huggingface-language-model");
|
|
23
24
|
let HuggingFaceLanguageModelsManagerImpl = class HuggingFaceLanguageModelsManagerImpl {
|
|
@@ -32,16 +33,17 @@ let HuggingFaceLanguageModelsManagerImpl = class HuggingFaceLanguageModelsManage
|
|
|
32
33
|
const model = await this.languageModelRegistry.getLanguageModel(modelDescription.id);
|
|
33
34
|
const apiKeyProvider = () => this.apiKey;
|
|
34
35
|
const status = this.calculateStatus(this.apiKey);
|
|
36
|
+
const proxyUrl = (0, node_1.getProxyUrl)('https://api-inference.huggingface.co', this._proxyUrl);
|
|
35
37
|
if (model) {
|
|
36
38
|
if (!(model instanceof huggingface_language_model_1.HuggingFaceModel)) {
|
|
37
39
|
console.warn(`Hugging Face: model ${modelDescription.id} is not a Hugging Face model`);
|
|
38
40
|
continue;
|
|
39
41
|
}
|
|
40
|
-
await this.languageModelRegistry.patchLanguageModel(modelDescription.id, { status });
|
|
42
|
+
await this.languageModelRegistry.patchLanguageModel(modelDescription.id, { status, proxy: proxyUrl });
|
|
41
43
|
}
|
|
42
44
|
else {
|
|
43
45
|
this.languageModelRegistry.addLanguageModels([
|
|
44
|
-
new huggingface_language_model_1.HuggingFaceModel(modelDescription.id, modelDescription.model, status, apiKeyProvider, undefined, undefined, undefined, undefined, undefined, undefined)
|
|
46
|
+
new huggingface_language_model_1.HuggingFaceModel(modelDescription.id, modelDescription.model, status, apiKeyProvider, undefined, undefined, undefined, undefined, undefined, undefined, proxyUrl)
|
|
45
47
|
]);
|
|
46
48
|
}
|
|
47
49
|
}
|
|
@@ -52,6 +54,14 @@ let HuggingFaceLanguageModelsManagerImpl = class HuggingFaceLanguageModelsManage
|
|
|
52
54
|
setApiKey(apiKey) {
|
|
53
55
|
this._apiKey = apiKey || undefined;
|
|
54
56
|
}
|
|
57
|
+
setProxyUrl(proxyUrl) {
|
|
58
|
+
if (proxyUrl) {
|
|
59
|
+
this._proxyUrl = proxyUrl;
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
this._proxyUrl = undefined;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
55
65
|
};
|
|
56
66
|
exports.HuggingFaceLanguageModelsManagerImpl = HuggingFaceLanguageModelsManagerImpl;
|
|
57
67
|
tslib_1.__decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"huggingface-language-models-manager-impl.js","sourceRoot":"","sources":["../../src/node/huggingface-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,4CAA4E;AAC5E,4DAAkE;AAClE,6EAAgE;AAIzD,IAAM,oCAAoC,GAA1C,MAAM,oCAAoC;
|
|
1
|
+
{"version":3,"file":"huggingface-language-models-manager-impl.js","sourceRoot":"","sources":["../../src/node/huggingface-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,4CAA4E;AAC5E,kDAAsD;AACtD,4DAAkE;AAClE,6EAAgE;AAIzD,IAAM,oCAAoC,GAA1C,MAAM,oCAAoC;IAQ7C,IAAI,MAAM;QACN,OAAO,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;IAC3D,CAAC;IAES,eAAe,CAAC,MAA0B;QAChD,OAAO,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,6BAA6B,EAAE,CAAC;IAC5G,CAAC;IAED,KAAK,CAAC,4BAA4B,CAAC,GAAG,iBAAgD;QAClF,KAAK,MAAM,gBAAgB,IAAI,iBAAiB,EAAE,CAAC;YAC/C,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;YACrF,MAAM,cAAc,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC;YACzC,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAEjD,MAAM,QAAQ,GAAG,IAAA,kBAAW,EAAC,sCAAsC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YAErF,IAAI,KAAK,EAAE,CAAC;gBACR,IAAI,CAAC,CAAC,KAAK,YAAY,6CAAgB,CAAC,EAAE,CAAC;oBACvC,OAAO,CAAC,IAAI,CAAC,uBAAuB,gBAAgB,CAAC,EAAE,8BAA8B,CAAC,CAAC;oBACvF,SAAS;gBACb,CAAC;gBACD,MAAM,IAAI,CAAC,qBAAqB,CAAC,kBAAkB,CAAmB,gBAAgB,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC5H,CAAC;iBAAM,CAAC;gBACJ,IAAI,CAAC,qBAAqB,CAAC,iBAAiB,CAAC;oBACzC,IAAI,6CAAgB,CAChB,gBAAgB,CAAC,EAAE,EACnB,gBAAgB,CAAC,KAAK,EACtB,MAAM,EACN,cAAc,EACd,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,QAAQ,CACX;iBACJ,CAAC,CAAC;YACP,CAAC;QACL,CAAC;IACL,CAAC;IAED,oBAAoB,CAAC,GAAG,QAAkB;QACtC,IAAI,CAAC,qBAAqB,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IAC9D,CAAC;IAED,SAAS,CAAC,MAA0B;QAChC,IAAI,CAAC,OAAO,GAAG,MAAM,IAAI,SAAS,CAAC;IACvC,CAAC;IAED,WAAW,CAAC,QAA4B;QACpC,IAAI,QAAQ,EAAE,CAAC;YACX,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC9B,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC/B,CAAC;IACL,CAAC;CACJ,CAAA;AAjEY,oFAAoC;AAM1B;IADlB,IAAA,kBAAM,EAAC,+BAAqB,CAAC;;mFACkC;+CANvD,oCAAoC;IADhD,IAAA,sBAAU,GAAE;GACA,oCAAoC,CAiEhD"}
|
package/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@theia/ai-huggingface",
|
|
3
|
-
"version": "1.70.0-next.
|
|
3
|
+
"version": "1.70.0-next.18+fb0d8f692",
|
|
4
4
|
"description": "Theia - Hugging Face Integration",
|
|
5
5
|
"dependencies": {
|
|
6
6
|
"@huggingface/inference": "^4.13.10",
|
|
7
|
-
"@theia/ai-core": "1.70.0-next.
|
|
8
|
-
"@theia/core": "1.70.0-next.
|
|
7
|
+
"@theia/ai-core": "1.70.0-next.18+fb0d8f692",
|
|
8
|
+
"@theia/core": "1.70.0-next.18+fb0d8f692"
|
|
9
9
|
},
|
|
10
10
|
"publishConfig": {
|
|
11
11
|
"access": "public"
|
|
@@ -46,5 +46,5 @@
|
|
|
46
46
|
"nyc": {
|
|
47
47
|
"extends": "../../configs/nyc.json"
|
|
48
48
|
},
|
|
49
|
-
"gitHead": "
|
|
49
|
+
"gitHead": "fb0d8f692cd8e84234fd5ccbc7df035d3158c71c"
|
|
50
50
|
}
|
|
@@ -37,6 +37,9 @@ export class HuggingFaceFrontendApplicationContribution implements FrontendAppli
|
|
|
37
37
|
const apiKey = this.preferenceService.get<string>(API_KEY_PREF, undefined);
|
|
38
38
|
this.manager.setApiKey(apiKey);
|
|
39
39
|
|
|
40
|
+
const proxyUri = this.preferenceService.get<string>('http.proxy', undefined);
|
|
41
|
+
this.manager.setProxyUrl(proxyUri);
|
|
42
|
+
|
|
40
43
|
const models = this.preferenceService.get<string[]>(MODELS_PREF, []);
|
|
41
44
|
this.manager.createOrUpdateLanguageModels(...models.map(modelId => this.createHuggingFaceModelDescription(modelId)));
|
|
42
45
|
this.prevModels = [...models];
|
|
@@ -45,9 +48,12 @@ export class HuggingFaceFrontendApplicationContribution implements FrontendAppli
|
|
|
45
48
|
if (event.preferenceName === API_KEY_PREF) {
|
|
46
49
|
const newApiKey = this.preferenceService.get<string>(API_KEY_PREF, undefined);
|
|
47
50
|
this.manager.setApiKey(newApiKey);
|
|
48
|
-
this.
|
|
51
|
+
this.updateAllModels();
|
|
49
52
|
} else if (event.preferenceName === MODELS_PREF) {
|
|
50
53
|
this.handleModelChanges(this.preferenceService.get<string[]>(MODELS_PREF, []));
|
|
54
|
+
} else if (event.preferenceName === 'http.proxy') {
|
|
55
|
+
this.manager.setProxyUrl(this.preferenceService.get<string>('http.proxy', undefined));
|
|
56
|
+
this.updateAllModels();
|
|
51
57
|
}
|
|
52
58
|
});
|
|
53
59
|
});
|
|
@@ -65,10 +71,7 @@ export class HuggingFaceFrontendApplicationContribution implements FrontendAppli
|
|
|
65
71
|
this.prevModels = newModels;
|
|
66
72
|
}
|
|
67
73
|
|
|
68
|
-
|
|
69
|
-
* Called when the API key changes. Updates all HuggingFace models on the manager to ensure the new key is used.
|
|
70
|
-
*/
|
|
71
|
-
protected handleKeyChange(newApiKey: string | undefined): void {
|
|
74
|
+
protected updateAllModels(): void {
|
|
72
75
|
if (this.prevModels && this.prevModels.length > 0) {
|
|
73
76
|
this.manager.createOrUpdateLanguageModels(...this.prevModels.map(modelId => this.createHuggingFaceModelDescription(modelId)));
|
|
74
77
|
}
|
|
@@ -31,6 +31,7 @@ export interface HuggingFaceModelDescription {
|
|
|
31
31
|
export interface HuggingFaceLanguageModelsManager {
|
|
32
32
|
apiKey: string | undefined;
|
|
33
33
|
setApiKey(key: string | undefined): void;
|
|
34
|
+
setProxyUrl(proxyUrl: string | undefined): void;
|
|
34
35
|
createOrUpdateLanguageModels(...models: HuggingFaceModelDescription[]): Promise<void>;
|
|
35
36
|
removeLanguageModels(...modelIds: string[]): void;
|
|
36
37
|
}
|
|
@@ -26,6 +26,7 @@ import {
|
|
|
26
26
|
} from '@theia/ai-core';
|
|
27
27
|
import { CancellationToken } from '@theia/core';
|
|
28
28
|
import { InferenceClient } from '@huggingface/inference';
|
|
29
|
+
import { createProxyFetch } from '@theia/ai-core/lib/node';
|
|
29
30
|
|
|
30
31
|
export const HuggingFaceModelIdentifier = Symbol('HuggingFaceModelIdentifier');
|
|
31
32
|
|
|
@@ -68,7 +69,8 @@ export class HuggingFaceModel implements LanguageModel {
|
|
|
68
69
|
public readonly version?: string,
|
|
69
70
|
public readonly family?: string,
|
|
70
71
|
public readonly maxInputTokens?: number,
|
|
71
|
-
public readonly maxOutputTokens?: number
|
|
72
|
+
public readonly maxOutputTokens?: number,
|
|
73
|
+
public proxy?: string
|
|
72
74
|
) { }
|
|
73
75
|
|
|
74
76
|
async request(request: LanguageModelRequest, cancellationToken?: CancellationToken): Promise<LanguageModelResponse> {
|
|
@@ -143,6 +145,6 @@ export class HuggingFaceModel implements LanguageModel {
|
|
|
143
145
|
if (!token) {
|
|
144
146
|
throw new Error('Please provide a Hugging Face API token.');
|
|
145
147
|
}
|
|
146
|
-
return new InferenceClient(token);
|
|
148
|
+
return new InferenceClient(token, { fetch: createProxyFetch(this.proxy) });
|
|
147
149
|
}
|
|
148
150
|
}
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
// *****************************************************************************
|
|
16
16
|
|
|
17
17
|
import { LanguageModelRegistry, LanguageModelStatus } from '@theia/ai-core';
|
|
18
|
+
import { getProxyUrl } from '@theia/ai-core/lib/node';
|
|
18
19
|
import { inject, injectable } from '@theia/core/shared/inversify';
|
|
19
20
|
import { HuggingFaceModel } from './huggingface-language-model';
|
|
20
21
|
import { HuggingFaceLanguageModelsManager, HuggingFaceModelDescription } from '../common';
|
|
@@ -23,6 +24,7 @@ import { HuggingFaceLanguageModelsManager, HuggingFaceModelDescription } from '.
|
|
|
23
24
|
export class HuggingFaceLanguageModelsManagerImpl implements HuggingFaceLanguageModelsManager {
|
|
24
25
|
|
|
25
26
|
protected _apiKey: string | undefined;
|
|
27
|
+
protected _proxyUrl: string | undefined;
|
|
26
28
|
|
|
27
29
|
@inject(LanguageModelRegistry)
|
|
28
30
|
protected readonly languageModelRegistry: LanguageModelRegistry;
|
|
@@ -41,12 +43,14 @@ export class HuggingFaceLanguageModelsManagerImpl implements HuggingFaceLanguage
|
|
|
41
43
|
const apiKeyProvider = () => this.apiKey;
|
|
42
44
|
const status = this.calculateStatus(this.apiKey);
|
|
43
45
|
|
|
46
|
+
const proxyUrl = getProxyUrl('https://api-inference.huggingface.co', this._proxyUrl);
|
|
47
|
+
|
|
44
48
|
if (model) {
|
|
45
49
|
if (!(model instanceof HuggingFaceModel)) {
|
|
46
50
|
console.warn(`Hugging Face: model ${modelDescription.id} is not a Hugging Face model`);
|
|
47
51
|
continue;
|
|
48
52
|
}
|
|
49
|
-
await this.languageModelRegistry.patchLanguageModel(modelDescription.id, { status });
|
|
53
|
+
await this.languageModelRegistry.patchLanguageModel<HuggingFaceModel>(modelDescription.id, { status, proxy: proxyUrl });
|
|
50
54
|
} else {
|
|
51
55
|
this.languageModelRegistry.addLanguageModels([
|
|
52
56
|
new HuggingFaceModel(
|
|
@@ -60,6 +64,7 @@ export class HuggingFaceLanguageModelsManagerImpl implements HuggingFaceLanguage
|
|
|
60
64
|
undefined,
|
|
61
65
|
undefined,
|
|
62
66
|
undefined,
|
|
67
|
+
proxyUrl,
|
|
63
68
|
)
|
|
64
69
|
]);
|
|
65
70
|
}
|
|
@@ -73,4 +78,12 @@ export class HuggingFaceLanguageModelsManagerImpl implements HuggingFaceLanguage
|
|
|
73
78
|
setApiKey(apiKey: string | undefined): void {
|
|
74
79
|
this._apiKey = apiKey || undefined;
|
|
75
80
|
}
|
|
81
|
+
|
|
82
|
+
setProxyUrl(proxyUrl: string | undefined): void {
|
|
83
|
+
if (proxyUrl) {
|
|
84
|
+
this._proxyUrl = proxyUrl;
|
|
85
|
+
} else {
|
|
86
|
+
this._proxyUrl = undefined;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
76
89
|
}
|