modelfusion 0.46.0 → 0.47.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 (133) hide show
  1. package/README.md +23 -2
  2. package/index.cjs +0 -1
  3. package/index.d.ts +0 -1
  4. package/index.js +0 -1
  5. package/model-function/ModelFunctionPromise.cjs +37 -0
  6. package/model-function/ModelFunctionPromise.d.ts +18 -0
  7. package/model-function/ModelFunctionPromise.js +33 -0
  8. package/{prompt → model-function}/PromptFormat.d.ts +0 -5
  9. package/model-function/describe-image/describeImage.cjs +3 -2
  10. package/model-function/describe-image/describeImage.d.ts +1 -1
  11. package/model-function/describe-image/describeImage.js +3 -2
  12. package/model-function/embed/embed.cjs +5 -4
  13. package/model-function/embed/embed.d.ts +1 -1
  14. package/model-function/embed/embed.js +5 -4
  15. package/model-function/executeCall.cjs +3 -46
  16. package/model-function/executeCall.d.ts +5 -18
  17. package/model-function/executeCall.js +1 -43
  18. package/model-function/generate-image/ImageGenerationModel.d.ts +2 -0
  19. package/model-function/generate-image/ImageGenerationPromise.cjs +50 -0
  20. package/model-function/generate-image/ImageGenerationPromise.d.ts +22 -0
  21. package/model-function/generate-image/ImageGenerationPromise.js +46 -0
  22. package/model-function/generate-image/PromptFormatImageGenerationModel.cjs +44 -0
  23. package/model-function/generate-image/PromptFormatImageGenerationModel.d.ts +20 -0
  24. package/model-function/generate-image/PromptFormatImageGenerationModel.js +40 -0
  25. package/model-function/generate-image/generateImage.cjs +3 -2
  26. package/model-function/generate-image/generateImage.d.ts +2 -2
  27. package/model-function/generate-image/generateImage.js +3 -2
  28. package/model-function/generate-structure/generateStructure.cjs +3 -2
  29. package/model-function/generate-structure/generateStructure.d.ts +1 -1
  30. package/model-function/generate-structure/generateStructure.js +3 -2
  31. package/model-function/generate-structure/generateStructureOrText.cjs +3 -2
  32. package/model-function/generate-structure/generateStructureOrText.d.ts +1 -1
  33. package/model-function/generate-structure/generateStructureOrText.js +3 -2
  34. package/{prompt → model-function/generate-text}/AlpacaPromptFormat.d.ts +2 -2
  35. package/{prompt → model-function/generate-text}/Llama2PromptFormat.cjs +1 -1
  36. package/model-function/generate-text/Llama2PromptFormat.d.ts +13 -0
  37. package/{prompt → model-function/generate-text}/Llama2PromptFormat.js +1 -1
  38. package/{prompt → model-function/generate-text}/PromptFormatTextGenerationModel.d.ts +7 -7
  39. package/{prompt → model-function/generate-text}/PromptFormatTextStreamingModel.d.ts +6 -6
  40. package/model-function/generate-text/TextGenerationModel.d.ts +3 -3
  41. package/model-function/generate-text/TextGenerationPromptFormat.cjs +2 -0
  42. package/model-function/generate-text/TextGenerationPromptFormat.d.ts +11 -0
  43. package/model-function/generate-text/TextGenerationPromptFormat.js +1 -0
  44. package/{prompt → model-function/generate-text}/TextPromptFormat.cjs +1 -1
  45. package/{prompt → model-function/generate-text}/TextPromptFormat.d.ts +4 -4
  46. package/{prompt → model-function/generate-text}/TextPromptFormat.js +1 -1
  47. package/{prompt → model-function/generate-text}/VicunaPromptFormat.cjs +1 -1
  48. package/{prompt → model-function/generate-text}/VicunaPromptFormat.d.ts +3 -3
  49. package/{prompt → model-function/generate-text}/VicunaPromptFormat.js +1 -1
  50. package/model-function/generate-text/generateText.cjs +6 -3
  51. package/model-function/generate-text/generateText.d.ts +1 -1
  52. package/model-function/generate-text/generateText.js +6 -3
  53. package/{prompt → model-function/generate-text}/index.cjs +9 -4
  54. package/model-function/generate-text/index.d.ts +16 -0
  55. package/model-function/generate-text/index.js +16 -0
  56. package/{prompt/chat → model-function/generate-text}/trimChatPrompt.d.ts +1 -1
  57. package/model-function/index.cjs +3 -5
  58. package/model-function/index.d.ts +3 -5
  59. package/model-function/index.js +3 -5
  60. package/model-function/synthesize-speech/synthesizeSpeech.cjs +3 -2
  61. package/model-function/synthesize-speech/synthesizeSpeech.d.ts +1 -1
  62. package/model-function/synthesize-speech/synthesizeSpeech.js +3 -2
  63. package/model-function/transcribe-speech/transcribe.cjs +3 -2
  64. package/model-function/transcribe-speech/transcribe.d.ts +1 -1
  65. package/model-function/transcribe-speech/transcribe.js +3 -2
  66. package/model-provider/anthropic/AnthropicPromptFormat.cjs +1 -1
  67. package/model-provider/anthropic/AnthropicPromptFormat.d.ts +5 -5
  68. package/model-provider/anthropic/AnthropicPromptFormat.js +1 -1
  69. package/model-provider/anthropic/AnthropicTextGenerationModel.cjs +1 -1
  70. package/model-provider/anthropic/AnthropicTextGenerationModel.d.ts +3 -3
  71. package/model-provider/anthropic/AnthropicTextGenerationModel.js +1 -1
  72. package/model-provider/automatic1111/Automatic1111ImageGenerationModel.cjs +11 -0
  73. package/model-provider/automatic1111/Automatic1111ImageGenerationModel.d.ts +12 -12
  74. package/model-provider/automatic1111/Automatic1111ImageGenerationModel.js +11 -0
  75. package/model-provider/automatic1111/Automatic1111ImageGenerationPrompt.cjs +12 -0
  76. package/model-provider/automatic1111/Automatic1111ImageGenerationPrompt.d.ts +10 -0
  77. package/model-provider/automatic1111/Automatic1111ImageGenerationPrompt.js +8 -0
  78. package/model-provider/automatic1111/index.cjs +1 -0
  79. package/model-provider/automatic1111/index.d.ts +1 -0
  80. package/model-provider/automatic1111/index.js +1 -0
  81. package/model-provider/cohere/CohereTextGenerationModel.cjs +2 -2
  82. package/model-provider/cohere/CohereTextGenerationModel.d.ts +3 -3
  83. package/model-provider/cohere/CohereTextGenerationModel.js +2 -2
  84. package/model-provider/huggingface/HuggingFaceTextGenerationModel.cjs +2 -2
  85. package/model-provider/huggingface/HuggingFaceTextGenerationModel.d.ts +5 -5
  86. package/model-provider/huggingface/HuggingFaceTextGenerationModel.js +2 -2
  87. package/model-provider/llamacpp/LlamaCppTextGenerationModel.cjs +1 -1
  88. package/model-provider/llamacpp/LlamaCppTextGenerationModel.d.ts +3 -3
  89. package/model-provider/llamacpp/LlamaCppTextGenerationModel.js +1 -1
  90. package/model-provider/openai/OpenAIImageGenerationModel.cjs +8 -1
  91. package/model-provider/openai/OpenAIImageGenerationModel.d.ts +6 -3
  92. package/model-provider/openai/OpenAIImageGenerationModel.js +8 -1
  93. package/model-provider/openai/OpenAITextGenerationModel.cjs +2 -2
  94. package/model-provider/openai/OpenAITextGenerationModel.d.ts +3 -3
  95. package/model-provider/openai/OpenAITextGenerationModel.js +2 -2
  96. package/model-provider/openai/chat/OpenAIChatModel.cjs +1 -1
  97. package/model-provider/openai/chat/OpenAIChatModel.d.ts +3 -3
  98. package/model-provider/openai/chat/OpenAIChatModel.js +1 -1
  99. package/model-provider/openai/chat/OpenAIChatPromptFormat.cjs +1 -1
  100. package/model-provider/openai/chat/OpenAIChatPromptFormat.d.ts +5 -5
  101. package/model-provider/openai/chat/OpenAIChatPromptFormat.js +1 -1
  102. package/model-provider/stability/StabilityImageGenerationModel.cjs +11 -0
  103. package/model-provider/stability/StabilityImageGenerationModel.d.ts +15 -14
  104. package/model-provider/stability/StabilityImageGenerationModel.js +11 -0
  105. package/model-provider/stability/StabilityImageGenerationPrompt.cjs +12 -0
  106. package/model-provider/stability/StabilityImageGenerationPrompt.d.ts +9 -0
  107. package/model-provider/stability/StabilityImageGenerationPrompt.js +8 -0
  108. package/model-provider/stability/index.cjs +1 -0
  109. package/model-provider/stability/index.d.ts +1 -0
  110. package/model-provider/stability/index.js +1 -0
  111. package/package.json +1 -1
  112. package/prompt/Llama2PromptFormat.d.ts +0 -13
  113. package/prompt/index.d.ts +0 -11
  114. package/prompt/index.js +0 -11
  115. /package/{prompt → model-function}/PromptFormat.cjs +0 -0
  116. /package/{prompt → model-function}/PromptFormat.js +0 -0
  117. /package/{prompt → model-function/generate-text}/AlpacaPromptFormat.cjs +0 -0
  118. /package/{prompt → model-function/generate-text}/AlpacaPromptFormat.js +0 -0
  119. /package/{prompt/chat → model-function/generate-text}/ChatPrompt.cjs +0 -0
  120. /package/{prompt/chat → model-function/generate-text}/ChatPrompt.d.ts +0 -0
  121. /package/{prompt/chat → model-function/generate-text}/ChatPrompt.js +0 -0
  122. /package/{prompt → model-function/generate-text}/InstructionPrompt.cjs +0 -0
  123. /package/{prompt → model-function/generate-text}/InstructionPrompt.d.ts +0 -0
  124. /package/{prompt → model-function/generate-text}/InstructionPrompt.js +0 -0
  125. /package/{prompt → model-function/generate-text}/PromptFormatTextGenerationModel.cjs +0 -0
  126. /package/{prompt → model-function/generate-text}/PromptFormatTextGenerationModel.js +0 -0
  127. /package/{prompt → model-function/generate-text}/PromptFormatTextStreamingModel.cjs +0 -0
  128. /package/{prompt → model-function/generate-text}/PromptFormatTextStreamingModel.js +0 -0
  129. /package/{prompt/chat → model-function/generate-text}/trimChatPrompt.cjs +0 -0
  130. /package/{prompt/chat → model-function/generate-text}/trimChatPrompt.js +0 -0
  131. /package/{prompt/chat → model-function/generate-text}/validateChatPrompt.cjs +0 -0
  132. /package/{prompt/chat → model-function/generate-text}/validateChatPrompt.d.ts +0 -0
  133. /package/{prompt/chat → model-function/generate-text}/validateChatPrompt.js +0 -0
package/README.md CHANGED
@@ -308,7 +308,7 @@ Providers: [HuggingFace](/integration/model-provider/huggingface)
308
308
 
309
309
  ### [Generate Image](https://modelfusion.dev/guide/function/generate-image)
310
310
 
311
- Generate a base64-encoded image from a prompt.
311
+ Generate an image from a prompt.
312
312
 
313
313
  ```ts
314
314
  const image = await generateImage(
@@ -431,10 +431,12 @@ const result = await guard(
431
431
  );
432
432
  ```
433
433
 
434
- ### [Prompt Formats](<(https://modelfusion.dev/guide/function/generate-text/prompt-format)>)
434
+ ### Prompt Formats
435
435
 
436
436
  Prompt formats let you use higher level prompt structures (such as instruction or chat prompts) for different models.
437
437
 
438
+ #### [Text Generation Prompt Formats](https://modelfusion.dev/guide/function/generate-text/prompt-format)
439
+
438
440
  ```ts
439
441
  const text = await generateText(
440
442
  new LlamaCppTextGenerationModel({
@@ -473,6 +475,24 @@ const textStream = await streamText(
473
475
  | Vicuna | ❌ | ✅ |
474
476
  | Generic Text | ✅ | ✅ |
475
477
 
478
+ #### [Image Generation Prompt Formats](https://modelfusion.dev/guide/function/generate-image/prompt-format)
479
+
480
+ You an use prompt formats with image models as well, e.g. to use a basic text prompt. It is available as a shorthand method:
481
+
482
+ ```ts
483
+ const image = await generateImage(
484
+ new StabilityImageGenerationModel({
485
+ //...
486
+ }).withBasicPrompt(),
487
+ "the wicked witch of the west in the style of early 19th century painting"
488
+ );
489
+ ```
490
+
491
+ | Prompt Format | Basic Text Prompt |
492
+ | ------------- | ----------------- |
493
+ | Automatic1111 | ✅ |
494
+ | Stability | ✅ |
495
+
476
496
  ### Metadata and original responses
477
497
 
478
498
  ModelFusion model functions return rich results that include the original response and metadata when you call `.asFullResponse()` before resolving the promise.
@@ -515,6 +535,7 @@ Integrations: [Helicone](https://modelfusion.dev/integration/observability/helic
515
535
  - [Synthesize Speech](https://modelfusion.dev/guide/function/synthesize-speech)
516
536
  - [Describe Image](https://modelfusion.dev/guide/function/describe-image)
517
537
  - [Generate Image](https://modelfusion.dev/guide/function/generate-image)
538
+ - [Prompt Format](https://modelfusion.dev/guide/function/generate-image/prompt-format)
518
539
  - [Tools](https://modelfusion.dev/guide/tools)
519
540
  - [Vector Indices](https://modelfusion.dev/guide/vector-index)
520
541
  - [Upsert](https://modelfusion.dev/guide/vector-index/upsert)
package/index.cjs CHANGED
@@ -22,7 +22,6 @@ __exportStar(require("./guard/index.cjs"), exports);
22
22
  __exportStar(require("./model-function/index.cjs"), exports);
23
23
  __exportStar(require("./model-provider/index.cjs"), exports);
24
24
  __exportStar(require("./observability/index.cjs"), exports);
25
- __exportStar(require("./prompt/index.cjs"), exports);
26
25
  __exportStar(require("./retriever/index.cjs"), exports);
27
26
  __exportStar(require("./text-chunk/index.cjs"), exports);
28
27
  __exportStar(require("./tool/index.cjs"), exports);
package/index.d.ts CHANGED
@@ -6,7 +6,6 @@ export * from "./guard/index.js";
6
6
  export * from "./model-function/index.js";
7
7
  export * from "./model-provider/index.js";
8
8
  export * from "./observability/index.js";
9
- export * from "./prompt/index.js";
10
9
  export * from "./retriever/index.js";
11
10
  export * from "./text-chunk/index.js";
12
11
  export * from "./tool/index.js";
package/index.js CHANGED
@@ -6,7 +6,6 @@ export * from "./guard/index.js";
6
6
  export * from "./model-function/index.js";
7
7
  export * from "./model-provider/index.js";
8
8
  export * from "./observability/index.js";
9
- export * from "./prompt/index.js";
10
9
  export * from "./retriever/index.js";
11
10
  export * from "./text-chunk/index.js";
12
11
  export * from "./tool/index.js";
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ModelFunctionPromise = void 0;
4
+ class ModelFunctionPromise extends Promise {
5
+ constructor(fullPromise) {
6
+ super((resolve) => {
7
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
8
+ resolve(null); // we override the resolve function
9
+ });
10
+ Object.defineProperty(this, "fullPromise", {
11
+ enumerable: true,
12
+ configurable: true,
13
+ writable: true,
14
+ value: fullPromise
15
+ });
16
+ Object.defineProperty(this, "valuePromise", {
17
+ enumerable: true,
18
+ configurable: true,
19
+ writable: true,
20
+ value: void 0
21
+ });
22
+ this.valuePromise = fullPromise.then((result) => result.value);
23
+ }
24
+ asFullResponse() {
25
+ return this.fullPromise;
26
+ }
27
+ then(onfulfilled, onrejected) {
28
+ return this.valuePromise.then(onfulfilled, onrejected);
29
+ }
30
+ catch(onrejected) {
31
+ return this.valuePromise.catch(onrejected);
32
+ }
33
+ finally(onfinally) {
34
+ return this.valuePromise.finally(onfinally);
35
+ }
36
+ }
37
+ exports.ModelFunctionPromise = ModelFunctionPromise;
@@ -0,0 +1,18 @@
1
+ import { ModelCallMetadata } from "./ModelCallMetadata.js";
2
+ export declare class ModelFunctionPromise<VALUE> extends Promise<VALUE> {
3
+ private fullPromise;
4
+ private valuePromise;
5
+ constructor(fullPromise: Promise<{
6
+ value: VALUE;
7
+ response: unknown;
8
+ metadata: ModelCallMetadata;
9
+ }>);
10
+ asFullResponse(): Promise<{
11
+ value: VALUE;
12
+ response: unknown;
13
+ metadata: ModelCallMetadata;
14
+ }>;
15
+ then<TResult1 = VALUE, TResult2 = never>(onfulfilled?: ((value: VALUE) => TResult1 | PromiseLike<TResult1>) | undefined | null, onrejected?: ((reason: unknown) => TResult2 | PromiseLike<TResult2>) | undefined | null): Promise<TResult1 | TResult2>;
16
+ catch<TResult = never>(onrejected?: ((reason: unknown) => TResult | PromiseLike<TResult>) | undefined | null): Promise<VALUE | TResult>;
17
+ finally(onfinally?: (() => void) | undefined | null): Promise<VALUE>;
18
+ }
@@ -0,0 +1,33 @@
1
+ export class ModelFunctionPromise extends Promise {
2
+ constructor(fullPromise) {
3
+ super((resolve) => {
4
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
5
+ resolve(null); // we override the resolve function
6
+ });
7
+ Object.defineProperty(this, "fullPromise", {
8
+ enumerable: true,
9
+ configurable: true,
10
+ writable: true,
11
+ value: fullPromise
12
+ });
13
+ Object.defineProperty(this, "valuePromise", {
14
+ enumerable: true,
15
+ configurable: true,
16
+ writable: true,
17
+ value: void 0
18
+ });
19
+ this.valuePromise = fullPromise.then((result) => result.value);
20
+ }
21
+ asFullResponse() {
22
+ return this.fullPromise;
23
+ }
24
+ then(onfulfilled, onrejected) {
25
+ return this.valuePromise.then(onfulfilled, onrejected);
26
+ }
27
+ catch(onrejected) {
28
+ return this.valuePromise.catch(onrejected);
29
+ }
30
+ finally(onfinally) {
31
+ return this.valuePromise.finally(onfinally);
32
+ }
33
+ }
@@ -6,9 +6,4 @@ export interface PromptFormat<SOURCE_PROMPT, TARGET_PROMPT> {
6
6
  * Formats the source prompt into the structure of the target prompt.
7
7
  */
8
8
  format(sourcePrompt: SOURCE_PROMPT): TARGET_PROMPT;
9
- /**
10
- * The texts that should be used as default stop sequences.
11
- * This is e.g. important for chat formats.
12
- */
13
- stopSequences: string[];
14
9
  }
@@ -2,13 +2,14 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.describeImage = void 0;
4
4
  const executeCall_js_1 = require("../executeCall.cjs");
5
+ const ModelFunctionPromise_js_1 = require("../ModelFunctionPromise.cjs");
5
6
  /**
6
7
  * Describe an image as text.
7
8
  *
8
9
  * Depending on the model, this can be used for image captioning, for describing the contents of an image, or for OCR.
9
10
  */
10
11
  function describeImage(model, data, options) {
11
- return (0, executeCall_js_1.executeCall)({
12
+ return new ModelFunctionPromise_js_1.ModelFunctionPromise((0, executeCall_js_1.executeCall)({
12
13
  functionType: "image-description",
13
14
  input: data,
14
15
  model,
@@ -20,6 +21,6 @@ function describeImage(model, data, options) {
20
21
  extractedValue: result.description,
21
22
  };
22
23
  },
23
- });
24
+ }));
24
25
  }
25
26
  exports.describeImage = describeImage;
@@ -1,5 +1,5 @@
1
1
  import { FunctionOptions } from "../../core/FunctionOptions.js";
2
- import { ModelFunctionPromise } from "../executeCall.js";
2
+ import { ModelFunctionPromise } from "../ModelFunctionPromise.js";
3
3
  import { ImageDescriptionModel, ImageDescriptionModelSettings } from "./ImageDescriptionModel.js";
4
4
  /**
5
5
  * Describe an image as text.
@@ -1,11 +1,12 @@
1
1
  import { executeCall } from "../executeCall.js";
2
+ import { ModelFunctionPromise } from "../ModelFunctionPromise.js";
2
3
  /**
3
4
  * Describe an image as text.
4
5
  *
5
6
  * Depending on the model, this can be used for image captioning, for describing the contents of an image, or for OCR.
6
7
  */
7
8
  export function describeImage(model, data, options) {
8
- return executeCall({
9
+ return new ModelFunctionPromise(executeCall({
9
10
  functionType: "image-description",
10
11
  input: data,
11
12
  model,
@@ -17,5 +18,5 @@ export function describeImage(model, data, options) {
17
18
  extractedValue: result.description,
18
19
  };
19
20
  },
20
- });
21
+ }));
21
22
  }
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.embed = exports.embedMany = void 0;
4
4
  const executeCall_js_1 = require("../executeCall.cjs");
5
+ const ModelFunctionPromise_js_1 = require("../ModelFunctionPromise.cjs");
5
6
  /**
6
7
  * Generate embeddings for multiple values.
7
8
  *
@@ -15,7 +16,7 @@ const executeCall_js_1 = require("../executeCall.cjs");
15
16
  * );
16
17
  */
17
18
  function embedMany(model, values, options) {
18
- return (0, executeCall_js_1.executeCall)({
19
+ return new ModelFunctionPromise_js_1.ModelFunctionPromise((0, executeCall_js_1.executeCall)({
19
20
  functionType: "embedding",
20
21
  input: values,
21
22
  model,
@@ -43,7 +44,7 @@ function embedMany(model, values, options) {
43
44
  extractedValue: embeddings,
44
45
  };
45
46
  },
46
- });
47
+ }));
47
48
  }
48
49
  exports.embedMany = embedMany;
49
50
  /**
@@ -56,7 +57,7 @@ exports.embedMany = embedMany;
56
57
  * );
57
58
  */
58
59
  function embed(model, value, options) {
59
- return (0, executeCall_js_1.executeCall)({
60
+ return new ModelFunctionPromise_js_1.ModelFunctionPromise((0, executeCall_js_1.executeCall)({
60
61
  functionType: "embedding",
61
62
  input: value,
62
63
  model,
@@ -68,6 +69,6 @@ function embed(model, value, options) {
68
69
  extractedValue: result.embeddings[0],
69
70
  };
70
71
  },
71
- });
72
+ }));
72
73
  }
73
74
  exports.embed = embed;
@@ -1,6 +1,6 @@
1
1
  import { FunctionOptions } from "../../core/FunctionOptions.js";
2
2
  import { Vector } from "../../core/Vector.js";
3
- import { ModelFunctionPromise } from "../executeCall.js";
3
+ import { ModelFunctionPromise } from "../ModelFunctionPromise.js";
4
4
  import { EmbeddingModel, EmbeddingModelSettings } from "./EmbeddingModel.js";
5
5
  /**
6
6
  * Generate embeddings for multiple values.
@@ -1,4 +1,5 @@
1
1
  import { executeCall } from "../executeCall.js";
2
+ import { ModelFunctionPromise } from "../ModelFunctionPromise.js";
2
3
  /**
3
4
  * Generate embeddings for multiple values.
4
5
  *
@@ -12,7 +13,7 @@ import { executeCall } from "../executeCall.js";
12
13
  * );
13
14
  */
14
15
  export function embedMany(model, values, options) {
15
- return executeCall({
16
+ return new ModelFunctionPromise(executeCall({
16
17
  functionType: "embedding",
17
18
  input: values,
18
19
  model,
@@ -40,7 +41,7 @@ export function embedMany(model, values, options) {
40
41
  extractedValue: embeddings,
41
42
  };
42
43
  },
43
- });
44
+ }));
44
45
  }
45
46
  /**
46
47
  * Generate an embedding for a single value.
@@ -52,7 +53,7 @@ export function embedMany(model, values, options) {
52
53
  * );
53
54
  */
54
55
  export function embed(model, value, options) {
55
- return executeCall({
56
+ return new ModelFunctionPromise(executeCall({
56
57
  functionType: "embedding",
57
58
  input: value,
58
59
  model,
@@ -64,5 +65,5 @@ export function embed(model, value, options) {
64
65
  extractedValue: result.embeddings[0],
65
66
  };
66
67
  },
67
- });
68
+ }));
68
69
  }
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.executeCall = exports.ModelFunctionPromise = void 0;
3
+ exports.executeCall = void 0;
4
4
  const nanoid_1 = require("nanoid");
5
5
  const FunctionEventSource_js_1 = require("../core/FunctionEventSource.cjs");
6
6
  const GlobalFunctionLogging_js_1 = require("../core/GlobalFunctionLogging.cjs");
@@ -10,51 +10,7 @@ const getFunctionCallLogger_js_1 = require("../core/getFunctionCallLogger.cjs");
10
10
  const getRun_js_1 = require("../core/getRun.cjs");
11
11
  const DurationMeasurement_js_1 = require("../util/DurationMeasurement.cjs");
12
12
  const runSafe_js_1 = require("../util/runSafe.cjs");
13
- class ModelFunctionPromise extends Promise {
14
- constructor(fullPromise) {
15
- super((resolve) => {
16
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
17
- resolve(null); // we override the resolve function
18
- });
19
- Object.defineProperty(this, "fullPromise", {
20
- enumerable: true,
21
- configurable: true,
22
- writable: true,
23
- value: fullPromise
24
- });
25
- Object.defineProperty(this, "valuePromise", {
26
- enumerable: true,
27
- configurable: true,
28
- writable: true,
29
- value: void 0
30
- });
31
- this.valuePromise = fullPromise.then((result) => result.value);
32
- }
33
- asFullResponse() {
34
- return this.fullPromise;
35
- }
36
- then(onfulfilled, onrejected) {
37
- return this.valuePromise.then(onfulfilled, onrejected);
38
- }
39
- catch(onrejected) {
40
- return this.valuePromise.catch(onrejected);
41
- }
42
- finally(onfinally) {
43
- return this.valuePromise.finally(onfinally);
44
- }
45
- }
46
- exports.ModelFunctionPromise = ModelFunctionPromise;
47
- function executeCall({ model, options, input, functionType, generateResponse, }) {
48
- return new ModelFunctionPromise(doExecuteCall({
49
- model,
50
- options,
51
- input,
52
- functionType,
53
- generateResponse,
54
- }));
55
- }
56
- exports.executeCall = executeCall;
57
- async function doExecuteCall({ model, options, input, functionType, generateResponse, }) {
13
+ async function executeCall({ model, options, input, functionType, generateResponse, }) {
58
14
  const run = await (0, getRun_js_1.getRun)(options?.run);
59
15
  const settings = model.settings;
60
16
  const eventSource = new FunctionEventSource_js_1.FunctionEventSource({
@@ -148,3 +104,4 @@ async function doExecuteCall({ model, options, input, functionType, generateResp
148
104
  },
149
105
  };
150
106
  }
107
+ exports.executeCall = executeCall;
@@ -2,23 +2,6 @@ import { FunctionOptions } from "../core/FunctionOptions.js";
2
2
  import { Model, ModelSettings } from "./Model.js";
3
3
  import { ModelCallStartedEvent } from "./ModelCallEvent.js";
4
4
  import { ModelCallMetadata } from "./ModelCallMetadata.js";
5
- export declare class ModelFunctionPromise<VALUE> extends Promise<VALUE> {
6
- private fullPromise;
7
- private valuePromise;
8
- constructor(fullPromise: Promise<{
9
- value: VALUE;
10
- response: unknown;
11
- metadata: ModelCallMetadata;
12
- }>);
13
- asFullResponse(): Promise<{
14
- value: VALUE;
15
- response: unknown;
16
- metadata: ModelCallMetadata;
17
- }>;
18
- then<TResult1 = VALUE, TResult2 = never>(onfulfilled?: ((value: VALUE) => TResult1 | PromiseLike<TResult1>) | undefined | null, onrejected?: ((reason: unknown) => TResult2 | PromiseLike<TResult2>) | undefined | null): Promise<TResult1 | TResult2>;
19
- catch<TResult = never>(onrejected?: ((reason: unknown) => TResult | PromiseLike<TResult>) | undefined | null): Promise<VALUE | TResult>;
20
- finally(onfinally?: (() => void) | undefined | null): Promise<VALUE>;
21
- }
22
5
  export declare function executeCall<VALUE, MODEL extends Model<ModelSettings>>({ model, options, input, functionType, generateResponse, }: {
23
6
  model: MODEL;
24
7
  options?: FunctionOptions;
@@ -29,4 +12,8 @@ export declare function executeCall<VALUE, MODEL extends Model<ModelSettings>>({
29
12
  extractedValue: VALUE;
30
13
  usage?: unknown;
31
14
  }>;
32
- }): ModelFunctionPromise<VALUE>;
15
+ }): Promise<{
16
+ value: VALUE;
17
+ response: unknown;
18
+ metadata: ModelCallMetadata;
19
+ }>;
@@ -7,49 +7,7 @@ import { getFunctionCallLogger } from "../core/getFunctionCallLogger.js";
7
7
  import { getRun } from "../core/getRun.js";
8
8
  import { startDurationMeasurement } from "../util/DurationMeasurement.js";
9
9
  import { runSafe } from "../util/runSafe.js";
10
- export class ModelFunctionPromise extends Promise {
11
- constructor(fullPromise) {
12
- super((resolve) => {
13
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
14
- resolve(null); // we override the resolve function
15
- });
16
- Object.defineProperty(this, "fullPromise", {
17
- enumerable: true,
18
- configurable: true,
19
- writable: true,
20
- value: fullPromise
21
- });
22
- Object.defineProperty(this, "valuePromise", {
23
- enumerable: true,
24
- configurable: true,
25
- writable: true,
26
- value: void 0
27
- });
28
- this.valuePromise = fullPromise.then((result) => result.value);
29
- }
30
- asFullResponse() {
31
- return this.fullPromise;
32
- }
33
- then(onfulfilled, onrejected) {
34
- return this.valuePromise.then(onfulfilled, onrejected);
35
- }
36
- catch(onrejected) {
37
- return this.valuePromise.catch(onrejected);
38
- }
39
- finally(onfinally) {
40
- return this.valuePromise.finally(onfinally);
41
- }
42
- }
43
- export function executeCall({ model, options, input, functionType, generateResponse, }) {
44
- return new ModelFunctionPromise(doExecuteCall({
45
- model,
46
- options,
47
- input,
48
- functionType,
49
- generateResponse,
50
- }));
51
- }
52
- async function doExecuteCall({ model, options, input, functionType, generateResponse, }) {
10
+ export async function executeCall({ model, options, input, functionType, generateResponse, }) {
53
11
  const run = await getRun(options?.run);
54
12
  const settings = model.settings;
55
13
  const eventSource = new FunctionEventSource({
@@ -1,5 +1,6 @@
1
1
  import { FunctionOptions } from "../../core/FunctionOptions.js";
2
2
  import { Model, ModelSettings } from "../Model.js";
3
+ import { PromptFormat } from "../PromptFormat.js";
3
4
  export interface ImageGenerationModelSettings extends ModelSettings {
4
5
  }
5
6
  export interface ImageGenerationModel<PROMPT, SETTINGS extends ImageGenerationModelSettings = ImageGenerationModelSettings> extends Model<SETTINGS> {
@@ -7,4 +8,5 @@ export interface ImageGenerationModel<PROMPT, SETTINGS extends ImageGenerationMo
7
8
  response: unknown;
8
9
  base64Image: string;
9
10
  }>;
11
+ withPromptFormat<INPUT_PROMPT>(promptFormat: PromptFormat<INPUT_PROMPT, PROMPT>): ImageGenerationModel<INPUT_PROMPT, SETTINGS>;
10
12
  }
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ImageGenerationPromise = void 0;
4
+ class ImageGenerationPromise extends Promise {
5
+ constructor(fullPromise) {
6
+ super((resolve) => {
7
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
8
+ resolve(null); // we override the resolve function
9
+ });
10
+ Object.defineProperty(this, "fullPromise", {
11
+ enumerable: true,
12
+ configurable: true,
13
+ writable: true,
14
+ value: fullPromise
15
+ });
16
+ Object.defineProperty(this, "imageBase64Promise", {
17
+ enumerable: true,
18
+ configurable: true,
19
+ writable: true,
20
+ value: void 0
21
+ });
22
+ Object.defineProperty(this, "imageBufferPromise", {
23
+ enumerable: true,
24
+ configurable: true,
25
+ writable: true,
26
+ value: void 0
27
+ });
28
+ this.imageBase64Promise = fullPromise.then((result) => result.value);
29
+ this.imageBufferPromise = this.imageBase64Promise.then((base64Text) => Buffer.from(base64Text, "base64"));
30
+ }
31
+ asFullResponse() {
32
+ return this.fullPromise;
33
+ }
34
+ asBase64Text() {
35
+ return this.imageBase64Promise;
36
+ }
37
+ asBuffer() {
38
+ return this.imageBufferPromise;
39
+ }
40
+ then(onfulfilled, onrejected) {
41
+ return this.imageBufferPromise.then(onfulfilled, onrejected);
42
+ }
43
+ catch(onrejected) {
44
+ return this.imageBufferPromise.catch(onrejected);
45
+ }
46
+ finally(onfinally) {
47
+ return this.imageBufferPromise.finally(onfinally);
48
+ }
49
+ }
50
+ exports.ImageGenerationPromise = ImageGenerationPromise;
@@ -0,0 +1,22 @@
1
+ /// <reference types="node" />
2
+ import { ModelCallMetadata } from "../ModelCallMetadata.js";
3
+ export declare class ImageGenerationPromise extends Promise<Buffer> {
4
+ private fullPromise;
5
+ private imageBase64Promise;
6
+ private imageBufferPromise;
7
+ constructor(fullPromise: Promise<{
8
+ value: string;
9
+ response: unknown;
10
+ metadata: ModelCallMetadata;
11
+ }>);
12
+ asFullResponse(): Promise<{
13
+ value: string;
14
+ response: unknown;
15
+ metadata: ModelCallMetadata;
16
+ }>;
17
+ asBase64Text(): Promise<string>;
18
+ asBuffer(): Promise<Buffer>;
19
+ then<TResult1 = Buffer, TResult2 = never>(onfulfilled?: ((value: Buffer) => TResult1 | PromiseLike<TResult1>) | undefined | null, onrejected?: ((reason: unknown) => TResult2 | PromiseLike<TResult2>) | undefined | null): Promise<TResult1 | TResult2>;
20
+ catch<TResult = never>(onrejected?: ((reason: unknown) => TResult | PromiseLike<TResult>) | undefined | null): Promise<Buffer | TResult>;
21
+ finally(onfinally?: (() => void) | undefined | null): Promise<Buffer>;
22
+ }
@@ -0,0 +1,46 @@
1
+ export class ImageGenerationPromise extends Promise {
2
+ constructor(fullPromise) {
3
+ super((resolve) => {
4
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
5
+ resolve(null); // we override the resolve function
6
+ });
7
+ Object.defineProperty(this, "fullPromise", {
8
+ enumerable: true,
9
+ configurable: true,
10
+ writable: true,
11
+ value: fullPromise
12
+ });
13
+ Object.defineProperty(this, "imageBase64Promise", {
14
+ enumerable: true,
15
+ configurable: true,
16
+ writable: true,
17
+ value: void 0
18
+ });
19
+ Object.defineProperty(this, "imageBufferPromise", {
20
+ enumerable: true,
21
+ configurable: true,
22
+ writable: true,
23
+ value: void 0
24
+ });
25
+ this.imageBase64Promise = fullPromise.then((result) => result.value);
26
+ this.imageBufferPromise = this.imageBase64Promise.then((base64Text) => Buffer.from(base64Text, "base64"));
27
+ }
28
+ asFullResponse() {
29
+ return this.fullPromise;
30
+ }
31
+ asBase64Text() {
32
+ return this.imageBase64Promise;
33
+ }
34
+ asBuffer() {
35
+ return this.imageBufferPromise;
36
+ }
37
+ then(onfulfilled, onrejected) {
38
+ return this.imageBufferPromise.then(onfulfilled, onrejected);
39
+ }
40
+ catch(onrejected) {
41
+ return this.imageBufferPromise.catch(onrejected);
42
+ }
43
+ finally(onfinally) {
44
+ return this.imageBufferPromise.finally(onfinally);
45
+ }
46
+ }
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PromptFormatImageGenerationModel = void 0;
4
+ class PromptFormatImageGenerationModel {
5
+ constructor({ model, promptFormat, }) {
6
+ Object.defineProperty(this, "model", {
7
+ enumerable: true,
8
+ configurable: true,
9
+ writable: true,
10
+ value: void 0
11
+ });
12
+ Object.defineProperty(this, "promptFormat", {
13
+ enumerable: true,
14
+ configurable: true,
15
+ writable: true,
16
+ value: void 0
17
+ });
18
+ this.model = model;
19
+ this.promptFormat = promptFormat;
20
+ }
21
+ get modelInformation() {
22
+ return this.model.modelInformation;
23
+ }
24
+ get settings() {
25
+ return this.model.settings;
26
+ }
27
+ doGenerateImage(prompt, options) {
28
+ const mappedPrompt = this.promptFormat.format(prompt);
29
+ return this.model.doGenerateImage(mappedPrompt, options);
30
+ }
31
+ get settingsForEvent() {
32
+ return this.model.settingsForEvent;
33
+ }
34
+ withPromptFormat(promptFormat) {
35
+ return new PromptFormatImageGenerationModel({ model: this, promptFormat });
36
+ }
37
+ withSettings(additionalSettings) {
38
+ return new PromptFormatImageGenerationModel({
39
+ model: this.model.withSettings(additionalSettings),
40
+ promptFormat: this.promptFormat,
41
+ });
42
+ }
43
+ }
44
+ exports.PromptFormatImageGenerationModel = PromptFormatImageGenerationModel;