@mikugg/guidance 0.13.0 → 0.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../src/lib/template.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAG3D,oBAAY,gBAAgB;IAC1B,GAAG,QAAQ;IACX,GAAG,QAAQ;CACZ;AAED,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,SAAS,CAAoB;IACrC,OAAO,CAAC,SAAS,CAAyB;gBAE9B,SAAS,EAAE,iBAAiB,EAAE,SAAS,EAAE,sBAAsB;IAKpE,YAAY,CAAC,SAAS,EAAE,iBAAiB;IAIzC,YAAY,CAAC,SAAS,EAAE,sBAAsB;IAIxC,eAAe,CAC1B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,GACxC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAYjB,qBAAqB,CACjC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,GACxC,cAAc,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC;IAkG5C,OAAO,CAAC,cAAc;CAQvB"}
1
+ {"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../src/lib/template.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAG3D,oBAAY,gBAAgB;IAC1B,GAAG,QAAQ;IACX,GAAG,QAAQ;CACZ;AAED,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,SAAS,CAAoB;IACrC,OAAO,CAAC,SAAS,CAAyB;gBAE9B,SAAS,EAAE,iBAAiB,EAAE,SAAS,EAAE,sBAAsB;IAKpE,YAAY,CAAC,SAAS,EAAE,iBAAiB;IAIzC,YAAY,CAAC,SAAS,EAAE,sBAAsB;IAIxC,eAAe,CAC1B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,GACxC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAYjB,qBAAqB,CACjC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,GACxC,cAAc,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC;IAoI5C,OAAO,CAAC,cAAc;CAQvB"}
@@ -142,11 +142,36 @@ class TemplateProcessor {
142
142
  }
143
143
  else {
144
144
  // If there is more than one child, we generate the next token
145
- const nextToken = yield __await(this.generator.generateToken(prompt, nextChildren.reduce((acc, child) => {
145
+ const logit_bias = nextChildren.reduce((acc, child) => {
146
146
  acc[child.toString()] = 100;
147
147
  return acc;
148
- }, {})));
149
- currentPrefixPrompt = currentPrefixPrompt + nextToken;
148
+ }, {});
149
+ const top_logprobs = yield __await(this.generator.generateTokenLogProgs(prompt, logit_bias));
150
+ // get max top_logpobs that is in logit_bias
151
+ let max = -Infinity;
152
+ let max_key = "";
153
+ for (const key in top_logprobs) {
154
+ const completedPrefix = this.tokenizer.encodeString(currentPrefixPrompt + key);
155
+ const completionTokens = completedPrefix.slice(currentPrefix.length);
156
+ if (top_logprobs[key] > max &&
157
+ completionTokens[0] &&
158
+ completionTokens[0] in logit_bias) {
159
+ max = top_logprobs[key];
160
+ max_key = key;
161
+ }
162
+ }
163
+ // if no key in logit_bias, get max top_logprobs
164
+ if (max_key === "") {
165
+ // no key in logit_bias
166
+ max = -Infinity;
167
+ for (const key in top_logprobs) {
168
+ if (top_logprobs[key] > max) {
169
+ max = top_logprobs[key];
170
+ max_key = key;
171
+ }
172
+ }
173
+ }
174
+ currentPrefixPrompt = currentPrefixPrompt + max_key;
150
175
  }
151
176
  } while (!completion);
152
177
  result.set(variableName, completion);
@@ -1,7 +1,7 @@
1
1
  import { ClientOptions } from "openai";
2
2
  import { CompletionCreateParams } from "openai/resources/completions.mjs";
3
3
  export declare abstract class AbstractTokenGenerator {
4
- abstract generateToken(prompt: string, logit_bias: Record<string, number>): Promise<string>;
4
+ abstract generateTokenLogProgs(prompt: string, logit_bias: Record<string, number>): Promise<Record<string, number>>;
5
5
  abstract generateString(prompt: string, options: Record<string, number | string | string[]>): AsyncGenerator<string>;
6
6
  }
7
7
  /**
@@ -17,7 +17,7 @@ export declare class OpenAITokenGenerator extends AbstractTokenGenerator {
17
17
  model: string;
18
18
  baseURL?: string;
19
19
  }, options?: ClientOptions, defaultCompletionParams?: CompletionCreateParams);
20
- generateToken(prompt: string, logit_bias: Record<string, number>): Promise<string>;
20
+ generateTokenLogProgs(prompt: string, logit_bias: Record<string, number>): Promise<Record<string, number>>;
21
21
  generateString(prompt: string, options: Record<string, string | number | string[]>): AsyncGenerator<string>;
22
22
  }
23
23
  //# sourceMappingURL=token-generator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"token-generator.d.ts","sourceRoot":"","sources":["../../src/lib/token-generator.ts"],"names":[],"mappings":"AAAA,OAAe,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAC/C,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAE1E,8BAAsB,sBAAsB;IAC1C,QAAQ,CAAC,aAAa,CACpB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACjC,OAAO,CAAC,MAAM,CAAC;IAClB,QAAQ,CAAC,cAAc,CACrB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,CAAC,GAClD,cAAc,CAAC,MAAM,CAAC;CAC1B;AACD;;;GAGG;AACH,qBAAa,oBAAqB,SAAQ,sBAAsB;IAC9D,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,uBAAuB,CAAC,CAAyB;gBAGvD,MAAM,EAAE;QACN,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,EACD,OAAO,CAAC,EAAE,aAAa,EACvB,uBAAuB,CAAC,EAAE,sBAAsB;IAYnC,aAAa,CAC1B,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACjC,OAAO,CAAC,MAAM,CAAC;IAwCF,cAAc,CAC5B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,CAAC,GAClD,cAAc,CAAC,MAAM,CAAC;CAc1B"}
1
+ {"version":3,"file":"token-generator.d.ts","sourceRoot":"","sources":["../../src/lib/token-generator.ts"],"names":[],"mappings":"AAAA,OAAe,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAC/C,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAE1E,8BAAsB,sBAAsB;IAC1C,QAAQ,CAAC,qBAAqB,CAC5B,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACjC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,QAAQ,CAAC,cAAc,CACrB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,CAAC,GAClD,cAAc,CAAC,MAAM,CAAC;CAC1B;AACD;;;GAGG;AACH,qBAAa,oBAAqB,SAAQ,sBAAsB;IAC9D,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,uBAAuB,CAAC,CAAyB;gBAGvD,MAAM,EAAE;QACN,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,EACD,OAAO,CAAC,EAAE,aAAa,EACvB,uBAAuB,CAAC,EAAE,sBAAsB;IAYnC,qBAAqB,CAClC,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACjC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAgBlB,cAAc,CAC5B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,CAAC,GAClD,cAAc,CAAC,MAAM,CAAC;CAc1B"}
@@ -47,36 +47,22 @@ class OpenAITokenGenerator extends AbstractTokenGenerator {
47
47
  this.openai = new openai_1.default(Object.assign({ apiKey: params.apiKey, baseURL: params.baseURL }, options));
48
48
  this.defaultCompletionParams = defaultCompletionParams;
49
49
  }
50
- generateToken(prompt, logit_bias) {
50
+ generateTokenLogProgs(prompt, logit_bias) {
51
51
  var _a;
52
52
  return __awaiter(this, void 0, void 0, function* () {
53
- const result = yield this.openai.completions.create(Object.assign(Object.assign({}, this.defaultCompletionParams), { stream: false, model: this.model, prompt,
54
- logit_bias, logprobs: 10, max_tokens: 1 }));
53
+ const result = yield this.openai.completions.create({
54
+ stream: false,
55
+ model: this.model,
56
+ prompt,
57
+ logit_bias,
58
+ logprobs: 10,
59
+ max_tokens: 1,
60
+ });
55
61
  const logprobsResult = ((_a = result.choices[0].logprobs) === null || _a === void 0 ? void 0 : _a.top_logprobs) || [];
56
62
  const top_logprobs = logprobsResult
57
63
  ? logprobsResult[0]
58
64
  : { "2": 0 };
59
- // get max top_logpobs that is in logit_bias
60
- let max = -Infinity;
61
- let max_key = "";
62
- for (const key in top_logprobs) {
63
- if (top_logprobs[key] > max && key in logit_bias) {
64
- max = top_logprobs[key];
65
- max_key = key;
66
- }
67
- }
68
- // if no key in logit_bias, get max top_logprobs
69
- if (max_key === "") {
70
- // no key in logit_bias
71
- max = -Infinity;
72
- for (const key in top_logprobs) {
73
- if (top_logprobs[key] > max) {
74
- max = top_logprobs[key];
75
- max_key = key;
76
- }
77
- }
78
- }
79
- return max_key;
65
+ return top_logprobs;
80
66
  });
81
67
  }
82
68
  generateString(prompt, options) {
@@ -13,4 +13,9 @@ export declare class GTPTokenizer extends AbstractTokenizer {
13
13
  decodeString(arr: number[]): string;
14
14
  getEOS(): string;
15
15
  }
16
+ export declare class MistralTokenizer extends AbstractTokenizer {
17
+ encodeString(str: string, add_bos_token?: boolean, add_preceding_space?: boolean, log_performance?: boolean): number[];
18
+ decodeString(arr: number[], add_bos_token?: boolean, add_preceding_space?: boolean): string;
19
+ getEOS(): string;
20
+ }
16
21
  //# sourceMappingURL=tokenizer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tokenizer.d.ts","sourceRoot":"","sources":["../../src/lib/tokenizer.ts"],"names":[],"mappings":"AAGA,8BAAsB,iBAAiB;IACrC,QAAQ,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE;IAC5C,QAAQ,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM;IAC5C,QAAQ,CAAC,MAAM,IAAI,MAAM;CAC1B;AAED,qBAAa,cAAe,SAAQ,iBAAiB;IAC1C,YAAY,CACnB,GAAG,EAAE,MAAM,EACX,aAAa,CAAC,EAAE,OAAO,EACvB,mBAAmB,CAAC,EAAE,OAAO,EAC7B,eAAe,CAAC,EAAE,OAAO,GACxB,MAAM,EAAE;IAqBF,YAAY,CACnB,GAAG,EAAE,MAAM,EAAE,EACb,aAAa,CAAC,EAAE,OAAO,EACvB,mBAAmB,CAAC,EAAE,OAAO,GAC5B,MAAM;IAWA,MAAM,IAAI,MAAM;CAG1B;AAED,qBAAa,YAAa,SAAQ,iBAAiB;IACxC,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE;IAMnC,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM;IAInC,MAAM,IAAI,MAAM;CAG1B"}
1
+ {"version":3,"file":"tokenizer.d.ts","sourceRoot":"","sources":["../../src/lib/tokenizer.ts"],"names":[],"mappings":"AAIA,8BAAsB,iBAAiB;IACrC,QAAQ,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE;IAC5C,QAAQ,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM;IAC5C,QAAQ,CAAC,MAAM,IAAI,MAAM;CAC1B;AAED,qBAAa,cAAe,SAAQ,iBAAiB;IAC1C,YAAY,CACnB,GAAG,EAAE,MAAM,EACX,aAAa,CAAC,EAAE,OAAO,EACvB,mBAAmB,CAAC,EAAE,OAAO,EAC7B,eAAe,CAAC,EAAE,OAAO,GACxB,MAAM,EAAE;IAqBF,YAAY,CACnB,GAAG,EAAE,MAAM,EAAE,EACb,aAAa,CAAC,EAAE,OAAO,EACvB,mBAAmB,CAAC,EAAE,OAAO,GAC5B,MAAM;IAWA,MAAM,IAAI,MAAM;CAG1B;AAED,qBAAa,YAAa,SAAQ,iBAAiB;IACxC,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE;IAMnC,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM;IAInC,MAAM,IAAI,MAAM;CAG1B;AAED,qBAAa,gBAAiB,SAAQ,iBAAiB;IAC5C,YAAY,CACnB,GAAG,EAAE,MAAM,EACX,aAAa,CAAC,EAAE,OAAO,EACvB,mBAAmB,CAAC,EAAE,OAAO,EAC7B,eAAe,CAAC,EAAE,OAAO,GACxB,MAAM,EAAE;IAqBF,YAAY,CACnB,GAAG,EAAE,MAAM,EAAE,EACb,aAAa,CAAC,EAAE,OAAO,EACvB,mBAAmB,CAAC,EAAE,OAAO,GAC5B,MAAM;IAWA,MAAM,IAAI,MAAM;CAG1B"}
@@ -3,9 +3,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.GTPTokenizer = exports.LLaMATokenizer = exports.AbstractTokenizer = void 0;
6
+ exports.MistralTokenizer = exports.GTPTokenizer = exports.LLaMATokenizer = exports.AbstractTokenizer = void 0;
7
7
  const _llama_tokenizer_1 = __importDefault(require("./_llama-tokenizer"));
8
8
  const gpt_tokenizer_1 = require("gpt-tokenizer");
9
+ const _mistral_tokenizer_1 = __importDefault(require("./_mistral-tokenizer"));
9
10
  class AbstractTokenizer {
10
11
  }
11
12
  exports.AbstractTokenizer = AbstractTokenizer;
@@ -47,3 +48,27 @@ class GTPTokenizer extends AbstractTokenizer {
47
48
  }
48
49
  }
49
50
  exports.GTPTokenizer = GTPTokenizer;
51
+ class MistralTokenizer extends AbstractTokenizer {
52
+ encodeString(str, add_bos_token, add_preceding_space, log_performance) {
53
+ if (str.endsWith(this.getEOS())) {
54
+ str = str.substring(0, str.length - this.getEOS().length);
55
+ return [
56
+ ..._mistral_tokenizer_1.default.encode(str, add_bos_token, add_preceding_space, log_performance),
57
+ 2, // EOS
58
+ ];
59
+ }
60
+ return _mistral_tokenizer_1.default.encode(str, add_bos_token, add_preceding_space, log_performance);
61
+ }
62
+ decodeString(arr, add_bos_token, add_preceding_space) {
63
+ if (arr[arr.length - 1] === 2) {
64
+ arr = arr.slice(0, arr.length - 1);
65
+ return (_mistral_tokenizer_1.default.decode(arr, add_bos_token, add_preceding_space) +
66
+ this.getEOS());
67
+ }
68
+ return _mistral_tokenizer_1.default.decode(arr, add_bos_token, add_preceding_space);
69
+ }
70
+ getEOS() {
71
+ return "</s>";
72
+ }
73
+ }
74
+ exports.MistralTokenizer = MistralTokenizer;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mikugg/guidance",
3
- "version": "0.13.0",
3
+ "version": "0.15.0",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -39,5 +39,5 @@
39
39
  "ts-node": "^10.9.1",
40
40
  "typescript": "^5.2.2"
41
41
  },
42
- "gitHead": "0af65fd76382ad960f571eccf6a1574f76e53b7b"
42
+ "gitHead": "d55121e62f8b51424c9d902ecbdb17ac300d7f0f"
43
43
  }