modprompt 0.0.10 → 0.0.11

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/cls.d.ts CHANGED
@@ -10,8 +10,10 @@ declare class PromptTemplate {
10
10
  linebreaks?: SpacingSlots;
11
11
  _extraSystem: string;
12
12
  _extraAssistant: string;
13
+ _replacePrompt: string;
14
+ _replaceSystem: string;
13
15
  constructor(template: string | LmTemplate);
14
- cloneTo(name: string): PromptTemplate;
16
+ cloneTo(template: string | LmTemplate, keepShots?: boolean): PromptTemplate;
15
17
  toJson(): LmTemplate;
16
18
  replaceSystem(msg: string): PromptTemplate;
17
19
  afterSystem(msg: string): PromptTemplate;
package/dist/mod.es.mjs CHANGED
@@ -109,7 +109,8 @@ const templates = {
109
109
  "system": 1,
110
110
  "user": 1,
111
111
  "assistant": 1,
112
- }
112
+ },
113
+ "stop": ["<|im_end|>"]
113
114
  },
114
115
  "mamba": {
115
116
  "id": "mamba",
@@ -168,6 +169,8 @@ class PromptTemplate {
168
169
  linebreaks;
169
170
  _extraSystem = "";
170
171
  _extraAssistant = "";
172
+ _replacePrompt = "";
173
+ _replaceSystem = "";
171
174
  constructor(template) {
172
175
  let tpl;
173
176
  if (typeof template == "string") {
@@ -193,27 +196,27 @@ class PromptTemplate {
193
196
  this.linebreaks = tpl.linebreaks;
194
197
  }
195
198
  }
196
- cloneTo(name) {
197
- const tpl = new PromptTemplate(name);
198
- if (this?.system) {
199
- tpl.system = this.system;
200
- }
201
- if (this?.shots) {
202
- tpl.shots = this.shots;
203
- }
204
- if (this?.stop) {
205
- tpl.stop = this.stop;
206
- }
207
- if (this?.linebreaks) {
208
- tpl.linebreaks = this.linebreaks;
199
+ cloneTo(template, keepShots = true) {
200
+ const tpl = new PromptTemplate(template);
201
+ if (keepShots) {
202
+ if (this?.shots) {
203
+ this.shots.forEach((s) => {
204
+ tpl.addShot(s.user, s.assistant);
205
+ });
206
+ }
209
207
  }
210
208
  if (this._extraSystem.length > 0) {
211
209
  tpl.afterSystem(this._extraSystem);
212
210
  }
211
+ if (this._replaceSystem.length > 0) {
212
+ tpl.replaceSystem(this._replaceSystem);
213
+ }
213
214
  if (this._extraAssistant.length > 0) {
214
215
  tpl.afterAssistant(this._extraAssistant);
215
216
  }
216
- tpl.user = this.user;
217
+ if (this._replacePrompt.length > 0) {
218
+ tpl.replacePrompt(this._replacePrompt);
219
+ }
217
220
  return tpl;
218
221
  }
219
222
  toJson() {
@@ -241,16 +244,13 @@ class PromptTemplate {
241
244
  if (!this.system) {
242
245
  return this;
243
246
  }
244
- this.system.message = msg;
247
+ this._replaceSystem = msg;
245
248
  return this;
246
249
  }
247
250
  afterSystem(msg) {
248
251
  if (!this.system) {
249
252
  return this;
250
253
  }
251
- if (!this.system?.message) {
252
- this.system.message = "";
253
- }
254
254
  this._extraSystem = msg;
255
255
  return this;
256
256
  }
@@ -259,16 +259,22 @@ class PromptTemplate {
259
259
  return this;
260
260
  }
261
261
  replacePrompt(msg) {
262
- this.user = this.user.replace("{prompt}", msg);
262
+ this._replacePrompt = msg;
263
263
  return this;
264
264
  }
265
265
  addShot(user, assistant) {
266
266
  if (!this?.shots) {
267
267
  this.shots = [];
268
268
  }
269
+ let _assistantMsg = assistant;
270
+ if (this.stop) {
271
+ if (this.stop.length > 0) {
272
+ _assistantMsg += this.stop[0];
273
+ }
274
+ }
269
275
  this.shots.push({
270
276
  user: user,
271
- assistant: assistant,
277
+ assistant: _assistantMsg,
272
278
  });
273
279
  return this;
274
280
  }
@@ -299,6 +305,9 @@ class PromptTemplate {
299
305
  if (!this?.system) {
300
306
  return "";
301
307
  }
308
+ if (this._replaceSystem) {
309
+ this.system.message = this._replaceSystem;
310
+ }
302
311
  if (this.system?.message) {
303
312
  res = this.system.schema.replace("{system}", this.system.message);
304
313
  }
@@ -312,12 +321,16 @@ class PromptTemplate {
312
321
  }
313
322
  _buildUserBlock(msg) {
314
323
  let buf = [];
315
- buf.push(this.user);
324
+ let _userBlock = this.user;
325
+ if (this._replacePrompt.length > 0) {
326
+ _userBlock = _userBlock.replace("{prompt}", this._replacePrompt);
327
+ }
328
+ buf.push(_userBlock);
316
329
  if (this?.linebreaks?.user) {
317
330
  buf.push("\n".repeat(this.linebreaks.user));
318
331
  }
319
332
  if (msg) {
320
- buf[0] = buf[0].replace("{prompt}", msg);
333
+ buf[0] = _userBlock.replace("{prompt}", msg);
321
334
  }
322
335
  return buf.join("");
323
336
  }
@@ -332,7 +345,7 @@ class PromptTemplate {
332
345
  buf.push("\n".repeat(this.linebreaks.assistant));
333
346
  }
334
347
  if (msg) {
335
- buf[0] = buf[0] + msg + "\n";
348
+ buf[0] = buf[0] + msg;
336
349
  }
337
350
  return buf.join("");
338
351
  }
package/dist/mod.min.js CHANGED
@@ -1 +1 @@
1
- var $tpl=function(s){"use strict";const t={alpaca:{id:"alpaca",name:"Alpaca",system:{schema:"{system}",message:"Below is an instruction that describes a task. Write a response that appropriately completes the request."},user:"### Instruction:\n{prompt}",assistant:"### Response:",linebreaks:{system:2,user:2}},llama:{id:"llama",name:"Llama",system:{schema:"<s>[INST] <<SYS>>\n{system}\n<</SYS>>",message:"You are a helpful, respectful and honest assistant. Always answer as helpfully as possible\n\nIf a question does not make any sense, or is not factually coherent, explain why instead of answering something not correct. If you don't know the answer to a question, please don't share false information."},user:"{prompt}",assistant:" [/INST] ",linebreaks:{system:2,user:0}},llama_instruct:{id:"llama_instruct",name:"Llama instruct",user:"[INST] {prompt}",assistant:" [/INST]",linebreaks:{user:1}},mistral:{id:"mistral",name:"Mistral",user:"<s>[INST] {prompt}",assistant:" [/INST]",stop:["</s>"]},orca:{id:"orca",name:"Orca",system:{schema:"### System:\n{system}",message:"You are an AI assistant that follows instruction extremely well. Help as much as you can."},user:"### User:\n{prompt}",assistant:"### Response:",linebreaks:{system:2,user:2}},vicuna:{id:"vicuna",name:"Vicuna",user:"USER: {prompt}",assistant:"### ASSISTANT:",linebreaks:{user:2}},vicuna_system:{id:"vicuna_system",name:"Vicuna system",system:{schema:"SYSTEM: {system}"},user:"USER: {prompt}",assistant:"### ASSISTANT:",linebreaks:{user:2}},wizard_vicuna:{id:"wizard_vicuna",name:"Wizard Vicuna",user:"### Human:\n{prompt}",assistant:"### ASSISTANT:",linebreaks:{user:2},stop:["<|endoftext|>"]},guanaco:{id:"guanaco",name:"Guanaco",user:"### Human: {prompt}",assistant:"### Assistant:",linebreaks:{user:1}},chatml:{id:"chatml",name:"ChatMl",system:{schema:"<|im_start|>system\n{system}\n<|im_end|>"},user:"<|im_start|>user\n{prompt}<|im_end|>",assistant:"<|im_start|>assistant",linebreaks:{system:1,user:1,assistant:1}},mamba:{id:"mamba",name:"Mamba",user:"<|prompt|>{prompt}</s>",assistant:"<|answer|>",stop:["<|endoftext|>"]},wizardlm:{id:"wizardlm",name:"WizardLM",system:{schema:"{system}",message:"You are a helpful AI assistant."},user:"USER: {prompt}",assistant:"ASSISTANT:",linebreaks:{user:1}},human_response:{id:"human_response",name:"Human response",user:"### HUMAN:\n{prompt}",assistant:"### RESPONSE:",linebreaks:{user:2,assistant:1}},coding_assistant:{id:"coding_assistant",name:"Coding assistant",system:{schema:"{system}",message:"You are a coding assistant that will help the user to resolve the following instruction:"},user:"### Instruction: {prompt}",assistant:"### Solution:",linebreaks:{user:2,system:1}}};class e{id;name;user;assistant;system;shots;stop;linebreaks;_extraSystem="";_extraAssistant="";constructor(s){let t;t="string"==typeof s?this._load(s):s,this.id=t.id,this.name=t.name,this.user=t.user,this.assistant=t.assistant,t?.system&&(this.system=t.system),t?.shots&&(this.shots=t.shots),t?.stop&&(this.stop=t.stop),t?.linebreaks&&(this.linebreaks=t.linebreaks)}cloneTo(s){const t=new e(s);return this?.system&&(t.system=this.system),this?.shots&&(t.shots=this.shots),this?.stop&&(t.stop=this.stop),this?.linebreaks&&(t.linebreaks=this.linebreaks),this._extraSystem.length>0&&t.afterSystem(this._extraSystem),this._extraAssistant.length>0&&t.afterAssistant(this._extraAssistant),t.user=this.user,t}toJson(){const s={id:this.id,name:this.name,user:this.user,assistant:this.assistant};return this?.system&&(this.system=this.system),this?.shots&&(this.shots=this.shots),this?.stop&&(this.stop=this.stop),this?.linebreaks&&(this.linebreaks=this.linebreaks),s}replaceSystem(s){return this.system?(this.system.message=s,this):this}afterSystem(s){return this.system?(this.system?.message||(this.system.message=""),this._extraSystem=s,this):this}afterAssistant(s){return this._extraAssistant=s,this}replacePrompt(s){return this.user=this.user.replace("{prompt}",s),this}addShot(s,t){return this?.shots||(this.shots=[]),this.shots.push({user:s,assistant:t}),this}render(){const s=new Array,t=this._buildSystemBlock();if(t.length>0&&(s.push(t),this?.linebreaks?.system&&s.push("\n".repeat(this.linebreaks.system))),this?.shots)for(const t of this.shots)s.push(this._buildUserBlock(t.user)),s.push(this._buildAssistantBlock(t.assistant));return s.push(this._buildUserBlock()),s.push(this._buildAssistantBlock()),s.join("")}prompt(s){return this.render().replace("{prompt}",s)}_buildSystemBlock(){let s="";return this?.system?(s=this.system?.message?this.system.schema.replace("{system}",this.system.message):this.system.schema.replace("{system}",""),this._extraSystem&&(s+=this._extraSystem),s):""}_buildUserBlock(s){let t=[];return t.push(this.user),this?.linebreaks?.user&&t.push("\n".repeat(this.linebreaks.user)),s&&(t[0]=t[0].replace("{prompt}",s)),t.join("")}_buildAssistantBlock(s){let t=[],e=this.assistant;return this._extraAssistant.length>0&&(e+=this._extraAssistant),t.push(e),this?.linebreaks?.assistant&&t.push("\n".repeat(this.linebreaks.assistant)),s&&(t[0]=t[0]+s+"\n"),t.join("")}_load(s){try{if(s in t)return t[s];throw new Error(`Template ${s} not found`)}catch(t){throw new Error(`Error loading template ${s}: ${t}`)}}}return s.PromptTemplate=e,s.templates=t,s}({});
1
+ var $tpl=function(s){"use strict";const t={alpaca:{id:"alpaca",name:"Alpaca",system:{schema:"{system}",message:"Below is an instruction that describes a task. Write a response that appropriately completes the request."},user:"### Instruction:\n{prompt}",assistant:"### Response:",linebreaks:{system:2,user:2}},llama:{id:"llama",name:"Llama",system:{schema:"<s>[INST] <<SYS>>\n{system}\n<</SYS>>",message:"You are a helpful, respectful and honest assistant. Always answer as helpfully as possible\n\nIf a question does not make any sense, or is not factually coherent, explain why instead of answering something not correct. If you don't know the answer to a question, please don't share false information."},user:"{prompt}",assistant:" [/INST] ",linebreaks:{system:2,user:0}},llama_instruct:{id:"llama_instruct",name:"Llama instruct",user:"[INST] {prompt}",assistant:" [/INST]",linebreaks:{user:1}},mistral:{id:"mistral",name:"Mistral",user:"<s>[INST] {prompt}",assistant:" [/INST]",stop:["</s>"]},orca:{id:"orca",name:"Orca",system:{schema:"### System:\n{system}",message:"You are an AI assistant that follows instruction extremely well. Help as much as you can."},user:"### User:\n{prompt}",assistant:"### Response:",linebreaks:{system:2,user:2}},vicuna:{id:"vicuna",name:"Vicuna",user:"USER: {prompt}",assistant:"### ASSISTANT:",linebreaks:{user:2}},vicuna_system:{id:"vicuna_system",name:"Vicuna system",system:{schema:"SYSTEM: {system}"},user:"USER: {prompt}",assistant:"### ASSISTANT:",linebreaks:{user:2}},wizard_vicuna:{id:"wizard_vicuna",name:"Wizard Vicuna",user:"### Human:\n{prompt}",assistant:"### ASSISTANT:",linebreaks:{user:2},stop:["<|endoftext|>"]},guanaco:{id:"guanaco",name:"Guanaco",user:"### Human: {prompt}",assistant:"### Assistant:",linebreaks:{user:1}},chatml:{id:"chatml",name:"ChatMl",system:{schema:"<|im_start|>system\n{system}\n<|im_end|>"},user:"<|im_start|>user\n{prompt}<|im_end|>",assistant:"<|im_start|>assistant",linebreaks:{system:1,user:1,assistant:1},stop:["<|im_end|>"]},mamba:{id:"mamba",name:"Mamba",user:"<|prompt|>{prompt}</s>",assistant:"<|answer|>",stop:["<|endoftext|>"]},wizardlm:{id:"wizardlm",name:"WizardLM",system:{schema:"{system}",message:"You are a helpful AI assistant."},user:"USER: {prompt}",assistant:"ASSISTANT:",linebreaks:{user:1}},human_response:{id:"human_response",name:"Human response",user:"### HUMAN:\n{prompt}",assistant:"### RESPONSE:",linebreaks:{user:2,assistant:1}},coding_assistant:{id:"coding_assistant",name:"Coding assistant",system:{schema:"{system}",message:"You are a coding assistant that will help the user to resolve the following instruction:"},user:"### Instruction: {prompt}",assistant:"### Solution:",linebreaks:{user:2,system:1}}};class e{id;name;user;assistant;system;shots;stop;linebreaks;_extraSystem="";_extraAssistant="";_replacePrompt="";_replaceSystem="";constructor(s){let t;t="string"==typeof s?this._load(s):s,this.id=t.id,this.name=t.name,this.user=t.user,this.assistant=t.assistant,t?.system&&(this.system=t.system),t?.shots&&(this.shots=t.shots),t?.stop&&(this.stop=t.stop),t?.linebreaks&&(this.linebreaks=t.linebreaks)}cloneTo(s,t=!0){const a=new e(s);return t&&this?.shots&&this.shots.forEach((s=>{a.addShot(s.user,s.assistant)})),this._extraSystem.length>0&&a.afterSystem(this._extraSystem),this._replaceSystem.length>0&&a.replaceSystem(this._replaceSystem),this._extraAssistant.length>0&&a.afterAssistant(this._extraAssistant),this._replacePrompt.length>0&&a.replacePrompt(this._replacePrompt),a}toJson(){const s={id:this.id,name:this.name,user:this.user,assistant:this.assistant};return this?.system&&(this.system=this.system),this?.shots&&(this.shots=this.shots),this?.stop&&(this.stop=this.stop),this?.linebreaks&&(this.linebreaks=this.linebreaks),s}replaceSystem(s){return this.system?(this._replaceSystem=s,this):this}afterSystem(s){return this.system?(this._extraSystem=s,this):this}afterAssistant(s){return this._extraAssistant=s,this}replacePrompt(s){return this._replacePrompt=s,this}addShot(s,t){this?.shots||(this.shots=[]);let e=t;return this.stop&&this.stop.length>0&&(e+=this.stop[0]),this.shots.push({user:s,assistant:e}),this}render(){const s=new Array,t=this._buildSystemBlock();if(t.length>0&&(s.push(t),this?.linebreaks?.system&&s.push("\n".repeat(this.linebreaks.system))),this?.shots)for(const t of this.shots)s.push(this._buildUserBlock(t.user)),s.push(this._buildAssistantBlock(t.assistant));return s.push(this._buildUserBlock()),s.push(this._buildAssistantBlock()),s.join("")}prompt(s){return this.render().replace("{prompt}",s)}_buildSystemBlock(){let s="";return this?.system?(this._replaceSystem&&(this.system.message=this._replaceSystem),s=this.system?.message?this.system.schema.replace("{system}",this.system.message):this.system.schema.replace("{system}",""),this._extraSystem&&(s+=this._extraSystem),s):""}_buildUserBlock(s){let t=[],e=this.user;return this._replacePrompt.length>0&&(e=e.replace("{prompt}",this._replacePrompt)),t.push(e),this?.linebreaks?.user&&t.push("\n".repeat(this.linebreaks.user)),s&&(t[0]=e.replace("{prompt}",s)),t.join("")}_buildAssistantBlock(s){let t=[],e=this.assistant;return this._extraAssistant.length>0&&(e+=this._extraAssistant),t.push(e),this?.linebreaks?.assistant&&t.push("\n".repeat(this.linebreaks.assistant)),s&&(t[0]=t[0]+s),t.join("")}_load(s){try{if(s in t)return t[s];throw new Error(`Template ${s} not found`)}catch(t){throw new Error(`Error loading template ${s}: ${t}`)}}}return s.PromptTemplate=e,s.templates=t,s}({});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "modprompt",
3
- "version": "0.0.10",
3
+ "version": "0.0.11",
4
4
  "description": "Prompt templates for language models",
5
5
  "license": "MIT",
6
6
  "scripts": {