modelfusion 0.117.0 → 0.119.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 (161) hide show
  1. package/CHANGELOG.md +60 -0
  2. package/README.md +10 -9
  3. package/core/getFunctionCallLogger.cjs +6 -6
  4. package/core/getFunctionCallLogger.js +6 -6
  5. package/model-function/ModelCallEvent.d.ts +1 -1
  6. package/model-function/embed/EmbeddingEvent.d.ts +1 -1
  7. package/model-function/embed/EmbeddingModel.d.ts +1 -1
  8. package/model-function/embed/embed.cjs +5 -5
  9. package/model-function/embed/embed.d.ts +2 -2
  10. package/model-function/embed/embed.js +5 -5
  11. package/model-function/executeStandardCall.cjs +3 -3
  12. package/model-function/executeStandardCall.d.ts +2 -2
  13. package/model-function/executeStandardCall.js +3 -3
  14. package/model-function/generate-image/ImageGenerationEvent.d.ts +1 -1
  15. package/model-function/generate-image/ImageGenerationModel.d.ts +1 -1
  16. package/model-function/generate-image/PromptTemplateImageGenerationModel.d.ts +1 -1
  17. package/model-function/generate-image/generateImage.cjs +2 -2
  18. package/model-function/generate-image/generateImage.d.ts +1 -1
  19. package/model-function/generate-image/generateImage.js +2 -2
  20. package/model-function/generate-speech/SpeechGenerationEvent.d.ts +1 -1
  21. package/model-function/generate-speech/generateSpeech.cjs +2 -2
  22. package/model-function/generate-speech/generateSpeech.d.ts +1 -1
  23. package/model-function/generate-speech/generateSpeech.js +2 -2
  24. package/model-function/generate-structure/StructureFromTextGenerationModel.cjs +10 -1
  25. package/model-function/generate-structure/StructureFromTextGenerationModel.d.ts +1 -0
  26. package/model-function/generate-structure/StructureFromTextGenerationModel.js +10 -1
  27. package/model-function/generate-structure/StructureFromTextPromptTemplate.d.ts +12 -1
  28. package/model-function/generate-structure/StructureFromTextStreamingModel.cjs +1 -22
  29. package/model-function/generate-structure/StructureFromTextStreamingModel.d.ts +0 -5
  30. package/model-function/generate-structure/StructureFromTextStreamingModel.js +1 -22
  31. package/model-function/generate-structure/StructureGenerationEvent.d.ts +1 -1
  32. package/model-function/generate-structure/generateStructure.cjs +2 -2
  33. package/model-function/generate-structure/generateStructure.d.ts +1 -1
  34. package/model-function/generate-structure/generateStructure.js +2 -2
  35. package/model-function/generate-structure/jsonStructurePrompt.cjs +4 -12
  36. package/model-function/generate-structure/jsonStructurePrompt.js +4 -12
  37. package/model-function/generate-text/PromptTemplateFullTextModel.d.ts +2 -2
  38. package/model-function/generate-text/PromptTemplateTextGenerationModel.cjs +6 -0
  39. package/model-function/generate-text/PromptTemplateTextGenerationModel.d.ts +5 -2
  40. package/model-function/generate-text/PromptTemplateTextGenerationModel.js +6 -0
  41. package/model-function/generate-text/PromptTemplateTextStreamingModel.cjs +6 -0
  42. package/model-function/generate-text/PromptTemplateTextStreamingModel.d.ts +3 -0
  43. package/model-function/generate-text/PromptTemplateTextStreamingModel.js +6 -0
  44. package/model-function/generate-text/TextGenerationEvent.d.ts +1 -1
  45. package/model-function/generate-text/TextGenerationModel.d.ts +7 -4
  46. package/model-function/generate-text/generateText.cjs +3 -3
  47. package/model-function/generate-text/generateText.d.ts +1 -1
  48. package/model-function/generate-text/generateText.js +3 -3
  49. package/model-function/generate-text/prompt-template/AlpacaPromptTemplate.cjs +8 -1
  50. package/model-function/generate-text/prompt-template/AlpacaPromptTemplate.d.ts +5 -0
  51. package/model-function/generate-text/prompt-template/AlpacaPromptTemplate.js +6 -0
  52. package/model-function/generate-text/prompt-template/PromptTemplateProvider.cjs +2 -0
  53. package/model-function/generate-text/prompt-template/PromptTemplateProvider.d.ts +8 -0
  54. package/model-function/generate-text/prompt-template/PromptTemplateProvider.js +1 -0
  55. package/model-function/generate-text/prompt-template/VicunaPromptTemplate.cjs +34 -1
  56. package/model-function/generate-text/prompt-template/VicunaPromptTemplate.d.ts +9 -0
  57. package/model-function/generate-text/prompt-template/VicunaPromptTemplate.js +31 -0
  58. package/model-function/generate-text/prompt-template/VicunaPromptTemplate.test.cjs +28 -0
  59. package/model-function/generate-text/prompt-template/VicunaPromptTemplate.test.js +29 -1
  60. package/model-function/generate-text/prompt-template/index.cjs +1 -0
  61. package/model-function/generate-text/prompt-template/index.d.ts +1 -0
  62. package/model-function/generate-text/prompt-template/index.js +1 -0
  63. package/model-function/generate-transcription/TranscriptionEvent.d.ts +1 -1
  64. package/model-function/generate-transcription/TranscriptionModel.d.ts +1 -1
  65. package/model-function/generate-transcription/generateTranscription.cjs +1 -1
  66. package/model-function/generate-transcription/generateTranscription.d.ts +1 -1
  67. package/model-function/generate-transcription/generateTranscription.js +1 -1
  68. package/model-provider/automatic1111/Automatic1111ImageGenerationModel.cjs +3 -3
  69. package/model-provider/automatic1111/Automatic1111ImageGenerationModel.d.ts +1 -1
  70. package/model-provider/automatic1111/Automatic1111ImageGenerationModel.js +3 -3
  71. package/model-provider/cohere/CohereTextEmbeddingModel.cjs +3 -3
  72. package/model-provider/cohere/CohereTextEmbeddingModel.d.ts +1 -1
  73. package/model-provider/cohere/CohereTextEmbeddingModel.js +3 -3
  74. package/model-provider/cohere/CohereTextGenerationModel.cjs +6 -3
  75. package/model-provider/cohere/CohereTextGenerationModel.d.ts +5 -4
  76. package/model-provider/cohere/CohereTextGenerationModel.js +6 -3
  77. package/model-provider/huggingface/HuggingFaceTextEmbeddingModel.cjs +3 -3
  78. package/model-provider/huggingface/HuggingFaceTextEmbeddingModel.d.ts +1 -1
  79. package/model-provider/huggingface/HuggingFaceTextEmbeddingModel.js +3 -3
  80. package/model-provider/huggingface/HuggingFaceTextGenerationModel.cjs +6 -3
  81. package/model-provider/huggingface/HuggingFaceTextGenerationModel.d.ts +5 -4
  82. package/model-provider/huggingface/HuggingFaceTextGenerationModel.js +6 -3
  83. package/model-provider/llamacpp/LlamaCppBakLLaVA1PromptTemplate.cjs +15 -1
  84. package/model-provider/llamacpp/LlamaCppBakLLaVA1PromptTemplate.d.ts +4 -0
  85. package/model-provider/llamacpp/LlamaCppBakLLaVA1PromptTemplate.js +13 -0
  86. package/model-provider/llamacpp/LlamaCppCompletionModel.cjs +40 -33
  87. package/model-provider/llamacpp/LlamaCppCompletionModel.d.ts +20 -9
  88. package/model-provider/llamacpp/LlamaCppCompletionModel.js +40 -33
  89. package/model-provider/llamacpp/LlamaCppFacade.cjs +4 -3
  90. package/model-provider/llamacpp/LlamaCppFacade.d.ts +2 -1
  91. package/model-provider/llamacpp/LlamaCppFacade.js +2 -1
  92. package/model-provider/llamacpp/LlamaCppGrammars.cjs +3 -1
  93. package/model-provider/llamacpp/LlamaCppGrammars.d.ts +1 -0
  94. package/model-provider/llamacpp/LlamaCppGrammars.js +1 -0
  95. package/model-provider/llamacpp/LlamaCppPrompt.cjs +59 -0
  96. package/model-provider/llamacpp/LlamaCppPrompt.d.ts +14 -0
  97. package/model-provider/llamacpp/LlamaCppPrompt.js +31 -0
  98. package/model-provider/llamacpp/LlamaCppTextEmbeddingModel.cjs +3 -3
  99. package/model-provider/llamacpp/LlamaCppTextEmbeddingModel.d.ts +1 -1
  100. package/model-provider/llamacpp/LlamaCppTextEmbeddingModel.js +3 -3
  101. package/model-provider/llamacpp/convertJsonSchemaToGBNF.cjs +113 -0
  102. package/model-provider/llamacpp/convertJsonSchemaToGBNF.d.ts +7 -0
  103. package/model-provider/llamacpp/convertJsonSchemaToGBNF.js +109 -0
  104. package/model-provider/llamacpp/convertJsonSchemaToGBNF.test.cjs +150 -0
  105. package/model-provider/llamacpp/convertJsonSchemaToGBNF.test.d.ts +1 -0
  106. package/model-provider/llamacpp/convertJsonSchemaToGBNF.test.js +148 -0
  107. package/model-provider/llamacpp/index.cjs +2 -3
  108. package/model-provider/llamacpp/index.d.ts +1 -2
  109. package/model-provider/llamacpp/index.js +1 -2
  110. package/model-provider/mistral/MistralChatModel.cjs +6 -3
  111. package/model-provider/mistral/MistralChatModel.d.ts +5 -4
  112. package/model-provider/mistral/MistralChatModel.js +6 -3
  113. package/model-provider/mistral/MistralTextEmbeddingModel.cjs +3 -3
  114. package/model-provider/mistral/MistralTextEmbeddingModel.d.ts +1 -1
  115. package/model-provider/mistral/MistralTextEmbeddingModel.js +3 -3
  116. package/model-provider/ollama/OllamaChatModel.cjs +3 -3
  117. package/model-provider/ollama/OllamaChatModel.d.ts +2 -2
  118. package/model-provider/ollama/OllamaChatModel.js +3 -3
  119. package/model-provider/ollama/OllamaCompletionModel.cjs +6 -3
  120. package/model-provider/ollama/OllamaCompletionModel.d.ts +15 -14
  121. package/model-provider/ollama/OllamaCompletionModel.js +6 -3
  122. package/model-provider/ollama/OllamaTextEmbeddingModel.cjs +3 -3
  123. package/model-provider/ollama/OllamaTextEmbeddingModel.d.ts +1 -1
  124. package/model-provider/ollama/OllamaTextEmbeddingModel.js +3 -3
  125. package/model-provider/openai/AbstractOpenAIChatModel.cjs +12 -12
  126. package/model-provider/openai/AbstractOpenAIChatModel.d.ts +6 -6
  127. package/model-provider/openai/AbstractOpenAIChatModel.js +12 -12
  128. package/model-provider/openai/AbstractOpenAICompletionModel.cjs +9 -6
  129. package/model-provider/openai/AbstractOpenAICompletionModel.d.ts +3 -2
  130. package/model-provider/openai/AbstractOpenAICompletionModel.js +9 -6
  131. package/model-provider/openai/OpenAIImageGenerationModel.cjs +3 -3
  132. package/model-provider/openai/OpenAIImageGenerationModel.d.ts +1 -1
  133. package/model-provider/openai/OpenAIImageGenerationModel.js +3 -3
  134. package/model-provider/openai/OpenAITextEmbeddingModel.cjs +3 -3
  135. package/model-provider/openai/OpenAITextEmbeddingModel.d.ts +1 -1
  136. package/model-provider/openai/OpenAITextEmbeddingModel.js +3 -3
  137. package/model-provider/openai/OpenAITranscriptionModel.cjs +3 -3
  138. package/model-provider/openai/OpenAITranscriptionModel.d.ts +1 -1
  139. package/model-provider/openai/OpenAITranscriptionModel.js +3 -3
  140. package/model-provider/stability/StabilityImageGenerationModel.cjs +3 -3
  141. package/model-provider/stability/StabilityImageGenerationModel.d.ts +1 -1
  142. package/model-provider/stability/StabilityImageGenerationModel.js +3 -3
  143. package/model-provider/whispercpp/WhisperCppTranscriptionModel.cjs +3 -3
  144. package/model-provider/whispercpp/WhisperCppTranscriptionModel.d.ts +1 -1
  145. package/model-provider/whispercpp/WhisperCppTranscriptionModel.js +3 -3
  146. package/package.json +1 -1
  147. package/tool/generate-tool-call/TextGenerationToolCallModel.cjs +2 -2
  148. package/tool/generate-tool-call/TextGenerationToolCallModel.d.ts +1 -1
  149. package/tool/generate-tool-call/TextGenerationToolCallModel.js +2 -2
  150. package/tool/generate-tool-call/ToolCallGenerationEvent.d.ts +1 -1
  151. package/tool/generate-tool-call/ToolCallGenerationModel.d.ts +1 -1
  152. package/tool/generate-tool-call/generateToolCall.cjs +2 -2
  153. package/tool/generate-tool-call/generateToolCall.js +2 -2
  154. package/tool/generate-tool-calls/TextGenerationToolCallsModel.cjs +2 -2
  155. package/tool/generate-tool-calls/TextGenerationToolCallsModel.d.ts +1 -1
  156. package/tool/generate-tool-calls/TextGenerationToolCallsModel.js +2 -2
  157. package/tool/generate-tool-calls/ToolCallsGenerationEvent.d.ts +1 -1
  158. package/tool/generate-tool-calls/ToolCallsGenerationModel.d.ts +1 -1
  159. package/tool/generate-tool-calls/generateToolCalls.cjs +2 -2
  160. package/tool/generate-tool-calls/generateToolCalls.d.ts +1 -1
  161. package/tool/generate-tool-calls/generateToolCalls.js +2 -2
package/CHANGELOG.md CHANGED
@@ -1,5 +1,65 @@
1
1
  # Changelog
2
2
 
3
+ ## v0.119.0 - 2024-01-07
4
+
5
+ ### Added
6
+
7
+ - Schema-specific GBNF grammar generator for `LlamaCppCompletionModel`. When using `jsonStructurePrompt`, it automatically uses a GBNF grammar for the JSON schema that you provide. Example:
8
+
9
+ ```ts
10
+ const structure = await generateStructure(
11
+ llamacpp
12
+ .CompletionTextGenerator({
13
+ // run openhermes-2.5-mistral-7b.Q4_K_M.gguf in llama.cpp
14
+ promptTemplate: llamacpp.prompt.ChatML,
15
+ maxGenerationTokens: 1024,
16
+ temperature: 0,
17
+ })
18
+ // automatically restrict the output to your schema using GBNF:
19
+ .asStructureGenerationModel(jsonStructurePrompt.text()),
20
+
21
+ zodSchema(
22
+ z.array(
23
+ z.object({
24
+ name: z.string(),
25
+ class: z
26
+ .string()
27
+ .describe("Character class, e.g. warrior, mage, or thief."),
28
+ description: z.string(),
29
+ })
30
+ )
31
+ ),
32
+
33
+ "Generate 3 character descriptions for a fantasy role playing game. "
34
+ );
35
+ ```
36
+
37
+ ## v0.118.0 - 2024-01-07
38
+
39
+ ### Added
40
+
41
+ - `LlamaCppCompletionModel` supports setting the prompt template in the settings. Prompt formats are available under `llamacpp.prompt.*`. You can then call `.withTextPrompt()`, `.withInstructionPrompt()` or `.withChatPrompt()` to use a standardized prompt.
42
+
43
+ ```ts
44
+ const model = llamacpp
45
+ .CompletionTextGenerator({
46
+ // run https://huggingface.co/TheBloke/OpenHermes-2.5-Mistral-7B-GGUF with llama.cpp
47
+ promptTemplate: llamacpp.prompt.ChatML,
48
+ contextWindowSize: 4096,
49
+ maxGenerationTokens: 512,
50
+ })
51
+ .withChatPrompt();
52
+ ```
53
+
54
+ ### Changed
55
+
56
+ - **breaking change**: renamed `response` to `rawResponse` when using `fullResponse: true` setting.
57
+ - **breaking change**: renamed `llamacpp.TextGenerator` to `llamacpp.CompletionTextGenerator`.
58
+
59
+ ### Removed
60
+
61
+ - **breaking change**: removed `.withTextPromptTemplate` on `LlamaCppCompletionModel`.
62
+
3
63
  ## v0.117.0 - 2024-01-06
4
64
 
5
65
  ### Added
package/README.md CHANGED
@@ -424,14 +424,15 @@ const text = await generateText(
424
424
  #### Instruction Prompt Example
425
425
 
426
426
  ```ts
427
- // example assumes you are running https://huggingface.co/TheBloke/Llama-2-7B-GGUF with llama.cpp
428
427
  const text = await generateText(
429
428
  llamacpp
430
- .TextGenerator({
429
+ .CompletionTextGenerator({
430
+ // run https://huggingface.co/TheBloke/Llama-2-7B-Chat-GGUF with llama.cpp
431
+ promptTemplate: llamacpp.prompt.Llama2, // Set prompt template
431
432
  contextWindowSize: 4096, // Llama 2 context window size
432
- maxGenerationTokens: 1000,
433
+ maxGenerationTokens: 512,
433
434
  })
434
- .withTextPromptTemplate(Llama2Prompt.instruction()),
435
+ .withInstructionPrompt(),
435
436
  {
436
437
  system: "You are a story writer.",
437
438
  instruction: "Write a short story about a robot learning to love.",
@@ -503,11 +504,11 @@ const image = await generateImage(
503
504
 
504
505
  ### Metadata and original responses
505
506
 
506
- ModelFusion model functions return rich responses that include the original response and metadata when you set the `fullResponse` option to `true`.
507
+ ModelFusion model functions return rich responses that include the raw (original) response and metadata when you set the `fullResponse` option to `true`.
507
508
 
508
509
  ```ts
509
- // access the full response (needs to be typed) and the metadata:
510
- const { text, response, metadata } = await generateText(
510
+ // access the raw response (needs to be typed) and the metadata:
511
+ const { text, rawResponse, metadata } = await generateText(
511
512
  openai.CompletionTextGenerator({
512
513
  model: "gpt-3.5-turbo-instruct",
513
514
  maxGenerationTokens: 1000,
@@ -519,8 +520,8 @@ const { text, response, metadata } = await generateText(
519
520
 
520
521
  console.log(metadata);
521
522
 
522
- // cast to the response type:
523
- for (const choice of (response as OpenAICompletionResponse).choices) {
523
+ // cast to the raw response type:
524
+ for (const choice of (rawResponse as OpenAICompletionResponse).choices) {
524
525
  console.log(choice.text);
525
526
  }
526
527
  ```
@@ -36,11 +36,11 @@ const detailedObjectObserver = {
36
36
  // Remove the "response" property from the result (if any):
37
37
  if (event.eventType === "finished" &&
38
38
  event.result != null &&
39
- "response" in event.result &&
40
- event.result?.response != null) {
39
+ "rawResponse" in event.result &&
40
+ event.result?.rawResponse != null) {
41
41
  event = {
42
42
  ...event,
43
- result: Object.fromEntries(Object.entries(event.result).filter(([k]) => k !== "response")
43
+ result: Object.fromEntries(Object.entries(event.result).filter(([k]) => k !== "rawResponse")
44
44
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
45
45
  ),
46
46
  };
@@ -73,11 +73,11 @@ const detailedJsonObserver = {
73
73
  // Remove the "response" property from the result (if any):
74
74
  if (event.eventType === "finished" &&
75
75
  event.result != null &&
76
- "response" in event.result &&
77
- event.result?.response != null) {
76
+ "rawResponse" in event.result &&
77
+ event.result?.rawResponse != null) {
78
78
  event = {
79
79
  ...event,
80
- result: Object.fromEntries(Object.entries(event.result).filter(([k]) => k !== "response")
80
+ result: Object.fromEntries(Object.entries(event.result).filter(([k]) => k !== "rawResponse")
81
81
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
82
82
  ),
83
83
  };
@@ -32,11 +32,11 @@ const detailedObjectObserver = {
32
32
  // Remove the "response" property from the result (if any):
33
33
  if (event.eventType === "finished" &&
34
34
  event.result != null &&
35
- "response" in event.result &&
36
- event.result?.response != null) {
35
+ "rawResponse" in event.result &&
36
+ event.result?.rawResponse != null) {
37
37
  event = {
38
38
  ...event,
39
- result: Object.fromEntries(Object.entries(event.result).filter(([k]) => k !== "response")
39
+ result: Object.fromEntries(Object.entries(event.result).filter(([k]) => k !== "rawResponse")
40
40
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
41
41
  ),
42
42
  };
@@ -69,11 +69,11 @@ const detailedJsonObserver = {
69
69
  // Remove the "response" property from the result (if any):
70
70
  if (event.eventType === "finished" &&
71
71
  event.result != null &&
72
- "response" in event.result &&
73
- event.result?.response != null) {
72
+ "rawResponse" in event.result &&
73
+ event.result?.rawResponse != null) {
74
74
  event = {
75
75
  ...event,
76
- result: Object.fromEntries(Object.entries(event.result).filter(([k]) => k !== "response")
76
+ result: Object.fromEntries(Object.entries(event.result).filter(([k]) => k !== "rawResponse")
77
77
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
78
78
  ),
79
79
  };
@@ -22,7 +22,7 @@ export interface BaseModelCallStartedEvent extends BaseFunctionStartedEvent {
22
22
  }
23
23
  export type BaseModelCallFinishedEventResult = {
24
24
  status: "success";
25
- response: unknown;
25
+ rawResponse: unknown;
26
26
  value: unknown;
27
27
  /**
28
28
  * Optional usage information for the model call. The type depends on the call type.
@@ -6,7 +6,7 @@ export interface EmbeddingStartedEvent extends BaseModelCallStartedEvent {
6
6
  }
7
7
  export type EmbeddingFinishedEventResult = {
8
8
  status: "success";
9
- response: unknown;
9
+ rawResponse: unknown;
10
10
  value: Vector | Array<Vector>;
11
11
  } | {
12
12
  status: "error";
@@ -17,7 +17,7 @@ export interface EmbeddingModel<VALUE, SETTINGS extends EmbeddingModelSettings =
17
17
  */
18
18
  readonly isParallelizable: boolean;
19
19
  doEmbedValues(values: VALUE[], options: FunctionCallOptions): PromiseLike<{
20
- response: unknown;
20
+ rawResponse: unknown;
21
21
  embeddings: Vector[];
22
22
  }>;
23
23
  }
@@ -32,13 +32,13 @@ async function embedMany(model, values, options) {
32
32
  responses.push(response);
33
33
  }
34
34
  }
35
- const rawResponses = responses.map((response) => response.response);
35
+ const rawResponses = responses.map((response) => response.rawResponse);
36
36
  const embeddings = [];
37
37
  for (const response of responses) {
38
38
  embeddings.push(...response.embeddings);
39
39
  }
40
40
  return {
41
- response: rawResponses,
41
+ rawResponse: rawResponses,
42
42
  extractedValue: embeddings,
43
43
  };
44
44
  },
@@ -46,7 +46,7 @@ async function embedMany(model, values, options) {
46
46
  return options?.fullResponse
47
47
  ? {
48
48
  embeddings: fullResponse.value,
49
- response: fullResponse.response,
49
+ rawResponse: fullResponse.rawResponse,
50
50
  metadata: fullResponse.metadata,
51
51
  }
52
52
  : fullResponse.value;
@@ -61,7 +61,7 @@ async function embed(model, value, options) {
61
61
  generateResponse: async (options) => {
62
62
  const result = await model.doEmbedValues([value], options);
63
63
  return {
64
- response: result.response,
64
+ rawResponse: result.rawResponse,
65
65
  extractedValue: result.embeddings[0],
66
66
  };
67
67
  },
@@ -69,7 +69,7 @@ async function embed(model, value, options) {
69
69
  return options?.fullResponse
70
70
  ? {
71
71
  embedding: fullResponse.value,
72
- response: fullResponse.response,
72
+ rawResponse: fullResponse.rawResponse,
73
73
  metadata: fullResponse.metadata,
74
74
  }
75
75
  : fullResponse.value;
@@ -29,7 +29,7 @@ export declare function embedMany<VALUE>(model: EmbeddingModel<VALUE, EmbeddingM
29
29
  fullResponse: true;
30
30
  }): Promise<{
31
31
  embeddings: Vector[];
32
- response: unknown;
32
+ rawResponse: unknown;
33
33
  metadata: ModelCallMetadata;
34
34
  }>;
35
35
  /**
@@ -56,6 +56,6 @@ export declare function embed<VALUE>(model: EmbeddingModel<VALUE, EmbeddingModel
56
56
  fullResponse: true;
57
57
  }): Promise<{
58
58
  embedding: Vector;
59
- response: unknown;
59
+ rawResponse: unknown;
60
60
  metadata: ModelCallMetadata;
61
61
  }>;
@@ -29,13 +29,13 @@ export async function embedMany(model, values, options) {
29
29
  responses.push(response);
30
30
  }
31
31
  }
32
- const rawResponses = responses.map((response) => response.response);
32
+ const rawResponses = responses.map((response) => response.rawResponse);
33
33
  const embeddings = [];
34
34
  for (const response of responses) {
35
35
  embeddings.push(...response.embeddings);
36
36
  }
37
37
  return {
38
- response: rawResponses,
38
+ rawResponse: rawResponses,
39
39
  extractedValue: embeddings,
40
40
  };
41
41
  },
@@ -43,7 +43,7 @@ export async function embedMany(model, values, options) {
43
43
  return options?.fullResponse
44
44
  ? {
45
45
  embeddings: fullResponse.value,
46
- response: fullResponse.response,
46
+ rawResponse: fullResponse.rawResponse,
47
47
  metadata: fullResponse.metadata,
48
48
  }
49
49
  : fullResponse.value;
@@ -57,7 +57,7 @@ export async function embed(model, value, options) {
57
57
  generateResponse: async (options) => {
58
58
  const result = await model.doEmbedValues([value], options);
59
59
  return {
60
- response: result.response,
60
+ rawResponse: result.rawResponse,
61
61
  extractedValue: result.embeddings[0],
62
62
  };
63
63
  },
@@ -65,7 +65,7 @@ export async function embed(model, value, options) {
65
65
  return options?.fullResponse
66
66
  ? {
67
67
  embedding: fullResponse.value,
68
- response: fullResponse.response,
68
+ rawResponse: fullResponse.rawResponse,
69
69
  metadata: fullResponse.metadata,
70
70
  }
71
71
  : fullResponse.value;
@@ -78,7 +78,7 @@ async function executeStandardCall({ model, options, input, functionType, genera
78
78
  });
79
79
  throw result.error;
80
80
  }
81
- const response = result.value.response;
81
+ const rawResponse = result.value.rawResponse;
82
82
  const value = result.value.extractedValue;
83
83
  const usage = result.value.usage;
84
84
  eventSource.notify({
@@ -87,13 +87,13 @@ async function executeStandardCall({ model, options, input, functionType, genera
87
87
  result: {
88
88
  status: "success",
89
89
  usage,
90
- response,
90
+ rawResponse,
91
91
  value,
92
92
  },
93
93
  });
94
94
  return {
95
95
  value,
96
- response,
96
+ rawResponse,
97
97
  metadata: {
98
98
  model: model.modelInformation,
99
99
  callId: finishMetadata.callId,
@@ -8,12 +8,12 @@ export declare function executeStandardCall<VALUE, MODEL extends Model<ModelSett
8
8
  input: unknown;
9
9
  functionType: ModelCallStartedEvent["functionType"];
10
10
  generateResponse: (options: FunctionCallOptions) => PromiseLike<{
11
- response: unknown;
11
+ rawResponse: unknown;
12
12
  extractedValue: VALUE;
13
13
  usage?: unknown;
14
14
  }>;
15
15
  }): Promise<{
16
16
  value: VALUE;
17
- response: unknown;
17
+ rawResponse: unknown;
18
18
  metadata: ModelCallMetadata;
19
19
  }>;
@@ -75,7 +75,7 @@ export async function executeStandardCall({ model, options, input, functionType,
75
75
  });
76
76
  throw result.error;
77
77
  }
78
- const response = result.value.response;
78
+ const rawResponse = result.value.rawResponse;
79
79
  const value = result.value.extractedValue;
80
80
  const usage = result.value.usage;
81
81
  eventSource.notify({
@@ -84,13 +84,13 @@ export async function executeStandardCall({ model, options, input, functionType,
84
84
  result: {
85
85
  status: "success",
86
86
  usage,
87
- response,
87
+ rawResponse,
88
88
  value,
89
89
  },
90
90
  });
91
91
  return {
92
92
  value,
93
- response,
93
+ rawResponse,
94
94
  metadata: {
95
95
  model: model.modelInformation,
96
96
  callId: finishMetadata.callId,
@@ -4,7 +4,7 @@ export interface ImageGenerationStartedEvent extends BaseModelCallStartedEvent {
4
4
  }
5
5
  export type ImageGenerationFinishedEventResult = {
6
6
  status: "success";
7
- response: unknown;
7
+ rawResponse: unknown;
8
8
  value: string;
9
9
  } | {
10
10
  status: "error";
@@ -15,7 +15,7 @@ export interface ImageGenerationModelSettings extends ModelSettings {
15
15
  }
16
16
  export interface ImageGenerationModel<PROMPT, SETTINGS extends ImageGenerationModelSettings = ImageGenerationModelSettings> extends Model<SETTINGS> {
17
17
  doGenerateImages(prompt: PROMPT, options: FunctionCallOptions): PromiseLike<{
18
- response: unknown;
18
+ rawResponse: unknown;
19
19
  base64Images: string[];
20
20
  }>;
21
21
  withPromptTemplate<INPUT_PROMPT>(promptTemplate: PromptTemplate<INPUT_PROMPT, PROMPT>): ImageGenerationModel<INPUT_PROMPT, SETTINGS>;
@@ -11,7 +11,7 @@ export declare class PromptTemplateImageGenerationModel<PROMPT, MODEL_PROMPT, SE
11
11
  get modelInformation(): import("../ModelInformation.js").ModelInformation;
12
12
  get settings(): SETTINGS;
13
13
  doGenerateImages(prompt: PROMPT, options: FunctionCallOptions): PromiseLike<{
14
- response: unknown;
14
+ rawResponse: unknown;
15
15
  base64Images: string[];
16
16
  }>;
17
17
  get settingsForEvent(): Partial<SETTINGS>;
@@ -11,7 +11,7 @@ async function generateImage(model, prompt, options) {
11
11
  generateResponse: async (options) => {
12
12
  const result = await model.doGenerateImages(prompt, options);
13
13
  return {
14
- response: result.response,
14
+ rawResponse: result.rawResponse,
15
15
  extractedValue: result.base64Images,
16
16
  };
17
17
  },
@@ -24,7 +24,7 @@ async function generateImage(model, prompt, options) {
24
24
  imageBase64: imagesBase64[0],
25
25
  images,
26
26
  imagesBase64,
27
- response: fullResponse.response,
27
+ rawResponse: fullResponse.rawResponse,
28
28
  metadata: fullResponse.metadata,
29
29
  }
30
30
  : images[0];
@@ -36,6 +36,6 @@ export declare function generateImage<PROMPT>(model: ImageGenerationModel<PROMPT
36
36
  imageBase64: string;
37
37
  images: Buffer[];
38
38
  imagesBase64: string[];
39
- response: unknown;
39
+ rawResponse: unknown;
40
40
  metadata: ModelCallMetadata;
41
41
  }>;
@@ -8,7 +8,7 @@ export async function generateImage(model, prompt, options) {
8
8
  generateResponse: async (options) => {
9
9
  const result = await model.doGenerateImages(prompt, options);
10
10
  return {
11
- response: result.response,
11
+ rawResponse: result.rawResponse,
12
12
  extractedValue: result.base64Images,
13
13
  };
14
14
  },
@@ -21,7 +21,7 @@ export async function generateImage(model, prompt, options) {
21
21
  imageBase64: imagesBase64[0],
22
22
  images,
23
23
  imagesBase64,
24
- response: fullResponse.response,
24
+ rawResponse: fullResponse.rawResponse,
25
25
  metadata: fullResponse.metadata,
26
26
  }
27
27
  : images[0];
@@ -6,7 +6,7 @@ export interface SpeechGenerationStartedEvent extends BaseModelCallStartedEvent
6
6
  }
7
7
  export type SpeechGenerationFinishedEventResult = {
8
8
  status: "success";
9
- response: unknown;
9
+ rawResponse: unknown;
10
10
  value: Buffer;
11
11
  } | {
12
12
  status: "error";
@@ -11,7 +11,7 @@ async function generateSpeech(model, text, options) {
11
11
  generateResponse: async (options) => {
12
12
  const response = await model.doGenerateSpeechStandard(text, options);
13
13
  return {
14
- response,
14
+ rawResponse: response,
15
15
  extractedValue: response,
16
16
  };
17
17
  },
@@ -19,7 +19,7 @@ async function generateSpeech(model, text, options) {
19
19
  return options?.fullResponse
20
20
  ? {
21
21
  speech: fullResponse.value,
22
- response: fullResponse.response,
22
+ rawResponse: fullResponse.rawResponse,
23
23
  metadata: fullResponse.metadata,
24
24
  }
25
25
  : fullResponse.value;
@@ -27,6 +27,6 @@ export declare function generateSpeech(model: SpeechGenerationModel<SpeechGenera
27
27
  fullResponse: true;
28
28
  }): Promise<{
29
29
  speech: Buffer;
30
- response: unknown;
30
+ rawResponse: unknown;
31
31
  metadata: ModelCallMetadata;
32
32
  }>;
@@ -8,7 +8,7 @@ export async function generateSpeech(model, text, options) {
8
8
  generateResponse: async (options) => {
9
9
  const response = await model.doGenerateSpeechStandard(text, options);
10
10
  return {
11
- response,
11
+ rawResponse: response,
12
12
  extractedValue: response,
13
13
  };
14
14
  },
@@ -16,7 +16,7 @@ export async function generateSpeech(model, text, options) {
16
16
  return options?.fullResponse
17
17
  ? {
18
18
  speech: fullResponse.value,
19
- response: fullResponse.response,
19
+ rawResponse: fullResponse.rawResponse,
20
20
  metadata: fullResponse.metadata,
21
21
  }
22
22
  : fullResponse.value;
@@ -29,8 +29,17 @@ class StructureFromTextGenerationModel {
29
29
  get settingsForEvent() {
30
30
  return this.model.settingsForEvent;
31
31
  }
32
+ getModelWithJsonOutput(schema) {
33
+ if (this.template.withJsonOutput != null) {
34
+ return this.template.withJsonOutput?.({
35
+ model: this.model,
36
+ schema,
37
+ });
38
+ }
39
+ return this.model;
40
+ }
32
41
  async doGenerateStructure(schema, prompt, options) {
33
- const { response, text } = await (0, generateText_js_1.generateText)(this.model, this.template.createPrompt(prompt, schema), {
42
+ const { rawResponse: response, text } = await (0, generateText_js_1.generateText)(this.getModelWithJsonOutput(schema), this.template.createPrompt(prompt, schema), {
34
43
  ...options,
35
44
  fullResponse: true,
36
45
  });
@@ -14,6 +14,7 @@ export declare class StructureFromTextGenerationModel<SOURCE_PROMPT, TARGET_PROM
14
14
  get modelInformation(): import("../ModelInformation.js").ModelInformation;
15
15
  get settings(): TextGenerationModelSettings;
16
16
  get settingsForEvent(): Partial<MODEL["settings"]>;
17
+ getModelWithJsonOutput(schema: Schema<unknown> & JsonSchemaProducer): MODEL;
17
18
  doGenerateStructure(schema: Schema<unknown> & JsonSchemaProducer, prompt: SOURCE_PROMPT, options?: FunctionOptions): Promise<{
18
19
  response: unknown;
19
20
  value: unknown;
@@ -26,8 +26,17 @@ export class StructureFromTextGenerationModel {
26
26
  get settingsForEvent() {
27
27
  return this.model.settingsForEvent;
28
28
  }
29
+ getModelWithJsonOutput(schema) {
30
+ if (this.template.withJsonOutput != null) {
31
+ return this.template.withJsonOutput?.({
32
+ model: this.model,
33
+ schema,
34
+ });
35
+ }
36
+ return this.model;
37
+ }
29
38
  async doGenerateStructure(schema, prompt, options) {
30
- const { response, text } = await generateText(this.model, this.template.createPrompt(prompt, schema), {
39
+ const { rawResponse: response, text } = await generateText(this.getModelWithJsonOutput(schema), this.template.createPrompt(prompt, schema), {
31
40
  ...options,
32
41
  fullResponse: true,
33
42
  });
@@ -6,6 +6,12 @@ import { InstructionPrompt } from "../generate-text/prompt-template/InstructionP
6
6
  export type StructureFromTextPromptTemplate<SOURCE_PROMPT, TARGET_PROMPT> = {
7
7
  createPrompt: (prompt: SOURCE_PROMPT, schema: Schema<unknown> & JsonSchemaProducer) => TARGET_PROMPT;
8
8
  extractStructure: (response: string) => unknown;
9
+ withJsonOutput?({ model, schema, }: {
10
+ model: {
11
+ withJsonOutput(schema: Schema<unknown> & JsonSchemaProducer): typeof model;
12
+ };
13
+ schema: Schema<unknown> & JsonSchemaProducer;
14
+ }): typeof model;
9
15
  };
10
16
  export type FlexibleStructureFromTextPromptTemplate<SOURCE_PROMPT, INTERMEDIATE_PROMPT> = {
11
17
  createPrompt: (prompt: SOURCE_PROMPT, schema: Schema<unknown> & JsonSchemaProducer) => INTERMEDIATE_PROMPT;
@@ -14,6 +20,11 @@ export type FlexibleStructureFromTextPromptTemplate<SOURCE_PROMPT, INTERMEDIATE_
14
20
  withTextPrompt(): TextStreamingModel<string>;
15
21
  withInstructionPrompt(): TextStreamingModel<InstructionPrompt>;
16
22
  withChatPrompt(): TextStreamingModel<ChatPrompt>;
17
- withJsonOutput?: () => typeof model;
18
23
  }) => TextStreamingModel<INTERMEDIATE_PROMPT>;
24
+ withJsonOutput?({ model, schema, }: {
25
+ model: {
26
+ withJsonOutput(schema: Schema<unknown> & JsonSchemaProducer): typeof model;
27
+ };
28
+ schema: Schema<unknown> & JsonSchemaProducer;
29
+ }): typeof model;
19
30
  };
@@ -3,35 +3,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.StructureFromTextStreamingModel = void 0;
4
4
  const streamText_js_1 = require("../../model-function/generate-text/streamText.cjs");
5
5
  const AsyncQueue_js_1 = require("../../util/AsyncQueue.cjs");
6
- const generateText_js_1 = require("../generate-text/generateText.cjs");
7
6
  const StructureFromTextGenerationModel_js_1 = require("./StructureFromTextGenerationModel.cjs");
8
- const StructureParseError_js_1 = require("./StructureParseError.cjs");
9
7
  const parsePartialJson_js_1 = require("./parsePartialJson.cjs");
10
8
  class StructureFromTextStreamingModel extends StructureFromTextGenerationModel_js_1.StructureFromTextGenerationModel {
11
9
  constructor(options) {
12
10
  super(options);
13
11
  }
14
- async doGenerateStructure(schema, prompt, options) {
15
- const { response, text } = await (0, generateText_js_1.generateText)(this.model, this.template.createPrompt(prompt, schema), {
16
- ...options,
17
- fullResponse: true,
18
- });
19
- try {
20
- return {
21
- response,
22
- value: this.template.extractStructure(text),
23
- valueText: text,
24
- };
25
- }
26
- catch (error) {
27
- throw new StructureParseError_js_1.StructureParseError({
28
- valueText: text,
29
- cause: error,
30
- });
31
- }
32
- }
33
12
  async doStreamStructure(schema, prompt, options) {
34
- const textStream = await (0, streamText_js_1.streamText)(this.model, this.template.createPrompt(prompt, schema), options);
13
+ const textStream = await (0, streamText_js_1.streamText)(this.getModelWithJsonOutput(schema), this.template.createPrompt(prompt, schema), options);
35
14
  const queue = new AsyncQueue_js_1.AsyncQueue();
36
15
  // run async on purpose:
37
16
  (async () => {
@@ -12,11 +12,6 @@ export declare class StructureFromTextStreamingModel<SOURCE_PROMPT, TARGET_PROMP
12
12
  model: MODEL;
13
13
  template: StructureFromTextPromptTemplate<SOURCE_PROMPT, TARGET_PROMPT>;
14
14
  });
15
- doGenerateStructure(schema: Schema<unknown> & JsonSchemaProducer, prompt: SOURCE_PROMPT, options?: FunctionOptions): Promise<{
16
- response: unknown;
17
- value: unknown;
18
- valueText: string;
19
- }>;
20
15
  doStreamStructure(schema: Schema<unknown> & JsonSchemaProducer, prompt: SOURCE_PROMPT, options?: FunctionOptions): Promise<AsyncQueue<Delta<string>>>;
21
16
  extractStructureTextDelta(delta: unknown): string;
22
17
  parseAccumulatedStructureText(accumulatedText: string): unknown;