modprompt 0.0.11 → 0.0.12
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 +2 -0
- package/dist/interfaces.d.ts +2 -0
- package/dist/mod.es.mjs +32 -30
- package/dist/mod.min.js +1 -1
- package/package.json +1 -1
package/dist/cls.d.ts
CHANGED
package/dist/interfaces.d.ts
CHANGED
package/dist/mod.es.mjs
CHANGED
|
@@ -17,7 +17,7 @@ const templates = {
|
|
|
17
17
|
"id": "llama",
|
|
18
18
|
"name": "Llama",
|
|
19
19
|
"system": {
|
|
20
|
-
"schema": "
|
|
20
|
+
"schema": "[INST] <<SYS>>\n{system}\n<</SYS>>",
|
|
21
21
|
"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."
|
|
22
22
|
},
|
|
23
23
|
"user": "{prompt}",
|
|
@@ -25,7 +25,8 @@ const templates = {
|
|
|
25
25
|
"linebreaks": {
|
|
26
26
|
"system": 2,
|
|
27
27
|
"user": 0
|
|
28
|
-
}
|
|
28
|
+
},
|
|
29
|
+
"prefix": "<s>",
|
|
29
30
|
},
|
|
30
31
|
"llama_instruct": {
|
|
31
32
|
"id": "llama_instruct",
|
|
@@ -39,9 +40,11 @@ const templates = {
|
|
|
39
40
|
"mistral": {
|
|
40
41
|
"id": "mistral",
|
|
41
42
|
"name": "Mistral",
|
|
42
|
-
"user": "
|
|
43
|
+
"user": "[INST] {prompt}",
|
|
43
44
|
"assistant": " [/INST]",
|
|
44
|
-
"stop": ["</s>"]
|
|
45
|
+
"stop": ["</s>"],
|
|
46
|
+
"afterShot": "\n",
|
|
47
|
+
"prefix": "<s>",
|
|
45
48
|
},
|
|
46
49
|
"orca": {
|
|
47
50
|
"id": "orca",
|
|
@@ -55,7 +58,7 @@ const templates = {
|
|
|
55
58
|
"linebreaks": {
|
|
56
59
|
"system": 2,
|
|
57
60
|
"user": 2
|
|
58
|
-
}
|
|
61
|
+
},
|
|
59
62
|
},
|
|
60
63
|
"vicuna": {
|
|
61
64
|
"id": "vicuna",
|
|
@@ -110,7 +113,8 @@ const templates = {
|
|
|
110
113
|
"user": 1,
|
|
111
114
|
"assistant": 1,
|
|
112
115
|
},
|
|
113
|
-
"stop": ["<|im_end|>"]
|
|
116
|
+
"stop": ["<|im_end|>"],
|
|
117
|
+
"afterShot": " <|im_end|>",
|
|
114
118
|
},
|
|
115
119
|
"mamba": {
|
|
116
120
|
"id": "mamba",
|
|
@@ -167,6 +171,8 @@ class PromptTemplate {
|
|
|
167
171
|
shots;
|
|
168
172
|
stop;
|
|
169
173
|
linebreaks;
|
|
174
|
+
afterShot;
|
|
175
|
+
prefix;
|
|
170
176
|
_extraSystem = "";
|
|
171
177
|
_extraAssistant = "";
|
|
172
178
|
_replacePrompt = "";
|
|
@@ -183,18 +189,12 @@ class PromptTemplate {
|
|
|
183
189
|
this.name = tpl.name;
|
|
184
190
|
this.user = tpl.user;
|
|
185
191
|
this.assistant = tpl.assistant;
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
if (tpl?.stop) {
|
|
193
|
-
this.stop = tpl.stop;
|
|
194
|
-
}
|
|
195
|
-
if (tpl?.linebreaks) {
|
|
196
|
-
this.linebreaks = tpl.linebreaks;
|
|
197
|
-
}
|
|
192
|
+
this.system = tpl.system;
|
|
193
|
+
this.shots = tpl.shots;
|
|
194
|
+
this.stop = tpl.stop;
|
|
195
|
+
this.linebreaks = tpl.linebreaks;
|
|
196
|
+
this.afterShot = tpl.afterShot;
|
|
197
|
+
this.prefix = tpl.prefix;
|
|
198
198
|
}
|
|
199
199
|
cloneTo(template, keepShots = true) {
|
|
200
200
|
const tpl = new PromptTemplate(template);
|
|
@@ -267,11 +267,6 @@ class PromptTemplate {
|
|
|
267
267
|
this.shots = [];
|
|
268
268
|
}
|
|
269
269
|
let _assistantMsg = assistant;
|
|
270
|
-
if (this.stop) {
|
|
271
|
-
if (this.stop.length > 0) {
|
|
272
|
-
_assistantMsg += this.stop[0];
|
|
273
|
-
}
|
|
274
|
-
}
|
|
275
270
|
this.shots.push({
|
|
276
271
|
user: user,
|
|
277
272
|
assistant: _assistantMsg,
|
|
@@ -280,6 +275,9 @@ class PromptTemplate {
|
|
|
280
275
|
}
|
|
281
276
|
render() {
|
|
282
277
|
const buf = new Array();
|
|
278
|
+
if (this.prefix) {
|
|
279
|
+
buf.push(this.prefix);
|
|
280
|
+
}
|
|
283
281
|
const _systemBlock = this._buildSystemBlock();
|
|
284
282
|
if (_systemBlock.length > 0) {
|
|
285
283
|
buf.push(_systemBlock);
|
|
@@ -290,7 +288,14 @@ class PromptTemplate {
|
|
|
290
288
|
if (this?.shots) {
|
|
291
289
|
for (const shot of this.shots) {
|
|
292
290
|
buf.push(this._buildUserBlock(shot.user));
|
|
293
|
-
|
|
291
|
+
let _assistantMsg = shot.assistant;
|
|
292
|
+
if (this.afterShot) {
|
|
293
|
+
_assistantMsg += this.afterShot;
|
|
294
|
+
}
|
|
295
|
+
else {
|
|
296
|
+
_assistantMsg += "\n\n";
|
|
297
|
+
}
|
|
298
|
+
buf.push(this._buildAssistantBlock(_assistantMsg));
|
|
294
299
|
}
|
|
295
300
|
}
|
|
296
301
|
buf.push(this._buildUserBlock());
|
|
@@ -310,12 +315,9 @@ class PromptTemplate {
|
|
|
310
315
|
}
|
|
311
316
|
if (this.system?.message) {
|
|
312
317
|
res = this.system.schema.replace("{system}", this.system.message);
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
}
|
|
317
|
-
if (this._extraSystem) {
|
|
318
|
-
res = res + this._extraSystem;
|
|
318
|
+
if (this._extraSystem) {
|
|
319
|
+
res = res + this._extraSystem;
|
|
320
|
+
}
|
|
319
321
|
}
|
|
320
322
|
return res;
|
|
321
323
|
}
|
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:"
|
|
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:"[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},prefix:"<s>"},llama_instruct:{id:"llama_instruct",name:"Llama instruct",user:"[INST] {prompt}",assistant:" [/INST]",linebreaks:{user:1}},mistral:{id:"mistral",name:"Mistral",user:"[INST] {prompt}",assistant:" [/INST]",stop:["</s>"],afterShot:"\n",prefix:"<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|>"],afterShot:" <|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;afterShot;prefix;_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,this.system=t.system,this.shots=t.shots,this.stop=t.stop,this.linebreaks=t.linebreaks,this.afterShot=t.afterShot,this.prefix=t.prefix}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.shots.push({user:s,assistant:e}),this}render(){const s=new Array;this.prefix&&s.push(this.prefix);const 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));let e=t.assistant;this.afterShot?e+=this.afterShot:e+="\n\n",s.push(this._buildAssistantBlock(e))}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),this.system?.message&&(s=this.system.schema.replace("{system}",this.system.message),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}({});
|