@theia/ai-llamafile 1.60.0-next.43 → 1.60.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/llamafile-frontend-application-contribution.d.ts +0 -2
- package/lib/browser/llamafile-frontend-application-contribution.d.ts.map +1 -1
- package/lib/browser/llamafile-frontend-application-contribution.js +5 -27
- package/lib/browser/llamafile-frontend-application-contribution.js.map +1 -1
- package/lib/common/llamafile-language-model.d.ts +1 -7
- package/lib/common/llamafile-language-model.d.ts.map +1 -1
- package/lib/common/llamafile-language-model.js +24 -17
- package/lib/common/llamafile-language-model.js.map +1 -1
- package/lib/common/llamafile-manager.d.ts +0 -9
- package/lib/common/llamafile-manager.d.ts.map +1 -1
- package/lib/node/llamafile-manager-impl.d.ts +0 -3
- package/lib/node/llamafile-manager-impl.d.ts.map +1 -1
- package/lib/node/llamafile-manager-impl.js +1 -13
- package/lib/node/llamafile-manager-impl.js.map +1 -1
- package/package.json +6 -6
- package/src/browser/llamafile-frontend-application-contribution.ts +5 -29
- package/src/common/llamafile-language-model.ts +24 -17
- package/src/common/llamafile-manager.ts +0 -5
- package/src/node/llamafile-manager-impl.ts +1 -14
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { FrontendApplicationContribution, PreferenceService } from '@theia/core/lib/browser';
|
|
2
2
|
import { LlamafileManager, LlamafileModelDescription } from '../common/llamafile-manager';
|
|
3
|
-
import { RequestSetting } from '@theia/ai-core/lib/browser/ai-core-preferences';
|
|
4
3
|
export declare class LlamafileFrontendApplicationContribution implements FrontendApplicationContribution {
|
|
5
4
|
protected preferenceService: PreferenceService;
|
|
6
5
|
protected llamafileManager: LlamafileManager;
|
|
@@ -8,7 +7,6 @@ export declare class LlamafileFrontendApplicationContribution implements Fronten
|
|
|
8
7
|
onStart(): void;
|
|
9
8
|
protected getLLamaFileModelDescriptions(llamafiles: LlamafileEntry[]): LlamafileModelDescription[];
|
|
10
9
|
protected handleLlamaFilePreferenceChange(newModels: LlamafileEntry[]): void;
|
|
11
|
-
protected handleRequestSettingsChange(newSettings: RequestSetting[]): void;
|
|
12
10
|
}
|
|
13
11
|
export interface LlamafileEntry {
|
|
14
12
|
name: string;
|
|
@@ -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,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;
|
|
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;AAG1F,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;IAmBf,SAAS,CAAC,6BAA6B,CAAC,UAAU,EAAE,cAAc,EAAE,GAAG,yBAAyB,EAAE;IAQlG,SAAS,CAAC,+BAA+B,CAAC,SAAS,EAAE,cAAc,EAAE,GAAG,IAAI;CAe/E;AAED,MAAM,WAAW,cAAc;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CAChB"}
|
|
@@ -21,8 +21,6 @@ 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';
|
|
26
24
|
let LlamafileFrontendApplicationContribution = class LlamafileFrontendApplicationContribution {
|
|
27
25
|
constructor() {
|
|
28
26
|
this._knownLlamaFiles = new Map();
|
|
@@ -39,28 +37,15 @@ let LlamafileFrontendApplicationContribution = class LlamafileFrontendApplicatio
|
|
|
39
37
|
const newModels = event.newValue.filter((llamafileEntry) => LlamafileEntry.is(llamafileEntry));
|
|
40
38
|
this.handleLlamaFilePreferenceChange(newModels);
|
|
41
39
|
}
|
|
42
|
-
else if (event.preferenceName === ai_core_preferences_1.PREFERENCE_NAME_REQUEST_SETTINGS) {
|
|
43
|
-
this.handleRequestSettingsChange(event.newValue);
|
|
44
|
-
}
|
|
45
40
|
});
|
|
46
41
|
});
|
|
47
42
|
}
|
|
48
43
|
getLLamaFileModelDescriptions(llamafiles) {
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
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
|
-
});
|
|
44
|
+
return llamafiles.map(llamafile => ({
|
|
45
|
+
name: llamafile.name,
|
|
46
|
+
uri: llamafile.uri,
|
|
47
|
+
port: llamafile.port
|
|
48
|
+
}));
|
|
64
49
|
}
|
|
65
50
|
handleLlamaFilePreferenceChange(newModels) {
|
|
66
51
|
const llamafilesToAdd = newModels.filter(llamafile => !this._knownLlamaFiles.has(llamafile.name) ||
|
|
@@ -72,13 +57,6 @@ let LlamafileFrontendApplicationContribution = class LlamafileFrontendApplicatio
|
|
|
72
57
|
this.llamafileManager.addLanguageModels(this.getLLamaFileModelDescriptions(llamafilesToAdd));
|
|
73
58
|
llamafilesToAdd.forEach(model => this._knownLlamaFiles.set(model.name, model));
|
|
74
59
|
}
|
|
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
|
-
}
|
|
82
60
|
};
|
|
83
61
|
exports.LlamafileFrontendApplicationContribution = LlamafileFrontendApplicationContribution;
|
|
84
62
|
tslib_1.__decorate([
|
|
@@ -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,mEAA0F;AAC1F,mEAA+D;
|
|
1
|
+
{"version":3,"file":"llamafile-frontend-application-contribution.js","sourceRoot":"","sources":["../../src/browser/llamafile-frontend-application-contribution.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,20 +4,14 @@ export declare class LlamafileLanguageModel implements LanguageModel {
|
|
|
4
4
|
readonly name: string;
|
|
5
5
|
readonly uri: string;
|
|
6
6
|
readonly port: number;
|
|
7
|
-
defaultRequestSettings?: {
|
|
8
|
-
[key: string]: unknown;
|
|
9
|
-
} | undefined;
|
|
10
7
|
readonly providerId = "llamafile";
|
|
11
8
|
readonly vendor: string;
|
|
12
9
|
/**
|
|
13
10
|
* @param name the unique name for this language model. It will be used to identify the model in the UI.
|
|
14
11
|
* @param uri the URI pointing to the Llamafile model location.
|
|
15
12
|
* @param port the port on which the Llamafile model server operates.
|
|
16
|
-
* @param defaultRequestSettings optional default settings for requests made using this model.
|
|
17
13
|
*/
|
|
18
|
-
constructor(name: string, uri: string, port: number
|
|
19
|
-
[key: string]: unknown;
|
|
20
|
-
} | undefined);
|
|
14
|
+
constructor(name: string, uri: string, port: number);
|
|
21
15
|
get id(): string;
|
|
22
16
|
protected getSettings(request: LanguageModelRequest): Record<string, unknown>;
|
|
23
17
|
request(request: LanguageModelRequest, cancellationToken?: CancellationToken): Promise<LanguageModelResponse>;
|
|
@@ -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,
|
|
1
|
+
{"version":3,"file":"llamafile-language-model.d.ts","sourceRoot":"","sources":["../../src/common/llamafile-language-model.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,aAAa,EAAwB,oBAAoB,EAAE,qBAAqB,EAAmC,MAAM,gBAAgB,CAAC;AACnJ,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAShD,qBAAa,sBAAuB,YAAW,aAAa;aAWpC,IAAI,EAAE,MAAM;aACZ,GAAG,EAAE,MAAM;aACX,IAAI,EAAE,MAAM;IAXhC,QAAQ,CAAC,UAAU,eAAe;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAa;IAEpC;;;;OAIG;gBAEiB,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM;IAGhC,IAAI,EAAE,IAAI,MAAM,CAEf;IACD,SAAS,CAAC,WAAW,CAAC,OAAO,EAAE,oBAAoB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAUvE,OAAO,CAAC,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,qBAAqB,CAAC;CA6EtH"}
|
|
@@ -16,18 +16,23 @@
|
|
|
16
16
|
// *****************************************************************************
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
18
|
exports.LlamafileLanguageModel = void 0;
|
|
19
|
+
const ai_core_1 = require("@theia/ai-core");
|
|
20
|
+
const createMessageContent = (message) => {
|
|
21
|
+
if (ai_core_1.LanguageModelMessage.isTextMessage(message)) {
|
|
22
|
+
return message.text;
|
|
23
|
+
}
|
|
24
|
+
return undefined;
|
|
25
|
+
};
|
|
19
26
|
class LlamafileLanguageModel {
|
|
20
27
|
/**
|
|
21
28
|
* @param name the unique name for this language model. It will be used to identify the model in the UI.
|
|
22
29
|
* @param uri the URI pointing to the Llamafile model location.
|
|
23
30
|
* @param port the port on which the Llamafile model server operates.
|
|
24
|
-
* @param defaultRequestSettings optional default settings for requests made using this model.
|
|
25
31
|
*/
|
|
26
|
-
constructor(name, uri, port
|
|
32
|
+
constructor(name, uri, port) {
|
|
27
33
|
this.name = name;
|
|
28
34
|
this.uri = uri;
|
|
29
35
|
this.port = port;
|
|
30
|
-
this.defaultRequestSettings = defaultRequestSettings;
|
|
31
36
|
this.providerId = 'llamafile';
|
|
32
37
|
this.vendor = 'Mozilla';
|
|
33
38
|
}
|
|
@@ -35,30 +40,32 @@ class LlamafileLanguageModel {
|
|
|
35
40
|
return this.name;
|
|
36
41
|
}
|
|
37
42
|
getSettings(request) {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
}
|
|
47
|
-
return settings;
|
|
43
|
+
var _a;
|
|
44
|
+
return {
|
|
45
|
+
n_predict: 200,
|
|
46
|
+
stream: true,
|
|
47
|
+
stop: ['</s>', 'Llama:', 'User:', '<|eot_id|>'],
|
|
48
|
+
cache_prompt: true,
|
|
49
|
+
...((_a = request.settings) !== null && _a !== void 0 ? _a : {})
|
|
50
|
+
};
|
|
48
51
|
}
|
|
49
52
|
async request(request, cancellationToken) {
|
|
50
53
|
const settings = this.getSettings(request);
|
|
51
54
|
try {
|
|
52
55
|
let prompt = request.messages.map(message => {
|
|
56
|
+
const content = createMessageContent(message);
|
|
57
|
+
if (content === undefined) {
|
|
58
|
+
return undefined;
|
|
59
|
+
}
|
|
53
60
|
switch (message.actor) {
|
|
54
61
|
case 'user':
|
|
55
|
-
return `User: ${
|
|
62
|
+
return `User: ${content}`;
|
|
56
63
|
case 'ai':
|
|
57
|
-
return `Llama: ${
|
|
64
|
+
return `Llama: ${content}`;
|
|
58
65
|
case 'system':
|
|
59
|
-
return `${
|
|
66
|
+
return `${content.replace(/\n\n/g, '\n')}`;
|
|
60
67
|
}
|
|
61
|
-
}).join('\n');
|
|
68
|
+
}).filter(m => m !== undefined).join('\n');
|
|
62
69
|
prompt += '\nLlama:';
|
|
63
70
|
const response = await fetch(`http://localhost:${this.port}/completion`, {
|
|
64
71
|
method: 'POST',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"llamafile-language-model.js","sourceRoot":"","sources":["../../src/common/llamafile-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;;;
|
|
1
|
+
{"version":3,"file":"llamafile-language-model.js","sourceRoot":"","sources":["../../src/common/llamafile-language-model.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,12 +4,6 @@ export interface LlamafileModelDescription {
|
|
|
4
4
|
name: string;
|
|
5
5
|
uri: string;
|
|
6
6
|
port: number;
|
|
7
|
-
/**
|
|
8
|
-
* Default request settings for the Llama model.
|
|
9
|
-
*/
|
|
10
|
-
defaultRequestSettings?: {
|
|
11
|
-
[key: string]: unknown;
|
|
12
|
-
};
|
|
13
7
|
}
|
|
14
8
|
export interface LlamafileManager {
|
|
15
9
|
startServer(name: string): Promise<void>;
|
|
@@ -18,9 +12,6 @@ export interface LlamafileManager {
|
|
|
18
12
|
setClient(client: LlamafileServerManagerClient): void;
|
|
19
13
|
addLanguageModels(llamaFiles: LlamafileModelDescription[]): Promise<void>;
|
|
20
14
|
removeLanguageModels(modelIds: string[]): void;
|
|
21
|
-
updateRequestSettings(modelId: string, requestSettings?: {
|
|
22
|
-
[key: string]: unknown;
|
|
23
|
-
}): void;
|
|
24
15
|
}
|
|
25
16
|
export interface LlamafileServerManagerClient {
|
|
26
17
|
log(llamafileName: string, message: string): void;
|
|
@@ -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,yBAAyB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;
|
|
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;CAChB;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;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"}
|
|
@@ -5,9 +5,6 @@ export declare class LlamafileManagerImpl implements LlamafileManager {
|
|
|
5
5
|
private processMap;
|
|
6
6
|
private client;
|
|
7
7
|
addLanguageModels(LlamafileModelDescriptions: LlamafileModelDescription[]): Promise<void>;
|
|
8
|
-
updateRequestSettings(modelId: string, requestSettings?: {
|
|
9
|
-
[key: string]: unknown;
|
|
10
|
-
}): Promise<void>;
|
|
11
8
|
removeLanguageModels(modelIds: string[]): void;
|
|
12
9
|
getStartedLlamafiles(): Promise<string[]>;
|
|
13
10
|
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,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;
|
|
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;IAuB/F,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"}
|
|
@@ -42,23 +42,11 @@ let LlamafileManagerImpl = class LlamafileManagerImpl {
|
|
|
42
42
|
}
|
|
43
43
|
else {
|
|
44
44
|
this.languageModelRegistry.addLanguageModels([
|
|
45
|
-
new llamafile_language_model_1.LlamafileLanguageModel(llamafile.name, llamafile.uri, llamafile.port
|
|
45
|
+
new llamafile_language_model_1.LlamafileLanguageModel(llamafile.name, llamafile.uri, llamafile.port)
|
|
46
46
|
]);
|
|
47
47
|
}
|
|
48
48
|
}
|
|
49
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;
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
50
|
removeLanguageModels(modelIds) {
|
|
63
51
|
modelIds.filter(modelId => this.isStarted(modelId)).forEach(modelId => this.stopServer(modelId));
|
|
64
52
|
this.languageModelRegistry.removeLanguageModels(modelIds);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"llamafile-manager-impl.js","sourceRoot":"","sources":["../../src/node/llamafile-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;AAChF,4CAAuD;AACvD,4DAAkE;AAClE,iDAAsE;AACtE,+BAAyC;AACzC,6BAAoC;AACpC,iFAA4E;AAIrE,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IAA1B;QAKK,eAAU,GAAgD,IAAI,GAAG,EAAE,CAAC;
|
|
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.60.0
|
|
3
|
+
"version": "1.60.0",
|
|
4
4
|
"description": "Theia - Llamafile Integration",
|
|
5
5
|
"dependencies": {
|
|
6
|
-
"@theia/ai-core": "1.60.0
|
|
7
|
-
"@theia/core": "1.60.0
|
|
8
|
-
"@theia/output": "1.60.0
|
|
6
|
+
"@theia/ai-core": "1.60.0",
|
|
7
|
+
"@theia/core": "1.60.0",
|
|
8
|
+
"@theia/output": "1.60.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.
|
|
45
|
+
"@theia/ext-scripts": "1.60.0"
|
|
46
46
|
},
|
|
47
47
|
"nyc": {
|
|
48
48
|
"extends": "../../configs/nyc.json"
|
|
49
49
|
},
|
|
50
|
-
"gitHead": "
|
|
50
|
+
"gitHead": "193fa55d7e26aa9dc8acba3ae3b99b0182f3603f"
|
|
51
51
|
}
|
|
@@ -18,9 +18,7 @@ import { FrontendApplicationContribution, PreferenceService } from '@theia/core/
|
|
|
18
18
|
import { inject, injectable } from '@theia/core/shared/inversify';
|
|
19
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';
|
|
22
21
|
|
|
23
|
-
const LLAMAFILE_PROVIDER_ID = 'llamafile';
|
|
24
22
|
@injectable()
|
|
25
23
|
export class LlamafileFrontendApplicationContribution implements FrontendApplicationContribution {
|
|
26
24
|
|
|
@@ -46,31 +44,17 @@ export class LlamafileFrontendApplicationContribution implements FrontendApplica
|
|
|
46
44
|
if (event.preferenceName === PREFERENCE_LLAMAFILE) {
|
|
47
45
|
const newModels = event.newValue.filter((llamafileEntry: unknown) => LlamafileEntry.is(llamafileEntry)) as LlamafileEntry[];
|
|
48
46
|
this.handleLlamaFilePreferenceChange(newModels);
|
|
49
|
-
} else if (event.preferenceName === PREFERENCE_NAME_REQUEST_SETTINGS) {
|
|
50
|
-
this.handleRequestSettingsChange(event.newValue as RequestSetting[]);
|
|
51
47
|
}
|
|
52
48
|
});
|
|
53
49
|
});
|
|
54
50
|
}
|
|
55
51
|
|
|
56
52
|
protected getLLamaFileModelDescriptions(llamafiles: LlamafileEntry[]): LlamafileModelDescription[] {
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
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
|
-
});
|
|
53
|
+
return llamafiles.map(llamafile => ({
|
|
54
|
+
name: llamafile.name,
|
|
55
|
+
uri: llamafile.uri,
|
|
56
|
+
port: llamafile.port
|
|
57
|
+
}));
|
|
74
58
|
}
|
|
75
59
|
|
|
76
60
|
protected handleLlamaFilePreferenceChange(newModels: LlamafileEntry[]): void {
|
|
@@ -88,14 +72,6 @@ export class LlamafileFrontendApplicationContribution implements FrontendApplica
|
|
|
88
72
|
this.llamafileManager.addLanguageModels(this.getLLamaFileModelDescriptions(llamafilesToAdd));
|
|
89
73
|
llamafilesToAdd.forEach(model => this._knownLlamaFiles.set(model.name, model));
|
|
90
74
|
}
|
|
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);
|
|
97
|
-
});
|
|
98
|
-
}
|
|
99
75
|
}
|
|
100
76
|
|
|
101
77
|
export interface LlamafileEntry {
|
|
@@ -14,8 +14,16 @@
|
|
|
14
14
|
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
15
|
// *****************************************************************************
|
|
16
16
|
|
|
17
|
-
import { LanguageModel, LanguageModelRequest, LanguageModelResponse, LanguageModelStreamResponsePart } from '@theia/ai-core';
|
|
17
|
+
import { LanguageModel, LanguageModelMessage, LanguageModelRequest, LanguageModelResponse, LanguageModelStreamResponsePart } from '@theia/ai-core';
|
|
18
18
|
import { CancellationToken } from '@theia/core';
|
|
19
|
+
|
|
20
|
+
const createMessageContent = (message: LanguageModelMessage): string | undefined => {
|
|
21
|
+
if (LanguageModelMessage.isTextMessage(message)) {
|
|
22
|
+
return message.text;
|
|
23
|
+
}
|
|
24
|
+
return undefined;
|
|
25
|
+
};
|
|
26
|
+
|
|
19
27
|
export class LlamafileLanguageModel implements LanguageModel {
|
|
20
28
|
|
|
21
29
|
readonly providerId = 'llamafile';
|
|
@@ -25,44 +33,43 @@ export class LlamafileLanguageModel implements LanguageModel {
|
|
|
25
33
|
* @param name the unique name for this language model. It will be used to identify the model in the UI.
|
|
26
34
|
* @param uri the URI pointing to the Llamafile model location.
|
|
27
35
|
* @param port the port on which the Llamafile model server operates.
|
|
28
|
-
* @param defaultRequestSettings optional default settings for requests made using this model.
|
|
29
36
|
*/
|
|
30
37
|
constructor(
|
|
31
38
|
public readonly name: string,
|
|
32
39
|
public readonly uri: string,
|
|
33
40
|
public readonly port: number,
|
|
34
|
-
public defaultRequestSettings?: { [key: string]: unknown }
|
|
35
41
|
) { }
|
|
36
42
|
|
|
37
43
|
get id(): string {
|
|
38
44
|
return this.name;
|
|
39
45
|
}
|
|
40
46
|
protected getSettings(request: LanguageModelRequest): Record<string, unknown> {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
};
|
|
49
|
-
}
|
|
50
|
-
return settings;
|
|
47
|
+
return {
|
|
48
|
+
n_predict: 200,
|
|
49
|
+
stream: true,
|
|
50
|
+
stop: ['</s>', 'Llama:', 'User:', '<|eot_id|>'],
|
|
51
|
+
cache_prompt: true,
|
|
52
|
+
...(request.settings ?? {})
|
|
53
|
+
};
|
|
51
54
|
}
|
|
52
55
|
|
|
53
56
|
async request(request: LanguageModelRequest, cancellationToken?: CancellationToken): Promise<LanguageModelResponse> {
|
|
54
57
|
const settings = this.getSettings(request);
|
|
55
58
|
try {
|
|
56
59
|
let prompt = request.messages.map(message => {
|
|
60
|
+
const content = createMessageContent(message);
|
|
61
|
+
if (content === undefined) {
|
|
62
|
+
return undefined;
|
|
63
|
+
}
|
|
57
64
|
switch (message.actor) {
|
|
58
65
|
case 'user':
|
|
59
|
-
return `User: ${
|
|
66
|
+
return `User: ${content}`;
|
|
60
67
|
case 'ai':
|
|
61
|
-
return `Llama: ${
|
|
68
|
+
return `Llama: ${content}`;
|
|
62
69
|
case 'system':
|
|
63
|
-
return `${
|
|
70
|
+
return `${content.replace(/\n\n/g, '\n')}`;
|
|
64
71
|
}
|
|
65
|
-
}).join('\n');
|
|
72
|
+
}).filter(m => m !== undefined).join('\n');
|
|
66
73
|
prompt += '\nLlama:';
|
|
67
74
|
const response = await fetch(`http://localhost:${this.port}/completion`, {
|
|
68
75
|
method: 'POST',
|
|
@@ -21,10 +21,6 @@ export interface LlamafileModelDescription {
|
|
|
21
21
|
name: string;
|
|
22
22
|
uri: string;
|
|
23
23
|
port: number;
|
|
24
|
-
/**
|
|
25
|
-
* Default request settings for the Llama model.
|
|
26
|
-
*/
|
|
27
|
-
defaultRequestSettings?: { [key: string]: unknown };
|
|
28
24
|
}
|
|
29
25
|
|
|
30
26
|
export interface LlamafileManager {
|
|
@@ -34,7 +30,6 @@ export interface LlamafileManager {
|
|
|
34
30
|
setClient(client: LlamafileServerManagerClient): void;
|
|
35
31
|
addLanguageModels(llamaFiles: LlamafileModelDescription[]): Promise<void>;
|
|
36
32
|
removeLanguageModels(modelIds: string[]): void;
|
|
37
|
-
updateRequestSettings(modelId: string, requestSettings?: { [key: string]: unknown }): void;
|
|
38
33
|
}
|
|
39
34
|
export interface LlamafileServerManagerClient {
|
|
40
35
|
log(llamafileName: string, message: string): void;
|
|
@@ -46,26 +46,13 @@ export class LlamafileManagerImpl implements LlamafileManager {
|
|
|
46
46
|
new LlamafileLanguageModel(
|
|
47
47
|
llamafile.name,
|
|
48
48
|
llamafile.uri,
|
|
49
|
-
llamafile.port
|
|
50
|
-
llamafile.defaultRequestSettings
|
|
49
|
+
llamafile.port
|
|
51
50
|
)
|
|
52
51
|
]);
|
|
53
52
|
}
|
|
54
53
|
}
|
|
55
54
|
}
|
|
56
55
|
|
|
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
|
-
|
|
69
56
|
removeLanguageModels(modelIds: string[]): void {
|
|
70
57
|
modelIds.filter(modelId => this.isStarted(modelId)).forEach(modelId => this.stopServer(modelId));
|
|
71
58
|
this.languageModelRegistry.removeLanguageModels(modelIds);
|