@theia/ai-llamafile 1.55.0 → 1.56.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.
@@ -1 +1 @@
1
- {"version":3,"file":"llamafile-command-contribution.d.ts","sourceRoot":"","sources":["../../src/browser/llamafile-command-contribution.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,uBAAuB,EAAE,MAAM,uDAAuD,CAAC;AAChG,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACnF,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE/E,OAAO,EAAkB,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAG/E,eAAO,MAAM,qBAAqB;;;CAGjC,CAAC;AACF,eAAO,MAAM,oBAAoB;;;CAGhC,CAAC;AAEF,qBACa,4BAA6B,YAAW,mBAAmB;IAGpE,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAGxD,SAAS,CAAC,QAAQ,CAAC,qBAAqB,EAAE,uBAAuB,CAAC;IAGlE,SAAS,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAG/C,SAAS,CAAC,cAAc,EAAE,cAAc,CAAC;IAGzC,SAAS,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IAE7C,gBAAgB,CAAC,eAAe,EAAE,eAAe,GAAG,IAAI;CA0C3D"}
1
+ {"version":3,"file":"llamafile-command-contribution.d.ts","sourceRoot":"","sources":["../../src/browser/llamafile-command-contribution.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,uBAAuB,EAAE,MAAM,uDAAuD,CAAC;AAChG,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACnF,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAI/D,eAAO,MAAM,qBAAqB;;;CAGjC,CAAC;AACF,eAAO,MAAM,oBAAoB;;;CAGhC,CAAC;AAEF,qBACa,4BAA6B,YAAW,mBAAmB;IAGpE,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAGxD,SAAS,CAAC,QAAQ,CAAC,qBAAqB,EAAE,uBAAuB,CAAC;IAGlE,SAAS,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAG/C,SAAS,CAAC,cAAc,EAAE,cAAc,CAAC;IAGzC,SAAS,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IAE7C,gBAAgB,CAAC,eAAe,EAAE,eAAe,GAAG,IAAI;CA0C3D"}
@@ -1 +1 @@
1
- {"version":3,"file":"llamafile-command-contribution.js","sourceRoot":"","sources":["../../src/browser/llamafile-command-contribution.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"llamafile-command-contribution.js","sourceRoot":"","sources":["../../src/browser/llamafile-command-contribution.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,18 @@
1
1
  import { FrontendApplicationContribution, PreferenceService } from '@theia/core/lib/browser';
2
- import { LlamafileManager } from '../common/llamafile-manager';
2
+ import { LlamafileManager, LlamafileModelDescription } from '../common/llamafile-manager';
3
+ import { RequestSetting } from '@theia/ai-core/lib/browser/ai-core-preferences';
3
4
  export declare class LlamafileFrontendApplicationContribution implements FrontendApplicationContribution {
4
5
  protected preferenceService: PreferenceService;
5
6
  protected llamafileManager: LlamafileManager;
6
7
  private _knownLlamaFiles;
7
8
  onStart(): void;
9
+ protected getLLamaFileModelDescriptions(llamafiles: LlamafileEntry[]): LlamafileModelDescription[];
10
+ protected handleLlamaFilePreferenceChange(newModels: LlamafileEntry[]): void;
11
+ protected handleRequestSettingsChange(newSettings: RequestSetting[]): void;
12
+ }
13
+ export interface LlamafileEntry {
14
+ name: string;
15
+ uri: string;
16
+ port: number;
8
17
  }
9
18
  //# sourceMappingURL=llamafile-frontend-application-contribution.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"llamafile-frontend-application-contribution.d.ts","sourceRoot":"","sources":["../../src/browser/llamafile-frontend-application-contribution.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,+BAA+B,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE7F,OAAO,EAAkB,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAG/E,qBACa,wCAAyC,YAAW,+BAA+B;IAG5F,SAAS,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAG/C,SAAS,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IAE7C,OAAO,CAAC,gBAAgB,CAA0C;IAElE,OAAO,IAAI,IAAI;CA0BlB"}
1
+ {"version":3,"file":"llamafile-frontend-application-contribution.d.ts","sourceRoot":"","sources":["../../src/browser/llamafile-frontend-application-contribution.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,+BAA+B,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE7F,OAAO,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AAE1F,OAAO,EAAoC,cAAc,EAAE,MAAM,gDAAgD,CAAC;AAGlH,qBACa,wCAAyC,YAAW,+BAA+B;IAG5F,SAAS,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAG/C,SAAS,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IAE7C,OAAO,CAAC,gBAAgB,CAA0C;IAElE,OAAO,IAAI,IAAI;IAqBf,SAAS,CAAC,6BAA6B,CAAC,UAAU,EAAE,cAAc,EAAE,GAAG,yBAAyB,EAAE;IAoBlG,SAAS,CAAC,+BAA+B,CAAC,SAAS,EAAE,cAAc,EAAE,GAAG,IAAI;IAgB5E,SAAS,CAAC,2BAA2B,CAAC,WAAW,EAAE,cAAc,EAAE,GAAG,IAAI;CAO7E;AAED,MAAM,WAAW,cAAc;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CAChB"}
@@ -21,6 +21,8 @@ const browser_1 = require("@theia/core/lib/browser");
21
21
  const inversify_1 = require("@theia/core/shared/inversify");
22
22
  const llamafile_manager_1 = require("../common/llamafile-manager");
23
23
  const llamafile_preferences_1 = require("./llamafile-preferences");
24
+ const ai_core_preferences_1 = require("@theia/ai-core/lib/browser/ai-core-preferences");
25
+ const LLAMAFILE_PROVIDER_ID = 'llamafile';
24
26
  let LlamafileFrontendApplicationContribution = class LlamafileFrontendApplicationContribution {
25
27
  constructor() {
26
28
  this._knownLlamaFiles = new Map();
@@ -28,22 +30,55 @@ let LlamafileFrontendApplicationContribution = class LlamafileFrontendApplicatio
28
30
  onStart() {
29
31
  this.preferenceService.ready.then(() => {
30
32
  const llamafiles = this.preferenceService.get(llamafile_preferences_1.PREFERENCE_LLAMAFILE, []);
31
- this.llamafileManager.addLanguageModels(llamafiles);
32
- llamafiles.forEach(model => this._knownLlamaFiles.set(model.name, model));
33
+ const validLlamafiles = llamafiles.filter(LlamafileEntry.is);
34
+ const LlamafileModelDescriptions = this.getLLamaFileModelDescriptions(validLlamafiles);
35
+ this.llamafileManager.addLanguageModels(LlamafileModelDescriptions);
36
+ validLlamafiles.forEach(model => this._knownLlamaFiles.set(model.name, model));
33
37
  this.preferenceService.onPreferenceChanged(event => {
34
38
  if (event.preferenceName === llamafile_preferences_1.PREFERENCE_LLAMAFILE) {
35
- // only new models which are actual LLamaFileEntries
36
- const newModels = event.newValue.filter((llamafileEntry) => llamafile_manager_1.LlamafileEntry.is(llamafileEntry));
37
- const llamafilesToAdd = newModels.filter(llamafile => !this._knownLlamaFiles.has(llamafile.name) || !llamafile_manager_1.LlamafileEntry.equals(this._knownLlamaFiles.get(llamafile.name), llamafile));
38
- const llamafileIdsToRemove = [...this._knownLlamaFiles.values()].filter(llamafile => !newModels.find(a => llamafile_manager_1.LlamafileEntry.equals(a, llamafile))).map(a => a.name);
39
- this.llamafileManager.removeLanguageModels(llamafileIdsToRemove);
40
- llamafileIdsToRemove.forEach(model => this._knownLlamaFiles.delete(model));
41
- this.llamafileManager.addLanguageModels(llamafilesToAdd);
42
- llamafilesToAdd.forEach(model => this._knownLlamaFiles.set(model.name, model));
39
+ const newModels = event.newValue.filter((llamafileEntry) => LlamafileEntry.is(llamafileEntry));
40
+ this.handleLlamaFilePreferenceChange(newModels);
41
+ }
42
+ else if (event.preferenceName === ai_core_preferences_1.PREFERENCE_NAME_REQUEST_SETTINGS) {
43
+ this.handleRequestSettingsChange(event.newValue);
43
44
  }
44
45
  });
45
46
  });
46
47
  }
48
+ getLLamaFileModelDescriptions(llamafiles) {
49
+ const requestSettings = this.preferenceService.get(ai_core_preferences_1.PREFERENCE_NAME_REQUEST_SETTINGS, []);
50
+ return llamafiles.map(llamafile => {
51
+ var _a;
52
+ const matchingSettings = requestSettings.filter(setting => (!setting.providerId || setting.providerId === LLAMAFILE_PROVIDER_ID) &&
53
+ setting.modelId === llamafile.name);
54
+ if (matchingSettings.length > 1) {
55
+ console.warn(`Multiple entries found for model "${llamafile.name}". Using the first match.`);
56
+ }
57
+ return {
58
+ name: llamafile.name,
59
+ uri: llamafile.uri,
60
+ port: llamafile.port,
61
+ defaultRequestSettings: (_a = matchingSettings[0]) === null || _a === void 0 ? void 0 : _a.requestSettings
62
+ };
63
+ });
64
+ }
65
+ handleLlamaFilePreferenceChange(newModels) {
66
+ const llamafilesToAdd = newModels.filter(llamafile => !this._knownLlamaFiles.has(llamafile.name) ||
67
+ !LlamafileEntry.equals(this._knownLlamaFiles.get(llamafile.name), llamafile));
68
+ const llamafileIdsToRemove = [...this._knownLlamaFiles.values()].filter(llamafile => !newModels.find(newModel => LlamafileEntry.equals(newModel, llamafile)))
69
+ .map(llamafile => llamafile.name);
70
+ this.llamafileManager.removeLanguageModels(llamafileIdsToRemove);
71
+ llamafileIdsToRemove.forEach(id => this._knownLlamaFiles.delete(id));
72
+ this.llamafileManager.addLanguageModels(this.getLLamaFileModelDescriptions(llamafilesToAdd));
73
+ llamafilesToAdd.forEach(model => this._knownLlamaFiles.set(model.name, model));
74
+ }
75
+ handleRequestSettingsChange(newSettings) {
76
+ const llamafiles = Array.from(this._knownLlamaFiles.values());
77
+ const llamafileModelDescriptions = this.getLLamaFileModelDescriptions(llamafiles);
78
+ llamafileModelDescriptions.forEach(llamafileModelDescription => {
79
+ this.llamafileManager.updateRequestSettings(llamafileModelDescription.name, llamafileModelDescription.defaultRequestSettings);
80
+ });
81
+ }
47
82
  };
48
83
  exports.LlamafileFrontendApplicationContribution = LlamafileFrontendApplicationContribution;
49
84
  tslib_1.__decorate([
@@ -57,4 +92,22 @@ tslib_1.__decorate([
57
92
  exports.LlamafileFrontendApplicationContribution = LlamafileFrontendApplicationContribution = tslib_1.__decorate([
58
93
  (0, inversify_1.injectable)()
59
94
  ], LlamafileFrontendApplicationContribution);
95
+ var LlamafileEntry;
96
+ (function (LlamafileEntry) {
97
+ function equals(a, b) {
98
+ return (a.name === b.name &&
99
+ a.uri === b.uri &&
100
+ a.port === b.port);
101
+ }
102
+ LlamafileEntry.equals = equals;
103
+ function is(entry) {
104
+ return (typeof entry === 'object' &&
105
+ // eslint-disable-next-line no-null/no-null
106
+ entry !== null &&
107
+ 'name' in entry && typeof entry.name === 'string' &&
108
+ 'uri' in entry && typeof entry.uri === 'string' &&
109
+ 'port' in entry && typeof entry.port === 'number');
110
+ }
111
+ LlamafileEntry.is = is;
112
+ })(LlamafileEntry || (LlamafileEntry = {}));
60
113
  //# sourceMappingURL=llamafile-frontend-application-contribution.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"llamafile-frontend-application-contribution.js","sourceRoot":"","sources":["../../src/browser/llamafile-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,mEAA+E;AAC/E,mEAA+D;AAGxD,IAAM,wCAAwC,GAA9C,MAAM,wCAAwC;IAA9C;QAQK,qBAAgB,GAAgC,IAAI,GAAG,EAAE,CAAC;IA4BtE,CAAC;IA1BG,OAAO;QACH,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE;YACnC,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAmB,4CAAoB,EAAE,EAAE,CAAC,CAAC;YAC1F,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;YACpD,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;YAE1E,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE;gBAC/C,IAAI,KAAK,CAAC,cAAc,KAAK,4CAAoB,EAAE,CAAC;oBAChD,oDAAoD;oBACpD,MAAM,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,cAAuB,EAAE,EAAE,CAAC,kCAAc,CAAC,EAAE,CAAC,cAAc,CAAC,CAAqB,CAAC;oBAE5H,MAAM,eAAe,GAAG,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CACjD,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,kCAAc,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAE,EAAE,SAAS,CAAC,CAAC,CAAC;oBAEjI,MAAM,oBAAoB,GAAG,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAChF,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,kCAAc,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;oBAEhF,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,oBAAoB,CAAC,CAAC;oBACjE,oBAAoB,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;oBAE3E,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC;oBACzD,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;gBACnF,CAAC;YACL,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;CACJ,CAAA;AApCY,4FAAwC;AAGvC;IADT,IAAA,kBAAM,EAAC,2BAAiB,CAAC;;mFACqB;AAGrC;IADT,IAAA,kBAAM,EAAC,oCAAgB,CAAC;;kFACoB;mDANpC,wCAAwC;IADpD,IAAA,sBAAU,GAAE;GACA,wCAAwC,CAoCpD"}
1
+ {"version":3,"file":"llamafile-frontend-application-contribution.js","sourceRoot":"","sources":["../../src/browser/llamafile-frontend-application-contribution.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,25 @@
1
1
  import { LanguageModel, LanguageModelRequest, LanguageModelResponse } from '@theia/ai-core';
2
+ import { CancellationToken } from '@theia/core';
2
3
  export declare class LlamafileLanguageModel implements LanguageModel {
3
4
  readonly name: string;
4
5
  readonly uri: string;
5
6
  readonly port: number;
7
+ defaultRequestSettings?: {
8
+ [key: string]: unknown;
9
+ } | undefined;
6
10
  readonly providerId = "llamafile";
7
11
  readonly vendor: string;
8
- constructor(name: string, uri: string, port: number);
12
+ /**
13
+ * @param name the unique name for this language model. It will be used to identify the model in the UI.
14
+ * @param uri the URI pointing to the Llamafile model location.
15
+ * @param port the port on which the Llamafile model server operates.
16
+ * @param defaultRequestSettings optional default settings for requests made using this model.
17
+ */
18
+ constructor(name: string, uri: string, port: number, defaultRequestSettings?: {
19
+ [key: string]: unknown;
20
+ } | undefined);
9
21
  get id(): string;
10
- request(request: LanguageModelRequest): Promise<LanguageModelResponse>;
22
+ protected getSettings(request: LanguageModelRequest): Record<string, unknown>;
23
+ request(request: LanguageModelRequest, cancellationToken?: CancellationToken): Promise<LanguageModelResponse>;
11
24
  }
12
25
  //# sourceMappingURL=llamafile-language-model.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"llamafile-language-model.d.ts","sourceRoot":"","sources":["../../src/common/llamafile-language-model.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,qBAAqB,EAAmC,MAAM,gBAAgB,CAAC;AAE7H,qBAAa,sBAAuB,YAAW,aAAa;IAK5C,QAAQ,CAAC,IAAI,EAAE,MAAM;IAAE,QAAQ,CAAC,GAAG,EAAE,MAAM;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM;IAH9E,QAAQ,CAAC,UAAU,eAAe;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAa;gBAEf,IAAI,EAAE,MAAM,EAAW,GAAG,EAAE,MAAM,EAAW,IAAI,EAAE,MAAM;IAG9E,IAAI,EAAE,IAAI,MAAM,CAEf;IAEK,OAAO,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,qBAAqB,CAAC;CAuE/E"}
1
+ {"version":3,"file":"llamafile-language-model.d.ts","sourceRoot":"","sources":["../../src/common/llamafile-language-model.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,qBAAqB,EAAmC,MAAM,gBAAgB,CAAC;AAC7H,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,qBAAa,sBAAuB,YAAW,aAAa;aAYpC,IAAI,EAAE,MAAM;aACZ,GAAG,EAAE,MAAM;aACX,IAAI,EAAE,MAAM;IACrB,sBAAsB,CAAC;;;IAblC,QAAQ,CAAC,UAAU,eAAe;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAa;IAEpC;;;;;OAKG;gBAEiB,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACrB,sBAAsB,CAAC;;iBAA4B;IAG9D,IAAI,EAAE,IAAI,MAAM,CAEf;IACD,SAAS,CAAC,WAAW,CAAC,OAAO,EAAE,oBAAoB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAavE,OAAO,CAAC,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,qBAAqB,CAAC;CAyEtH"}
@@ -17,17 +17,37 @@
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
18
  exports.LlamafileLanguageModel = void 0;
19
19
  class LlamafileLanguageModel {
20
- constructor(name, uri, port) {
20
+ /**
21
+ * @param name the unique name for this language model. It will be used to identify the model in the UI.
22
+ * @param uri the URI pointing to the Llamafile model location.
23
+ * @param port the port on which the Llamafile model server operates.
24
+ * @param defaultRequestSettings optional default settings for requests made using this model.
25
+ */
26
+ constructor(name, uri, port, defaultRequestSettings) {
21
27
  this.name = name;
22
28
  this.uri = uri;
23
29
  this.port = port;
30
+ this.defaultRequestSettings = defaultRequestSettings;
24
31
  this.providerId = 'llamafile';
25
32
  this.vendor = 'Mozilla';
26
33
  }
27
34
  get id() {
28
35
  return this.name;
29
36
  }
30
- async request(request) {
37
+ getSettings(request) {
38
+ const settings = request.settings ? request.settings : this.defaultRequestSettings;
39
+ if (!settings) {
40
+ return {
41
+ n_predict: 200,
42
+ stream: true,
43
+ stop: ['</s>', 'Llama:', 'User:', '<|eot_id|>'],
44
+ cache_prompt: true,
45
+ };
46
+ }
47
+ return settings;
48
+ }
49
+ async request(request, cancellationToken) {
50
+ const settings = this.getSettings(request);
31
51
  try {
32
52
  let prompt = request.messages.map(message => {
33
53
  switch (message.actor) {
@@ -47,10 +67,7 @@ class LlamafileLanguageModel {
47
67
  },
48
68
  body: JSON.stringify({
49
69
  prompt: prompt,
50
- n_predict: 200,
51
- stream: true,
52
- stop: ['</s>', 'Llama:', 'User:', '<|eot_id|>'],
53
- cache_prompt: true,
70
+ ...settings
54
71
  }),
55
72
  });
56
73
  if (!response.ok) {
@@ -66,6 +83,10 @@ class LlamafileLanguageModel {
66
83
  [Symbol.asyncIterator]() {
67
84
  return {
68
85
  async next() {
86
+ if (cancellationToken === null || cancellationToken === void 0 ? void 0 : cancellationToken.isCancellationRequested) {
87
+ reader.cancel();
88
+ return { value: undefined, done: true };
89
+ }
69
90
  const { value, done } = await reader.read();
70
91
  if (done) {
71
92
  return { value: undefined, done: true };
@@ -1 +1 @@
1
- {"version":3,"file":"llamafile-language-model.js","sourceRoot":"","sources":["../../src/common/llamafile-language-model.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"llamafile-language-model.js","sourceRoot":"","sources":["../../src/common/llamafile-language-model.ts"],"names":[],"mappings":"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"}
@@ -1,24 +1,29 @@
1
1
  export declare const LlamafileManager: unique symbol;
2
2
  export declare const LlamafileManagerPath = "/services/llamafilemanager";
3
+ export interface LlamafileModelDescription {
4
+ name: string;
5
+ uri: string;
6
+ port: number;
7
+ /**
8
+ * Default request settings for the Llama model.
9
+ */
10
+ defaultRequestSettings?: {
11
+ [key: string]: unknown;
12
+ };
13
+ }
3
14
  export interface LlamafileManager {
4
15
  startServer(name: string): Promise<void>;
5
16
  stopServer(name: string): void;
6
17
  getStartedLlamafiles(): Promise<string[]>;
7
18
  setClient(client: LlamafileServerManagerClient): void;
8
- addLanguageModels(llamaFiles: LlamafileEntry[]): Promise<void>;
19
+ addLanguageModels(llamaFiles: LlamafileModelDescription[]): Promise<void>;
9
20
  removeLanguageModels(modelIds: string[]): void;
21
+ updateRequestSettings(modelId: string, requestSettings?: {
22
+ [key: string]: unknown;
23
+ }): void;
10
24
  }
11
25
  export interface LlamafileServerManagerClient {
12
26
  log(llamafileName: string, message: string): void;
13
27
  error(llamafileName: string, message: string): void;
14
28
  }
15
- export interface LlamafileEntry {
16
- name: string;
17
- uri: string;
18
- port: number;
19
- }
20
- export declare namespace LlamafileEntry {
21
- function equals(a: LlamafileEntry, b: LlamafileEntry): boolean;
22
- function is(entry: unknown): entry is LlamafileEntry;
23
- }
24
29
  //# sourceMappingURL=llamafile-manager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"llamafile-manager.d.ts","sourceRoot":"","sources":["../../src/common/llamafile-manager.ts"],"names":[],"mappings":"AAeA,eAAO,MAAM,gBAAgB,eAA6B,CAAC;AAE3D,eAAO,MAAM,oBAAoB,+BAA+B,CAAC;AAEjE,MAAM,WAAW,gBAAgB;IAC7B,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,oBAAoB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1C,SAAS,CAAC,MAAM,EAAE,4BAA4B,GAAG,IAAI,CAAC;IACtD,iBAAiB,CAAC,UAAU,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/D,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;CAClD;AACD,MAAM,WAAW,4BAA4B;IACzC,GAAG,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAClD,KAAK,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACvD;AAED,MAAM,WAAW,cAAc;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,yBAAiB,cAAc,CAAC;IAC5B,SAAgB,MAAM,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,cAAc,GAAG,OAAO,CAEpE;IACD,SAAgB,EAAE,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,cAAc,CAM1D;CACJ"}
1
+ {"version":3,"file":"llamafile-manager.d.ts","sourceRoot":"","sources":["../../src/common/llamafile-manager.ts"],"names":[],"mappings":"AAeA,eAAO,MAAM,gBAAgB,eAA6B,CAAC;AAE3D,eAAO,MAAM,oBAAoB,+BAA+B,CAAC;AAEjE,MAAM,WAAW,yBAAyB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,sBAAsB,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;CACvD;AAED,MAAM,WAAW,gBAAgB;IAC7B,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,oBAAoB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1C,SAAS,CAAC,MAAM,EAAE,4BAA4B,GAAG,IAAI,CAAC;IACtD,iBAAiB,CAAC,UAAU,EAAE,yBAAyB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1E,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC/C,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,GAAG,IAAI,CAAC;CAC9F;AACD,MAAM,WAAW,4BAA4B;IACzC,GAAG,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAClD,KAAK,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACvD"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.LlamafileEntry = exports.LlamafileManagerPath = exports.LlamafileManager = void 0;
3
+ exports.LlamafileManagerPath = exports.LlamafileManager = void 0;
4
4
  // *****************************************************************************
5
5
  // Copyright (C) 2024 EclipseSource GmbH.
6
6
  //
@@ -18,19 +18,4 @@ exports.LlamafileEntry = exports.LlamafileManagerPath = exports.LlamafileManager
18
18
  // *****************************************************************************
19
19
  exports.LlamafileManager = Symbol('LlamafileManager');
20
20
  exports.LlamafileManagerPath = '/services/llamafilemanager';
21
- var LlamafileEntry;
22
- (function (LlamafileEntry) {
23
- function equals(a, b) {
24
- return a.name === b.name && a.uri === b.uri && a.port === b.port;
25
- }
26
- LlamafileEntry.equals = equals;
27
- function is(entry) {
28
- // eslint-disable-next-line no-null/no-null
29
- return typeof entry === 'object' && entry !== null
30
- && 'name' in entry && typeof entry.name === 'string'
31
- && 'uri' in entry && typeof entry.uri === 'string'
32
- && 'port' in entry && typeof entry.port === 'number';
33
- }
34
- LlamafileEntry.is = is;
35
- })(LlamafileEntry || (exports.LlamafileEntry = LlamafileEntry = {}));
36
21
  //# sourceMappingURL=llamafile-manager.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"llamafile-manager.js","sourceRoot":"","sources":["../../src/common/llamafile-manager.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;AACnE,QAAA,gBAAgB,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC;AAE9C,QAAA,oBAAoB,GAAG,4BAA4B,CAAC;AAqBjE,IAAiB,cAAc,CAW9B;AAXD,WAAiB,cAAc;IAC3B,SAAgB,MAAM,CAAC,CAAiB,EAAE,CAAiB;QACvD,OAAO,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC;IACrE,CAAC;IAFe,qBAAM,SAErB,CAAA;IACD,SAAgB,EAAE,CAAC,KAAc;QAC7B,2CAA2C;QAC3C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;eAC3C,MAAM,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;eACjD,KAAK,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,GAAG,KAAK,QAAQ;eAC/C,MAAM,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC;IAC7D,CAAC;IANe,iBAAE,KAMjB,CAAA;AACL,CAAC,EAXgB,cAAc,8BAAd,cAAc,QAW9B"}
1
+ {"version":3,"file":"llamafile-manager.js","sourceRoot":"","sources":["../../src/common/llamafile-manager.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;AACnE,QAAA,gBAAgB,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC;AAE9C,QAAA,oBAAoB,GAAG,4BAA4B,CAAC"}
@@ -1,10 +1,13 @@
1
1
  import { LanguageModelRegistry } from '@theia/ai-core';
2
- import { LlamafileEntry, LlamafileManager, LlamafileServerManagerClient } from '../common/llamafile-manager';
2
+ import { LlamafileManager, LlamafileModelDescription, LlamafileServerManagerClient } from '../common/llamafile-manager';
3
3
  export declare class LlamafileManagerImpl implements LlamafileManager {
4
4
  protected languageModelRegistry: LanguageModelRegistry;
5
5
  private processMap;
6
6
  private client;
7
- addLanguageModels(llamaFiles: LlamafileEntry[]): Promise<void>;
7
+ addLanguageModels(LlamafileModelDescriptions: LlamafileModelDescription[]): Promise<void>;
8
+ updateRequestSettings(modelId: string, requestSettings?: {
9
+ [key: string]: unknown;
10
+ }): Promise<void>;
8
11
  removeLanguageModels(modelIds: string[]): void;
9
12
  getStartedLlamafiles(): Promise<string[]>;
10
13
  startServer(name: string): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"llamafile-manager-impl.d.ts","sourceRoot":"","sources":["../../src/node/llamafile-manager-impl.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAMvD,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,4BAA4B,EAAE,MAAM,6BAA6B,CAAC;AAE7G,qBACa,oBAAqB,YAAW,gBAAgB;IAGzD,SAAS,CAAC,qBAAqB,EAAE,qBAAqB,CAAC;IAEvD,OAAO,CAAC,UAAU,CAA0D;IAC5E,OAAO,CAAC,MAAM,CAA+B;IAEvC,iBAAiB,CAAC,UAAU,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBpE,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI;IAKxC,oBAAoB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAKzC,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkC9C,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAQ9B,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIhC,SAAS,CAAC,MAAM,EAAE,4BAA4B,GAAG,IAAI;CAIxD"}
1
+ {"version":3,"file":"llamafile-manager-impl.d.ts","sourceRoot":"","sources":["../../src/node/llamafile-manager-impl.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAMvD,OAAO,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,4BAA4B,EAAE,MAAM,6BAA6B,CAAC;AAExH,qBACa,oBAAqB,YAAW,gBAAgB;IAGzD,SAAS,CAAC,qBAAqB,EAAE,qBAAqB,CAAC;IAEvD,OAAO,CAAC,UAAU,CAA0D;IAC5E,OAAO,CAAC,MAAM,CAA+B;IAEvC,iBAAiB,CAAC,0BAA0B,EAAE,yBAAyB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAwBzF,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAY1G,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI;IAKxC,oBAAoB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAKzC,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkC9C,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAQ9B,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIhC,SAAS,CAAC,MAAM,EAAE,4BAA4B,GAAG,IAAI;CAIxD"}
@@ -27,12 +27,12 @@ let LlamafileManagerImpl = class LlamafileManagerImpl {
27
27
  constructor() {
28
28
  this.processMap = new Map();
29
29
  }
30
- async addLanguageModels(llamaFiles) {
31
- for (const llamafile of llamaFiles) {
30
+ async addLanguageModels(LlamafileModelDescriptions) {
31
+ for (const llamafile of LlamafileModelDescriptions) {
32
32
  const model = await this.languageModelRegistry.getLanguageModel(llamafile.name);
33
33
  if (model) {
34
34
  if (!(model instanceof llamafile_language_model_1.LlamafileLanguageModel)) {
35
- console.warn(`Llamafile: model ${model.id} is not an LLamafile model`);
35
+ console.warn(`Llamafile: model ${model.id} is not a Llamafile model`);
36
36
  continue;
37
37
  }
38
38
  else {
@@ -41,7 +41,21 @@ let LlamafileManagerImpl = class LlamafileManagerImpl {
41
41
  }
42
42
  }
43
43
  else {
44
- this.languageModelRegistry.addLanguageModels([new llamafile_language_model_1.LlamafileLanguageModel(llamafile.name, llamafile.uri, llamafile.port)]);
44
+ this.languageModelRegistry.addLanguageModels([
45
+ new llamafile_language_model_1.LlamafileLanguageModel(llamafile.name, llamafile.uri, llamafile.port, llamafile.defaultRequestSettings)
46
+ ]);
47
+ }
48
+ }
49
+ }
50
+ async updateRequestSettings(modelId, requestSettings) {
51
+ const model = await this.languageModelRegistry.getLanguageModel(modelId);
52
+ if (model) {
53
+ if (!(model instanceof llamafile_language_model_1.LlamafileLanguageModel)) {
54
+ console.warn(`Llamafile: model ${model.id} is not a Llamafile model`);
55
+ return;
56
+ }
57
+ else {
58
+ model.defaultRequestSettings = requestSettings;
45
59
  }
46
60
  }
47
61
  }
@@ -1 +1 @@
1
- {"version":3,"file":"llamafile-manager-impl.js","sourceRoot":"","sources":["../../src/node/llamafile-manager-impl.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"llamafile-manager-impl.js","sourceRoot":"","sources":["../../src/node/llamafile-manager-impl.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@theia/ai-llamafile",
3
- "version": "1.55.0",
3
+ "version": "1.56.0",
4
4
  "description": "Theia - Llamafile Integration",
5
5
  "dependencies": {
6
- "@theia/ai-core": "1.55.0",
7
- "@theia/core": "1.55.0",
8
- "@theia/output": "1.55.0",
6
+ "@theia/ai-core": "1.56.0",
7
+ "@theia/core": "1.56.0",
8
+ "@theia/output": "1.56.0",
9
9
  "tslib": "^2.6.2"
10
10
  },
11
11
  "publishConfig": {
@@ -42,10 +42,10 @@
42
42
  "watch": "theiaext watch"
43
43
  },
44
44
  "devDependencies": {
45
- "@theia/ext-scripts": "1.55.0"
45
+ "@theia/ext-scripts": "1.56.0"
46
46
  },
47
47
  "nyc": {
48
48
  "extends": "../../configs/nyc.json"
49
49
  },
50
- "gitHead": "0e7a523b8e798679d2e098709c63bd7060e54c8a"
50
+ "gitHead": "3b4498f8f1c66be688847418fcc35595282671dc"
51
51
  }
@@ -17,8 +17,9 @@ import { AICommandHandlerFactory } from '@theia/ai-core/lib/browser/ai-command-h
17
17
  import { CommandContribution, CommandRegistry, MessageService } from '@theia/core';
18
18
  import { PreferenceService, QuickInputService } from '@theia/core/lib/browser';
19
19
  import { inject, injectable } from '@theia/core/shared/inversify';
20
- import { LlamafileEntry, LlamafileManager } from '../common/llamafile-manager';
20
+ import { LlamafileManager } from '../common/llamafile-manager';
21
21
  import { PREFERENCE_LLAMAFILE } from './llamafile-preferences';
22
+ import { LlamafileEntry } from './llamafile-frontend-application-contribution';
22
23
 
23
24
  export const StartLlamafileCommand = {
24
25
  id: 'llamafile.start',
@@ -16,9 +16,11 @@
16
16
 
17
17
  import { FrontendApplicationContribution, PreferenceService } from '@theia/core/lib/browser';
18
18
  import { inject, injectable } from '@theia/core/shared/inversify';
19
- import { LlamafileEntry, LlamafileManager } from '../common/llamafile-manager';
19
+ import { LlamafileManager, LlamafileModelDescription } from '../common/llamafile-manager';
20
20
  import { PREFERENCE_LLAMAFILE } from './llamafile-preferences';
21
+ import { PREFERENCE_NAME_REQUEST_SETTINGS, RequestSetting } from '@theia/ai-core/lib/browser/ai-core-preferences';
21
22
 
23
+ const LLAMAFILE_PROVIDER_ID = 'llamafile';
22
24
  @injectable()
23
25
  export class LlamafileFrontendApplicationContribution implements FrontendApplicationContribution {
24
26
 
@@ -33,27 +35,92 @@ export class LlamafileFrontendApplicationContribution implements FrontendApplica
33
35
  onStart(): void {
34
36
  this.preferenceService.ready.then(() => {
35
37
  const llamafiles = this.preferenceService.get<LlamafileEntry[]>(PREFERENCE_LLAMAFILE, []);
36
- this.llamafileManager.addLanguageModels(llamafiles);
37
- llamafiles.forEach(model => this._knownLlamaFiles.set(model.name, model));
38
+ const validLlamafiles = llamafiles.filter(LlamafileEntry.is);
39
+
40
+ const LlamafileModelDescriptions = this.getLLamaFileModelDescriptions(validLlamafiles);
41
+
42
+ this.llamafileManager.addLanguageModels(LlamafileModelDescriptions);
43
+ validLlamafiles.forEach(model => this._knownLlamaFiles.set(model.name, model));
38
44
 
39
45
  this.preferenceService.onPreferenceChanged(event => {
40
46
  if (event.preferenceName === PREFERENCE_LLAMAFILE) {
41
- // only new models which are actual LLamaFileEntries
42
47
  const newModels = event.newValue.filter((llamafileEntry: unknown) => LlamafileEntry.is(llamafileEntry)) as LlamafileEntry[];
48
+ this.handleLlamaFilePreferenceChange(newModels);
49
+ } else if (event.preferenceName === PREFERENCE_NAME_REQUEST_SETTINGS) {
50
+ this.handleRequestSettingsChange(event.newValue as RequestSetting[]);
51
+ }
52
+ });
53
+ });
54
+ }
43
55
 
44
- const llamafilesToAdd = newModels.filter(llamafile =>
45
- !this._knownLlamaFiles.has(llamafile.name) || !LlamafileEntry.equals(this._knownLlamaFiles.get(llamafile.name)!, llamafile));
56
+ protected getLLamaFileModelDescriptions(llamafiles: LlamafileEntry[]): LlamafileModelDescription[] {
57
+ const requestSettings = this.preferenceService.get<RequestSetting[]>(PREFERENCE_NAME_REQUEST_SETTINGS, []);
58
+ return llamafiles.map(llamafile => {
59
+ const matchingSettings = requestSettings.filter(
60
+ setting =>
61
+ (!setting.providerId || setting.providerId === LLAMAFILE_PROVIDER_ID) &&
62
+ setting.modelId === llamafile.name
63
+ );
64
+ if (matchingSettings.length > 1) {
65
+ console.warn(`Multiple entries found for model "${llamafile.name}". Using the first match.`);
66
+ }
67
+ return {
68
+ name: llamafile.name,
69
+ uri: llamafile.uri,
70
+ port: llamafile.port,
71
+ defaultRequestSettings: matchingSettings[0]?.requestSettings
72
+ };
73
+ });
74
+ }
46
75
 
47
- const llamafileIdsToRemove = [...this._knownLlamaFiles.values()].filter(llamafile =>
48
- !newModels.find(a => LlamafileEntry.equals(a, llamafile))).map(a => a.name);
76
+ protected handleLlamaFilePreferenceChange(newModels: LlamafileEntry[]): void {
77
+ const llamafilesToAdd = newModels.filter(llamafile =>
78
+ !this._knownLlamaFiles.has(llamafile.name) ||
79
+ !LlamafileEntry.equals(this._knownLlamaFiles.get(llamafile.name)!, llamafile));
49
80
 
50
- this.llamafileManager.removeLanguageModels(llamafileIdsToRemove);
51
- llamafileIdsToRemove.forEach(model => this._knownLlamaFiles.delete(model));
81
+ const llamafileIdsToRemove = [...this._knownLlamaFiles.values()].filter(llamafile =>
82
+ !newModels.find(newModel => LlamafileEntry.equals(newModel, llamafile)))
83
+ .map(llamafile => llamafile.name);
52
84
 
53
- this.llamafileManager.addLanguageModels(llamafilesToAdd);
54
- llamafilesToAdd.forEach(model => this._knownLlamaFiles.set(model.name, model));
55
- }
56
- });
85
+ this.llamafileManager.removeLanguageModels(llamafileIdsToRemove);
86
+ llamafileIdsToRemove.forEach(id => this._knownLlamaFiles.delete(id));
87
+
88
+ this.llamafileManager.addLanguageModels(this.getLLamaFileModelDescriptions(llamafilesToAdd));
89
+ llamafilesToAdd.forEach(model => this._knownLlamaFiles.set(model.name, model));
90
+ }
91
+
92
+ protected handleRequestSettingsChange(newSettings: RequestSetting[]): void {
93
+ const llamafiles = Array.from(this._knownLlamaFiles.values());
94
+ const llamafileModelDescriptions = this.getLLamaFileModelDescriptions(llamafiles);
95
+ llamafileModelDescriptions.forEach(llamafileModelDescription => {
96
+ this.llamafileManager.updateRequestSettings(llamafileModelDescription.name, llamafileModelDescription.defaultRequestSettings);
57
97
  });
58
98
  }
59
99
  }
100
+
101
+ export interface LlamafileEntry {
102
+ name: string;
103
+ uri: string;
104
+ port: number;
105
+ }
106
+
107
+ namespace LlamafileEntry {
108
+ export function equals(a: LlamafileEntry, b: LlamafileEntry): boolean {
109
+ return (
110
+ a.name === b.name &&
111
+ a.uri === b.uri &&
112
+ a.port === b.port
113
+ );
114
+ }
115
+
116
+ export function is(entry: unknown): entry is LlamafileEntry {
117
+ return (
118
+ typeof entry === 'object' &&
119
+ // eslint-disable-next-line no-null/no-null
120
+ entry !== null &&
121
+ 'name' in entry && typeof (entry as LlamafileEntry).name === 'string' &&
122
+ 'uri' in entry && typeof (entry as LlamafileEntry).uri === 'string' &&
123
+ 'port' in entry && typeof (entry as LlamafileEntry).port === 'number'
124
+ );
125
+ }
126
+ }
@@ -15,20 +15,43 @@
15
15
  // *****************************************************************************
16
16
 
17
17
  import { LanguageModel, LanguageModelRequest, LanguageModelResponse, LanguageModelStreamResponsePart } from '@theia/ai-core';
18
-
18
+ import { CancellationToken } from '@theia/core';
19
19
  export class LlamafileLanguageModel implements LanguageModel {
20
20
 
21
21
  readonly providerId = 'llamafile';
22
22
  readonly vendor: string = 'Mozilla';
23
23
 
24
- constructor(readonly name: string, readonly uri: string, readonly port: number) {
25
- }
24
+ /**
25
+ * @param name the unique name for this language model. It will be used to identify the model in the UI.
26
+ * @param uri the URI pointing to the Llamafile model location.
27
+ * @param port the port on which the Llamafile model server operates.
28
+ * @param defaultRequestSettings optional default settings for requests made using this model.
29
+ */
30
+ constructor(
31
+ public readonly name: string,
32
+ public readonly uri: string,
33
+ public readonly port: number,
34
+ public defaultRequestSettings?: { [key: string]: unknown }
35
+ ) { }
26
36
 
27
37
  get id(): string {
28
38
  return this.name;
29
39
  }
40
+ protected getSettings(request: LanguageModelRequest): Record<string, unknown> {
41
+ const settings = request.settings ? request.settings : this.defaultRequestSettings;
42
+ if (!settings) {
43
+ return {
44
+ n_predict: 200,
45
+ stream: true,
46
+ stop: ['</s>', 'Llama:', 'User:', '<|eot_id|>'],
47
+ cache_prompt: true,
48
+ };
49
+ }
50
+ return settings;
51
+ }
30
52
 
31
- async request(request: LanguageModelRequest): Promise<LanguageModelResponse> {
53
+ async request(request: LanguageModelRequest, cancellationToken?: CancellationToken): Promise<LanguageModelResponse> {
54
+ const settings = this.getSettings(request);
32
55
  try {
33
56
  let prompt = request.messages.map(message => {
34
57
  switch (message.actor) {
@@ -48,10 +71,7 @@ export class LlamafileLanguageModel implements LanguageModel {
48
71
  },
49
72
  body: JSON.stringify({
50
73
  prompt: prompt,
51
- n_predict: 200,
52
- stream: true,
53
- stop: ['</s>', 'Llama:', 'User:', '<|eot_id|>'],
54
- cache_prompt: true,
74
+ ...settings
55
75
  }),
56
76
  });
57
77
 
@@ -70,6 +90,10 @@ export class LlamafileLanguageModel implements LanguageModel {
70
90
  [Symbol.asyncIterator](): AsyncIterator<LanguageModelStreamResponsePart> {
71
91
  return {
72
92
  async next(): Promise<IteratorResult<LanguageModelStreamResponsePart>> {
93
+ if (cancellationToken?.isCancellationRequested) {
94
+ reader.cancel();
95
+ return { value: undefined, done: true };
96
+ }
73
97
  const { value, done } = await reader.read();
74
98
  if (done) {
75
99
  return { value: undefined, done: true };
@@ -17,34 +17,26 @@ export const LlamafileManager = Symbol('LlamafileManager');
17
17
 
18
18
  export const LlamafileManagerPath = '/services/llamafilemanager';
19
19
 
20
+ export interface LlamafileModelDescription {
21
+ name: string;
22
+ uri: string;
23
+ port: number;
24
+ /**
25
+ * Default request settings for the Llama model.
26
+ */
27
+ defaultRequestSettings?: { [key: string]: unknown };
28
+ }
29
+
20
30
  export interface LlamafileManager {
21
31
  startServer(name: string): Promise<void>;
22
32
  stopServer(name: string): void;
23
33
  getStartedLlamafiles(): Promise<string[]>;
24
34
  setClient(client: LlamafileServerManagerClient): void;
25
- addLanguageModels(llamaFiles: LlamafileEntry[]): Promise<void>;
35
+ addLanguageModels(llamaFiles: LlamafileModelDescription[]): Promise<void>;
26
36
  removeLanguageModels(modelIds: string[]): void;
37
+ updateRequestSettings(modelId: string, requestSettings?: { [key: string]: unknown }): void;
27
38
  }
28
39
  export interface LlamafileServerManagerClient {
29
40
  log(llamafileName: string, message: string): void;
30
41
  error(llamafileName: string, message: string): void;
31
42
  }
32
-
33
- export interface LlamafileEntry {
34
- name: string;
35
- uri: string;
36
- port: number;
37
- }
38
-
39
- export namespace LlamafileEntry {
40
- export function equals(a: LlamafileEntry, b: LlamafileEntry): boolean {
41
- return a.name === b.name && a.uri === b.uri && a.port === b.port;
42
- }
43
- export function is(entry: unknown): entry is LlamafileEntry {
44
- // eslint-disable-next-line no-null/no-null
45
- return typeof entry === 'object' && entry !== null
46
- && 'name' in entry && typeof entry.name === 'string'
47
- && 'uri' in entry && typeof entry.uri === 'string'
48
- && 'port' in entry && typeof entry.port === 'number';
49
- }
50
- }
@@ -19,7 +19,7 @@ import { ChildProcessWithoutNullStreams, spawn } from 'child_process';
19
19
  import { basename, dirname } from 'path';
20
20
  import { fileURLToPath } from 'url';
21
21
  import { LlamafileLanguageModel } from '../common/llamafile-language-model';
22
- import { LlamafileEntry, LlamafileManager, LlamafileServerManagerClient } from '../common/llamafile-manager';
22
+ import { LlamafileManager, LlamafileModelDescription, LlamafileServerManagerClient } from '../common/llamafile-manager';
23
23
 
24
24
  @injectable()
25
25
  export class LlamafileManagerImpl implements LlamafileManager {
@@ -30,22 +30,42 @@ export class LlamafileManagerImpl implements LlamafileManager {
30
30
  private processMap: Map<string, ChildProcessWithoutNullStreams> = new Map();
31
31
  private client: LlamafileServerManagerClient;
32
32
 
33
- async addLanguageModels(llamaFiles: LlamafileEntry[]): Promise<void> {
34
- for (const llamafile of llamaFiles) {
33
+ async addLanguageModels(LlamafileModelDescriptions: LlamafileModelDescription[]): Promise<void> {
34
+ for (const llamafile of LlamafileModelDescriptions) {
35
35
  const model = await this.languageModelRegistry.getLanguageModel(llamafile.name);
36
36
  if (model) {
37
37
  if (!(model instanceof LlamafileLanguageModel)) {
38
- console.warn(`Llamafile: model ${model.id} is not an LLamafile model`);
38
+ console.warn(`Llamafile: model ${model.id} is not a Llamafile model`);
39
39
  continue;
40
40
  } else {
41
41
  // This can happen during the initializing of more than one frontends, changes are handled in the frontend
42
42
  console.info(`Llamafile: skip creating or updating model ${llamafile.name} because it already exists.`);
43
43
  }
44
44
  } else {
45
- this.languageModelRegistry.addLanguageModels([new LlamafileLanguageModel(llamafile.name, llamafile.uri, llamafile.port)]);
45
+ this.languageModelRegistry.addLanguageModels([
46
+ new LlamafileLanguageModel(
47
+ llamafile.name,
48
+ llamafile.uri,
49
+ llamafile.port,
50
+ llamafile.defaultRequestSettings
51
+ )
52
+ ]);
46
53
  }
47
54
  }
48
55
  }
56
+
57
+ async updateRequestSettings(modelId: string, requestSettings?: { [key: string]: unknown; }): Promise<void> {
58
+ const model = await this.languageModelRegistry.getLanguageModel(modelId);
59
+ if (model) {
60
+ if (!(model instanceof LlamafileLanguageModel)) {
61
+ console.warn(`Llamafile: model ${model.id} is not a Llamafile model`);
62
+ return;
63
+ } else {
64
+ model.defaultRequestSettings = requestSettings;
65
+ }
66
+ }
67
+ }
68
+
49
69
  removeLanguageModels(modelIds: string[]): void {
50
70
  modelIds.filter(modelId => this.isStarted(modelId)).forEach(modelId => this.stopServer(modelId));
51
71
  this.languageModelRegistry.removeLanguageModels(modelIds);