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.
Files changed (61) hide show
  1. package/dist/chatWrappers/GeneralChatPromptWrapper.d.ts +8 -0
  2. package/dist/chatWrappers/GeneralChatPromptWrapper.js +11 -0
  3. package/dist/chatWrappers/GeneralChatPromptWrapper.js.map +1 -0
  4. package/dist/cli/commands/ChatCommand.d.ts +1 -0
  5. package/dist/cli/commands/ChatCommand.js +25 -8
  6. package/dist/cli/commands/ChatCommand.js.map +1 -1
  7. package/dist/index.d.ts +5 -3
  8. package/dist/index.js +5 -3
  9. package/dist/index.js.map +1 -1
  10. package/dist/llamaEvaluator/LlamaBins.d.ts +4 -0
  11. package/dist/llamaEvaluator/LlamaBins.js +5 -0
  12. package/dist/llamaEvaluator/LlamaBins.js.map +1 -0
  13. package/dist/{LlamaChatSession.d.ts → llamaEvaluator/LlamaChatSession.d.ts} +8 -7
  14. package/dist/llamaEvaluator/LlamaChatSession.js +97 -0
  15. package/dist/llamaEvaluator/LlamaChatSession.js.map +1 -0
  16. package/dist/llamaEvaluator/LlamaContext.d.ts +15 -0
  17. package/dist/{LlamaModel.js → llamaEvaluator/LlamaContext.js} +9 -15
  18. package/dist/llamaEvaluator/LlamaContext.js.map +1 -0
  19. package/dist/llamaEvaluator/LlamaModel.d.ts +11 -0
  20. package/dist/llamaEvaluator/LlamaModel.js +20 -0
  21. package/dist/llamaEvaluator/LlamaModel.js.map +1 -0
  22. package/llamaBins/linux-arm64-16.node +0 -0
  23. package/llamaBins/linux-arm64-17.node +0 -0
  24. package/llamaBins/linux-arm64-18.node +0 -0
  25. package/llamaBins/linux-arm64-19.node +0 -0
  26. package/llamaBins/linux-arm64-20.node +0 -0
  27. package/llamaBins/linux-armv7l-16.node +0 -0
  28. package/llamaBins/linux-armv7l-17.node +0 -0
  29. package/llamaBins/linux-armv7l-18.node +0 -0
  30. package/llamaBins/linux-armv7l-19.node +0 -0
  31. package/llamaBins/linux-armv7l-20.node +0 -0
  32. package/llamaBins/linux-ppc64le-16.node +0 -0
  33. package/llamaBins/linux-ppc64le-17.node +0 -0
  34. package/llamaBins/linux-ppc64le-18.node +0 -0
  35. package/llamaBins/linux-ppc64le-19.node +0 -0
  36. package/llamaBins/linux-ppc64le-20.node +0 -0
  37. package/llamaBins/linux-x64-16.node +0 -0
  38. package/llamaBins/linux-x64-17.node +0 -0
  39. package/llamaBins/linux-x64-18.node +0 -0
  40. package/llamaBins/linux-x64-19.node +0 -0
  41. package/llamaBins/linux-x64-20.node +0 -0
  42. package/llamaBins/mac-arm64-16.node +0 -0
  43. package/llamaBins/mac-arm64-17.node +0 -0
  44. package/llamaBins/mac-arm64-18.node +0 -0
  45. package/llamaBins/mac-arm64-19.node +0 -0
  46. package/llamaBins/mac-arm64-20.node +0 -0
  47. package/llamaBins/mac-x64-16.node +0 -0
  48. package/llamaBins/mac-x64-17.node +0 -0
  49. package/llamaBins/mac-x64-18.node +0 -0
  50. package/llamaBins/mac-x64-19.node +0 -0
  51. package/llamaBins/mac-x64-20.node +0 -0
  52. package/llamaBins/win-x64-16.node +0 -0
  53. package/llamaBins/win-x64-17.node +0 -0
  54. package/llamaBins/win-x64-18.node +0 -0
  55. package/llamaBins/win-x64-19.node +0 -0
  56. package/llamaBins/win-x64-20.node +0 -0
  57. package/package.json +1 -1
  58. package/dist/LlamaChatSession.js +0 -86
  59. package/dist/LlamaChatSession.js.map +0 -1
  60. package/dist/LlamaModel.d.ts +0 -13
  61. 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"}
@@ -3,6 +3,7 @@ type ChatCommand = {
3
3
  model: string;
4
4
  systemInfo: boolean;
5
5
  systemPrompt: string;
6
+ wrapper: string;
6
7
  };
7
8
  export declare const ChatCommand: CommandModule<object, ChatCommand>;
8
9
  export {};
@@ -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: new LlamaChatPromptWrapper()
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(model.decode(Uint32Array.from([chunk])));
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":"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"}
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
- export { LlamaModel, LlamaChatSession, AbortError, ChatPromptWrapper, EmptyChatPromptWrapper, LlamaChatPromptWrapper };
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
- export { LlamaModel, LlamaChatSession, AbortError, ChatPromptWrapper, EmptyChatPromptWrapper, LlamaChatPromptWrapper };
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,uBAAuB,CAAC;AACvD,OAAO,EAAC,UAAU,EAAC,MAAM,iBAAiB,CAAC;AAC3C,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;AAEhF,OAAO,EACH,UAAU,EACV,gBAAgB,EAChB,UAAU,EACV,iBAAiB,EACjB,sBAAsB,EACtB,sBAAsB,EACzB,CAAC"}
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,4 @@
1
+ import { type LLAMAModel, type LLAMAContext } from "../utils/getBin.js";
2
+ export declare const llamaCppNode: import("../utils/getBin.js").LlamaCppNodeModule;
3
+ declare const LLAMAModel: LLAMAModel, LLAMAContext: LLAMAContext;
4
+ export { LLAMAModel, LLAMAContext };
@@ -0,0 +1,5 @@
1
+ import { loadBin } from "../utils/getBin.js";
2
+ export const llamaCppNode = await loadBin();
3
+ const { LLAMAModel, LLAMAContext } = llamaCppNode;
4
+ export { LLAMAModel, LLAMAContext };
5
+ //# sourceMappingURL=LlamaBins.js.map
@@ -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 { LlamaModel } from "./LlamaModel.js";
3
- import { ChatPromptWrapper } from "./ChatPromptWrapper.js";
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
- constructor({ model, printLLamaSystemInfo, promptWrapper, systemPrompt }: {
12
- model: LlamaModel;
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 model(): LlamaModel;
18
+ get context(): LlamaContext;
19
19
  init(): Promise<void>;
20
- prompt(prompt: string, onToken?: (token: number) => void, { signal }?: {
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 { loadBin } from "./utils/getBin.js";
2
- const llamaCppNode = await loadBin();
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
- constructor({ modelPath, prependBos = true }) {
9
- this._model = new LLAMAModel(modelPath);
10
- this._ctx = new LLAMAContext(this._model);
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 tokensArray = Array.from(tokens);
26
- tokensArray.unshift(llamaCppNode.tokenBos());
27
- evalTokens = Uint32Array.from(tokensArray);
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=LlamaModel.js.map
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "node-llama-cpp",
3
- "version": "1.1.1",
3
+ "version": "1.2.0",
4
4
  "description": "node.js bindings for llama.cpp",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",
@@ -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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"}
@@ -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
- }
@@ -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"}