@theia/ai-huggingface 1.64.0-next.28 → 1.64.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/browser/huggingface-frontend-application-contribution.d.ts +4 -0
- package/lib/browser/huggingface-frontend-application-contribution.d.ts.map +1 -1
- package/lib/browser/huggingface-frontend-application-contribution.js +9 -0
- package/lib/browser/huggingface-frontend-application-contribution.js.map +1 -1
- package/lib/node/huggingface-language-model.d.ts +3 -2
- package/lib/node/huggingface-language-model.d.ts.map +1 -1
- package/lib/node/huggingface-language-model.js +2 -1
- package/lib/node/huggingface-language-model.js.map +1 -1
- package/lib/node/huggingface-language-models-manager-impl.d.ts +2 -1
- package/lib/node/huggingface-language-models-manager-impl.d.ts.map +1 -1
- package/lib/node/huggingface-language-models-manager-impl.js +6 -1
- package/lib/node/huggingface-language-models-manager-impl.js.map +1 -1
- package/package.json +5 -5
- package/src/browser/huggingface-frontend-application-contribution.ts +10 -0
- package/src/node/huggingface-language-model.ts +3 -1
- package/src/node/huggingface-language-models-manager-impl.ts +8 -1
|
@@ -6,6 +6,10 @@ export declare class HuggingFaceFrontendApplicationContribution implements Front
|
|
|
6
6
|
protected prevModels: string[];
|
|
7
7
|
onStart(): void;
|
|
8
8
|
protected handleModelChanges(newModels: string[]): void;
|
|
9
|
+
/**
|
|
10
|
+
* Called when the API key changes. Updates all HuggingFace models on the manager to ensure the new key is used.
|
|
11
|
+
*/
|
|
12
|
+
protected handleKeyChange(newApiKey: string | undefined): void;
|
|
9
13
|
protected createHuggingFaceModelDescription(modelId: string): HuggingFaceModelDescription;
|
|
10
14
|
}
|
|
11
15
|
//# 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,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE7F,OAAO,EAAE,gCAAgC,EAAE,2BAA2B,EAAE,MAAM,WAAW,CAAC;AAI1F,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,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE7F,OAAO,EAAE,gCAAgC,EAAE,2BAA2B,EAAE,MAAM,WAAW,CAAC;AAI1F,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;IAoBf,SAAS,CAAC,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI;IAYvD;;OAEG;IACH,SAAS,CAAC,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAM9D,SAAS,CAAC,iCAAiC,CACvC,OAAO,EAAE,MAAM,GAChB,2BAA2B;CAOjC"}
|
|
@@ -36,6 +36,7 @@ let HuggingFaceFrontendApplicationContribution = class HuggingFaceFrontendApplic
|
|
|
36
36
|
this.preferenceService.onPreferenceChanged(event => {
|
|
37
37
|
if (event.preferenceName === huggingface_preferences_1.API_KEY_PREF) {
|
|
38
38
|
this.manager.setApiKey(event.newValue);
|
|
39
|
+
this.handleKeyChange(event.newValue);
|
|
39
40
|
}
|
|
40
41
|
else if (event.preferenceName === huggingface_preferences_1.MODELS_PREF) {
|
|
41
42
|
this.handleModelChanges(event.newValue);
|
|
@@ -52,6 +53,14 @@ let HuggingFaceFrontendApplicationContribution = class HuggingFaceFrontendApplic
|
|
|
52
53
|
this.manager.createOrUpdateLanguageModels(...modelsToAdd.map(modelId => this.createHuggingFaceModelDescription(modelId)));
|
|
53
54
|
this.prevModels = newModels;
|
|
54
55
|
}
|
|
56
|
+
/**
|
|
57
|
+
* Called when the API key changes. Updates all HuggingFace models on the manager to ensure the new key is used.
|
|
58
|
+
*/
|
|
59
|
+
handleKeyChange(newApiKey) {
|
|
60
|
+
if (this.prevModels && this.prevModels.length > 0) {
|
|
61
|
+
this.manager.createOrUpdateLanguageModels(...this.prevModels.map(modelId => this.createHuggingFaceModelDescription(modelId)));
|
|
62
|
+
}
|
|
63
|
+
}
|
|
55
64
|
createHuggingFaceModelDescription(modelId) {
|
|
56
65
|
const id = `${HUGGINGFACE_PROVIDER_ID}/${modelId}`;
|
|
57
66
|
return {
|
|
@@ -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;;;;AAEhF,qDAA6F;AAC7F,4DAAkE;AAClE,sCAA0F;AAC1F,uEAAsE;AAEtE,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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"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import { LanguageModel, LanguageModelRequest, LanguageModelResponse, LanguageModelTextResponse } from '@theia/ai-core';
|
|
1
|
+
import { LanguageModel, LanguageModelRequest, LanguageModelResponse, LanguageModelTextResponse, LanguageModelStatus } from '@theia/ai-core';
|
|
2
2
|
import { CancellationToken } from '@theia/core';
|
|
3
3
|
import { HfInference } from '@huggingface/inference';
|
|
4
4
|
export declare const HuggingFaceModelIdentifier: unique symbol;
|
|
5
5
|
export declare class HuggingFaceModel implements LanguageModel {
|
|
6
6
|
readonly id: string;
|
|
7
7
|
model: string;
|
|
8
|
+
status: LanguageModelStatus;
|
|
8
9
|
apiKey: () => string | undefined;
|
|
9
10
|
readonly name?: string | undefined;
|
|
10
11
|
readonly vendor?: string | undefined;
|
|
@@ -17,7 +18,7 @@ export declare class HuggingFaceModel implements LanguageModel {
|
|
|
17
18
|
* @param model the model id as it is used by the Hugging Face API
|
|
18
19
|
* @param apiKey function to retrieve the API key for Hugging Face
|
|
19
20
|
*/
|
|
20
|
-
constructor(id: string, model: string, apiKey: () => string | undefined, name?: string | undefined, vendor?: string | undefined, version?: string | undefined, family?: string | undefined, maxInputTokens?: number | undefined, maxOutputTokens?: number | undefined);
|
|
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);
|
|
21
22
|
request(request: LanguageModelRequest, cancellationToken?: CancellationToken): Promise<LanguageModelResponse>;
|
|
22
23
|
protected getSettings(request: LanguageModelRequest): Record<string, unknown>;
|
|
23
24
|
protected handleNonStreamingRequest(hfInference: HfInference, 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,
|
|
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,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD,eAAO,MAAM,0BAA0B,eAAuC,CAAC;AAkC/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;aACL,MAAM,CAAC;aACP,OAAO,CAAC;aACR,MAAM,CAAC;aACP,cAAc,CAAC;aACf,eAAe,CAAC;IAfpC;;;;OAIG;gBAEiB,EAAE,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,mBAAmB,EAC3B,MAAM,EAAE,MAAM,MAAM,GAAG,SAAS,EACvB,IAAI,CAAC,oBAAQ,EACb,MAAM,CAAC,oBAAQ,EACf,OAAO,CAAC,oBAAQ,EAChB,MAAM,CAAC,oBAAQ,EACf,cAAc,CAAC,oBAAQ,EACvB,eAAe,CAAC,oBAAQ;IAGtC,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,WAAW,EAAE,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,yBAAyB,CAAC;cAyBtH,sBAAsB,CAClC,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,oBAAoB,EAC7B,iBAAiB,CAAC,EAAE,iBAAiB,GACtC,OAAO,CAAC,qBAAqB,CAAC;IAqCjC,SAAS,CAAC,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAKtD,OAAO,CAAC,qBAAqB;CAOhC"}
|
|
@@ -56,9 +56,10 @@ class HuggingFaceModel {
|
|
|
56
56
|
* @param model the model id as it is used by the Hugging Face API
|
|
57
57
|
* @param apiKey function to retrieve the API key for Hugging Face
|
|
58
58
|
*/
|
|
59
|
-
constructor(id, model, apiKey, name, vendor, version, family, maxInputTokens, maxOutputTokens) {
|
|
59
|
+
constructor(id, model, status, apiKey, name, vendor, version, family, maxInputTokens, maxOutputTokens) {
|
|
60
60
|
this.id = id;
|
|
61
61
|
this.model = model;
|
|
62
|
+
this.status = status;
|
|
62
63
|
this.apiKey = apiKey;
|
|
63
64
|
this.name = name;
|
|
64
65
|
this.vendor = vendor;
|
|
@@ -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,
|
|
1
|
+
{"version":3,"file":"huggingface-language-model.js","sourceRoot":"","sources":["../../src/node/huggingface-language-model.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { LanguageModelRegistry } from '@theia/ai-core';
|
|
1
|
+
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
5
|
protected readonly languageModelRegistry: LanguageModelRegistry;
|
|
6
6
|
get apiKey(): string | undefined;
|
|
7
|
+
protected calculateStatus(apiKey: string | undefined): LanguageModelStatus;
|
|
7
8
|
createOrUpdateLanguageModels(...modelDescriptions: HuggingFaceModelDescription[]): Promise<void>;
|
|
8
9
|
removeLanguageModels(...modelIds: string[]): void;
|
|
9
10
|
setApiKey(apiKey: string | undefined): void;
|
|
@@ -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,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;AAG5E,OAAO,EAAE,gCAAgC,EAAE,2BAA2B,EAAE,MAAM,WAAW,CAAC;AAE1F,qBACa,oCAAqC,YAAW,gCAAgC;IAEzF,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAGtC,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;IAiCtG,oBAAoB,CAAC,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI;IAIjD,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;CAG9C"}
|
|
@@ -25,10 +25,14 @@ let HuggingFaceLanguageModelsManagerImpl = class HuggingFaceLanguageModelsManage
|
|
|
25
25
|
var _a;
|
|
26
26
|
return (_a = this._apiKey) !== null && _a !== void 0 ? _a : process.env.HUGGINGFACE_API_KEY;
|
|
27
27
|
}
|
|
28
|
+
calculateStatus(apiKey) {
|
|
29
|
+
return apiKey ? { status: 'ready' } : { status: 'unavailable', message: 'No Hugging Face API key set' };
|
|
30
|
+
}
|
|
28
31
|
async createOrUpdateLanguageModels(...modelDescriptions) {
|
|
29
32
|
for (const modelDescription of modelDescriptions) {
|
|
30
33
|
const model = await this.languageModelRegistry.getLanguageModel(modelDescription.id);
|
|
31
34
|
const apiKeyProvider = () => this.apiKey;
|
|
35
|
+
const status = this.calculateStatus(this.apiKey);
|
|
32
36
|
if (model) {
|
|
33
37
|
if (!(model instanceof huggingface_language_model_1.HuggingFaceModel)) {
|
|
34
38
|
console.warn(`Hugging Face: model ${modelDescription.id} is not a Hugging Face model`);
|
|
@@ -36,10 +40,11 @@ let HuggingFaceLanguageModelsManagerImpl = class HuggingFaceLanguageModelsManage
|
|
|
36
40
|
}
|
|
37
41
|
model.model = modelDescription.model;
|
|
38
42
|
model.apiKey = apiKeyProvider;
|
|
43
|
+
model.status = status;
|
|
39
44
|
}
|
|
40
45
|
else {
|
|
41
46
|
this.languageModelRegistry.addLanguageModels([
|
|
42
|
-
new huggingface_language_model_1.HuggingFaceModel(modelDescription.id, modelDescription.model, apiKeyProvider, undefined, undefined, undefined, undefined, undefined, undefined)
|
|
47
|
+
new huggingface_language_model_1.HuggingFaceModel(modelDescription.id, modelDescription.model, status, apiKeyProvider, undefined, undefined, undefined, undefined, undefined, undefined)
|
|
43
48
|
]);
|
|
44
49
|
}
|
|
45
50
|
}
|
|
@@ -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,
|
|
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;IAO7C,IAAI,MAAM;;QACN,OAAO,MAAA,IAAI,CAAC,OAAO,mCAAI,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,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,KAAK,CAAC,KAAK,GAAG,gBAAgB,CAAC,KAAK,CAAC;gBACrC,KAAK,CAAC,MAAM,GAAG,cAAc,CAAC;gBAC9B,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;YAC1B,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,CACZ;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;CACJ,CAAA;AAvDY,oFAAoC;AAK1B;IADlB,IAAA,kBAAM,EAAC,+BAAqB,CAAC;;mFACkC;+CALvD,oCAAoC;IADhD,IAAA,sBAAU,GAAE;GACA,oCAAoC,CAuDhD"}
|
package/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@theia/ai-huggingface",
|
|
3
|
-
"version": "1.64.0
|
|
3
|
+
"version": "1.64.0",
|
|
4
4
|
"description": "Theia - Hugging Face Integration",
|
|
5
5
|
"dependencies": {
|
|
6
6
|
"@huggingface/inference": "^2.0.0",
|
|
7
|
-
"@theia/ai-core": "1.64.0
|
|
8
|
-
"@theia/core": "1.64.0
|
|
7
|
+
"@theia/ai-core": "1.64.0",
|
|
8
|
+
"@theia/core": "1.64.0"
|
|
9
9
|
},
|
|
10
10
|
"publishConfig": {
|
|
11
11
|
"access": "public"
|
|
@@ -41,10 +41,10 @@
|
|
|
41
41
|
"watch": "theiaext watch"
|
|
42
42
|
},
|
|
43
43
|
"devDependencies": {
|
|
44
|
-
"@theia/ext-scripts": "1.
|
|
44
|
+
"@theia/ext-scripts": "1.64.0"
|
|
45
45
|
},
|
|
46
46
|
"nyc": {
|
|
47
47
|
"extends": "../../configs/nyc.json"
|
|
48
48
|
},
|
|
49
|
-
"gitHead": "
|
|
49
|
+
"gitHead": "4c074e0d16c48e96a044b2f8bc4717de2e031c4b"
|
|
50
50
|
}
|
|
@@ -43,6 +43,7 @@ export class HuggingFaceFrontendApplicationContribution implements FrontendAppli
|
|
|
43
43
|
this.preferenceService.onPreferenceChanged(event => {
|
|
44
44
|
if (event.preferenceName === API_KEY_PREF) {
|
|
45
45
|
this.manager.setApiKey(event.newValue);
|
|
46
|
+
this.handleKeyChange(event.newValue);
|
|
46
47
|
} else if (event.preferenceName === MODELS_PREF) {
|
|
47
48
|
this.handleModelChanges(event.newValue as string[]);
|
|
48
49
|
}
|
|
@@ -62,6 +63,15 @@ export class HuggingFaceFrontendApplicationContribution implements FrontendAppli
|
|
|
62
63
|
this.prevModels = newModels;
|
|
63
64
|
}
|
|
64
65
|
|
|
66
|
+
/**
|
|
67
|
+
* Called when the API key changes. Updates all HuggingFace models on the manager to ensure the new key is used.
|
|
68
|
+
*/
|
|
69
|
+
protected handleKeyChange(newApiKey: string | undefined): void {
|
|
70
|
+
if (this.prevModels && this.prevModels.length > 0) {
|
|
71
|
+
this.manager.createOrUpdateLanguageModels(...this.prevModels.map(modelId => this.createHuggingFaceModelDescription(modelId)));
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
65
75
|
protected createHuggingFaceModelDescription(
|
|
66
76
|
modelId: string
|
|
67
77
|
): HuggingFaceModelDescription {
|
|
@@ -21,7 +21,8 @@ import {
|
|
|
21
21
|
LanguageModelResponse,
|
|
22
22
|
LanguageModelStreamResponsePart,
|
|
23
23
|
LanguageModelTextResponse,
|
|
24
|
-
MessageActor
|
|
24
|
+
MessageActor,
|
|
25
|
+
LanguageModelStatus
|
|
25
26
|
} from '@theia/ai-core';
|
|
26
27
|
import { CancellationToken } from '@theia/core';
|
|
27
28
|
import { HfInference } from '@huggingface/inference';
|
|
@@ -70,6 +71,7 @@ export class HuggingFaceModel implements LanguageModel {
|
|
|
70
71
|
constructor(
|
|
71
72
|
public readonly id: string,
|
|
72
73
|
public model: string,
|
|
74
|
+
public status: LanguageModelStatus,
|
|
73
75
|
public apiKey: () => string | undefined,
|
|
74
76
|
public readonly name?: string,
|
|
75
77
|
public readonly vendor?: string,
|
|
@@ -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 } from '@theia/ai-core';
|
|
17
|
+
import { LanguageModelRegistry, LanguageModelStatus } from '@theia/ai-core';
|
|
18
18
|
import { inject, injectable } from '@theia/core/shared/inversify';
|
|
19
19
|
import { HuggingFaceModel } from './huggingface-language-model';
|
|
20
20
|
import { HuggingFaceLanguageModelsManager, HuggingFaceModelDescription } from '../common';
|
|
@@ -31,10 +31,15 @@ export class HuggingFaceLanguageModelsManagerImpl implements HuggingFaceLanguage
|
|
|
31
31
|
return this._apiKey ?? process.env.HUGGINGFACE_API_KEY;
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
+
protected calculateStatus(apiKey: string | undefined): LanguageModelStatus {
|
|
35
|
+
return apiKey ? { status: 'ready' } : { status: 'unavailable', message: 'No Hugging Face API key set' };
|
|
36
|
+
}
|
|
37
|
+
|
|
34
38
|
async createOrUpdateLanguageModels(...modelDescriptions: HuggingFaceModelDescription[]): Promise<void> {
|
|
35
39
|
for (const modelDescription of modelDescriptions) {
|
|
36
40
|
const model = await this.languageModelRegistry.getLanguageModel(modelDescription.id);
|
|
37
41
|
const apiKeyProvider = () => this.apiKey;
|
|
42
|
+
const status = this.calculateStatus(this.apiKey);
|
|
38
43
|
|
|
39
44
|
if (model) {
|
|
40
45
|
if (!(model instanceof HuggingFaceModel)) {
|
|
@@ -43,11 +48,13 @@ export class HuggingFaceLanguageModelsManagerImpl implements HuggingFaceLanguage
|
|
|
43
48
|
}
|
|
44
49
|
model.model = modelDescription.model;
|
|
45
50
|
model.apiKey = apiKeyProvider;
|
|
51
|
+
model.status = status;
|
|
46
52
|
} else {
|
|
47
53
|
this.languageModelRegistry.addLanguageModels([
|
|
48
54
|
new HuggingFaceModel(
|
|
49
55
|
modelDescription.id,
|
|
50
56
|
modelDescription.model,
|
|
57
|
+
status,
|
|
51
58
|
apiKeyProvider,
|
|
52
59
|
undefined,
|
|
53
60
|
undefined,
|