modelfusion 0.109.0 → 0.111.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 (230) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/core/api/ApiFacade.cjs +20 -0
  3. package/core/api/ApiFacade.d.ts +4 -0
  4. package/core/api/ApiFacade.js +4 -0
  5. package/core/api/BaseUrlApiConfiguration.cjs +47 -5
  6. package/core/api/BaseUrlApiConfiguration.d.ts +23 -6
  7. package/core/api/BaseUrlApiConfiguration.js +45 -4
  8. package/core/api/BaseUrlApiConfiguration.test.cjs +11 -0
  9. package/core/api/BaseUrlApiConfiguration.test.d.ts +1 -0
  10. package/core/api/BaseUrlApiConfiguration.test.js +9 -0
  11. package/core/api/callWithRetryAndThrottle.cjs +3 -3
  12. package/core/api/callWithRetryAndThrottle.js +3 -3
  13. package/core/api/index.cjs +15 -2
  14. package/core/api/index.d.ts +2 -2
  15. package/core/api/index.js +2 -2
  16. package/core/api/postToApi.cjs +28 -5
  17. package/core/api/postToApi.d.ts +5 -4
  18. package/core/api/postToApi.js +26 -4
  19. package/core/api/throttleOff.cjs +8 -0
  20. package/core/api/throttleOff.d.ts +5 -0
  21. package/core/api/throttleOff.js +4 -0
  22. package/{extension → internal}/index.cjs +2 -7
  23. package/{extension → internal}/index.d.ts +1 -1
  24. package/{extension → internal}/index.js +1 -1
  25. package/model-function/generate-structure/generateStructure.d.ts +1 -1
  26. package/model-provider/anthropic/AnthropicApiConfiguration.cjs +14 -6
  27. package/model-provider/anthropic/AnthropicApiConfiguration.d.ts +7 -8
  28. package/model-provider/anthropic/AnthropicApiConfiguration.js +15 -7
  29. package/model-provider/anthropic/AnthropicError.cjs +7 -27
  30. package/model-provider/anthropic/AnthropicError.d.ts +21 -16
  31. package/model-provider/anthropic/AnthropicError.js +7 -25
  32. package/model-provider/anthropic/AnthropicFacade.cjs +10 -1
  33. package/model-provider/anthropic/AnthropicFacade.d.ts +9 -0
  34. package/model-provider/anthropic/AnthropicFacade.js +8 -0
  35. package/model-provider/anthropic/AnthropicTextGenerationModel.cjs +22 -24
  36. package/model-provider/anthropic/AnthropicTextGenerationModel.js +23 -25
  37. package/model-provider/anthropic/index.cjs +1 -4
  38. package/model-provider/anthropic/index.d.ts +1 -1
  39. package/model-provider/anthropic/index.js +0 -1
  40. package/model-provider/automatic1111/Automatic1111ApiConfiguration.cjs +12 -4
  41. package/model-provider/automatic1111/Automatic1111ApiConfiguration.d.ts +3 -3
  42. package/model-provider/automatic1111/Automatic1111ApiConfiguration.js +12 -4
  43. package/model-provider/automatic1111/Automatic1111Error.cjs +3 -3
  44. package/model-provider/automatic1111/Automatic1111Error.d.ts +13 -3
  45. package/model-provider/automatic1111/Automatic1111Error.js +4 -4
  46. package/model-provider/automatic1111/Automatic1111Facade.cjs +9 -9
  47. package/model-provider/automatic1111/Automatic1111Facade.d.ts +6 -6
  48. package/model-provider/automatic1111/Automatic1111Facade.js +7 -7
  49. package/model-provider/automatic1111/Automatic1111ImageGenerationModel.cjs +11 -7
  50. package/model-provider/automatic1111/Automatic1111ImageGenerationModel.js +11 -7
  51. package/model-provider/cohere/CohereApiConfiguration.cjs +14 -6
  52. package/model-provider/cohere/CohereApiConfiguration.d.ts +7 -8
  53. package/model-provider/cohere/CohereApiConfiguration.js +15 -7
  54. package/model-provider/cohere/CohereError.cjs +8 -43
  55. package/model-provider/cohere/CohereError.d.ts +9 -16
  56. package/model-provider/cohere/CohereError.js +8 -41
  57. package/model-provider/cohere/CohereFacade.cjs +12 -3
  58. package/model-provider/cohere/CohereFacade.d.ts +11 -2
  59. package/model-provider/cohere/CohereFacade.js +10 -2
  60. package/model-provider/cohere/CohereTextEmbeddingModel.cjs +18 -22
  61. package/model-provider/cohere/CohereTextEmbeddingModel.js +18 -22
  62. package/model-provider/cohere/CohereTextGenerationModel.cjs +31 -39
  63. package/model-provider/cohere/CohereTextGenerationModel.d.ts +110 -8
  64. package/model-provider/cohere/CohereTextGenerationModel.js +31 -39
  65. package/model-provider/cohere/CohereTokenizer.cjs +32 -41
  66. package/model-provider/cohere/CohereTokenizer.d.ts +2 -2
  67. package/model-provider/cohere/CohereTokenizer.js +32 -41
  68. package/model-provider/cohere/index.cjs +1 -3
  69. package/model-provider/cohere/index.d.ts +1 -1
  70. package/model-provider/cohere/index.js +0 -1
  71. package/model-provider/elevenlabs/ElevenLabsApiConfiguration.cjs +14 -6
  72. package/model-provider/elevenlabs/ElevenLabsApiConfiguration.d.ts +7 -8
  73. package/model-provider/elevenlabs/ElevenLabsApiConfiguration.js +15 -7
  74. package/model-provider/elevenlabs/ElevenLabsFacade.cjs +10 -1
  75. package/model-provider/elevenlabs/ElevenLabsFacade.d.ts +9 -0
  76. package/model-provider/elevenlabs/ElevenLabsFacade.js +8 -0
  77. package/model-provider/elevenlabs/ElevenLabsSpeechModel.cjs +42 -53
  78. package/model-provider/elevenlabs/ElevenLabsSpeechModel.js +44 -55
  79. package/model-provider/huggingface/HuggingFaceApiConfiguration.cjs +14 -6
  80. package/model-provider/huggingface/HuggingFaceApiConfiguration.d.ts +7 -8
  81. package/model-provider/huggingface/HuggingFaceApiConfiguration.js +15 -7
  82. package/model-provider/huggingface/HuggingFaceError.cjs +7 -29
  83. package/model-provider/huggingface/HuggingFaceError.d.ts +9 -16
  84. package/model-provider/huggingface/HuggingFaceError.js +7 -27
  85. package/model-provider/huggingface/HuggingFaceFacade.cjs +10 -1
  86. package/model-provider/huggingface/HuggingFaceFacade.d.ts +9 -0
  87. package/model-provider/huggingface/HuggingFaceFacade.js +8 -0
  88. package/model-provider/huggingface/HuggingFaceTextEmbeddingModel.cjs +17 -27
  89. package/model-provider/huggingface/HuggingFaceTextEmbeddingModel.js +17 -27
  90. package/model-provider/huggingface/HuggingFaceTextGenerationModel.cjs +22 -23
  91. package/model-provider/huggingface/HuggingFaceTextGenerationModel.js +22 -23
  92. package/model-provider/huggingface/index.cjs +1 -3
  93. package/model-provider/huggingface/index.d.ts +1 -1
  94. package/model-provider/huggingface/index.js +0 -1
  95. package/model-provider/llamacpp/LlamaCppApiConfiguration.cjs +13 -6
  96. package/model-provider/llamacpp/LlamaCppApiConfiguration.d.ts +7 -9
  97. package/model-provider/llamacpp/LlamaCppApiConfiguration.js +14 -7
  98. package/model-provider/llamacpp/LlamaCppCompletionModel.cjs +4 -4
  99. package/model-provider/llamacpp/LlamaCppCompletionModel.d.ts +173 -5
  100. package/model-provider/llamacpp/LlamaCppCompletionModel.js +4 -4
  101. package/model-provider/llamacpp/LlamaCppError.cjs +7 -27
  102. package/model-provider/llamacpp/LlamaCppError.d.ts +9 -16
  103. package/model-provider/llamacpp/LlamaCppError.js +7 -25
  104. package/model-provider/llamacpp/LlamaCppFacade.cjs +10 -2
  105. package/model-provider/llamacpp/LlamaCppFacade.d.ts +8 -1
  106. package/model-provider/llamacpp/LlamaCppFacade.js +8 -1
  107. package/model-provider/llamacpp/LlamaCppTextEmbeddingModel.cjs +10 -14
  108. package/model-provider/llamacpp/LlamaCppTextEmbeddingModel.js +10 -14
  109. package/model-provider/llamacpp/LlamaCppTokenizer.cjs +14 -18
  110. package/model-provider/llamacpp/LlamaCppTokenizer.js +14 -18
  111. package/model-provider/llamacpp/index.cjs +1 -3
  112. package/model-provider/llamacpp/index.d.ts +1 -1
  113. package/model-provider/llamacpp/index.js +0 -1
  114. package/model-provider/lmnt/LmntApiConfiguration.cjs +14 -6
  115. package/model-provider/lmnt/LmntApiConfiguration.d.ts +7 -8
  116. package/model-provider/lmnt/LmntApiConfiguration.js +15 -7
  117. package/model-provider/lmnt/LmntFacade.cjs +11 -2
  118. package/model-provider/lmnt/LmntFacade.d.ts +10 -1
  119. package/model-provider/lmnt/LmntFacade.js +9 -1
  120. package/model-provider/lmnt/LmntSpeechModel.cjs +53 -41
  121. package/model-provider/lmnt/LmntSpeechModel.d.ts +51 -3
  122. package/model-provider/lmnt/LmntSpeechModel.js +54 -42
  123. package/model-provider/mistral/MistralApiConfiguration.cjs +14 -6
  124. package/model-provider/mistral/MistralApiConfiguration.d.ts +9 -11
  125. package/model-provider/mistral/MistralApiConfiguration.js +15 -7
  126. package/model-provider/mistral/MistralChatModel.cjs +4 -4
  127. package/model-provider/mistral/MistralChatModel.d.ts +48 -3
  128. package/model-provider/mistral/MistralChatModel.js +5 -5
  129. package/model-provider/mistral/MistralError.cjs +3 -3
  130. package/model-provider/mistral/MistralError.d.ts +15 -3
  131. package/model-provider/mistral/MistralError.js +4 -4
  132. package/model-provider/mistral/MistralFacade.cjs +5 -1
  133. package/model-provider/mistral/MistralFacade.d.ts +10 -3
  134. package/model-provider/mistral/MistralFacade.js +6 -2
  135. package/model-provider/mistral/MistralTextEmbeddingModel.cjs +2 -1
  136. package/model-provider/mistral/MistralTextEmbeddingModel.js +2 -1
  137. package/model-provider/ollama/OllamaApiConfiguration.cjs +13 -6
  138. package/model-provider/ollama/OllamaApiConfiguration.d.ts +7 -10
  139. package/model-provider/ollama/OllamaApiConfiguration.js +14 -7
  140. package/model-provider/ollama/OllamaChatModel.cjs +4 -4
  141. package/model-provider/ollama/OllamaChatModel.d.ts +46 -5
  142. package/model-provider/ollama/OllamaChatModel.js +5 -5
  143. package/model-provider/ollama/OllamaCompletionModel.cjs +4 -4
  144. package/model-provider/ollama/OllamaCompletionModel.d.ts +40 -5
  145. package/model-provider/ollama/OllamaCompletionModel.js +5 -5
  146. package/model-provider/ollama/OllamaError.cjs +3 -3
  147. package/model-provider/ollama/OllamaError.d.ts +7 -3
  148. package/model-provider/ollama/OllamaError.js +4 -4
  149. package/model-provider/ollama/OllamaFacade.cjs +6 -2
  150. package/model-provider/ollama/OllamaFacade.d.ts +8 -3
  151. package/model-provider/ollama/OllamaFacade.js +6 -2
  152. package/model-provider/ollama/OllamaTextEmbeddingModel.cjs +15 -16
  153. package/model-provider/ollama/OllamaTextEmbeddingModel.js +15 -16
  154. package/model-provider/openai/AbstractOpenAIChatModel.cjs +4 -4
  155. package/model-provider/openai/AbstractOpenAIChatModel.d.ts +148 -2
  156. package/model-provider/openai/AbstractOpenAIChatModel.js +4 -4
  157. package/model-provider/openai/AbstractOpenAICompletionModel.cjs +30 -32
  158. package/model-provider/openai/AbstractOpenAICompletionModel.js +30 -32
  159. package/model-provider/openai/AzureOpenAIApiConfiguration.d.ts +9 -8
  160. package/model-provider/openai/OpenAIApiConfiguration.cjs +14 -6
  161. package/model-provider/openai/OpenAIApiConfiguration.d.ts +7 -8
  162. package/model-provider/openai/OpenAIApiConfiguration.js +15 -7
  163. package/model-provider/openai/OpenAICompletionModel.cjs +3 -91
  164. package/model-provider/openai/OpenAICompletionModel.d.ts +3 -71
  165. package/model-provider/openai/OpenAICompletionModel.js +3 -91
  166. package/model-provider/openai/OpenAIError.cjs +8 -8
  167. package/model-provider/openai/OpenAIError.d.ts +27 -3
  168. package/model-provider/openai/OpenAIError.js +9 -9
  169. package/model-provider/openai/OpenAIFacade.cjs +23 -2
  170. package/model-provider/openai/OpenAIFacade.d.ts +20 -2
  171. package/model-provider/openai/OpenAIFacade.js +20 -1
  172. package/model-provider/openai/OpenAIImageGenerationModel.cjs +20 -21
  173. package/model-provider/openai/OpenAIImageGenerationModel.d.ts +1 -1
  174. package/model-provider/openai/OpenAIImageGenerationModel.js +20 -21
  175. package/model-provider/openai/OpenAISpeechModel.cjs +17 -22
  176. package/model-provider/openai/OpenAISpeechModel.js +17 -22
  177. package/model-provider/openai/OpenAITextEmbeddingModel.cjs +18 -23
  178. package/model-provider/openai/OpenAITextEmbeddingModel.js +18 -23
  179. package/model-provider/openai/OpenAITranscriptionModel.cjs +42 -48
  180. package/model-provider/openai/OpenAITranscriptionModel.d.ts +14 -10
  181. package/model-provider/openai/OpenAITranscriptionModel.js +42 -48
  182. package/model-provider/openai/TikTokenTokenizer.cjs +0 -18
  183. package/model-provider/openai/TikTokenTokenizer.d.ts +3 -3
  184. package/model-provider/openai/TikTokenTokenizer.js +0 -18
  185. package/model-provider/openai-compatible/FireworksAIApiConfiguration.cjs +11 -7
  186. package/model-provider/openai-compatible/FireworksAIApiConfiguration.d.ts +4 -9
  187. package/model-provider/openai-compatible/FireworksAIApiConfiguration.js +12 -8
  188. package/model-provider/openai-compatible/OpenAICompatibleFacade.cjs +25 -1
  189. package/model-provider/openai-compatible/OpenAICompatibleFacade.d.ts +23 -0
  190. package/model-provider/openai-compatible/OpenAICompatibleFacade.js +22 -0
  191. package/model-provider/openai-compatible/TogetherAIApiConfiguration.cjs +11 -7
  192. package/model-provider/openai-compatible/TogetherAIApiConfiguration.d.ts +4 -9
  193. package/model-provider/openai-compatible/TogetherAIApiConfiguration.js +12 -8
  194. package/model-provider/stability/StabilityApiConfiguration.cjs +13 -12
  195. package/model-provider/stability/StabilityApiConfiguration.d.ts +4 -4
  196. package/model-provider/stability/StabilityApiConfiguration.js +13 -12
  197. package/model-provider/stability/StabilityError.cjs +3 -3
  198. package/model-provider/stability/StabilityError.d.ts +7 -3
  199. package/model-provider/stability/StabilityError.js +4 -4
  200. package/model-provider/stability/StabilityFacade.cjs +9 -9
  201. package/model-provider/stability/StabilityFacade.d.ts +8 -8
  202. package/model-provider/stability/StabilityFacade.js +7 -7
  203. package/model-provider/stability/StabilityImageGenerationModel.cjs +2 -1
  204. package/model-provider/stability/StabilityImageGenerationModel.js +2 -1
  205. package/model-provider/whispercpp/WhisperCppApiConfiguration.cjs +13 -6
  206. package/model-provider/whispercpp/WhisperCppApiConfiguration.d.ts +7 -10
  207. package/model-provider/whispercpp/WhisperCppApiConfiguration.js +14 -7
  208. package/model-provider/whispercpp/WhisperCppFacade.cjs +9 -5
  209. package/model-provider/whispercpp/WhisperCppFacade.d.ts +7 -2
  210. package/model-provider/whispercpp/WhisperCppFacade.js +8 -4
  211. package/model-provider/whispercpp/WhisperCppTranscriptionModel.cjs +5 -2
  212. package/model-provider/whispercpp/WhisperCppTranscriptionModel.js +6 -3
  213. package/package.json +5 -5
  214. package/tool/WebSearchTool.cjs +2 -2
  215. package/tool/WebSearchTool.d.ts +1 -2
  216. package/tool/WebSearchTool.js +3 -3
  217. package/vector-index/memory/MemoryVectorIndex.cjs +2 -2
  218. package/vector-index/memory/MemoryVectorIndex.js +3 -3
  219. package/core/api/BaseUrlPartsApiConfiguration.cjs +0 -53
  220. package/core/api/BaseUrlPartsApiConfiguration.d.ts +0 -26
  221. package/core/api/BaseUrlPartsApiConfiguration.js +0 -49
  222. package/core/api/throttleUnlimitedConcurrency.cjs +0 -8
  223. package/core/api/throttleUnlimitedConcurrency.d.ts +0 -5
  224. package/core/api/throttleUnlimitedConcurrency.js +0 -4
  225. package/model-provider/elevenlabs/ElevenLabsError.cjs +0 -30
  226. package/model-provider/elevenlabs/ElevenLabsError.d.ts +0 -3
  227. package/model-provider/elevenlabs/ElevenLabsError.js +0 -26
  228. package/model-provider/lmnt/LmntError.cjs +0 -30
  229. package/model-provider/lmnt/LmntError.d.ts +0 -3
  230. package/model-provider/lmnt/LmntError.js +0 -26
@@ -1,15 +1,16 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.LmntSpeechModel = void 0;
4
- const AbstractModel_js_1 = require("../../model-function/AbstractModel.cjs");
4
+ const zod_1 = require("zod");
5
5
  const callWithRetryAndThrottle_js_1 = require("../../core/api/callWithRetryAndThrottle.cjs");
6
6
  const postToApi_js_1 = require("../../core/api/postToApi.cjs");
7
+ const ZodSchema_js_1 = require("../../core/schema/ZodSchema.cjs");
8
+ const AbstractModel_js_1 = require("../../model-function/AbstractModel.cjs");
7
9
  const LmntApiConfiguration_js_1 = require("./LmntApiConfiguration.cjs");
8
- const LmntError_js_1 = require("./LmntError.cjs");
9
10
  /**
10
11
  * Synthesize speech using the LMNT API.
11
12
  *
12
- * @see https://www.lmnt.com/docs/rest/#synthesize-speech
13
+ * @see https://docs.lmnt.com/api-reference/speech/synthesize-speech-1
13
14
  */
14
15
  class LmntSpeechModel extends AbstractModel_js_1.AbstractModel {
15
16
  constructor(settings) {
@@ -25,14 +26,44 @@ class LmntSpeechModel extends AbstractModel_js_1.AbstractModel {
25
26
  return this.settings.voice;
26
27
  }
27
28
  async callAPI(text, options) {
29
+ const api = this.settings.api ?? new LmntApiConfiguration_js_1.LmntApiConfiguration();
30
+ const abortSignal = options?.run?.abortSignal;
28
31
  return (0, callWithRetryAndThrottle_js_1.callWithRetryAndThrottle)({
29
- retry: this.settings.api?.retry,
30
- throttle: this.settings.api?.throttle,
31
- call: async () => callLmntTextToSpeechAPI({
32
- ...this.settings,
33
- abortSignal: options?.run?.abortSignal,
34
- text,
35
- }),
32
+ retry: api.retry,
33
+ throttle: api.throttle,
34
+ call: async () => {
35
+ const formData = new FormData();
36
+ formData.append("text", text);
37
+ formData.append("voice", this.settings.voice);
38
+ formData.append("format", "mp3");
39
+ formData.append("return_durations", "true");
40
+ if (this.settings.speed != null) {
41
+ formData.append("speed", this.settings.speed.toString());
42
+ }
43
+ if (this.settings.seed != null) {
44
+ formData.append("seed", this.settings.seed.toString());
45
+ }
46
+ if (this.settings.length != null) {
47
+ formData.append("length", this.settings.length.toString());
48
+ }
49
+ return (0, postToApi_js_1.postToApi)({
50
+ url: api.assembleUrl(`/ai/speech`),
51
+ headers: api.headers,
52
+ body: {
53
+ content: formData,
54
+ values: {
55
+ text,
56
+ voice: this.settings.voice,
57
+ speed: this.settings.speed,
58
+ seed: this.settings.seed,
59
+ length: this.settings.length,
60
+ },
61
+ },
62
+ failedResponseHandler: (0, postToApi_js_1.createTextErrorResponseHandler)(),
63
+ successfulResponseHandler: (0, postToApi_js_1.createJsonResponseHandler)((0, ZodSchema_js_1.zodSchema)(lmntSpeechResponseSchema)),
64
+ abortSignal,
65
+ });
66
+ },
36
67
  });
37
68
  }
38
69
  get settingsForEvent() {
@@ -43,8 +74,9 @@ class LmntSpeechModel extends AbstractModel_js_1.AbstractModel {
43
74
  length: this.settings.length,
44
75
  };
45
76
  }
46
- doGenerateSpeechStandard(text, options) {
47
- return this.callAPI(text, options);
77
+ async doGenerateSpeechStandard(text, options) {
78
+ const response = await this.callAPI(text, options);
79
+ return Buffer.from(response.audio, "base64");
48
80
  }
49
81
  withSettings(additionalSettings) {
50
82
  return new LmntSpeechModel({
@@ -54,32 +86,12 @@ class LmntSpeechModel extends AbstractModel_js_1.AbstractModel {
54
86
  }
55
87
  }
56
88
  exports.LmntSpeechModel = LmntSpeechModel;
57
- async function callLmntTextToSpeechAPI({ api = new LmntApiConfiguration_js_1.LmntApiConfiguration(), abortSignal, text, voice, speed, seed, length, }) {
58
- const formData = new FormData();
59
- formData.append("text", text);
60
- formData.append("voice", voice);
61
- formData.append("format", "mp3");
62
- if (speed != null)
63
- formData.append("speed", speed.toString());
64
- if (seed != null)
65
- formData.append("seed", seed.toString());
66
- if (length != null)
67
- formData.append("length", length.toString());
68
- return (0, postToApi_js_1.postToApi)({
69
- url: api.assembleUrl(`/synthesize`),
70
- headers: api.headers,
71
- body: {
72
- content: formData,
73
- values: {
74
- text,
75
- voice,
76
- speed,
77
- seed,
78
- length,
79
- },
80
- },
81
- failedResponseHandler: LmntError_js_1.failedLmntCallResponseHandler,
82
- successfulResponseHandler: (0, postToApi_js_1.createAudioMpegResponseHandler)(),
83
- abortSignal,
84
- });
85
- }
89
+ const lmntSpeechResponseSchema = zod_1.z.object({
90
+ audio: zod_1.z.string(),
91
+ durations: zod_1.z.array(zod_1.z.object({
92
+ duration: zod_1.z.number(),
93
+ start: zod_1.z.number(),
94
+ text: zod_1.z.string(),
95
+ })),
96
+ seed: zod_1.z.number(),
97
+ });
@@ -1,19 +1,32 @@
1
1
  /// <reference types="node" />
2
- import { AbstractModel } from "../../model-function/AbstractModel.js";
3
- import { ApiConfiguration } from "../../core/api/ApiConfiguration.js";
2
+ import { z } from "zod";
4
3
  import { FunctionOptions } from "../../core/FunctionOptions.js";
4
+ import { ApiConfiguration } from "../../core/api/ApiConfiguration.js";
5
+ import { AbstractModel } from "../../model-function/AbstractModel.js";
5
6
  import { SpeechGenerationModel, SpeechGenerationModelSettings } from "../../model-function/generate-speech/SpeechGenerationModel.js";
6
7
  export interface LmntSpeechModelSettings extends SpeechGenerationModelSettings {
7
8
  api?: ApiConfiguration;
9
+ /**
10
+ * The voice id of the voice to use for synthesis.
11
+ */
8
12
  voice: string;
13
+ /**
14
+ * The talking speed of the generated speech. A Floating point value between 0.25 (slow) and 2.0 (fast); defaults to 1.0
15
+ */
9
16
  speed?: number;
17
+ /**
18
+ * Seed used to specify a different take; defaults to random
19
+ */
10
20
  seed?: number;
21
+ /**
22
+ * Produce speech of this length in seconds; maximum 300.0 (5 minutes)
23
+ */
11
24
  length?: number;
12
25
  }
13
26
  /**
14
27
  * Synthesize speech using the LMNT API.
15
28
  *
16
- * @see https://www.lmnt.com/docs/rest/#synthesize-speech
29
+ * @see https://docs.lmnt.com/api-reference/speech/synthesize-speech-1
17
30
  */
18
31
  export declare class LmntSpeechModel extends AbstractModel<LmntSpeechModelSettings> implements SpeechGenerationModel<LmntSpeechModelSettings> {
19
32
  constructor(settings: LmntSpeechModelSettings);
@@ -24,3 +37,38 @@ export declare class LmntSpeechModel extends AbstractModel<LmntSpeechModelSettin
24
37
  doGenerateSpeechStandard(text: string, options?: FunctionOptions): Promise<Buffer>;
25
38
  withSettings(additionalSettings: Partial<LmntSpeechModelSettings>): this;
26
39
  }
40
+ declare const lmntSpeechResponseSchema: z.ZodObject<{
41
+ audio: z.ZodString;
42
+ durations: z.ZodArray<z.ZodObject<{
43
+ duration: z.ZodNumber;
44
+ start: z.ZodNumber;
45
+ text: z.ZodString;
46
+ }, "strip", z.ZodTypeAny, {
47
+ text: string;
48
+ duration: number;
49
+ start: number;
50
+ }, {
51
+ text: string;
52
+ duration: number;
53
+ start: number;
54
+ }>, "many">;
55
+ seed: z.ZodNumber;
56
+ }, "strip", z.ZodTypeAny, {
57
+ seed: number;
58
+ audio: string;
59
+ durations: {
60
+ text: string;
61
+ duration: number;
62
+ start: number;
63
+ }[];
64
+ }, {
65
+ seed: number;
66
+ audio: string;
67
+ durations: {
68
+ text: string;
69
+ duration: number;
70
+ start: number;
71
+ }[];
72
+ }>;
73
+ export type LmntSpeechResponse = z.infer<typeof lmntSpeechResponseSchema>;
74
+ export {};
@@ -1,12 +1,13 @@
1
- import { AbstractModel } from "../../model-function/AbstractModel.js";
1
+ import { z } from "zod";
2
2
  import { callWithRetryAndThrottle } from "../../core/api/callWithRetryAndThrottle.js";
3
- import { createAudioMpegResponseHandler, postToApi, } from "../../core/api/postToApi.js";
3
+ import { createJsonResponseHandler, createTextErrorResponseHandler, postToApi, } from "../../core/api/postToApi.js";
4
+ import { zodSchema } from "../../core/schema/ZodSchema.js";
5
+ import { AbstractModel } from "../../model-function/AbstractModel.js";
4
6
  import { LmntApiConfiguration } from "./LmntApiConfiguration.js";
5
- import { failedLmntCallResponseHandler } from "./LmntError.js";
6
7
  /**
7
8
  * Synthesize speech using the LMNT API.
8
9
  *
9
- * @see https://www.lmnt.com/docs/rest/#synthesize-speech
10
+ * @see https://docs.lmnt.com/api-reference/speech/synthesize-speech-1
10
11
  */
11
12
  export class LmntSpeechModel extends AbstractModel {
12
13
  constructor(settings) {
@@ -22,14 +23,44 @@ export class LmntSpeechModel extends AbstractModel {
22
23
  return this.settings.voice;
23
24
  }
24
25
  async callAPI(text, options) {
26
+ const api = this.settings.api ?? new LmntApiConfiguration();
27
+ const abortSignal = options?.run?.abortSignal;
25
28
  return callWithRetryAndThrottle({
26
- retry: this.settings.api?.retry,
27
- throttle: this.settings.api?.throttle,
28
- call: async () => callLmntTextToSpeechAPI({
29
- ...this.settings,
30
- abortSignal: options?.run?.abortSignal,
31
- text,
32
- }),
29
+ retry: api.retry,
30
+ throttle: api.throttle,
31
+ call: async () => {
32
+ const formData = new FormData();
33
+ formData.append("text", text);
34
+ formData.append("voice", this.settings.voice);
35
+ formData.append("format", "mp3");
36
+ formData.append("return_durations", "true");
37
+ if (this.settings.speed != null) {
38
+ formData.append("speed", this.settings.speed.toString());
39
+ }
40
+ if (this.settings.seed != null) {
41
+ formData.append("seed", this.settings.seed.toString());
42
+ }
43
+ if (this.settings.length != null) {
44
+ formData.append("length", this.settings.length.toString());
45
+ }
46
+ return postToApi({
47
+ url: api.assembleUrl(`/ai/speech`),
48
+ headers: api.headers,
49
+ body: {
50
+ content: formData,
51
+ values: {
52
+ text,
53
+ voice: this.settings.voice,
54
+ speed: this.settings.speed,
55
+ seed: this.settings.seed,
56
+ length: this.settings.length,
57
+ },
58
+ },
59
+ failedResponseHandler: createTextErrorResponseHandler(),
60
+ successfulResponseHandler: createJsonResponseHandler(zodSchema(lmntSpeechResponseSchema)),
61
+ abortSignal,
62
+ });
63
+ },
33
64
  });
34
65
  }
35
66
  get settingsForEvent() {
@@ -40,8 +71,9 @@ export class LmntSpeechModel extends AbstractModel {
40
71
  length: this.settings.length,
41
72
  };
42
73
  }
43
- doGenerateSpeechStandard(text, options) {
44
- return this.callAPI(text, options);
74
+ async doGenerateSpeechStandard(text, options) {
75
+ const response = await this.callAPI(text, options);
76
+ return Buffer.from(response.audio, "base64");
45
77
  }
46
78
  withSettings(additionalSettings) {
47
79
  return new LmntSpeechModel({
@@ -50,32 +82,12 @@ export class LmntSpeechModel extends AbstractModel {
50
82
  });
51
83
  }
52
84
  }
53
- async function callLmntTextToSpeechAPI({ api = new LmntApiConfiguration(), abortSignal, text, voice, speed, seed, length, }) {
54
- const formData = new FormData();
55
- formData.append("text", text);
56
- formData.append("voice", voice);
57
- formData.append("format", "mp3");
58
- if (speed != null)
59
- formData.append("speed", speed.toString());
60
- if (seed != null)
61
- formData.append("seed", seed.toString());
62
- if (length != null)
63
- formData.append("length", length.toString());
64
- return postToApi({
65
- url: api.assembleUrl(`/synthesize`),
66
- headers: api.headers,
67
- body: {
68
- content: formData,
69
- values: {
70
- text,
71
- voice,
72
- speed,
73
- seed,
74
- length,
75
- },
76
- },
77
- failedResponseHandler: failedLmntCallResponseHandler,
78
- successfulResponseHandler: createAudioMpegResponseHandler(),
79
- abortSignal,
80
- });
81
- }
85
+ const lmntSpeechResponseSchema = z.object({
86
+ audio: z.string(),
87
+ durations: z.array(z.object({
88
+ duration: z.number(),
89
+ start: z.number(),
90
+ text: z.string(),
91
+ })),
92
+ seed: z.number(),
93
+ });
@@ -3,19 +3,27 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.MistralApiConfiguration = void 0;
4
4
  const BaseUrlApiConfiguration_js_1 = require("../../core/api/BaseUrlApiConfiguration.cjs");
5
5
  const loadApiKey_js_1 = require("../../core/api/loadApiKey.cjs");
6
- class MistralApiConfiguration extends BaseUrlApiConfiguration_js_1.BaseUrlApiConfiguration {
7
- constructor({ baseUrl = "https://api.mistral.ai/v1", apiKey, retry, throttle, } = {}) {
6
+ /**
7
+ * Creates an API configuration for the Mistral API.
8
+ * It calls the API at https://api.mistral.ai/v1 and uses the `MISTRAL_API_KEY` env variable by default.
9
+ */
10
+ class MistralApiConfiguration extends BaseUrlApiConfiguration_js_1.BaseUrlApiConfigurationWithDefaults {
11
+ constructor(settings = {}) {
8
12
  super({
9
- baseUrl,
13
+ ...settings,
10
14
  headers: {
11
15
  Authorization: `Bearer ${(0, loadApiKey_js_1.loadApiKey)({
12
- apiKey,
16
+ apiKey: settings.apiKey,
13
17
  environmentVariableName: "MISTRAL_API_KEY",
14
18
  description: "Mistral",
15
19
  })}`,
16
20
  },
17
- retry,
18
- throttle,
21
+ baseUrlDefaults: {
22
+ protocol: "https",
23
+ host: "api.mistral.ai",
24
+ port: "443",
25
+ path: "/v1",
26
+ },
19
27
  });
20
28
  }
21
29
  }
@@ -1,12 +1,10 @@
1
- import { BaseUrlApiConfiguration } from "../../core/api/BaseUrlApiConfiguration.js";
2
- import { RetryFunction } from "../../core/api/RetryFunction.js";
3
- import { ThrottleFunction } from "../../core/api/ThrottleFunction.js";
4
- export type MistralApiConfigurationSettings = {
5
- baseUrl?: string;
6
- apiKey?: string;
7
- retry?: RetryFunction;
8
- throttle?: ThrottleFunction;
9
- };
10
- export declare class MistralApiConfiguration extends BaseUrlApiConfiguration {
11
- constructor({ baseUrl, apiKey, retry, throttle, }?: MistralApiConfigurationSettings);
1
+ import { BaseUrlApiConfigurationWithDefaults, PartialBaseUrlPartsApiConfigurationOptions } from "../../core/api/BaseUrlApiConfiguration.js";
2
+ /**
3
+ * Creates an API configuration for the Mistral API.
4
+ * It calls the API at https://api.mistral.ai/v1 and uses the `MISTRAL_API_KEY` env variable by default.
5
+ */
6
+ export declare class MistralApiConfiguration extends BaseUrlApiConfigurationWithDefaults {
7
+ constructor(settings?: PartialBaseUrlPartsApiConfigurationOptions & {
8
+ apiKey?: string;
9
+ });
12
10
  }
@@ -1,18 +1,26 @@
1
- import { BaseUrlApiConfiguration } from "../../core/api/BaseUrlApiConfiguration.js";
1
+ import { BaseUrlApiConfigurationWithDefaults, } from "../../core/api/BaseUrlApiConfiguration.js";
2
2
  import { loadApiKey } from "../../core/api/loadApiKey.js";
3
- export class MistralApiConfiguration extends BaseUrlApiConfiguration {
4
- constructor({ baseUrl = "https://api.mistral.ai/v1", apiKey, retry, throttle, } = {}) {
3
+ /**
4
+ * Creates an API configuration for the Mistral API.
5
+ * It calls the API at https://api.mistral.ai/v1 and uses the `MISTRAL_API_KEY` env variable by default.
6
+ */
7
+ export class MistralApiConfiguration extends BaseUrlApiConfigurationWithDefaults {
8
+ constructor(settings = {}) {
5
9
  super({
6
- baseUrl,
10
+ ...settings,
7
11
  headers: {
8
12
  Authorization: `Bearer ${loadApiKey({
9
- apiKey,
13
+ apiKey: settings.apiKey,
10
14
  environmentVariableName: "MISTRAL_API_KEY",
11
15
  description: "Mistral",
12
16
  })}`,
13
17
  },
14
- retry,
15
- throttle,
18
+ baseUrlDefaults: {
19
+ protocol: "https",
20
+ host: "api.mistral.ai",
21
+ port: "443",
22
+ path: "/v1",
23
+ },
16
24
  });
17
25
  }
18
26
  }
@@ -162,7 +162,7 @@ const mistralChatResponseSchema = zod_1.z.object({
162
162
  total_tokens: zod_1.z.number(),
163
163
  }),
164
164
  });
165
- const mistralChatStreamChunkSchema = new ZodSchema_js_1.ZodSchema(zod_1.z.object({
165
+ const mistralChatStreamChunkSchema = zod_1.z.object({
166
166
  id: zod_1.z.string(),
167
167
  object: zod_1.z.string().optional(),
168
168
  created: zod_1.z.number().optional(),
@@ -178,20 +178,20 @@ const mistralChatStreamChunkSchema = new ZodSchema_js_1.ZodSchema(zod_1.z.object
178
178
  .nullable()
179
179
  .optional(),
180
180
  })),
181
- }));
181
+ });
182
182
  exports.MistralChatResponseFormat = {
183
183
  /**
184
184
  * Returns the response as a JSON object.
185
185
  */
186
186
  json: {
187
187
  stream: false,
188
- handler: (0, postToApi_js_1.createJsonResponseHandler)(mistralChatResponseSchema),
188
+ handler: (0, postToApi_js_1.createJsonResponseHandler)((0, ZodSchema_js_1.zodSchema)(mistralChatResponseSchema)),
189
189
  },
190
190
  /**
191
191
  * Returns an async iterable over the text deltas (only the tex different of the first choice).
192
192
  */
193
193
  textDeltaIterable: {
194
194
  stream: true,
195
- handler: (0, createEventSourceResponseHandler_js_1.createEventSourceResponseHandler)(mistralChatStreamChunkSchema),
195
+ handler: (0, createEventSourceResponseHandler_js_1.createEventSourceResponseHandler)((0, ZodSchema_js_1.zodSchema)(mistralChatStreamChunkSchema)),
196
196
  },
197
197
  };
@@ -2,7 +2,6 @@ import { z } from "zod";
2
2
  import { FunctionOptions } from "../../core/FunctionOptions.js";
3
3
  import { ApiConfiguration } from "../../core/api/ApiConfiguration.js";
4
4
  import { ResponseHandler } from "../../core/api/postToApi.js";
5
- import { ZodSchema } from "../../core/schema/ZodSchema.js";
6
5
  import { AbstractModel } from "../../model-function/AbstractModel.js";
7
6
  import { PromptTemplateTextStreamingModel } from "../../model-function/generate-text/PromptTemplateTextStreamingModel.js";
8
7
  import { TextGenerationModelSettings, TextStreamingModel } from "../../model-function/generate-text/TextGenerationModel.js";
@@ -199,7 +198,53 @@ declare const mistralChatResponseSchema: z.ZodObject<{
199
198
  }[];
200
199
  }>;
201
200
  export type MistralChatResponse = z.infer<typeof mistralChatResponseSchema>;
202
- declare const mistralChatStreamChunkSchema: ZodSchema<{
201
+ declare const mistralChatStreamChunkSchema: z.ZodObject<{
202
+ id: z.ZodString;
203
+ object: z.ZodOptional<z.ZodString>;
204
+ created: z.ZodOptional<z.ZodNumber>;
205
+ model: z.ZodString;
206
+ choices: z.ZodArray<z.ZodObject<{
207
+ index: z.ZodNumber;
208
+ delta: z.ZodObject<{
209
+ role: z.ZodNullable<z.ZodOptional<z.ZodEnum<["assistant", "user"]>>>;
210
+ content: z.ZodOptional<z.ZodNullable<z.ZodString>>;
211
+ }, "strip", z.ZodTypeAny, {
212
+ role?: "user" | "assistant" | null | undefined;
213
+ content?: string | null | undefined;
214
+ }, {
215
+ role?: "user" | "assistant" | null | undefined;
216
+ content?: string | null | undefined;
217
+ }>;
218
+ finish_reason: z.ZodOptional<z.ZodNullable<z.ZodEnum<["stop", "length", "model_length"]>>>;
219
+ }, "strip", z.ZodTypeAny, {
220
+ delta: {
221
+ role?: "user" | "assistant" | null | undefined;
222
+ content?: string | null | undefined;
223
+ };
224
+ index: number;
225
+ finish_reason?: "length" | "stop" | "model_length" | null | undefined;
226
+ }, {
227
+ delta: {
228
+ role?: "user" | "assistant" | null | undefined;
229
+ content?: string | null | undefined;
230
+ };
231
+ index: number;
232
+ finish_reason?: "length" | "stop" | "model_length" | null | undefined;
233
+ }>, "many">;
234
+ }, "strip", z.ZodTypeAny, {
235
+ model: string;
236
+ id: string;
237
+ choices: {
238
+ delta: {
239
+ role?: "user" | "assistant" | null | undefined;
240
+ content?: string | null | undefined;
241
+ };
242
+ index: number;
243
+ finish_reason?: "length" | "stop" | "model_length" | null | undefined;
244
+ }[];
245
+ object?: string | undefined;
246
+ created?: number | undefined;
247
+ }, {
203
248
  model: string;
204
249
  id: string;
205
250
  choices: {
@@ -213,7 +258,7 @@ declare const mistralChatStreamChunkSchema: ZodSchema<{
213
258
  object?: string | undefined;
214
259
  created?: number | undefined;
215
260
  }>;
216
- export type MistralChatStreamChunk = (typeof mistralChatStreamChunkSchema)["_type"];
261
+ export type MistralChatStreamChunk = z.infer<typeof mistralChatStreamChunkSchema>;
217
262
  export type MistralChatResponseFormatType<T> = {
218
263
  stream: boolean;
219
264
  handler: ResponseHandler<T>;
@@ -1,7 +1,7 @@
1
1
  import { z } from "zod";
2
2
  import { callWithRetryAndThrottle } from "../../core/api/callWithRetryAndThrottle.js";
3
3
  import { createJsonResponseHandler, postJsonToApi, } from "../../core/api/postToApi.js";
4
- import { ZodSchema } from "../../core/schema/ZodSchema.js";
4
+ import { zodSchema } from "../../core/schema/ZodSchema.js";
5
5
  import { AbstractModel } from "../../model-function/AbstractModel.js";
6
6
  import { PromptTemplateTextStreamingModel } from "../../model-function/generate-text/PromptTemplateTextStreamingModel.js";
7
7
  import { textGenerationModelProperties, } from "../../model-function/generate-text/TextGenerationModel.js";
@@ -158,7 +158,7 @@ const mistralChatResponseSchema = z.object({
158
158
  total_tokens: z.number(),
159
159
  }),
160
160
  });
161
- const mistralChatStreamChunkSchema = new ZodSchema(z.object({
161
+ const mistralChatStreamChunkSchema = z.object({
162
162
  id: z.string(),
163
163
  object: z.string().optional(),
164
164
  created: z.number().optional(),
@@ -174,20 +174,20 @@ const mistralChatStreamChunkSchema = new ZodSchema(z.object({
174
174
  .nullable()
175
175
  .optional(),
176
176
  })),
177
- }));
177
+ });
178
178
  export const MistralChatResponseFormat = {
179
179
  /**
180
180
  * Returns the response as a JSON object.
181
181
  */
182
182
  json: {
183
183
  stream: false,
184
- handler: createJsonResponseHandler(mistralChatResponseSchema),
184
+ handler: createJsonResponseHandler(zodSchema(mistralChatResponseSchema)),
185
185
  },
186
186
  /**
187
187
  * Returns an async iterable over the text deltas (only the tex different of the first choice).
188
188
  */
189
189
  textDeltaIterable: {
190
190
  stream: true,
191
- handler: createEventSourceResponseHandler(mistralChatStreamChunkSchema),
191
+ handler: createEventSourceResponseHandler(zodSchema(mistralChatStreamChunkSchema)),
192
192
  },
193
193
  };
@@ -4,14 +4,14 @@ exports.failedMistralCallResponseHandler = void 0;
4
4
  const zod_1 = require("zod");
5
5
  const postToApi_js_1 = require("../../core/api/postToApi.cjs");
6
6
  const ZodSchema_js_1 = require("../../core/schema/ZodSchema.cjs");
7
- const mistralErrorDataSchema = new ZodSchema_js_1.ZodSchema(zod_1.z.object({
7
+ const mistralErrorDataSchema = zod_1.z.object({
8
8
  object: zod_1.z.literal("error"),
9
9
  message: zod_1.z.string(),
10
10
  type: zod_1.z.string(),
11
11
  param: zod_1.z.string().nullable(),
12
12
  code: zod_1.z.string(),
13
- }));
13
+ });
14
14
  exports.failedMistralCallResponseHandler = (0, postToApi_js_1.createJsonErrorResponseHandler)({
15
- errorSchema: mistralErrorDataSchema,
15
+ errorSchema: (0, ZodSchema_js_1.zodSchema)(mistralErrorDataSchema),
16
16
  errorToMessage: (error) => error.message,
17
17
  });
@@ -1,13 +1,25 @@
1
+ import { z } from "zod";
1
2
  import { ApiCallError } from "../../core/api/ApiCallError.js";
2
3
  import { ResponseHandler } from "../../core/api/postToApi.js";
3
- import { ZodSchema } from "../../core/schema/ZodSchema.js";
4
- declare const mistralErrorDataSchema: ZodSchema<{
4
+ declare const mistralErrorDataSchema: z.ZodObject<{
5
+ object: z.ZodLiteral<"error">;
6
+ message: z.ZodString;
7
+ type: z.ZodString;
8
+ param: z.ZodNullable<z.ZodString>;
9
+ code: z.ZodString;
10
+ }, "strip", z.ZodTypeAny, {
11
+ object: "error";
12
+ message: string;
13
+ code: string;
14
+ type: string;
15
+ param: string | null;
16
+ }, {
5
17
  object: "error";
6
18
  message: string;
7
19
  code: string;
8
20
  type: string;
9
21
  param: string | null;
10
22
  }>;
11
- export type MistralErrorData = (typeof mistralErrorDataSchema)["_type"];
23
+ export type MistralErrorData = z.infer<typeof mistralErrorDataSchema>;
12
24
  export declare const failedMistralCallResponseHandler: ResponseHandler<ApiCallError>;
13
25
  export {};
@@ -1,14 +1,14 @@
1
1
  import { z } from "zod";
2
2
  import { createJsonErrorResponseHandler, } from "../../core/api/postToApi.js";
3
- import { ZodSchema } from "../../core/schema/ZodSchema.js";
4
- const mistralErrorDataSchema = new ZodSchema(z.object({
3
+ import { zodSchema } from "../../core/schema/ZodSchema.js";
4
+ const mistralErrorDataSchema = z.object({
5
5
  object: z.literal("error"),
6
6
  message: z.string(),
7
7
  type: z.string(),
8
8
  param: z.string().nullable(),
9
9
  code: z.string(),
10
- }));
10
+ });
11
11
  export const failedMistralCallResponseHandler = createJsonErrorResponseHandler({
12
- errorSchema: mistralErrorDataSchema,
12
+ errorSchema: zodSchema(mistralErrorDataSchema),
13
13
  errorToMessage: (error) => error.message,
14
14
  });
@@ -2,8 +2,12 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.TextEmbedder = exports.ChatTextGenerator = exports.Api = void 0;
4
4
  const MistralApiConfiguration_js_1 = require("./MistralApiConfiguration.cjs");
5
- const MistralTextEmbeddingModel_js_1 = require("./MistralTextEmbeddingModel.cjs");
6
5
  const MistralChatModel_js_1 = require("./MistralChatModel.cjs");
6
+ const MistralTextEmbeddingModel_js_1 = require("./MistralTextEmbeddingModel.cjs");
7
+ /**
8
+ * Creates an API configuration for the Mistral API.
9
+ * It calls the API at https://api.mistral.ai/v1 and uses the `MISTRAL_API_KEY` env variable by default.
10
+ */
7
11
  function Api(settings) {
8
12
  return new MistralApiConfiguration_js_1.MistralApiConfiguration(settings);
9
13
  }