node-llama-cpp 1.1.1 → 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/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/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"}
|
|
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"}
|