@llumiverse/drivers 0.22.0 → 0.23.0-dev-20251118

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 (295) hide show
  1. package/README.md +1 -1
  2. package/lib/cjs/adobe/firefly.js +8 -7
  3. package/lib/cjs/adobe/firefly.js.map +1 -1
  4. package/lib/cjs/azure/azure_foundry.js +12 -12
  5. package/lib/cjs/azure/azure_foundry.js.map +1 -1
  6. package/lib/cjs/bedrock/index.js +172 -22
  7. package/lib/cjs/bedrock/index.js.map +1 -1
  8. package/lib/cjs/bedrock/twelvelabs.js +87 -0
  9. package/lib/cjs/bedrock/twelvelabs.js.map +1 -0
  10. package/lib/cjs/groq/index.js +91 -16
  11. package/lib/cjs/groq/index.js.map +1 -1
  12. package/lib/cjs/huggingface_ie.js +7 -6
  13. package/lib/cjs/huggingface_ie.js.map +1 -1
  14. package/lib/cjs/index.js +2 -2
  15. package/lib/cjs/index.js.map +1 -1
  16. package/lib/cjs/mistral/index.js +5 -4
  17. package/lib/cjs/mistral/index.js.map +1 -1
  18. package/lib/cjs/openai/azure_openai.js +1 -1
  19. package/lib/cjs/openai/azure_openai.js.map +1 -1
  20. package/lib/cjs/openai/index.js +16 -12
  21. package/lib/cjs/openai/index.js.map +1 -1
  22. package/lib/cjs/replicate.js +6 -6
  23. package/lib/cjs/replicate.js.map +1 -1
  24. package/lib/cjs/test/utils.js +1 -1
  25. package/lib/cjs/test/utils.js.map +1 -1
  26. package/lib/cjs/test-driver/TestErrorCompletionStream.js +20 -0
  27. package/lib/cjs/test-driver/TestErrorCompletionStream.js.map +1 -0
  28. package/lib/cjs/test-driver/TestValidationErrorCompletionStream.js +24 -0
  29. package/lib/cjs/test-driver/TestValidationErrorCompletionStream.js.map +1 -0
  30. package/lib/cjs/test-driver/index.js +109 -0
  31. package/lib/cjs/test-driver/index.js.map +1 -0
  32. package/lib/cjs/test-driver/utils.js +30 -0
  33. package/lib/cjs/test-driver/utils.js.map +1 -0
  34. package/lib/cjs/togetherai/index.js +4 -4
  35. package/lib/cjs/togetherai/index.js.map +1 -1
  36. package/lib/cjs/vertexai/embeddings/embeddings-text.js +1 -1
  37. package/lib/cjs/vertexai/embeddings/embeddings-text.js.map +1 -1
  38. package/lib/cjs/vertexai/index.js +136 -31
  39. package/lib/cjs/vertexai/index.js.map +1 -1
  40. package/lib/cjs/vertexai/models/claude.js +38 -16
  41. package/lib/cjs/vertexai/models/claude.js.map +1 -1
  42. package/lib/cjs/vertexai/models/gemini.js +131 -41
  43. package/lib/cjs/vertexai/models/gemini.js.map +1 -1
  44. package/lib/cjs/vertexai/models/imagen.js +12 -23
  45. package/lib/cjs/vertexai/models/imagen.js.map +1 -1
  46. package/lib/cjs/vertexai/models/llama.js +4 -3
  47. package/lib/cjs/vertexai/models/llama.js.map +1 -1
  48. package/lib/cjs/vertexai/models.js +13 -2
  49. package/lib/cjs/vertexai/models.js.map +1 -1
  50. package/lib/cjs/watsonx/index.js +5 -5
  51. package/lib/cjs/watsonx/index.js.map +1 -1
  52. package/lib/cjs/xai/index.js +1 -1
  53. package/lib/cjs/xai/index.js.map +1 -1
  54. package/lib/esm/adobe/firefly.js +8 -7
  55. package/lib/esm/adobe/firefly.js.map +1 -1
  56. package/lib/esm/azure/azure_foundry.js +12 -12
  57. package/lib/esm/azure/azure_foundry.js.map +1 -1
  58. package/lib/esm/bedrock/index.js +172 -22
  59. package/lib/esm/bedrock/index.js.map +1 -1
  60. package/lib/esm/bedrock/twelvelabs.js +84 -0
  61. package/lib/esm/bedrock/twelvelabs.js.map +1 -0
  62. package/lib/esm/groq/index.js +91 -16
  63. package/lib/esm/groq/index.js.map +1 -1
  64. package/lib/esm/huggingface_ie.js +8 -7
  65. package/lib/esm/huggingface_ie.js.map +1 -1
  66. package/lib/esm/index.js +2 -2
  67. package/lib/esm/index.js.map +1 -1
  68. package/lib/esm/mistral/index.js +5 -4
  69. package/lib/esm/mistral/index.js.map +1 -1
  70. package/lib/esm/openai/azure_openai.js +1 -1
  71. package/lib/esm/openai/azure_openai.js.map +1 -1
  72. package/lib/esm/openai/index.js +16 -12
  73. package/lib/esm/openai/index.js.map +1 -1
  74. package/lib/esm/replicate.js +6 -6
  75. package/lib/esm/replicate.js.map +1 -1
  76. package/lib/esm/src/adobe/firefly.js +116 -0
  77. package/lib/esm/src/adobe/firefly.js.map +1 -0
  78. package/lib/esm/src/azure/azure_foundry.js +382 -0
  79. package/lib/esm/src/azure/azure_foundry.js.map +1 -0
  80. package/lib/esm/src/bedrock/converse.js +278 -0
  81. package/lib/esm/src/bedrock/converse.js.map +1 -0
  82. package/lib/esm/src/bedrock/index.js +962 -0
  83. package/lib/esm/src/bedrock/index.js.map +1 -0
  84. package/lib/esm/src/bedrock/nova-image-payload.js +203 -0
  85. package/lib/esm/src/bedrock/nova-image-payload.js.map +1 -0
  86. package/lib/esm/src/bedrock/payloads.js +2 -0
  87. package/lib/esm/src/bedrock/payloads.js.map +1 -0
  88. package/lib/esm/src/bedrock/s3.js +99 -0
  89. package/lib/esm/src/bedrock/s3.js.map +1 -0
  90. package/lib/esm/src/bedrock/twelvelabs.js +84 -0
  91. package/lib/esm/src/bedrock/twelvelabs.js.map +1 -0
  92. package/lib/esm/src/groq/index.js +286 -0
  93. package/lib/esm/src/groq/index.js.map +1 -0
  94. package/lib/esm/src/huggingface_ie.js +197 -0
  95. package/lib/esm/src/huggingface_ie.js.map +1 -0
  96. package/lib/esm/src/index.js +14 -0
  97. package/lib/esm/src/index.js.map +1 -0
  98. package/lib/esm/src/mistral/index.js +169 -0
  99. package/lib/esm/src/mistral/index.js.map +1 -0
  100. package/lib/esm/src/mistral/types.js +80 -0
  101. package/lib/esm/src/mistral/types.js.map +1 -0
  102. package/lib/esm/src/openai/azure_openai.js +68 -0
  103. package/lib/esm/src/openai/azure_openai.js.map +1 -0
  104. package/lib/esm/src/openai/index.js +464 -0
  105. package/lib/esm/src/openai/index.js.map +1 -0
  106. package/lib/esm/src/openai/openai.js +14 -0
  107. package/lib/esm/src/openai/openai.js.map +1 -0
  108. package/lib/esm/src/openai/openai_format.js +134 -0
  109. package/lib/esm/src/openai/openai_format.js.map +1 -0
  110. package/lib/esm/src/replicate.js +268 -0
  111. package/lib/esm/src/replicate.js.map +1 -0
  112. package/lib/esm/src/test/TestErrorCompletionStream.js +16 -0
  113. package/lib/esm/src/test/TestErrorCompletionStream.js.map +1 -0
  114. package/lib/esm/src/test/TestValidationErrorCompletionStream.js +20 -0
  115. package/lib/esm/src/test/TestValidationErrorCompletionStream.js.map +1 -0
  116. package/lib/esm/src/test/index.js +91 -0
  117. package/lib/esm/src/test/index.js.map +1 -0
  118. package/lib/esm/src/test/utils.js +25 -0
  119. package/lib/esm/src/test/utils.js.map +1 -0
  120. package/lib/esm/src/test-driver/TestErrorCompletionStream.js +16 -0
  121. package/lib/esm/src/test-driver/TestErrorCompletionStream.js.map +1 -0
  122. package/lib/esm/src/test-driver/TestValidationErrorCompletionStream.js +20 -0
  123. package/lib/esm/src/test-driver/TestValidationErrorCompletionStream.js.map +1 -0
  124. package/lib/esm/src/test-driver/index.js +91 -0
  125. package/lib/esm/src/test-driver/index.js.map +1 -0
  126. package/lib/esm/src/test-driver/utils.js +25 -0
  127. package/lib/esm/src/test-driver/utils.js.map +1 -0
  128. package/lib/esm/src/togetherai/index.js +122 -0
  129. package/lib/esm/src/togetherai/index.js.map +1 -0
  130. package/lib/esm/src/togetherai/interfaces.js +2 -0
  131. package/lib/esm/src/togetherai/interfaces.js.map +1 -0
  132. package/lib/esm/src/vertexai/debug.js +6 -0
  133. package/lib/esm/src/vertexai/debug.js.map +1 -0
  134. package/lib/esm/src/vertexai/embeddings/embeddings-image.js +24 -0
  135. package/lib/esm/src/vertexai/embeddings/embeddings-image.js.map +1 -0
  136. package/lib/esm/src/vertexai/embeddings/embeddings-text.js +20 -0
  137. package/lib/esm/src/vertexai/embeddings/embeddings-text.js.map +1 -0
  138. package/lib/esm/src/vertexai/index.js +383 -0
  139. package/lib/esm/src/vertexai/index.js.map +1 -0
  140. package/lib/esm/src/vertexai/models/claude.js +394 -0
  141. package/lib/esm/src/vertexai/models/claude.js.map +1 -0
  142. package/lib/esm/src/vertexai/models/gemini.js +817 -0
  143. package/lib/esm/src/vertexai/models/gemini.js.map +1 -0
  144. package/lib/esm/src/vertexai/models/imagen.js +302 -0
  145. package/lib/esm/src/vertexai/models/imagen.js.map +1 -0
  146. package/lib/esm/src/vertexai/models/llama.js +179 -0
  147. package/lib/esm/src/vertexai/models/llama.js.map +1 -0
  148. package/lib/esm/src/vertexai/models.js +32 -0
  149. package/lib/esm/src/vertexai/models.js.map +1 -0
  150. package/lib/esm/src/watsonx/index.js +157 -0
  151. package/lib/esm/src/watsonx/index.js.map +1 -0
  152. package/lib/esm/src/watsonx/interfaces.js +2 -0
  153. package/lib/esm/src/watsonx/interfaces.js.map +1 -0
  154. package/lib/esm/src/xai/index.js +64 -0
  155. package/lib/esm/src/xai/index.js.map +1 -0
  156. package/lib/esm/test/utils.js +1 -1
  157. package/lib/esm/test/utils.js.map +1 -1
  158. package/lib/esm/test-driver/TestErrorCompletionStream.js +16 -0
  159. package/lib/esm/test-driver/TestErrorCompletionStream.js.map +1 -0
  160. package/lib/esm/test-driver/TestValidationErrorCompletionStream.js +20 -0
  161. package/lib/esm/test-driver/TestValidationErrorCompletionStream.js.map +1 -0
  162. package/lib/esm/test-driver/index.js +91 -0
  163. package/lib/esm/test-driver/index.js.map +1 -0
  164. package/lib/esm/test-driver/utils.js +25 -0
  165. package/lib/esm/test-driver/utils.js.map +1 -0
  166. package/lib/esm/togetherai/index.js +4 -4
  167. package/lib/esm/togetherai/index.js.map +1 -1
  168. package/lib/esm/tsconfig.tsbuildinfo +1 -0
  169. package/lib/esm/vertexai/embeddings/embeddings-text.js +1 -1
  170. package/lib/esm/vertexai/embeddings/embeddings-text.js.map +1 -1
  171. package/lib/esm/vertexai/index.js +136 -31
  172. package/lib/esm/vertexai/index.js.map +1 -1
  173. package/lib/esm/vertexai/models/claude.js +37 -15
  174. package/lib/esm/vertexai/models/claude.js.map +1 -1
  175. package/lib/esm/vertexai/models/gemini.js +133 -43
  176. package/lib/esm/vertexai/models/gemini.js.map +1 -1
  177. package/lib/esm/vertexai/models/imagen.js +9 -17
  178. package/lib/esm/vertexai/models/imagen.js.map +1 -1
  179. package/lib/esm/vertexai/models/llama.js +4 -3
  180. package/lib/esm/vertexai/models/llama.js.map +1 -1
  181. package/lib/esm/vertexai/models.js +13 -2
  182. package/lib/esm/vertexai/models.js.map +1 -1
  183. package/lib/esm/watsonx/index.js +5 -5
  184. package/lib/esm/watsonx/index.js.map +1 -1
  185. package/lib/esm/xai/index.js +1 -1
  186. package/lib/esm/xai/index.js.map +1 -1
  187. package/lib/types/adobe/firefly.d.ts +3 -3
  188. package/lib/types/adobe/firefly.d.ts.map +1 -1
  189. package/lib/types/azure/azure_foundry.d.ts +2 -2
  190. package/lib/types/azure/azure_foundry.d.ts.map +1 -1
  191. package/lib/types/bedrock/index.d.ts +9 -5
  192. package/lib/types/bedrock/index.d.ts.map +1 -1
  193. package/lib/types/bedrock/twelvelabs.d.ts +50 -0
  194. package/lib/types/bedrock/twelvelabs.d.ts.map +1 -0
  195. package/lib/types/groq/index.d.ts +3 -0
  196. package/lib/types/groq/index.d.ts.map +1 -1
  197. package/lib/types/huggingface_ie.d.ts +8 -5
  198. package/lib/types/huggingface_ie.d.ts.map +1 -1
  199. package/lib/types/index.d.ts +2 -2
  200. package/lib/types/index.d.ts.map +1 -1
  201. package/lib/types/mistral/index.d.ts +2 -2
  202. package/lib/types/mistral/index.d.ts.map +1 -1
  203. package/lib/types/openai/index.d.ts +2 -2
  204. package/lib/types/openai/index.d.ts.map +1 -1
  205. package/lib/types/replicate.d.ts +6 -3
  206. package/lib/types/replicate.d.ts.map +1 -1
  207. package/lib/types/src/adobe/firefly.d.ts +29 -0
  208. package/lib/types/src/azure/azure_foundry.d.ts +49 -0
  209. package/lib/types/src/bedrock/converse.d.ts +8 -0
  210. package/lib/types/src/bedrock/index.d.ts +61 -0
  211. package/lib/types/src/bedrock/nova-image-payload.d.ts +73 -0
  212. package/lib/types/src/bedrock/payloads.d.ts +11 -0
  213. package/lib/types/src/bedrock/s3.d.ts +22 -0
  214. package/lib/types/src/bedrock/twelvelabs.d.ts +49 -0
  215. package/lib/types/src/groq/index.d.ts +26 -0
  216. package/lib/types/src/huggingface_ie.d.ts +34 -0
  217. package/lib/types/src/index.d.ts +13 -0
  218. package/lib/types/src/mistral/index.d.ts +24 -0
  219. package/lib/types/src/mistral/types.d.ts +131 -0
  220. package/lib/types/src/openai/azure_openai.d.ts +24 -0
  221. package/lib/types/src/openai/index.d.ts +24 -0
  222. package/lib/types/src/openai/openai.d.ts +14 -0
  223. package/lib/types/src/openai/openai_format.d.ts +18 -0
  224. package/lib/types/src/replicate.d.ts +47 -0
  225. package/lib/types/src/test/TestErrorCompletionStream.d.ts +8 -0
  226. package/lib/types/src/test/TestValidationErrorCompletionStream.d.ts +8 -0
  227. package/lib/types/src/test/index.d.ts +23 -0
  228. package/lib/types/src/test/utils.d.ts +4 -0
  229. package/lib/types/src/test-driver/TestErrorCompletionStream.d.ts +8 -0
  230. package/lib/types/src/test-driver/TestValidationErrorCompletionStream.d.ts +8 -0
  231. package/lib/types/src/test-driver/index.d.ts +23 -0
  232. package/lib/types/src/test-driver/utils.d.ts +4 -0
  233. package/lib/types/src/togetherai/index.d.ts +22 -0
  234. package/lib/types/src/togetherai/interfaces.d.ts +95 -0
  235. package/lib/types/src/vertexai/debug.d.ts +1 -0
  236. package/lib/types/src/vertexai/embeddings/embeddings-image.d.ts +10 -0
  237. package/lib/types/src/vertexai/embeddings/embeddings-text.d.ts +9 -0
  238. package/lib/types/src/vertexai/index.d.ts +52 -0
  239. package/lib/types/src/vertexai/models/claude.d.ts +19 -0
  240. package/lib/types/src/vertexai/models/gemini.d.ts +17 -0
  241. package/lib/types/src/vertexai/models/imagen.d.ts +74 -0
  242. package/lib/types/src/vertexai/models/llama.d.ts +19 -0
  243. package/lib/types/src/vertexai/models.d.ts +14 -0
  244. package/lib/types/src/watsonx/index.d.ts +26 -0
  245. package/lib/types/src/watsonx/interfaces.d.ts +64 -0
  246. package/lib/types/src/xai/index.d.ts +18 -0
  247. package/lib/types/test-driver/TestErrorCompletionStream.d.ts +9 -0
  248. package/lib/types/test-driver/TestErrorCompletionStream.d.ts.map +1 -0
  249. package/lib/types/test-driver/TestValidationErrorCompletionStream.d.ts +9 -0
  250. package/lib/types/test-driver/TestValidationErrorCompletionStream.d.ts.map +1 -0
  251. package/lib/types/test-driver/index.d.ts +24 -0
  252. package/lib/types/test-driver/index.d.ts.map +1 -0
  253. package/lib/types/test-driver/utils.d.ts +5 -0
  254. package/lib/types/test-driver/utils.d.ts.map +1 -0
  255. package/lib/types/togetherai/index.d.ts +3 -3
  256. package/lib/types/togetherai/index.d.ts.map +1 -1
  257. package/lib/types/vertexai/index.d.ts +17 -14
  258. package/lib/types/vertexai/index.d.ts.map +1 -1
  259. package/lib/types/vertexai/models/claude.d.ts +2 -0
  260. package/lib/types/vertexai/models/claude.d.ts.map +1 -1
  261. package/lib/types/vertexai/models/gemini.d.ts.map +1 -1
  262. package/lib/types/vertexai/models/imagen.d.ts +2 -2
  263. package/lib/types/vertexai/models/imagen.d.ts.map +1 -1
  264. package/lib/types/vertexai/models/llama.d.ts +2 -2
  265. package/lib/types/vertexai/models/llama.d.ts.map +1 -1
  266. package/lib/types/vertexai/models.d.ts +2 -2
  267. package/lib/types/vertexai/models.d.ts.map +1 -1
  268. package/lib/types/watsonx/index.d.ts +3 -3
  269. package/lib/types/watsonx/index.d.ts.map +1 -1
  270. package/package.json +90 -85
  271. package/src/adobe/firefly.ts +14 -22
  272. package/src/azure/azure_foundry.ts +16 -16
  273. package/src/bedrock/index.ts +207 -28
  274. package/src/bedrock/twelvelabs.ts +150 -0
  275. package/src/groq/index.ts +134 -37
  276. package/src/huggingface_ie.ts +13 -14
  277. package/src/index.ts +2 -2
  278. package/src/mistral/index.ts +8 -7
  279. package/src/openai/azure_openai.ts +5 -5
  280. package/src/openai/index.ts +19 -13
  281. package/src/replicate.ts +14 -14
  282. package/src/{test → test-driver}/utils.ts +1 -1
  283. package/src/togetherai/index.ts +7 -7
  284. package/src/vertexai/embeddings/embeddings-text.ts +2 -2
  285. package/src/vertexai/index.ts +156 -40
  286. package/src/vertexai/models/claude.ts +45 -19
  287. package/src/vertexai/models/gemini.ts +161 -60
  288. package/src/vertexai/models/imagen.ts +15 -26
  289. package/src/vertexai/models/llama.ts +6 -5
  290. package/src/vertexai/models.ts +18 -6
  291. package/src/watsonx/index.ts +8 -8
  292. package/src/xai/index.ts +11 -12
  293. /package/src/{test → test-driver}/TestErrorCompletionStream.ts +0 -0
  294. /package/src/{test → test-driver}/TestValidationErrorCompletionStream.ts +0 -0
  295. /package/src/{test → test-driver}/index.ts +0 -0
@@ -1,5 +1,5 @@
1
1
  import {
2
- AIModel, Completion, CompletionChunk, CompletionChunkObject, ExecutionOptions, ModelType,
2
+ AIModel, Completion, CompletionChunkObject, ExecutionOptions, ModelType,
3
3
  PromptOptions, PromptRole, PromptSegment,
4
4
  TextFallbackOptions
5
5
  } from "@llumiverse/core";
@@ -195,7 +195,7 @@ export class LLamaModelDefinition implements ModelDefinition<LLamaPrompt> {
195
195
  });
196
196
 
197
197
  return {
198
- result: text,
198
+ result: [{ type: "text", value: text }],
199
199
  token_usage: {
200
200
  prompt: result.usage.prompt_tokens,
201
201
  result: result.usage.completion_tokens,
@@ -206,11 +206,11 @@ export class LLamaModelDefinition implements ModelDefinition<LLamaPrompt> {
206
206
  };
207
207
  }
208
208
 
209
- async requestTextCompletionStream(driver: VertexAIDriver, prompt: LLamaPrompt, options: ExecutionOptions): Promise<AsyncIterable<CompletionChunk>> {
209
+ async requestTextCompletionStream(driver: VertexAIDriver, prompt: LLamaPrompt, options: ExecutionOptions): Promise<AsyncIterable<CompletionChunkObject>> {
210
210
  const splits = options.model.split("/");
211
211
  const modelName = splits[splits.length - 1];
212
212
 
213
- let conversation = updateConversation(options.conversation as LLamaPrompt, prompt);
213
+ const conversation = updateConversation(options.conversation as LLamaPrompt, prompt);
214
214
 
215
215
  const modelOptions = options.model_options as TextFallbackOptions;
216
216
 
@@ -247,8 +247,9 @@ export class LLamaModelDefinition implements ModelDefinition<LLamaPrompt> {
247
247
  return transformSSEStream(stream, (data: string): CompletionChunkObject => {
248
248
  const json = JSON.parse(data) as LLamaStreamResponse;
249
249
  const choice = json.choices?.[0];
250
+ const content = choice?.delta?.content ?? '';
250
251
  return {
251
- result: choice?.delta?.content ?? '',
252
+ result: content ? [{ type: "text", value: content }] : [],
252
253
  finish_reason: choice?.finish_reason,
253
254
  token_usage: json.usage ? {
254
255
  prompt: json.usage.prompt_tokens,
@@ -1,5 +1,5 @@
1
- import { AIModel, Completion, PromptSegment, ExecutionOptions, CompletionChunk } from "@llumiverse/core";
2
- import { VertexAIDriver , trimModelName} from "./index.js";
1
+ import { AIModel, Completion, PromptSegment, ExecutionOptions, CompletionChunkObject } from "@llumiverse/core";
2
+ import { VertexAIDriver, trimModelName } from "./index.js";
3
3
  import { GeminiModelDefinition } from "./models/gemini.js";
4
4
  import { ClaudeModelDefinition } from "./models/claude.js";
5
5
  import { LLamaModelDefinition } from "./models/llama.js";
@@ -9,15 +9,27 @@ export interface ModelDefinition<PromptT = any> {
9
9
  versions?: string[]; // the versions of the model that are available. ex: ['001', '002']
10
10
  createPrompt: (driver: VertexAIDriver, segments: PromptSegment[], options: ExecutionOptions) => Promise<PromptT>;
11
11
  requestTextCompletion: (driver: VertexAIDriver, prompt: PromptT, options: ExecutionOptions) => Promise<Completion>;
12
- requestTextCompletionStream: (driver: VertexAIDriver, prompt: PromptT, options: ExecutionOptions) => Promise<AsyncIterable<CompletionChunk>>;
12
+ requestTextCompletionStream: (driver: VertexAIDriver, prompt: PromptT, options: ExecutionOptions) => Promise<AsyncIterable<CompletionChunkObject>>;
13
13
  preValidationProcessing?(result: Completion, options: ExecutionOptions): { result: Completion, options: ExecutionOptions };
14
14
  }
15
15
 
16
16
  export function getModelDefinition(model: string): ModelDefinition {
17
17
  const splits = model.split("/");
18
- const publisher = splits[1];
19
- const modelName = trimModelName(splits[splits.length - 1]);
20
-
18
+
19
+ // Handle both formats: "publishers/anthropic/models/..." and "locations/.../publishers/anthropic/models/..."
20
+ let publisher: string | undefined;
21
+ let modelName: string;
22
+
23
+ const publisherIndex = splits.indexOf("publishers");
24
+ if (publisherIndex !== -1 && publisherIndex + 1 < splits.length) {
25
+ publisher = splits[publisherIndex + 1];
26
+ modelName = trimModelName(splits[splits.length - 1]);
27
+ } else {
28
+ // Fallback to old logic for backward compatibility
29
+ publisher = splits[1];
30
+ modelName = trimModelName(splits[splits.length - 1]);
31
+ }
32
+
21
33
  if (publisher?.includes("anthropic")) {
22
34
  return new ClaudeModelDefinition(modelName);
23
35
  } else if (publisher?.includes("google")) {
@@ -1,4 +1,4 @@
1
- import { AIModel, AbstractDriver, Completion, CompletionChunk, DriverOptions, EmbeddingsOptions, EmbeddingsResult, ExecutionOptions, TextFallbackOptions } from "@llumiverse/core";
1
+ import { AIModel, AbstractDriver, Completion, CompletionChunkObject, DriverOptions, EmbeddingsOptions, EmbeddingsResult, ExecutionOptions, TextFallbackOptions } from "@llumiverse/core";
2
2
  import { transformSSEStream } from "@llumiverse/core/async";
3
3
  import { FetchClient } from "@vertesia/api-fetch-client";
4
4
  import { GenerateEmbeddingPayload, GenerateEmbeddingResponse, WatsonAuthToken, WatsonxListModelResponse, WatsonxModelSpec, WatsonxTextGenerationPayload, WatsonxTextGenerationResponse } from "./interfaces.js";
@@ -29,9 +29,9 @@ export class WatsonxDriver extends AbstractDriver<WatsonxDriverOptions, string>
29
29
  this.fetchClient = new FetchClient(this.endpoint_url).withAuthCallback(async () => this.getAuthToken().then(token => `Bearer ${token}`));
30
30
  }
31
31
 
32
- async requestTextCompletion(prompt: string, options: ExecutionOptions): Promise<Completion<any>> {
32
+ async requestTextCompletion(prompt: string, options: ExecutionOptions): Promise<Completion> {
33
33
  if (options.model_options?._option_id !== "text-fallback") {
34
- this.logger.warn("Invalid model options", { options: options.model_options });
34
+ this.logger.warn({ options: options.model_options }, "Invalid model options");
35
35
  }
36
36
  options.model_options = options.model_options as TextFallbackOptions | undefined;
37
37
 
@@ -53,7 +53,7 @@ export class WatsonxDriver extends AbstractDriver<WatsonxDriverOptions, string>
53
53
  const result = res.results[0];
54
54
 
55
55
  return {
56
- result: result.generated_text,
56
+ result: [{ type: "text", value: result.generated_text }],
57
57
  token_usage: {
58
58
  prompt: result.input_token_count,
59
59
  result: result.generated_token_count,
@@ -64,9 +64,9 @@ export class WatsonxDriver extends AbstractDriver<WatsonxDriverOptions, string>
64
64
  }
65
65
  }
66
66
 
67
- async requestTextCompletionStream(prompt: string, options: ExecutionOptions): Promise<AsyncIterable<CompletionChunk>> {
67
+ async requestTextCompletionStream(prompt: string, options: ExecutionOptions): Promise<AsyncIterable<CompletionChunkObject>> {
68
68
  if (options.model_options?._option_id !== "text-fallback") {
69
- this.logger.warn("Invalid model options", { options: options.model_options });
69
+ this.logger.warn({ options: options.model_options }, "Invalid model options");
70
70
  }
71
71
  options.model_options = options.model_options as TextFallbackOptions | undefined;
72
72
  const payload: WatsonxTextGenerationPayload = {
@@ -90,7 +90,7 @@ export class WatsonxDriver extends AbstractDriver<WatsonxDriverOptions, string>
90
90
  return transformSSEStream(stream, (data: string) => {
91
91
  const json = JSON.parse(data) as WatsonxTextGenerationResponse;
92
92
  return {
93
- result: json.results[0]?.generated_text ?? '',
93
+ result: json.results[0]?.generated_text ? [{ type: "text", value: json.results[0].generated_text }] : [],
94
94
  finish_reason: watsonFinishReason(json.results[0]?.stop_reason),
95
95
  token_usage: {
96
96
  prompt: json.results[0].input_token_count,
@@ -152,7 +152,7 @@ export class WatsonxDriver extends AbstractDriver<WatsonxDriverOptions, string>
152
152
  return this.listModels()
153
153
  .then(() => true)
154
154
  .catch((err) => {
155
- this.logger.warn("Failed to connect to WatsonX", { error: err });
155
+ this.logger.warn({ error: err }, "Failed to connect to WatsonX");
156
156
  return false
157
157
  });
158
158
  }
package/src/xai/index.ts CHANGED
@@ -5,7 +5,7 @@ import OpenAI from "openai";
5
5
  import { BaseOpenAIDriver } from "../openai/index.js";
6
6
 
7
7
  export interface xAiDriverOptions extends DriverOptions {
8
-
8
+
9
9
  apiKey: string;
10
10
 
11
11
  endpoint?: string;
@@ -17,7 +17,7 @@ export class xAIDriver extends BaseOpenAIDriver {
17
17
  service: OpenAI;
18
18
  provider: "xai";
19
19
  xai_service: FetchClient;
20
- DEFAULT_ENDPOINT = "https://api.x.ai/v1";
20
+ DEFAULT_ENDPOINT = "https://api.x.ai/v1";
21
21
 
22
22
  constructor(opts: xAiDriverOptions) {
23
23
  super(opts);
@@ -29,8 +29,8 @@ export class xAIDriver extends BaseOpenAIDriver {
29
29
  this.service = new OpenAI({
30
30
  apiKey: opts.apiKey,
31
31
  baseURL: opts.endpoint ?? this.DEFAULT_ENDPOINT,
32
- });
33
- this.xai_service = new FetchClient(opts.endpoint ?? this.DEFAULT_ENDPOINT ).withAuthCallback(async () => `Bearer ${opts.apiKey}`);
32
+ });
33
+ this.xai_service = new FetchClient(opts.endpoint ?? this.DEFAULT_ENDPOINT).withAuthCallback(async () => `Bearer ${opts.apiKey}`);
34
34
  this.provider = "xai";
35
35
  //this.formatPrompt = this._formatPrompt; //TODO: fix xai prompt formatting
36
36
  }
@@ -43,7 +43,7 @@ export class xAIDriver extends BaseOpenAIDriver {
43
43
  useToolForFormatting: false,
44
44
  }
45
45
 
46
- const p = await formatOpenAILikeMultimodalPrompt(segments, {...options, ...opts}) as OpenAI.Chat.Completions.ChatCompletionMessageParam[];
46
+ const p = await formatOpenAILikeMultimodalPrompt(segments, { ...options, ...opts }) as OpenAI.Chat.Completions.ChatCompletionMessageParam[];
47
47
 
48
48
  return p;
49
49
 
@@ -51,7 +51,7 @@ export class xAIDriver extends BaseOpenAIDriver {
51
51
 
52
52
  extractDataFromResponse(_options: ExecutionOptions, result: OpenAI.Chat.Completions.ChatCompletion): Completion {
53
53
  return {
54
- result: result.choices[0].message.content,
54
+ result: result.choices[0].message.content ? [{ type: "text", value: result.choices[0].message.content }] : [],
55
55
  finish_reason: result.choices[0].finish_reason,
56
56
  token_usage: {
57
57
  prompt: result.usage?.prompt_tokens,
@@ -63,7 +63,7 @@ export class xAIDriver extends BaseOpenAIDriver {
63
63
 
64
64
  async listModels(): Promise<AIModel[]> {
65
65
  const [lm, em] = await Promise.all([
66
- this.xai_service.get("/language-models") ,
66
+ this.xai_service.get("/language-models"),
67
67
  this.xai_service.get("/embedding-models")
68
68
  ]) as [xAIModelResponse, xAIModelResponse];
69
69
 
@@ -93,9 +93,9 @@ export class xAIDriver extends BaseOpenAIDriver {
93
93
 
94
94
  interface xAIModelResponse {
95
95
  models: xAIModel[];
96
- }
97
-
98
- interface xAIModel {
96
+ }
97
+
98
+ interface xAIModel {
99
99
  completion_text_token_price: number;
100
100
  created: number;
101
101
  id: string;
@@ -105,5 +105,4 @@ interface xAIModelResponse {
105
105
  owned_by: string;
106
106
  prompt_image_token_price: number;
107
107
  prompt_text_token_price: number;
108
- }
109
-
108
+ }
File without changes