@llumiverse/core 0.9.2 → 0.11.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 (88) hide show
  1. package/README.md +51 -7
  2. package/lib/cjs/CompletionStream.js +1 -7
  3. package/lib/cjs/CompletionStream.js.map +1 -1
  4. package/lib/cjs/Driver.js +32 -1
  5. package/lib/cjs/Driver.js.map +1 -1
  6. package/lib/cjs/formatters/claude.js +5 -7
  7. package/lib/cjs/formatters/claude.js.map +1 -1
  8. package/lib/cjs/formatters/commons.js +8 -0
  9. package/lib/cjs/formatters/commons.js.map +1 -0
  10. package/lib/cjs/formatters/generic.js +52 -20
  11. package/lib/cjs/formatters/generic.js.map +1 -1
  12. package/lib/cjs/formatters/index.js +18 -27
  13. package/lib/cjs/formatters/index.js.map +1 -1
  14. package/lib/cjs/formatters/llama2.js +3 -3
  15. package/lib/cjs/formatters/llama2.js.map +1 -1
  16. package/lib/cjs/formatters/openai.js +9 -4
  17. package/lib/cjs/formatters/openai.js.map +1 -1
  18. package/lib/cjs/formatters.js +117 -0
  19. package/lib/cjs/formatters.js.map +1 -0
  20. package/lib/cjs/index.js +0 -1
  21. package/lib/cjs/index.js.map +1 -1
  22. package/lib/cjs/test.js +55 -0
  23. package/lib/cjs/test.js.map +1 -0
  24. package/lib/cjs/types.js +1 -8
  25. package/lib/cjs/types.js.map +1 -1
  26. package/lib/esm/CompletionStream.js +1 -7
  27. package/lib/esm/CompletionStream.js.map +1 -1
  28. package/lib/esm/Driver.js +33 -2
  29. package/lib/esm/Driver.js.map +1 -1
  30. package/lib/esm/formatters/claude.js +3 -5
  31. package/lib/esm/formatters/claude.js.map +1 -1
  32. package/lib/esm/formatters/commons.js +4 -0
  33. package/lib/esm/formatters/commons.js.map +1 -0
  34. package/lib/esm/formatters/generic.js +50 -18
  35. package/lib/esm/formatters/generic.js.map +1 -1
  36. package/lib/esm/formatters/index.js +5 -26
  37. package/lib/esm/formatters/index.js.map +1 -1
  38. package/lib/esm/formatters/llama2.js +1 -1
  39. package/lib/esm/formatters/llama2.js.map +1 -1
  40. package/lib/esm/formatters/openai.js +7 -2
  41. package/lib/esm/formatters/openai.js.map +1 -1
  42. package/lib/esm/formatters.js +113 -0
  43. package/lib/esm/formatters.js.map +1 -0
  44. package/lib/esm/index.js +0 -1
  45. package/lib/esm/index.js.map +1 -1
  46. package/lib/esm/test.js +50 -0
  47. package/lib/esm/test.js.map +1 -0
  48. package/lib/esm/types.js +0 -7
  49. package/lib/esm/types.js.map +1 -1
  50. package/lib/tsconfig.tsbuildinfo +1 -0
  51. package/lib/types/CompletionStream.d.ts +1 -2
  52. package/lib/types/CompletionStream.d.ts.map +1 -1
  53. package/lib/types/Driver.d.ts +16 -11
  54. package/lib/types/Driver.d.ts.map +1 -1
  55. package/lib/types/formatters/claude.d.ts +1 -1
  56. package/lib/types/formatters/claude.d.ts.map +1 -1
  57. package/lib/types/formatters/commons.d.ts +3 -0
  58. package/lib/types/formatters/commons.d.ts.map +1 -0
  59. package/lib/types/formatters/generic.d.ts +9 -4
  60. package/lib/types/formatters/generic.d.ts.map +1 -1
  61. package/lib/types/formatters/index.d.ts +7 -3
  62. package/lib/types/formatters/index.d.ts.map +1 -1
  63. package/lib/types/formatters/llama2.d.ts +1 -1
  64. package/lib/types/formatters/llama2.d.ts.map +1 -1
  65. package/lib/types/formatters/openai.d.ts +10 -2
  66. package/lib/types/formatters/openai.d.ts.map +1 -1
  67. package/lib/types/formatters.d.ts +5 -0
  68. package/lib/types/formatters.d.ts.map +1 -0
  69. package/lib/types/index.d.ts +0 -1
  70. package/lib/types/index.d.ts.map +1 -1
  71. package/lib/types/json.d.ts +8 -8
  72. package/lib/types/json.d.ts.map +1 -1
  73. package/lib/types/test.d.ts +2 -0
  74. package/lib/types/test.d.ts.map +1 -0
  75. package/lib/types/types.d.ts +43 -13
  76. package/lib/types/types.d.ts.map +1 -1
  77. package/package.json +15 -5
  78. package/src/CompletionStream.ts +1 -8
  79. package/src/Driver.ts +38 -12
  80. package/src/formatters/claude.ts +3 -6
  81. package/src/formatters/commons.ts +5 -0
  82. package/src/formatters/generic.ts +59 -27
  83. package/src/formatters/index.ts +7 -30
  84. package/src/formatters/llama2.ts +1 -1
  85. package/src/formatters/openai.ts +14 -6
  86. package/src/index.ts +0 -1
  87. package/src/json.ts +7 -7
  88. package/src/types.ts +46 -13
package/README.md CHANGED
@@ -68,16 +68,10 @@ In this example, we will instantiate the Bedrock driver using credentials from t
68
68
  Learn more on how to [setup AWS credentials in node](https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/setting-credentials-node.html).
69
69
 
70
70
  ```javascript
71
- import { defaultProvider } from "@aws-sdk/credential-provider-node";
72
71
  import { BedrockDriver } from "@llumiverse/drivers";
73
72
 
74
- const credentials = defaultProvider({
75
- profile: "default",
76
- })
77
-
78
73
  const driver = new BedrockDriver({
79
- region: 'us-west-2',
80
- credentials: credentials
74
+ region: 'us-west-2'
81
75
  });
82
76
  ```
83
77
 
@@ -242,6 +236,56 @@ console.log('# Response took', streamingResponse.execution_time, 'ms')
242
236
  console.log('# Token usage:', streamingResponse.token_usage);
243
237
  ```
244
238
 
239
+ ### Generate embeddings
240
+
241
+ LLumiverse drivers expose a method to generate vector embeddings for a given text.
242
+ Drivers supporting embeddings as of v0.10.0 are `bedrock`, `openai`, `vertexai`.
243
+ If embeddings are not yet supported the generateEmbeddings method will throws an error.
244
+
245
+ Here is an example on using the `vertexai` driver. For the example to work you need to define a `GOOGLE_APPLICATION_CREDENTIALS` env variable to be able to access your gcloud project
246
+
247
+ ```javascript
248
+ import { VertexAIDriver } from "@llumiverse/drivers";
249
+
250
+ const driver = new VertexAIDriver({
251
+ project: 'your-project-id',
252
+ region: 'us-central1' // your zone
253
+ });
254
+
255
+ const r = await vertex.generateEmbeddings({ content: "Hello world!" });
256
+
257
+ // print the vector
258
+ console.log('Embeddings: ', v.values);
259
+ ```
260
+
261
+ The result object contains the vector as the `values` property, the `model` used to generate the embeddings and an optional `token_count` which if defined is the token count of the input text.
262
+ Depending on the driver, the result may contain additional properties.
263
+
264
+ Also you can specify a specific model to be used or pass other driver supported parameter.
265
+
266
+ **Example:**
267
+
268
+ ```javascript
269
+ import { VertexAIDriver } from "@llumiverse/drivers";
270
+
271
+ const driver = new VertexAIDriver({
272
+ project: 'your-project-id',
273
+ region: 'us-central1' // your zone
274
+ });
275
+
276
+ const r = await vertex.generateEmbeddings({
277
+ content: "Hello world!",
278
+ model: "textembedding-gecko@002",
279
+ task_type: "SEMANTIC_SIMILARITY"
280
+ });
281
+
282
+ // print the vector
283
+ console.log('Embeddings: ', v.values);
284
+ ```
285
+
286
+ The `task_type` parameter is specific to the [textembedding-gecko model](https://cloud.google.com/vertex-ai/generative-ai/docs/model-reference/text-embeddings).
287
+
288
+
245
289
  ## Contributing
246
290
 
247
291
  Contributions are welcome!
@@ -51,25 +51,19 @@ class FallbackCompletionStream {
51
51
  driver;
52
52
  options;
53
53
  prompt;
54
- chunks;
55
54
  completion;
56
55
  constructor(driver, segments, options) {
57
56
  this.driver = driver;
58
57
  this.options = options;
59
58
  this.driver = driver;
60
59
  this.prompt = this.driver.createPrompt(segments, options);
61
- this.chunks = [];
62
60
  }
63
61
  async *[Symbol.asyncIterator]() {
64
62
  // reset state
65
63
  this.completion = undefined;
66
- if (this.chunks.length > 0) {
67
- this.chunks = [];
68
- }
69
64
  this.driver.logger.debug(`[${this.driver.provider}] Streaming is not supported, falling back to blocking execution`);
70
65
  const completion = await this.driver._execute(this.prompt, this.options);
71
- const content = completion.result === 'string' ? completion.result : JSON.stringify(completion.result);
72
- this.chunks.push(content);
66
+ const content = typeof completion.result === 'string' ? completion.result : JSON.stringify(completion.result);
73
67
  yield content;
74
68
  this.completion = completion;
75
69
  }
@@ -1 +1 @@
1
- {"version":3,"file":"CompletionStream.js","sourceRoot":"","sources":["../../src/CompletionStream.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CompletionStream.js","sourceRoot":"","sources":["../../src/CompletionStream.ts"],"names":[],"mappings":";;;AAGA,MAAa,uBAAuB;IAMb;IAER;IANX,MAAM,CAAW;IACjB,MAAM,CAAU;IAChB,UAAU,CAAyC;IAEnD,YAAmB,MAA8C,EAC7D,QAAyB,EAClB,OAAyB;QAFjB,WAAM,GAAN,MAAM,CAAwC;QAEtD,YAAO,GAAP,OAAO,CAAkB;QAChC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC1D,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC;QACzB,cAAc;QACd,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACrB,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAE3B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CACpB,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,4BAA4B,IAAI,CAAC,OAAO,CAAC,KAAK,cAAc,EAAE,IAAI,CAAC,MAAM,CACpG,CAAC;QAEF,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,uBAAuB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAEpF,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC/B,IAAI,KAAK,EAAE,CAAC;gBACR,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACnB,MAAM,KAAK,CAAC;YAChB,CAAC;QACL,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,YAAY,GAAG,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;QAC/G,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,0BAA0B;QAE/D,IAAI,CAAC,UAAU,GAAG;YACd,MAAM,EAAE,OAAO;YACf,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,cAAc,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK;YAClC,WAAW,EAAE;gBACT,MAAM,EAAE,YAAY;gBACpB,MAAM,EAAE,YAAY;gBACpB,KAAK,EAAE,YAAY,GAAG,YAAY;aACrC;SACJ,CAAA;QAED,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9D,CAAC;CAEJ;AAtDD,0DAsDC;AAED,MAAa,wBAAwB;IAKd;IAER;IALX,MAAM,CAAU;IAChB,UAAU,CAAyC;IAEnD,YAAmB,MAA8C,EAC7D,QAAyB,EAClB,OAAyB;QAFjB,WAAM,GAAN,MAAM,CAAwC;QAEtD,YAAO,GAAP,OAAO,CAAkB;QAChC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC9D,CAAC;IAED,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC;QACzB,cAAc;QACd,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CACpB,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,kEAAkE,CAC7F,CAAC;QACF,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACzE,MAAM,OAAO,GAAG,OAAO,UAAU,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC9G,MAAM,OAAO,CAAC;QAEd,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IACjC,CAAC;CACJ;AAxBD,4DAwBC"}
package/lib/cjs/Driver.js CHANGED
@@ -34,6 +34,13 @@ function createLogger(logger) {
34
34
  }
35
35
  }
36
36
  exports.createLogger = createLogger;
37
+ function applyExecutionDefaults(options) {
38
+ return {
39
+ max_tokens: 4096,
40
+ temperature: 0.7,
41
+ ...options
42
+ };
43
+ }
37
44
  /**
38
45
  * To be implemented by each driver
39
46
  */
@@ -76,6 +83,7 @@ class AbstractDriver {
76
83
  }
77
84
  }
78
85
  async execute(segments, options) {
86
+ options = applyExecutionDefaults(options);
79
87
  const prompt = this.createPrompt(segments, options);
80
88
  return this._execute(prompt, options);
81
89
  }
@@ -95,6 +103,7 @@ class AbstractDriver {
95
103
  }
96
104
  // by default no stream is supported. we block and we return all at once
97
105
  async stream(segments, options) {
106
+ options = applyExecutionDefaults(options);
98
107
  const canStream = await this.canStream(options);
99
108
  if (canStream) {
100
109
  return new CompletionStream_js_1.DefaultCompletionStream(this, segments, options);
@@ -103,8 +112,22 @@ class AbstractDriver {
103
112
  return new CompletionStream_js_1.FallbackCompletionStream(this, segments, options);
104
113
  }
105
114
  }
115
+ /**
116
+ * Override this method to provide a custom prompt formatter
117
+ * @param segments
118
+ * @param options
119
+ * @returns
120
+ */
121
+ formatPrompt(segments, opts) {
122
+ if (/\bllama2?\b/i.test(opts.model)) {
123
+ return (0, index_js_1.formatLlama2Prompt)(segments, opts.resultSchema);
124
+ }
125
+ else {
126
+ return (0, index_js_1.formatTextPrompt)(segments, opts.resultSchema);
127
+ }
128
+ }
106
129
  createPrompt(segments, opts) {
107
- return index_js_1.PromptFormatters[opts.format || this.defaultFormat](segments, opts.resultSchema);
130
+ return opts.format ? opts.format(segments, opts.resultSchema) : this.formatPrompt(segments, opts);
108
131
  }
109
132
  /**
110
133
  * Must be overrided if the implementation cannot stream.
@@ -118,6 +141,14 @@ class AbstractDriver {
118
141
  canStream(_options) {
119
142
  return Promise.resolve(true);
120
143
  }
144
+ /**
145
+ * Get a list of models that can be trained.
146
+ * The default is to return an empty array
147
+ * @returns
148
+ */
149
+ async listTrainableModels() {
150
+ return [];
151
+ }
121
152
  }
122
153
  exports.AbstractDriver = AbstractDriver;
123
154
  //# sourceMappingURL=Driver.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Driver.js","sourceRoot":"","sources":["../../src/Driver.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,+DAA0F;AAC1F,oDAAyD;AAkBzD,mDAAiD;AAGjD,MAAM,aAAa,GAAW;IAC1B,KAAK,EAAE,OAAO,CAAC,KAAK;IACpB,IAAI,EAAE,OAAO,CAAC,IAAI;IAClB,IAAI,EAAE,OAAO,CAAC,IAAI;IAClB,KAAK,EAAE,OAAO,CAAC,KAAK;CACvB,CAAA;AAED,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;AAC1B,MAAM,UAAU,GAAW;IACvB,KAAK,EAAE,IAAI;IACX,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,KAAK,EAAE,IAAI;CACd,CAAA;AAED,SAAgB,YAAY,CAAC,MAAsC;IAC/D,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO,aAAa,CAAC;IACzB,CAAC;SAAM,IAAI,MAAM,EAAE,CAAC;QAChB,OAAO,MAAM,CAAC;IAClB,CAAC;SAAM,CAAC;QACJ,OAAO,UAAU,CAAC;IACtB,CAAC;AACL,CAAC;AARD,oCAQC;AAyCD;;GAEG;AACH,MAAsB,cAAc;IAChC,OAAO,CAAW;IAClB,MAAM,CAAS;IAKf,YAAY,IAAc;QACtB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5C,CAAC;IAED,oBAAoB,CAAC,OAA8B;QAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,YAAY,EAAE,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAA;QAC1G,OAAO,IAAI,CAAC,SAAS,CAAC;YAClB,MAAM;YACN,UAAU,EAAE,OAAO,OAAO,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC;SAC/G,CAAC,CAAC;IACP,CAAC;IAED,aAAa,CAAC,QAAoB,EAAE,QAAyB;QACzD,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;IAED,cAAc,CAAC,MAAc;QACzB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;IAED,cAAc,CAAC,MAAc;QACzB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;IAED,cAAc,CAAC,MAAkB,EAAE,OAAyB;QACxD,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;YACxC,IAAI,CAAC;gBACD,MAAM,CAAC,MAAM,GAAG,IAAA,8BAAc,EAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;YACxE,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBAClB,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,IAAI,IAAI,CAAC,QAAQ,MAAM,OAAO,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,4BAA4B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBACvL,MAAM,CAAC,KAAK,GAAG;oBACX,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI;oBAC9B,OAAO,EAAE,KAAK,CAAC,OAAO;oBACtB,IAAI,EAAE,MAAM,CAAC,MAAM;iBACtB,CAAA;YACL,CAAC;QACL,CAAC;IACL,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,QAAyB,EAAE,OAAyB;QAC9D,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACpD,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,MAAe,EAAE,OAAyB;QACrD,IAAI,CAAC,MAAM,CAAC,KAAK,CACb,IAAI,IAAI,CAAC,QAAQ,eAAe,OAAO,CAAC,KAAK,cAAc,EAAE,MAAM,CACtE,CAAC;QACF,IAAI,CAAC;YACD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACzB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAC7D,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACrC,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;YAC1C,OAAO,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC;QACjD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACZ,KAAa,CAAC,MAAM,GAAG,MAAM,CAAC;YAC/B,MAAM,KAAK,CAAC;QAChB,CAAC;IACL,CAAC;IAED,wEAAwE;IACxE,KAAK,CAAC,MAAM,CAAC,QAAyB,EAAE,OAAyB;QAC7D,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAChD,IAAI,SAAS,EAAE,CAAC;YACZ,OAAO,IAAI,6CAAuB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QAChE,CAAC;aAAM,CAAC;YACJ,OAAO,IAAI,8CAAwB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QACjE,CAAC;IACL,CAAC;IAEM,YAAY,CAAC,QAAyB,EAAE,IAAmB;QAC9D,OAAO,2BAAgB,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,aAAa,CAAC,CACtD,QAAQ,EACR,IAAI,CAAC,YAAY,CACpB,CAAC;IACN,CAAC;IAED;;;;;;;;OAQG;IACO,SAAS,CAAC,QAA0B;QAC1C,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;CAiBJ;AAjHD,wCAiHC"}
1
+ {"version":3,"file":"Driver.js","sourceRoot":"","sources":["../../src/Driver.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,+DAA0F;AAC1F,oDAA6E;AAmB7E,mDAAiD;AAEjD,MAAM,aAAa,GAAW;IAC1B,KAAK,EAAE,OAAO,CAAC,KAAK;IACpB,IAAI,EAAE,OAAO,CAAC,IAAI;IAClB,IAAI,EAAE,OAAO,CAAC,IAAI;IAClB,KAAK,EAAE,OAAO,CAAC,KAAK;CACvB,CAAA;AAED,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;AAC1B,MAAM,UAAU,GAAW;IACvB,KAAK,EAAE,IAAI;IACX,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,KAAK,EAAE,IAAI;CACd,CAAA;AAED,SAAgB,YAAY,CAAC,MAAsC;IAC/D,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO,aAAa,CAAC;IACzB,CAAC;SAAM,IAAI,MAAM,EAAE,CAAC;QAChB,OAAO,MAAM,CAAC;IAClB,CAAC;SAAM,CAAC;QACJ,OAAO,UAAU,CAAC;IACtB,CAAC;AACL,CAAC;AARD,oCAQC;AAED,SAAS,sBAAsB,CAAC,OAAyB;IACrD,OAAO;QACH,UAAU,EAAE,IAAI;QAChB,WAAW,EAAE,GAAG;QAChB,GAAG,OAAO;KACb,CAAA;AACL,CAAC;AAwCD;;GAEG;AACH,MAAsB,cAAc;IAChC,OAAO,CAAW;IAClB,MAAM,CAAS;IAIf,YAAY,IAAc;QACtB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5C,CAAC;IAED,oBAAoB,CAAC,OAA8B;QAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,YAAY,EAAE,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAA;QAC1G,OAAO,IAAI,CAAC,SAAS,CAAC;YAClB,MAAM;YACN,UAAU,EAAE,OAAO,OAAO,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC;SAC/G,CAAC,CAAC;IACP,CAAC;IAED,aAAa,CAAC,QAAoB,EAAE,QAAyB;QACzD,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;IAED,cAAc,CAAC,MAAc;QACzB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;IAED,cAAc,CAAC,MAAc;QACzB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;IAED,cAAc,CAAC,MAAkB,EAAE,OAAyB;QACxD,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;YACxC,IAAI,CAAC;gBACD,MAAM,CAAC,MAAM,GAAG,IAAA,8BAAc,EAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;YACxE,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBAClB,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,IAAI,IAAI,CAAC,QAAQ,MAAM,OAAO,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,4BAA4B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBACvL,MAAM,CAAC,KAAK,GAAG;oBACX,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI;oBAC9B,OAAO,EAAE,KAAK,CAAC,OAAO;oBACtB,IAAI,EAAE,MAAM,CAAC,MAAM;iBACtB,CAAA;YACL,CAAC;QACL,CAAC;IACL,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,QAAyB,EAAE,OAAyB;QAC9D,OAAO,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;QAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACpD,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,MAAe,EAAE,OAAyB;QACrD,IAAI,CAAC,MAAM,CAAC,KAAK,CACb,IAAI,IAAI,CAAC,QAAQ,eAAe,OAAO,CAAC,KAAK,cAAc,EAAE,MAAM,CACtE,CAAC;QACF,IAAI,CAAC;YACD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACzB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAC7D,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACrC,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;YAC1C,OAAO,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC;QACjD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACZ,KAAa,CAAC,MAAM,GAAG,MAAM,CAAC;YAC/B,MAAM,KAAK,CAAC;QAChB,CAAC;IACL,CAAC;IAED,wEAAwE;IACxE,KAAK,CAAC,MAAM,CAAC,QAAyB,EAAE,OAAyB;QAC7D,OAAO,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;QAC1C,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAChD,IAAI,SAAS,EAAE,CAAC;YACZ,OAAO,IAAI,6CAAuB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QAChE,CAAC;aAAM,CAAC;YACJ,OAAO,IAAI,8CAAwB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QACjE,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACO,YAAY,CAAC,QAAyB,EAAE,IAAmB;QACjE,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAClC,OAAO,IAAA,6BAAkB,EAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAY,CAAC;QACtE,CAAC;aAAM,CAAC;YACJ,OAAO,IAAA,2BAAgB,EAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAY,CAAC;QACpE,CAAC;IACL,CAAC;IAEM,YAAY,CAAC,QAAyB,EAAE,IAAmB;QAC9D,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IACtG,CAAC;IAED;;;;;;;;OAQG;IACO,SAAS,CAAC,QAA0B;QAC1C,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,mBAAmB;QACrB,OAAO,EAAE,CAAC;IACd,CAAC;CAeJ;AApID,wCAoIC"}
@@ -1,11 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.claudeMessages = void 0;
3
+ exports.formatClaudePrompt = void 0;
4
4
  const index_js_1 = require("../index.js");
5
+ const commons_js_1 = require("./commons.js");
5
6
  /**
6
7
  * A formatter user by Bedrock to format prompts for claude related models
7
8
  */
8
- function claudeMessages(segments, schema) {
9
+ function formatClaudePrompt(segments, schema) {
9
10
  const system = [];
10
11
  const safety = [];
11
12
  const messages = [];
@@ -21,10 +22,7 @@ function claudeMessages(segments, schema) {
21
22
  }
22
23
  }
23
24
  if (schema) {
24
- safety.push(`You must answer using the following JSONSchema:
25
- ---
26
- ${JSON.stringify(schema)}
27
- ---`);
25
+ safety.push((0, commons_js_1.getJSONSafetyNotice)(schema));
28
26
  }
29
27
  // messages must contains at least 1 item. If the prompt doesn;t contains a user message (but only system messages)
30
28
  // we need to put the system messages in the messages array
@@ -55,7 +53,7 @@ ${JSON.stringify(schema)}
55
53
  messages
56
54
  };
57
55
  }
58
- exports.claudeMessages = claudeMessages;
56
+ exports.formatClaudePrompt = formatClaudePrompt;
59
57
  // export function claude(messages: PromptSegment[], schema?: JSONSchema4) {
60
58
  // const prompt = genericColonSeparator(messages, schema, {
61
59
  // user: "\nHuman",
@@ -1 +1 @@
1
- {"version":3,"file":"claude.js","sourceRoot":"","sources":["../../../src/formatters/claude.ts"],"names":[],"mappings":";;;AACA,0CAAwD;AAgBxD;;GAEG;AAEH,SAAgB,cAAc,CAAC,QAAyB,EAAE,MAAoB;IAC1E,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,QAAQ,GAAoB,EAAE,CAAC;IAErC,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QACzB,IAAI,GAAG,CAAC,IAAI,KAAK,qBAAU,CAAC,MAAM,EAAE,CAAC;YACjC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC7B,CAAC;aAAM,IAAI,GAAG,CAAC,IAAI,KAAK,qBAAU,CAAC,MAAM,EAAE,CAAC;YACxC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC7B,CAAC;aAAM,CAAC;YACJ,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;QACtF,CAAC;IACL,CAAC;IAED,IAAI,MAAM,EAAE,CAAC;QACT,MAAM,CAAC,IAAI,CAAC;;EAElB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;IACpB,CAAC,CAAC;IACF,CAAC;IAGD,mHAAmH;IACnH,2DAA2D;IAE3D,IAAI,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;IAC7C,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,IAAI,CAAC,aAAa,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAChE,CAAC;QACD,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAClF,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;SAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,aAAa,GAAG,aAAa,GAAG,iBAAiB,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1E,CAAC;IAED;;;;;;;;;OASG;IAEH,2CAA2C;IAC3C,OAAO;QACH,MAAM,EAAE,aAAa;QACrB,QAAQ;KACX,CAAA;AACL,CAAC;AArDD,wCAqDC;AAED,4EAA4E;AAC5E,+DAA+D;AAC/D,2BAA2B;AAC3B,oCAAoC;AACpC,6BAA6B;AAC7B,UAAU;AAEV,iDAAiD;AACjD,IAAI"}
1
+ {"version":3,"file":"claude.js","sourceRoot":"","sources":["../../../src/formatters/claude.ts"],"names":[],"mappings":";;;AACA,0CAAwD;AACxD,6CAAmD;AAgBnD;;GAEG;AAEH,SAAgB,kBAAkB,CAAC,QAAyB,EAAE,MAAoB;IAC9E,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,QAAQ,GAAoB,EAAE,CAAC;IAErC,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QACzB,IAAI,GAAG,CAAC,IAAI,KAAK,qBAAU,CAAC,MAAM,EAAE,CAAC;YACjC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC7B,CAAC;aAAM,IAAI,GAAG,CAAC,IAAI,KAAK,qBAAU,CAAC,MAAM,EAAE,CAAC;YACxC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC7B,CAAC;aAAM,CAAC;YACJ,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;QACtF,CAAC;IACL,CAAC;IAED,IAAI,MAAM,EAAE,CAAC;QACT,MAAM,CAAC,IAAI,CAAC,IAAA,gCAAmB,EAAC,MAAM,CAAC,CAAC,CAAC;IAC7C,CAAC;IAED,mHAAmH;IACnH,2DAA2D;IAE3D,IAAI,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;IAC7C,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,IAAI,CAAC,aAAa,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAChE,CAAC;QACD,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAClF,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;SAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,aAAa,GAAG,aAAa,GAAG,iBAAiB,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1E,CAAC;IAED;;;;;;;;;OASG;IAEH,2CAA2C;IAC3C,OAAO;QACH,MAAM,EAAE,aAAa;QACrB,QAAQ;KACX,CAAA;AACL,CAAC;AAjDD,gDAiDC;AAED,4EAA4E;AAC5E,+DAA+D;AAC/D,2BAA2B;AAC3B,oCAAoC;AACpC,6BAA6B;AAC7B,UAAU;AAEV,iDAAiD;AACjD,IAAI"}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getJSONSafetyNotice = void 0;
4
+ function getJSONSafetyNotice(schema) {
5
+ return "The answer must be a JSON object using the following JSON Schema:\n" + JSON.stringify(schema);
6
+ }
7
+ exports.getJSONSafetyNotice = getJSONSafetyNotice;
8
+ //# sourceMappingURL=commons.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commons.js","sourceRoot":"","sources":["../../../src/formatters/commons.ts"],"names":[],"mappings":";;;AAEA,SAAgB,mBAAmB,CAAC,MAAmB;IACnD,OAAO,qEAAqE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAC1G,CAAC;AAFD,kDAEC"}
@@ -1,27 +1,59 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.genericColonSeparator = void 0;
4
- const index_js_1 = require("../index.js");
5
- function genericColonSeparator(messages, schema, labels = { user: "User", assistant: "Assistant", system: "System" }) {
6
- const promptMessages = [];
7
- for (const m of messages) {
8
- if (m.role === index_js_1.PromptRole.user) {
9
- promptMessages.push(`${labels?.user}: ${m.content.trim()}`);
3
+ exports.formatTextPrompt = exports.createTextPromptFormatter = void 0;
4
+ const types_js_1 = require("../types.js");
5
+ const commons_js_1 = require("./commons.js");
6
+ function createTextPromptFormatter(labels = {
7
+ user: "USER",
8
+ system: "CONTEXT",
9
+ assistant: "ASSISTANT",
10
+ safety: "IMPORTANT",
11
+ instruction: "INSTRUCTION"
12
+ }) {
13
+ return function genericTextPrompt(segments, schema) {
14
+ const isChat = segments.find(m => m.role === types_js_1.PromptRole.assistant);
15
+ const context = [];
16
+ const content = [];
17
+ const safety = [];
18
+ for (const segment of segments) {
19
+ switch (segment.role) {
20
+ case types_js_1.PromptRole.user:
21
+ if (isChat) {
22
+ content.push(`${labels.user}: ${segment.content}`);
23
+ }
24
+ else {
25
+ content.push(segment.content);
26
+ }
27
+ break;
28
+ case types_js_1.PromptRole.assistant:
29
+ content.push(`${labels.assistant}: ${segment.content}`);
30
+ break;
31
+ case types_js_1.PromptRole.system:
32
+ context.push(segment.content);
33
+ break;
34
+ case types_js_1.PromptRole.safety:
35
+ safety.push(segment.content);
36
+ break;
37
+ }
10
38
  }
11
- if (m.role === index_js_1.PromptRole.assistant) {
12
- promptMessages.push(`${labels.assistant}: ${m.content.trim()}`);
39
+ if (schema) {
40
+ safety.push((0, commons_js_1.getJSONSafetyNotice)(schema));
13
41
  }
14
- if (m.role === index_js_1.PromptRole.system) {
15
- promptMessages.push(`${labels.system}: ${m.content.trim()}`);
42
+ const out = [];
43
+ if (context.length > 0) {
44
+ out.push(`${labels.system}: ${context.join('\n')}`);
16
45
  }
17
- }
18
- if (schema) {
19
- promptMessages.push(`${labels.system}: You must answer using the following JSONSchema:
20
- ---
21
- ${JSON.stringify(schema)}
22
- ---`);
23
- }
24
- return promptMessages.join("\n\n");
46
+ if (content.length > 0) {
47
+ const prefix = context.length > 0 && !isChat ? `${labels.instruction}: ` : '';
48
+ out.push(prefix + content.join('\n'));
49
+ }
50
+ if (safety.length > 0) {
51
+ out.push(`${labels.safety}: ${safety.join('\n')}`);
52
+ }
53
+ return out.join('\n');
54
+ };
25
55
  }
26
- exports.genericColonSeparator = genericColonSeparator;
56
+ exports.createTextPromptFormatter = createTextPromptFormatter;
57
+ const formatTextPrompt = createTextPromptFormatter();
58
+ exports.formatTextPrompt = formatTextPrompt;
27
59
  //# sourceMappingURL=generic.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"generic.js","sourceRoot":"","sources":["../../../src/formatters/generic.ts"],"names":[],"mappings":";;;AACA,0CAAwD;AAExD,SAAgB,qBAAqB,CACjC,QAAyB,EACzB,MAAoB,EACpB,SAII,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE;IAE9D,MAAM,cAAc,GAAG,EAAE,CAAC;IAC1B,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACvB,IAAI,CAAC,CAAC,IAAI,KAAK,qBAAU,CAAC,IAAI,EAAE,CAAC;YAC7B,cAAc,CAAC,IAAI,CAAC,GAAG,MAAM,EAAE,IAAI,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAChE,CAAC;QACD,IAAI,CAAC,CAAC,IAAI,KAAK,qBAAU,CAAC,SAAS,EAAE,CAAC;YAClC,cAAc,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,SAAS,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACpE,CAAC;QACD,IAAI,CAAC,CAAC,IAAI,KAAK,qBAAU,CAAC,MAAM,EAAE,CAAC;YAC/B,cAAc,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACjE,CAAC;IACL,CAAC;IAED,IAAI,MAAM,EAAE,CAAC;QACT,cAAc,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM;;UAElC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;YACpB,CAAC,CAAC;IACV,CAAC;IAED,OAAO,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACvC,CAAC;AA9BD,sDA8BC"}
1
+ {"version":3,"file":"generic.js","sourceRoot":"","sources":["../../../src/formatters/generic.ts"],"names":[],"mappings":";;;AACA,0CAAwD;AACxD,6CAAmD;AAUnD,SAAgB,yBAAyB,CAAC,SAAiB;IACvD,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,SAAS;IACjB,SAAS,EAAE,WAAW;IACtB,MAAM,EAAE,WAAW;IACnB,WAAW,EAAE,aAAa;CAC7B;IACG,OAAO,SAAS,iBAAiB,CAAC,QAAyB,EAAE,MAAoB;QAC7E,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,qBAAU,CAAC,SAAS,CAAC,CAAC;QACnE,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC7B,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;gBACnB,KAAK,qBAAU,CAAC,IAAI;oBAChB,IAAI,MAAM,EAAE,CAAC;wBACT,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;oBACvD,CAAC;yBAAM,CAAC;wBACJ,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;oBAClC,CAAC;oBACD,MAAM;gBACV,KAAK,qBAAU,CAAC,SAAS;oBACrB,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,SAAS,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;oBACxD,MAAM;gBACV,KAAK,qBAAU,CAAC,MAAM;oBAClB,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;oBAC9B,MAAM;gBACV,KAAK,qBAAU,CAAC,MAAM;oBAClB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;oBAC7B,MAAM;YACd,CAAC;QACL,CAAC;QAED,IAAI,MAAM,EAAE,CAAC;YACT,MAAM,CAAC,IAAI,CAAC,IAAA,gCAAmB,EAAC,MAAM,CAAC,CAAC,CAAC;QAC7C,CAAC;QAED,MAAM,GAAG,GAAG,EAAE,CAAC;QACf,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,GAAG,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACxD,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9E,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1C,CAAC;QACD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpB,GAAG,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACvD,CAAC;QACD,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC,CAAA;AACL,CAAC;AAlDD,8DAkDC;AAED,MAAM,gBAAgB,GAAG,yBAAyB,EAAE,CAAC;AAC5C,4CAAgB"}
@@ -1,31 +1,22 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PromptFormatters = exports.inferFormatterFromModelName = void 0;
4
- const generic_js_1 = require("./generic.js");
5
- const llama2_js_1 = require("./llama2.js");
6
- const openai_js_1 = require("./openai.js");
7
- const types_js_1 = require("../types.js");
8
- const claude_js_1 = require("./claude.js");
9
- function inferFormatterFromModelName(modelName) {
10
- const name = modelName.toLowerCase();
11
- if (name.includes("llama")) {
12
- return types_js_1.PromptFormats.llama2;
13
- }
14
- else if (name.includes("gpt")) {
15
- return types_js_1.PromptFormats.openai;
16
- }
17
- else if (name.includes("claude")) {
18
- return types_js_1.PromptFormats.claude;
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
19
7
  }
20
- else {
21
- return types_js_1.PromptFormats.genericTextLLM;
22
- }
23
- }
24
- exports.inferFormatterFromModelName = inferFormatterFromModelName;
25
- exports.PromptFormatters = {
26
- openai: openai_js_1.openAI,
27
- llama2: llama2_js_1.llama2,
28
- claude: claude_js_1.claudeMessages,
29
- genericTextLLM: generic_js_1.genericColonSeparator,
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
30
15
  };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./commons.js"), exports);
18
+ __exportStar(require("./generic.js"), exports);
19
+ __exportStar(require("./llama2.js"), exports);
20
+ __exportStar(require("./claude.js"), exports);
21
+ __exportStar(require("./openai.js"), exports);
31
22
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/formatters/index.ts"],"names":[],"mappings":";;;AACA,6CAAqD;AACrD,2CAAqC;AACrC,2CAAqC;AACrC,0CAGqB;AACrB,2CAA6C;AAE7C,SAAgB,2BAA2B,CAAC,SAAiB;IACzD,MAAM,IAAI,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;IACrC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACzB,OAAO,wBAAa,CAAC,MAAM,CAAC;IAChC,CAAC;SAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,wBAAa,CAAC,MAAM,CAAC;IAChC,CAAC;SAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACjC,OAAO,wBAAa,CAAC,MAAM,CAAC;IAChC,CAAC;SAAM,CAAC;QACJ,OAAO,wBAAa,CAAC,cAAc,CAAC;IACxC,CAAC;AACL,CAAC;AAXD,kEAWC;AAEY,QAAA,gBAAgB,GAGzB;IACA,MAAM,EAAE,kBAAM;IACd,MAAM,EAAE,kBAAM;IACd,MAAM,EAAE,0BAAc;IACtB,cAAc,EAAE,kCAAqB;CACxC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/formatters/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAKA,+CAA4B;AAC5B,+CAA6B;AAC7B,8CAA4B;AAC5B,8CAA4B;AAC5B,8CAA4B"}
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.llama2 = void 0;
3
+ exports.formatLlama2Prompt = void 0;
4
4
  const index_js_1 = require("../index.js");
5
- function llama2(messages, schema) {
5
+ function formatLlama2Prompt(messages, schema) {
6
6
  const BOS = "<s>";
7
7
  const EOS = "</s>";
8
8
  const INST = "[INST]";
@@ -36,7 +36,7 @@ function llama2(messages, schema) {
36
36
  promptMessages.push(EOS);
37
37
  return promptMessages.join("\n\n");
38
38
  }
39
- exports.llama2 = llama2;
39
+ exports.formatLlama2Prompt = formatLlama2Prompt;
40
40
  function formatSchemaInstruction(schema) {
41
41
  const schema_instruction = `<<SYS>>You must answer using the following JSONSchema.
42
42
  Do not write anything other than a JSON object corresponding to the schema.
@@ -1 +1 @@
1
- {"version":3,"file":"llama2.js","sourceRoot":"","sources":["../../../src/formatters/llama2.ts"],"names":[],"mappings":";;;AACA,0CAAwD;AAExD,SAAgB,MAAM,CAAC,QAAyB,EAAE,MAAoB;IAClE,MAAM,GAAG,GAAG,KAAK,CAAC;IAClB,MAAM,GAAG,GAAG,MAAM,CAAC;IACnB,MAAM,IAAI,GAAG,QAAQ,CAAC;IACtB,MAAM,QAAQ,GAAG,SAAS,CAAC;IAC3B,MAAM,GAAG,GAAG,WAAW,CAAC;IACxB,MAAM,OAAO,GAAG,YAAY,CAAC;IAE7B,MAAM,cAAc,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,MAAM,aAAa,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;IAE/D,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACvB,IAAI,CAAC,CAAC,IAAI,KAAK,qBAAU,CAAC,IAAI,EAAE,CAAC;YAC7B,IAAI,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;gBACpC,MAAM,IAAI,KAAK,CACX,4BAA4B,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,kBAAkB,CACjE,CAAC;YACN,CAAC;YACD,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,QAAQ,EAAE,CAAC,CAAC;QACnE,CAAC;QACD,IAAI,CAAC,CAAC,IAAI,KAAK,qBAAU,CAAC,SAAS,EAAE,CAAC;YAClC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC/C,CAAC;QACD,IAAI,CAAC,CAAC,IAAI,KAAK,qBAAU,CAAC,MAAM,EAAE,CAAC;YAC/B,cAAc,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;QAC/D,CAAC;IACL,CAAC;IAED,KAAK,MAAM,CAAC,IAAI,QAAQ,IAAI,EAAE,EAAE,CAAC;QAC7B,IAAI,CAAC,CAAC,IAAI,KAAK,qBAAU,CAAC,MAAM,EAAE,CAAC;YAC/B,cAAc,CAAC,IAAI,CACf,GAAG,GAAG,mFAAmF,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,OAAO,GAAG,CACzH,CAAC;QACN,CAAC;IACL,CAAC;IAED,IAAI,MAAM,EAAE,CAAC;QACT,cAAc,CAAC,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC,CAAC;IACzD,CAAC;IAED,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEzB,OAAO,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACvC,CAAC;AA3CD,wBA2CC;AAED,SAAS,uBAAuB,CAAC,MAAmB;IAChD,MAAM,kBAAkB,GAAG;;;EAG7B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;;SAEf,CAAC;IAEN,OAAO,kBAAkB,CAAC;AAC9B,CAAC"}
1
+ {"version":3,"file":"llama2.js","sourceRoot":"","sources":["../../../src/formatters/llama2.ts"],"names":[],"mappings":";;;AACA,0CAAwD;AAExD,SAAgB,kBAAkB,CAAC,QAAyB,EAAE,MAAoB;IAC9E,MAAM,GAAG,GAAG,KAAK,CAAC;IAClB,MAAM,GAAG,GAAG,MAAM,CAAC;IACnB,MAAM,IAAI,GAAG,QAAQ,CAAC;IACtB,MAAM,QAAQ,GAAG,SAAS,CAAC;IAC3B,MAAM,GAAG,GAAG,WAAW,CAAC;IACxB,MAAM,OAAO,GAAG,YAAY,CAAC;IAE7B,MAAM,cAAc,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,MAAM,aAAa,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;IAE/D,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACvB,IAAI,CAAC,CAAC,IAAI,KAAK,qBAAU,CAAC,IAAI,EAAE,CAAC;YAC7B,IAAI,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;gBACpC,MAAM,IAAI,KAAK,CACX,4BAA4B,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,kBAAkB,CACjE,CAAC;YACN,CAAC;YACD,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,QAAQ,EAAE,CAAC,CAAC;QACnE,CAAC;QACD,IAAI,CAAC,CAAC,IAAI,KAAK,qBAAU,CAAC,SAAS,EAAE,CAAC;YAClC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC/C,CAAC;QACD,IAAI,CAAC,CAAC,IAAI,KAAK,qBAAU,CAAC,MAAM,EAAE,CAAC;YAC/B,cAAc,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;QAC/D,CAAC;IACL,CAAC;IAED,KAAK,MAAM,CAAC,IAAI,QAAQ,IAAI,EAAE,EAAE,CAAC;QAC7B,IAAI,CAAC,CAAC,IAAI,KAAK,qBAAU,CAAC,MAAM,EAAE,CAAC;YAC/B,cAAc,CAAC,IAAI,CACf,GAAG,GAAG,mFAAmF,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,OAAO,GAAG,CACzH,CAAC;QACN,CAAC;IACL,CAAC;IAED,IAAI,MAAM,EAAE,CAAC;QACT,cAAc,CAAC,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC,CAAC;IACzD,CAAC;IAED,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEzB,OAAO,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACvC,CAAC;AA3CD,gDA2CC;AAED,SAAS,uBAAuB,CAAC,MAAmB;IAChD,MAAM,kBAAkB,GAAG;;;EAG7B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;;SAEf,CAAC;IAEN,OAAO,kBAAkB,CAAC;AAC9B,CAAC"}
@@ -1,8 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.openAI = void 0;
3
+ exports.formatOpenAILikePrompt = void 0;
4
4
  const index_js_1 = require("../index.js");
5
- function openAI(segments) {
5
+ /**
6
+ * OpenAI text only prompts
7
+ * @param segments
8
+ * @returns
9
+ */
10
+ function formatOpenAILikePrompt(segments) {
6
11
  const system = [];
7
12
  const others = [];
8
13
  const safety = [];
@@ -11,7 +16,7 @@ function openAI(segments) {
11
16
  system.push({ content: msg.content, role: "system" });
12
17
  }
13
18
  else if (msg.role === index_js_1.PromptRole.safety) {
14
- safety.push({ content: msg.content, role: "system" });
19
+ safety.push({ content: "IMPORTANT: " + msg.content, role: "system" });
15
20
  }
16
21
  else {
17
22
  others.push({ content: msg.content, role: "user" });
@@ -20,5 +25,5 @@ function openAI(segments) {
20
25
  // put system mesages first and safety last
21
26
  return system.concat(others).concat(safety);
22
27
  }
23
- exports.openAI = openAI;
28
+ exports.formatOpenAILikePrompt = formatOpenAILikePrompt;
24
29
  //# sourceMappingURL=openai.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"openai.js","sourceRoot":"","sources":["../../../src/formatters/openai.ts"],"names":[],"mappings":";;;AAAA,0CAAyC;AAIzC,SAAgB,MAAM,CAAC,QAAyB;IAC5C,MAAM,MAAM,GAA6C,EAAE,CAAC;IAC5D,MAAM,MAAM,GAA6C,EAAE,CAAC;IAC5D,MAAM,MAAM,GAA6C,EAAE,CAAC;IAE5D,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QACzB,IAAI,GAAG,CAAC,IAAI,KAAK,qBAAU,CAAC,MAAM,EAAE,CAAC;YACjC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC1D,CAAC;aAAM,IAAI,GAAG,CAAC,IAAI,KAAK,qBAAU,CAAC,MAAM,EAAE,CAAC;YACxC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC1D,CAAC;aAAM,CAAC;YACJ,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QACxD,CAAC;IACL,CAAC;IAED,2CAA2C;IAC3C,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAChD,CAAC;AAjBD,wBAiBC"}
1
+ {"version":3,"file":"openai.js","sourceRoot":"","sources":["../../../src/formatters/openai.ts"],"names":[],"mappings":";;;AAAA,0CAAyC;AAOzC;;;;GAIG;AACH,SAAgB,sBAAsB,CAAC,QAAyB;IAC5D,MAAM,MAAM,GAAwB,EAAE,CAAC;IACvC,MAAM,MAAM,GAAwB,EAAE,CAAC;IACvC,MAAM,MAAM,GAAwB,EAAE,CAAC;IAEvC,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QACzB,IAAI,GAAG,CAAC,IAAI,KAAK,qBAAU,CAAC,MAAM,EAAE,CAAC;YACjC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC1D,CAAC;aAAM,IAAI,GAAG,CAAC,IAAI,KAAK,qBAAU,CAAC,MAAM,EAAE,CAAC;YACxC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,aAAa,GAAG,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC1E,CAAC;aAAM,CAAC;YACJ,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QACxD,CAAC;IACL,CAAC;IAED,2CAA2C;IAC3C,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAChD,CAAC;AAjBD,wDAiBC"}
@@ -0,0 +1,117 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PromptFormatters = exports.inferFormatterFromModelName = void 0;
4
+ const types_js_1 = require("./types.js");
5
+ function inferFormatterFromModelName(modelName) {
6
+ const name = modelName.toLowerCase();
7
+ if (name.includes("llama")) {
8
+ return types_js_1.PromptFormats.llama2;
9
+ }
10
+ else if (name.includes("gpt")) {
11
+ return types_js_1.PromptFormats.openai;
12
+ }
13
+ else if (name.includes("claude")) {
14
+ return types_js_1.PromptFormats.claude;
15
+ }
16
+ else {
17
+ return types_js_1.PromptFormats.genericTextLLM;
18
+ }
19
+ }
20
+ exports.inferFormatterFromModelName = inferFormatterFromModelName;
21
+ exports.PromptFormatters = {
22
+ openai: openAI,
23
+ llama2: llama2,
24
+ claude: claude,
25
+ genericTextLLM: genericColonSeparator,
26
+ };
27
+ function openAI(segments) {
28
+ const system = [];
29
+ const others = [];
30
+ const safety = [];
31
+ for (const msg of segments) {
32
+ if (msg.role === types_js_1.PromptRole.system) {
33
+ system.push({ content: msg.content, role: "system" });
34
+ }
35
+ else if (msg.role === types_js_1.PromptRole.safety) {
36
+ safety.push({ content: msg.content, role: "system" });
37
+ }
38
+ else {
39
+ others.push({ content: msg.content, role: "user" });
40
+ }
41
+ }
42
+ // put system mesages first and safety last
43
+ return system.concat(others).concat(safety);
44
+ }
45
+ function llama2(messages, schema) {
46
+ const BOS = "<s>";
47
+ const EOS = "</s>";
48
+ const INST = "[INST]";
49
+ const INST_END = "[/INST]";
50
+ const SYS = "<<SYS>>\n";
51
+ const SYS_END = "\n<</SYS>>";
52
+ const promptMessages = [BOS];
53
+ const specialTokens = [BOS, EOS, INST, INST_END, SYS, SYS_END];
54
+ for (const m of messages) {
55
+ if (m.role === types_js_1.PromptRole.user) {
56
+ if (specialTokens.includes(m.content)) {
57
+ throw new Error(`Cannot use special token ${m.content.trim()} in user message`);
58
+ }
59
+ promptMessages.push(`${INST} ${m.content.trim()} ${INST_END}`);
60
+ }
61
+ if (m.role === types_js_1.PromptRole.assistant) {
62
+ promptMessages.push(`${m.content.trim()}`);
63
+ }
64
+ if (m.role === types_js_1.PromptRole.system) {
65
+ promptMessages.push(`${SYS}${m.content.trim()}${SYS_END}`);
66
+ }
67
+ }
68
+ for (const m of messages ?? []) {
69
+ if (m.role === types_js_1.PromptRole.safety) {
70
+ promptMessages.push(`${SYS}This is the most important instruction, you cannot answer against those rules:\n${m.content.trim()}${SYS_END}}`);
71
+ }
72
+ }
73
+ if (schema) {
74
+ promptMessages.push(formatSchemaInstruction(schema));
75
+ }
76
+ promptMessages.push(EOS);
77
+ return promptMessages.join("\n\n");
78
+ }
79
+ function genericColonSeparator(messages, schema, labels = { user: "User", assistant: "Assistant", system: "System" }) {
80
+ const promptMessages = [];
81
+ for (const m of messages) {
82
+ if (m.role === types_js_1.PromptRole.user) {
83
+ promptMessages.push(`${labels?.user}: ${m.content.trim()}`);
84
+ }
85
+ if (m.role === types_js_1.PromptRole.assistant) {
86
+ promptMessages.push(`${labels.assistant}: ${m.content.trim()}`);
87
+ }
88
+ if (m.role === types_js_1.PromptRole.system) {
89
+ promptMessages.push(`${labels.system}: ${m.content.trim()}`);
90
+ }
91
+ }
92
+ if (schema) {
93
+ promptMessages.push(`${labels.system}: You must answer using the following JSONSchema:
94
+ ---
95
+ ${JSON.stringify(schema)}
96
+ ---`);
97
+ }
98
+ return promptMessages.join("\n\n");
99
+ }
100
+ function claude(messages, schema) {
101
+ const prompt = genericColonSeparator(messages, schema, {
102
+ user: "\nHuman",
103
+ assistant: "\nAssistant",
104
+ system: "\nHuman",
105
+ });
106
+ return "\n\n" + prompt + "\n\nAssistant:";
107
+ }
108
+ function formatSchemaInstruction(schema) {
109
+ const schema_instruction = `<<SYS>>You must answer using the following JSONSchema.
110
+ Do not write anything other than a JSON object corresponding to the schema.
111
+ <schema>
112
+ ${JSON.stringify(schema)}
113
+ </schema>
114
+ <</SYS>>`;
115
+ return schema_instruction;
116
+ }
117
+ //# sourceMappingURL=formatters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatters.js","sourceRoot":"","sources":["../../src/formatters.ts"],"names":[],"mappings":"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"}
package/lib/cjs/index.js CHANGED
@@ -15,7 +15,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./Driver.js"), exports);
18
- __exportStar(require("./formatters/index.js"), exports);
19
18
  __exportStar(require("./json.js"), exports);
20
19
  __exportStar(require("./types.js"), exports);
21
20
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA4B;AAC5B,wDAAsC;AACtC,4CAA0B;AAC1B,6CAA2B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA4B;AAC5B,4CAA0B;AAC1B,6CAA2B"}