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 +3 -1
- package/dist/mod.es.mjs +37 -24
- package/dist/mod.min.js +1 -1
- package/package.json +1 -1
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(
|
|
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(
|
|
197
|
-
const tpl = new PromptTemplate(
|
|
198
|
-
if (
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
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
|
-
|
|
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.
|
|
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.
|
|
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:
|
|
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
|
-
|
|
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] =
|
|
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
|
|
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
|
|
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}({});
|