node-llama-cpp 1.1.0 → 1.2.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/dist/chatWrappers/GeneralChatPromptWrapper.d.ts +8 -0
- package/dist/chatWrappers/GeneralChatPromptWrapper.js +11 -0
- package/dist/chatWrappers/GeneralChatPromptWrapper.js.map +1 -0
- package/dist/cli/commands/ChatCommand.d.ts +1 -0
- package/dist/cli/commands/ChatCommand.js +25 -8
- package/dist/cli/commands/ChatCommand.js.map +1 -1
- package/dist/cli/commands/ClearCommand.js +1 -1
- package/dist/index.d.ts +5 -3
- package/dist/index.js +5 -3
- package/dist/index.js.map +1 -1
- package/dist/llamaEvaluator/LlamaBins.d.ts +4 -0
- package/dist/llamaEvaluator/LlamaBins.js +5 -0
- package/dist/llamaEvaluator/LlamaBins.js.map +1 -0
- package/dist/{LlamaChatSession.d.ts → llamaEvaluator/LlamaChatSession.d.ts} +8 -7
- package/dist/llamaEvaluator/LlamaChatSession.js +97 -0
- package/dist/llamaEvaluator/LlamaChatSession.js.map +1 -0
- package/dist/llamaEvaluator/LlamaContext.d.ts +15 -0
- package/dist/{LlamaModel.js → llamaEvaluator/LlamaContext.js} +9 -15
- package/dist/llamaEvaluator/LlamaContext.js.map +1 -0
- package/dist/llamaEvaluator/LlamaModel.d.ts +11 -0
- package/dist/llamaEvaluator/LlamaModel.js +20 -0
- package/dist/llamaEvaluator/LlamaModel.js.map +1 -0
- package/dist/utils/compileLLamaCpp.js +1 -1
- package/dist/utils/getBin.js +1 -1
- package/dist/utils/usedBinFlag.d.ts +2 -2
- package/llama/usedBin.json +1 -1
- package/llamaBins/linux-arm64-16.node +0 -0
- package/llamaBins/linux-arm64-17.node +0 -0
- package/llamaBins/linux-arm64-18.node +0 -0
- package/llamaBins/linux-arm64-19.node +0 -0
- package/llamaBins/linux-arm64-20.node +0 -0
- package/llamaBins/linux-armv7l-16.node +0 -0
- package/llamaBins/linux-armv7l-17.node +0 -0
- package/llamaBins/linux-armv7l-18.node +0 -0
- package/llamaBins/linux-armv7l-19.node +0 -0
- package/llamaBins/linux-armv7l-20.node +0 -0
- package/llamaBins/linux-ppc64le-16.node +0 -0
- package/llamaBins/linux-ppc64le-17.node +0 -0
- package/llamaBins/linux-ppc64le-18.node +0 -0
- package/llamaBins/linux-ppc64le-19.node +0 -0
- package/llamaBins/linux-ppc64le-20.node +0 -0
- package/llamaBins/linux-x64-16.node +0 -0
- package/llamaBins/linux-x64-17.node +0 -0
- package/llamaBins/linux-x64-18.node +0 -0
- package/llamaBins/linux-x64-19.node +0 -0
- package/llamaBins/linux-x64-20.node +0 -0
- package/llamaBins/mac-arm64-16.node +0 -0
- package/llamaBins/mac-arm64-17.node +0 -0
- package/llamaBins/mac-arm64-18.node +0 -0
- package/llamaBins/mac-arm64-19.node +0 -0
- package/llamaBins/mac-arm64-20.node +0 -0
- package/llamaBins/mac-x64-16.node +0 -0
- package/llamaBins/mac-x64-17.node +0 -0
- package/llamaBins/mac-x64-18.node +0 -0
- package/llamaBins/mac-x64-19.node +0 -0
- package/llamaBins/mac-x64-20.node +0 -0
- package/llamaBins/win-x64-16.node +0 -0
- package/llamaBins/win-x64-17.node +0 -0
- package/llamaBins/win-x64-18.node +0 -0
- package/llamaBins/win-x64-19.node +0 -0
- package/llamaBins/win-x64-20.node +0 -0
- package/package.json +1 -1
- package/dist/LlamaChatSession.js +0 -86
- package/dist/LlamaChatSession.js.map +0 -1
- package/dist/LlamaModel.d.ts +0 -13
- package/dist/LlamaModel.js.map +0 -1
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ChatPromptWrapper } from "../ChatPromptWrapper.js";
|
|
2
|
+
export declare class GeneralChatPromptWrapper extends ChatPromptWrapper {
|
|
3
|
+
wrapPrompt(prompt: string, { systemPrompt, promptIndex }: {
|
|
4
|
+
systemPrompt: string;
|
|
5
|
+
promptIndex: number;
|
|
6
|
+
}): string;
|
|
7
|
+
getStopStrings(): string[];
|
|
8
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ChatPromptWrapper } from "../ChatPromptWrapper.js";
|
|
2
|
+
export class GeneralChatPromptWrapper extends ChatPromptWrapper {
|
|
3
|
+
wrapPrompt(prompt, { systemPrompt, promptIndex }) {
|
|
4
|
+
const conversationPrompt = "\n\n### Human:\n\n" + prompt + "\n\n### Assistant:\n\n";
|
|
5
|
+
return promptIndex === 0 ? systemPrompt + conversationPrompt : conversationPrompt;
|
|
6
|
+
}
|
|
7
|
+
getStopStrings() {
|
|
8
|
+
return ["### Human:", "Human:", "### Assistant:", "Assistant:", "<end>"];
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=GeneralChatPromptWrapper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GeneralChatPromptWrapper.js","sourceRoot":"","sources":["../../src/chatWrappers/GeneralChatPromptWrapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,iBAAiB,EAAC,MAAM,yBAAyB,CAAC;AAE1D,MAAM,OAAO,wBAAyB,SAAQ,iBAAiB;IAC3C,UAAU,CAAC,MAAc,EAAE,EAAC,YAAY,EAAE,WAAW,EAAgD;QACjH,MAAM,kBAAkB,GAAG,oBAAoB,GAAG,MAAM,GAAG,wBAAwB,CAAC;QAEpF,OAAO,WAAW,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,kBAAkB,CAAC,CAAC,CAAC,kBAAkB,CAAC;IACtF,CAAC;IAEe,cAAc;QAC1B,OAAO,CAAC,YAAY,EAAE,QAAQ,EAAE,gBAAgB,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;IAC7E,CAAC;CACJ"}
|
|
@@ -4,6 +4,7 @@ import chalk from "chalk";
|
|
|
4
4
|
import withOra from "../../utils/withOra.js";
|
|
5
5
|
import { defaultChatSystemPrompt } from "../../config.js";
|
|
6
6
|
import { LlamaChatPromptWrapper } from "../../chatWrappers/LlamaChatPromptWrapper.js";
|
|
7
|
+
import { GeneralChatPromptWrapper } from "../../chatWrappers/GeneralChatPromptWrapper.js";
|
|
7
8
|
export const ChatCommand = {
|
|
8
9
|
command: "chat",
|
|
9
10
|
describe: "Chat with a LLama model",
|
|
@@ -28,11 +29,18 @@ export const ChatCommand = {
|
|
|
28
29
|
description: "System prompt to use against the model. " +
|
|
29
30
|
"[default value: " + defaultChatSystemPrompt.split("\n").join(" ") + "]",
|
|
30
31
|
group: "Optional:"
|
|
32
|
+
})
|
|
33
|
+
.option("wrapper", {
|
|
34
|
+
type: "string",
|
|
35
|
+
default: "general",
|
|
36
|
+
choices: ["general", "llama"],
|
|
37
|
+
description: "Chat wrapper to use",
|
|
38
|
+
group: "Optional:"
|
|
31
39
|
});
|
|
32
40
|
},
|
|
33
|
-
async handler({ model, systemInfo, systemPrompt }) {
|
|
41
|
+
async handler({ model, systemInfo, systemPrompt, wrapper }) {
|
|
34
42
|
try {
|
|
35
|
-
await RunChat({ model, systemInfo, systemPrompt });
|
|
43
|
+
await RunChat({ model, systemInfo, systemPrompt, wrapper });
|
|
36
44
|
}
|
|
37
45
|
catch (err) {
|
|
38
46
|
console.error(err);
|
|
@@ -40,17 +48,17 @@ export const ChatCommand = {
|
|
|
40
48
|
}
|
|
41
49
|
}
|
|
42
50
|
};
|
|
43
|
-
async function RunChat({ model: modelArg, systemInfo, systemPrompt }) {
|
|
44
|
-
const { LlamaChatSession } = await import("../../LlamaChatSession.js");
|
|
45
|
-
const { LlamaModel } = await import("../../LlamaModel.js");
|
|
51
|
+
async function RunChat({ model: modelArg, systemInfo, systemPrompt, wrapper }) {
|
|
52
|
+
const { LlamaChatSession } = await import("../../llamaEvaluator/LlamaChatSession.js");
|
|
53
|
+
const { LlamaModel } = await import("../../llamaEvaluator/LlamaModel.js");
|
|
46
54
|
const model = new LlamaModel({
|
|
47
55
|
modelPath: modelArg
|
|
48
56
|
});
|
|
49
57
|
const session = new LlamaChatSession({
|
|
50
|
-
model,
|
|
58
|
+
context: model.createContext(),
|
|
51
59
|
printLLamaSystemInfo: systemInfo,
|
|
52
60
|
systemPrompt,
|
|
53
|
-
promptWrapper:
|
|
61
|
+
promptWrapper: createChatWrapper(wrapper)
|
|
54
62
|
});
|
|
55
63
|
await withOra({
|
|
56
64
|
loading: chalk.blue("Loading model"),
|
|
@@ -74,10 +82,19 @@ async function RunChat({ model: modelArg, systemInfo, systemPrompt }) {
|
|
|
74
82
|
const [startColor, endColor] = chalk.blue("MIDDLE").split("MIDDLE");
|
|
75
83
|
process.stdout.write(startColor);
|
|
76
84
|
await session.prompt(input, (chunk) => {
|
|
77
|
-
process.stdout.write(
|
|
85
|
+
process.stdout.write(session.context.decode(Uint32Array.from(chunk)));
|
|
78
86
|
});
|
|
79
87
|
process.stdout.write(endColor);
|
|
80
88
|
console.log();
|
|
81
89
|
}
|
|
82
90
|
}
|
|
91
|
+
function createChatWrapper(wrapper) {
|
|
92
|
+
switch (wrapper) {
|
|
93
|
+
case "general":
|
|
94
|
+
return new GeneralChatPromptWrapper();
|
|
95
|
+
case "llama":
|
|
96
|
+
return new LlamaChatPromptWrapper();
|
|
97
|
+
}
|
|
98
|
+
throw new Error("Unknown wrapper: " + wrapper);
|
|
99
|
+
}
|
|
83
100
|
//# sourceMappingURL=ChatCommand.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatCommand.js","sourceRoot":"","sources":["../../../src/cli/commands/ChatCommand.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,mBAAmB,CAAC;AAC9C,OAAO,OAAO,MAAM,SAAS,CAAC;AAE9B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,OAAO,MAAM,wBAAwB,CAAC;AAC7C,OAAO,EAAC,uBAAuB,EAAC,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAC,sBAAsB,EAAC,MAAM,8CAA8C,CAAC;
|
|
1
|
+
{"version":3,"file":"ChatCommand.js","sourceRoot":"","sources":["../../../src/cli/commands/ChatCommand.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
import { LlamaChatSession } from "./LlamaChatSession.js";
|
|
2
|
-
import { LlamaModel } from "./LlamaModel.js";
|
|
1
|
+
import { LlamaChatSession } from "./llamaEvaluator/LlamaChatSession.js";
|
|
2
|
+
import { LlamaModel } from "./llamaEvaluator/LlamaModel.js";
|
|
3
3
|
import { AbortError } from "./AbortError.js";
|
|
4
4
|
import { ChatPromptWrapper } from "./ChatPromptWrapper.js";
|
|
5
5
|
import { EmptyChatPromptWrapper } from "./chatWrappers/EmptyChatPromptWrapper.js";
|
|
6
6
|
import { LlamaChatPromptWrapper } from "./chatWrappers/LlamaChatPromptWrapper.js";
|
|
7
|
-
|
|
7
|
+
import { GeneralChatPromptWrapper } from "./chatWrappers/GeneralChatPromptWrapper.js";
|
|
8
|
+
import { LlamaContext } from "./llamaEvaluator/LlamaContext.js";
|
|
9
|
+
export { LlamaModel, LlamaContext, LlamaChatSession, AbortError, ChatPromptWrapper, EmptyChatPromptWrapper, LlamaChatPromptWrapper, GeneralChatPromptWrapper };
|
package/dist/index.js
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import { LlamaChatSession } from "./LlamaChatSession.js";
|
|
2
|
-
import { LlamaModel } from "./LlamaModel.js";
|
|
1
|
+
import { LlamaChatSession } from "./llamaEvaluator/LlamaChatSession.js";
|
|
2
|
+
import { LlamaModel } from "./llamaEvaluator/LlamaModel.js";
|
|
3
3
|
import { AbortError } from "./AbortError.js";
|
|
4
4
|
import { ChatPromptWrapper } from "./ChatPromptWrapper.js";
|
|
5
5
|
import { EmptyChatPromptWrapper } from "./chatWrappers/EmptyChatPromptWrapper.js";
|
|
6
6
|
import { LlamaChatPromptWrapper } from "./chatWrappers/LlamaChatPromptWrapper.js";
|
|
7
|
-
|
|
7
|
+
import { GeneralChatPromptWrapper } from "./chatWrappers/GeneralChatPromptWrapper.js";
|
|
8
|
+
import { LlamaContext } from "./llamaEvaluator/LlamaContext.js";
|
|
9
|
+
export { LlamaModel, LlamaContext, LlamaChatSession, AbortError, ChatPromptWrapper, EmptyChatPromptWrapper, LlamaChatPromptWrapper, GeneralChatPromptWrapper };
|
|
8
10
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,gBAAgB,EAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,gBAAgB,EAAC,MAAM,sCAAsC,CAAC;AACtE,OAAO,EAAC,UAAU,EAAC,MAAM,gCAAgC,CAAC;AAC1D,OAAO,EAAC,UAAU,EAAC,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAC,iBAAiB,EAAC,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAC,sBAAsB,EAAC,MAAM,0CAA0C,CAAC;AAChF,OAAO,EAAC,sBAAsB,EAAC,MAAM,0CAA0C,CAAC;AAChF,OAAO,EAAC,wBAAwB,EAAC,MAAM,4CAA4C,CAAC;AACpF,OAAO,EAAC,YAAY,EAAC,MAAM,kCAAkC,CAAC;AAG9D,OAAO,EACH,UAAU,EACV,YAAY,EACZ,gBAAgB,EAChB,UAAU,EACV,iBAAiB,EACjB,sBAAsB,EACtB,sBAAsB,EACtB,wBAAwB,EAC3B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LlamaBins.js","sourceRoot":"","sources":["../../src/llamaEvaluator/LlamaBins.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAqC,MAAM,oBAAoB,CAAC;AAE/E,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,OAAO,EAAE,CAAC;AAC5C,MAAM,EAAC,UAAU,EAAE,YAAY,EAAC,GAAG,YAAY,CAAC;AAEhD,OAAO,EAAC,UAAU,EAAE,YAAY,EAAC,CAAC"}
|
|
@@ -1,24 +1,25 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { ChatPromptWrapper } from "../ChatPromptWrapper.js";
|
|
3
|
+
import { LlamaContext } from "./LlamaContext.js";
|
|
4
4
|
export declare class LlamaChatSession {
|
|
5
|
-
private readonly _model;
|
|
6
5
|
private readonly _systemPrompt;
|
|
7
6
|
private readonly _printLLamaSystemInfo;
|
|
8
7
|
private readonly _promptWrapper;
|
|
9
8
|
private _promptIndex;
|
|
10
9
|
private _initialized;
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
private readonly _ctx;
|
|
11
|
+
constructor({ context, printLLamaSystemInfo, promptWrapper, systemPrompt }: {
|
|
12
|
+
context: LlamaContext;
|
|
13
13
|
printLLamaSystemInfo?: boolean;
|
|
14
14
|
promptWrapper?: ChatPromptWrapper;
|
|
15
15
|
systemPrompt?: string;
|
|
16
16
|
});
|
|
17
17
|
get initialized(): boolean;
|
|
18
|
-
get
|
|
18
|
+
get context(): LlamaContext;
|
|
19
19
|
init(): Promise<void>;
|
|
20
|
-
prompt(prompt: string, onToken?: (
|
|
20
|
+
prompt(prompt: string, onToken?: (tokens: number[]) => void, { signal }?: {
|
|
21
21
|
signal?: AbortSignal;
|
|
22
22
|
}): Promise<string>;
|
|
23
23
|
private _evalTokens;
|
|
24
|
+
private _checkStopString;
|
|
24
25
|
}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { defaultChatSystemPrompt } from "../config.js";
|
|
2
|
+
import { withLock } from "../utils/withLock.js";
|
|
3
|
+
import { AbortError } from "../AbortError.js";
|
|
4
|
+
import { GeneralChatPromptWrapper } from "../chatWrappers/GeneralChatPromptWrapper.js";
|
|
5
|
+
import { LlamaModel } from "./LlamaModel.js";
|
|
6
|
+
const UNKNOWN_UNICODE_CHAR = "�";
|
|
7
|
+
export class LlamaChatSession {
|
|
8
|
+
_systemPrompt;
|
|
9
|
+
_printLLamaSystemInfo;
|
|
10
|
+
_promptWrapper;
|
|
11
|
+
_promptIndex = 0;
|
|
12
|
+
_initialized = false;
|
|
13
|
+
_ctx;
|
|
14
|
+
constructor({ context, printLLamaSystemInfo = false, promptWrapper = new GeneralChatPromptWrapper(), systemPrompt = defaultChatSystemPrompt }) {
|
|
15
|
+
this._ctx = context;
|
|
16
|
+
this._printLLamaSystemInfo = printLLamaSystemInfo;
|
|
17
|
+
this._promptWrapper = promptWrapper;
|
|
18
|
+
this._systemPrompt = systemPrompt;
|
|
19
|
+
}
|
|
20
|
+
get initialized() {
|
|
21
|
+
return this._initialized;
|
|
22
|
+
}
|
|
23
|
+
get context() {
|
|
24
|
+
return this._ctx;
|
|
25
|
+
}
|
|
26
|
+
async init() {
|
|
27
|
+
await withLock(this, "init", async () => {
|
|
28
|
+
if (this._initialized)
|
|
29
|
+
return;
|
|
30
|
+
if (this._printLLamaSystemInfo)
|
|
31
|
+
console.log("Llama system info", LlamaModel.systemInfo);
|
|
32
|
+
this._initialized = true;
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
async prompt(prompt, onToken, { signal } = {}) {
|
|
36
|
+
if (!this.initialized)
|
|
37
|
+
await this.init();
|
|
38
|
+
return await withLock(this, "prompt", async () => {
|
|
39
|
+
const promptText = this._promptWrapper.wrapPrompt(prompt, { systemPrompt: this._systemPrompt, promptIndex: this._promptIndex });
|
|
40
|
+
this._promptIndex++;
|
|
41
|
+
return await this._evalTokens(this._ctx.encode(promptText), onToken, { signal });
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
async _evalTokens(tokens, onToken, { signal } = {}) {
|
|
45
|
+
const decodeTokens = (tokens) => this._ctx.decode(Uint32Array.from(tokens));
|
|
46
|
+
const stopStrings = this._promptWrapper.getStopStrings();
|
|
47
|
+
const stopStringIndexes = Array(stopStrings.length).fill(0);
|
|
48
|
+
const skippedChunksQueue = [];
|
|
49
|
+
const res = [];
|
|
50
|
+
for await (const chunk of this._ctx.evaluate(tokens)) {
|
|
51
|
+
if (signal?.aborted)
|
|
52
|
+
throw new AbortError();
|
|
53
|
+
const tokenStr = decodeTokens([chunk]);
|
|
54
|
+
const { shouldReturn, skipTokenEvent } = this._checkStopString(tokenStr, stopStringIndexes);
|
|
55
|
+
if (shouldReturn)
|
|
56
|
+
return decodeTokens(res);
|
|
57
|
+
// if the token is unknown, it means it's not complete character
|
|
58
|
+
if (tokenStr === UNKNOWN_UNICODE_CHAR || skipTokenEvent) {
|
|
59
|
+
skippedChunksQueue.push(chunk);
|
|
60
|
+
continue;
|
|
61
|
+
}
|
|
62
|
+
if (skippedChunksQueue.length > 0) {
|
|
63
|
+
res.push(...skippedChunksQueue);
|
|
64
|
+
onToken?.(skippedChunksQueue);
|
|
65
|
+
skippedChunksQueue.length = 0;
|
|
66
|
+
}
|
|
67
|
+
res.push(chunk);
|
|
68
|
+
onToken?.([chunk]);
|
|
69
|
+
}
|
|
70
|
+
return decodeTokens(res);
|
|
71
|
+
}
|
|
72
|
+
_checkStopString(tokenStr, stopStringIndexes) {
|
|
73
|
+
const stopStrings = this._promptWrapper.getStopStrings();
|
|
74
|
+
let skipTokenEvent = false;
|
|
75
|
+
for (let stopStringIndex = 0; stopStringIndex < stopStrings.length; stopStringIndex++) {
|
|
76
|
+
const stopString = stopStrings[stopStringIndex];
|
|
77
|
+
let localShouldSkipTokenEvent = false;
|
|
78
|
+
for (let i = 0; i < tokenStr.length && stopStringIndexes[stopStringIndex] !== stopString.length; i++) {
|
|
79
|
+
if (tokenStr[i] === stopString[stopStringIndexes[stopStringIndex]]) {
|
|
80
|
+
stopStringIndexes[stopStringIndex]++;
|
|
81
|
+
localShouldSkipTokenEvent = true;
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
stopStringIndexes[stopStringIndex] = 0;
|
|
85
|
+
localShouldSkipTokenEvent = false;
|
|
86
|
+
break;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
if (stopStringIndexes[stopStringIndex] === stopString.length) {
|
|
90
|
+
return { shouldReturn: true };
|
|
91
|
+
}
|
|
92
|
+
skipTokenEvent ||= localShouldSkipTokenEvent;
|
|
93
|
+
}
|
|
94
|
+
return { skipTokenEvent };
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=LlamaChatSession.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LlamaChatSession.js","sourceRoot":"","sources":["../../src/llamaEvaluator/LlamaChatSession.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { LLAMAContext } from "./LlamaBins.js";
|
|
2
|
+
type LlamaContextConstructorParameters = {
|
|
3
|
+
prependBos: boolean;
|
|
4
|
+
ctx: LLAMAContext;
|
|
5
|
+
};
|
|
6
|
+
export declare class LlamaContext {
|
|
7
|
+
private readonly _ctx;
|
|
8
|
+
private _prependBos;
|
|
9
|
+
/** @internal */
|
|
10
|
+
constructor({ ctx, prependBos }: LlamaContextConstructorParameters);
|
|
11
|
+
encode(text: string): Uint32Array;
|
|
12
|
+
decode(tokens: Uint32Array): string;
|
|
13
|
+
evaluate(tokens: Uint32Array, getRestrictions?: () => Uint32Array): AsyncGenerator<number, void, unknown>;
|
|
14
|
+
}
|
|
15
|
+
export {};
|
|
@@ -1,18 +1,12 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
const { LLAMAModel, LLAMAContext } = llamaCppNode;
|
|
4
|
-
export class LlamaModel {
|
|
5
|
-
_model;
|
|
1
|
+
import { llamaCppNode } from "./LlamaBins.js";
|
|
2
|
+
export class LlamaContext {
|
|
6
3
|
_ctx;
|
|
7
4
|
_prependBos;
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
this._ctx =
|
|
5
|
+
/** @internal */
|
|
6
|
+
constructor({ ctx, prependBos }) {
|
|
7
|
+
this._ctx = ctx;
|
|
11
8
|
this._prependBos = prependBos;
|
|
12
9
|
}
|
|
13
|
-
get systemInfo() {
|
|
14
|
-
return llamaCppNode.systemInfo();
|
|
15
|
-
}
|
|
16
10
|
encode(text) {
|
|
17
11
|
return this._ctx.encode(text);
|
|
18
12
|
}
|
|
@@ -22,9 +16,9 @@ export class LlamaModel {
|
|
|
22
16
|
async *evaluate(tokens, getRestrictions) {
|
|
23
17
|
let evalTokens = tokens;
|
|
24
18
|
if (this._prependBos) {
|
|
25
|
-
const
|
|
26
|
-
|
|
27
|
-
evalTokens = Uint32Array.from(
|
|
19
|
+
const tokenArray = Array.from(tokens);
|
|
20
|
+
tokenArray.unshift(llamaCppNode.tokenBos());
|
|
21
|
+
evalTokens = Uint32Array.from(tokenArray);
|
|
28
22
|
this._prependBos = false;
|
|
29
23
|
}
|
|
30
24
|
// eslint-disable-next-line no-constant-condition
|
|
@@ -40,4 +34,4 @@ export class LlamaModel {
|
|
|
40
34
|
}
|
|
41
35
|
}
|
|
42
36
|
}
|
|
43
|
-
//# sourceMappingURL=
|
|
37
|
+
//# sourceMappingURL=LlamaContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LlamaContext.js","sourceRoot":"","sources":["../../src/llamaEvaluator/LlamaContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAG1D,MAAM,OAAO,YAAY;IACJ,IAAI,CAAe;IAC5B,WAAW,CAAU;IAE7B,gBAAgB;IAChB,YAAoB,EAAC,GAAG,EAAE,UAAU,EAAoC;QACpE,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;QAChB,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;IAClC,CAAC;IAEM,MAAM,CAAC,IAAY;QACtB,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAEM,MAAM,CAAC,MAAmB;QAC7B,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC;IAEM,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAmB,EAAE,eAAmC;QAC3E,IAAI,UAAU,GAAG,MAAM,CAAC;QAExB,IAAI,IAAI,CAAC,WAAW,EAAE;YAClB,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACtC,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC;YAE5C,UAAU,GAAG,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC1C,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;SAC5B;QAED,iDAAiD;QACjD,OAAO,IAAI,EAAE;YACT,kCAAkC;YAClC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,eAAe,EAAE,EAAE,CAAC,CAAC;YAExE,mCAAmC;YACnC,IAAI,SAAS,KAAK,YAAY,CAAC,QAAQ,EAAE;gBACrC,MAAM;YAEV,MAAM,SAAS,CAAC;YAEhB,mCAAmC;YACnC,UAAU,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;SAC9C;IACL,CAAC;CAEJ"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { LlamaContext } from "./LlamaContext.js";
|
|
2
|
+
export declare class LlamaModel {
|
|
3
|
+
private readonly _model;
|
|
4
|
+
private readonly _prependBos;
|
|
5
|
+
constructor({ modelPath, prependBos }: {
|
|
6
|
+
modelPath: string;
|
|
7
|
+
prependBos?: boolean;
|
|
8
|
+
});
|
|
9
|
+
createContext(): LlamaContext;
|
|
10
|
+
static get systemInfo(): string;
|
|
11
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { LlamaContext } from "./LlamaContext.js";
|
|
2
|
+
import { LLAMAContext, llamaCppNode, LLAMAModel } from "./LlamaBins.js";
|
|
3
|
+
export class LlamaModel {
|
|
4
|
+
_model;
|
|
5
|
+
_prependBos;
|
|
6
|
+
constructor({ modelPath, prependBos = true }) {
|
|
7
|
+
this._model = new LLAMAModel(modelPath);
|
|
8
|
+
this._prependBos = prependBos;
|
|
9
|
+
}
|
|
10
|
+
createContext() {
|
|
11
|
+
return new LlamaContext({
|
|
12
|
+
ctx: new LLAMAContext(this._model),
|
|
13
|
+
prependBos: this._prependBos
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
static get systemInfo() {
|
|
17
|
+
return llamaCppNode.systemInfo();
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=LlamaModel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LlamaModel.js","sourceRoot":"","sources":["../../src/llamaEvaluator/LlamaModel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAC,YAAY,EAAE,YAAY,EAAE,UAAU,EAAC,MAAM,gBAAgB,CAAC;AAGtE,MAAM,OAAO,UAAU;IACF,MAAM,CAAa;IACnB,WAAW,CAAU;IAEtC,YAAmB,EAAC,SAAS,EAAE,UAAU,GAAG,IAAI,EAA8C;QAC1F,IAAI,CAAC,MAAM,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC,CAAC;QACxC,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;IAClC,CAAC;IAEM,aAAa;QAChB,OAAO,IAAI,YAAY,CAAC;YACpB,GAAG,EAAE,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC;YAClC,UAAU,EAAE,IAAI,CAAC,WAAW;SAC/B,CAAC,CAAC;IACP,CAAC;IAEM,MAAM,KAAK,UAAU;QACxB,OAAO,YAAY,CAAC,UAAU,EAAE,CAAC;IACrC,CAAC;CACJ"}
|
package/dist/utils/getBin.js
CHANGED
|
@@ -39,7 +39,7 @@ export async function getPrebuildBinPath() {
|
|
|
39
39
|
}
|
|
40
40
|
export async function loadBin() {
|
|
41
41
|
const usedBingFlag = await getUsedBinFlag();
|
|
42
|
-
if (usedBingFlag === "
|
|
42
|
+
if (usedBingFlag === "prebuiltBinaries") {
|
|
43
43
|
const prebuildBinPath = await getPrebuildBinPath();
|
|
44
44
|
if (prebuildBinPath == null) {
|
|
45
45
|
console.warn("Prebuild binaries not found, falling back to to locally built binaries");
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
type UsedBinFlagFile = {
|
|
2
|
-
use: "
|
|
2
|
+
use: "prebuiltBinaries" | "localBuildFromSource";
|
|
3
3
|
};
|
|
4
|
-
export declare function getUsedBinFlag(): Promise<"
|
|
4
|
+
export declare function getUsedBinFlag(): Promise<"prebuiltBinaries" | "localBuildFromSource">;
|
|
5
5
|
export declare function setUsedBinFlag(useFlag: UsedBinFlagFile["use"]): Promise<void>;
|
|
6
6
|
export {};
|
package/llama/usedBin.json
CHANGED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/package.json
CHANGED
package/dist/LlamaChatSession.js
DELETED
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
import { defaultChatSystemPrompt } from "./config.js";
|
|
2
|
-
import { withLock } from "./utils/withLock.js";
|
|
3
|
-
import { LlamaChatPromptWrapper } from "./chatWrappers/LlamaChatPromptWrapper.js";
|
|
4
|
-
import { AbortError } from "./AbortError.js";
|
|
5
|
-
export class LlamaChatSession {
|
|
6
|
-
_model;
|
|
7
|
-
_systemPrompt;
|
|
8
|
-
_printLLamaSystemInfo;
|
|
9
|
-
_promptWrapper;
|
|
10
|
-
_promptIndex = 0;
|
|
11
|
-
_initialized = false;
|
|
12
|
-
constructor({ model, printLLamaSystemInfo = false, promptWrapper = new LlamaChatPromptWrapper(), systemPrompt = defaultChatSystemPrompt }) {
|
|
13
|
-
this._model = model;
|
|
14
|
-
this._printLLamaSystemInfo = printLLamaSystemInfo;
|
|
15
|
-
this._promptWrapper = promptWrapper;
|
|
16
|
-
this._systemPrompt = systemPrompt;
|
|
17
|
-
}
|
|
18
|
-
get initialized() {
|
|
19
|
-
return this._initialized;
|
|
20
|
-
}
|
|
21
|
-
get model() {
|
|
22
|
-
return this._model;
|
|
23
|
-
}
|
|
24
|
-
async init() {
|
|
25
|
-
await withLock(this, "init", async () => {
|
|
26
|
-
if (this._initialized)
|
|
27
|
-
return;
|
|
28
|
-
if (this._printLLamaSystemInfo)
|
|
29
|
-
console.log("Llama system info", this._model.systemInfo);
|
|
30
|
-
this._initialized = true;
|
|
31
|
-
});
|
|
32
|
-
}
|
|
33
|
-
async prompt(prompt, onToken, { signal } = {}) {
|
|
34
|
-
if (!this.initialized)
|
|
35
|
-
await this.init();
|
|
36
|
-
return await withLock(this, "prompt", async () => {
|
|
37
|
-
const promptText = this._promptWrapper.wrapPrompt(prompt, { systemPrompt: this._systemPrompt, promptIndex: this._promptIndex });
|
|
38
|
-
this._promptIndex++;
|
|
39
|
-
return await this._evalTokens(this._model.encode(promptText), onToken, { signal });
|
|
40
|
-
});
|
|
41
|
-
}
|
|
42
|
-
async _evalTokens(tokens, onToken, { signal } = {}) {
|
|
43
|
-
const stopStrings = this._promptWrapper.getStopStrings();
|
|
44
|
-
const stopStringIndexes = Array(stopStrings.length).fill(0);
|
|
45
|
-
const skippedChunksQueue = [];
|
|
46
|
-
let res = "";
|
|
47
|
-
for await (const chunk of this._model.evaluate(tokens)) {
|
|
48
|
-
if (signal?.aborted)
|
|
49
|
-
throw new AbortError();
|
|
50
|
-
const tokenStr = this._model.decode(Uint32Array.from([chunk]));
|
|
51
|
-
let skipTokenEvent = false;
|
|
52
|
-
for (let stopStringIndex = 0; stopStringIndex < stopStrings.length; stopStringIndex++) {
|
|
53
|
-
const stopString = stopStrings[stopStringIndex];
|
|
54
|
-
let localShouldSkipTokenEvent = false;
|
|
55
|
-
for (let i = 0; i < tokenStr.length && stopStringIndexes[stopStringIndex] !== stopString.length; i++) {
|
|
56
|
-
if (tokenStr[i] === stopString[stopStringIndexes[stopStringIndex]]) {
|
|
57
|
-
stopStringIndexes[stopStringIndex]++;
|
|
58
|
-
localShouldSkipTokenEvent = true;
|
|
59
|
-
}
|
|
60
|
-
else {
|
|
61
|
-
stopStringIndexes[stopStringIndex] = 0;
|
|
62
|
-
localShouldSkipTokenEvent = false;
|
|
63
|
-
break;
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
if (stopStringIndexes[stopStringIndex] === stopString.length) {
|
|
67
|
-
return res;
|
|
68
|
-
}
|
|
69
|
-
skipTokenEvent ||= localShouldSkipTokenEvent;
|
|
70
|
-
}
|
|
71
|
-
if (skipTokenEvent) {
|
|
72
|
-
skippedChunksQueue.push(chunk);
|
|
73
|
-
continue;
|
|
74
|
-
}
|
|
75
|
-
while (skippedChunksQueue.length > 0) {
|
|
76
|
-
const token = skippedChunksQueue.shift();
|
|
77
|
-
res += this._model.decode(Uint32Array.from([token]));
|
|
78
|
-
onToken?.(token);
|
|
79
|
-
}
|
|
80
|
-
res += tokenStr;
|
|
81
|
-
onToken?.(chunk);
|
|
82
|
-
}
|
|
83
|
-
return res;
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
//# sourceMappingURL=LlamaChatSession.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"LlamaChatSession.js","sourceRoot":"","sources":["../src/LlamaChatSession.ts"],"names":[],"mappings":"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"}
|
package/dist/LlamaModel.d.ts
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
export declare class LlamaModel {
|
|
2
|
-
private readonly _model;
|
|
3
|
-
private readonly _ctx;
|
|
4
|
-
private _prependBos;
|
|
5
|
-
constructor({ modelPath, prependBos }: {
|
|
6
|
-
modelPath: string;
|
|
7
|
-
prependBos?: boolean;
|
|
8
|
-
});
|
|
9
|
-
get systemInfo(): string;
|
|
10
|
-
encode(text: string): Uint32Array;
|
|
11
|
-
decode(tokens: Uint32Array): string;
|
|
12
|
-
evaluate(tokens: Uint32Array, getRestrictions?: () => Uint32Array): AsyncGenerator<number, void, unknown>;
|
|
13
|
-
}
|
package/dist/LlamaModel.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"LlamaModel.js","sourceRoot":"","sources":["../src/LlamaModel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAqC,MAAM,mBAAmB,CAAC;AAE9E,MAAM,YAAY,GAAG,MAAM,OAAO,EAAE,CAAC;AACrC,MAAM,EAAC,UAAU,EAAE,YAAY,EAAC,GAAG,YAAY,CAAC;AAEhD,MAAM,OAAO,UAAU;IACF,MAAM,CAAa;IACnB,IAAI,CAAe;IAC5B,WAAW,CAAU;IAE7B,YAAmB,EACf,SAAS,EAAE,UAAU,GAAG,IAAI,EAG/B;QACG,IAAI,CAAC,MAAM,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC,CAAC;QACxC,IAAI,CAAC,IAAI,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;IAClC,CAAC;IAED,IAAW,UAAU;QACjB,OAAO,YAAY,CAAC,UAAU,EAAE,CAAC;IACrC,CAAC;IAEM,MAAM,CAAC,IAAY;QACtB,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAEM,MAAM,CAAC,MAAmB;QAC7B,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC;IAEM,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAmB,EAAE,eAAmC;QAC3E,IAAI,UAAU,GAAG,MAAM,CAAC;QAExB,IAAI,IAAI,CAAC,WAAW,EAAE;YAClB,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACvC,WAAW,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC;YAE7C,UAAU,GAAG,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC3C,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;SAC5B;QAED,iDAAiD;QACjD,OAAO,IAAI,EAAE;YACT,kCAAkC;YAClC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,eAAe,EAAE,EAAE,CAAC,CAAC;YAExE,mCAAmC;YACnC,IAAI,SAAS,KAAK,YAAY,CAAC,QAAQ,EAAE;gBACrC,MAAM;YAEV,MAAM,SAAS,CAAC;YAEhB,mCAAmC;YACnC,UAAU,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;SAC9C;IACL,CAAC;CACJ"}
|