notdiamond 1.1.4 → 2.0.0-rc10

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 (441) hide show
  1. package/CHANGELOG.md +143 -0
  2. package/LICENSE +201 -0
  3. package/README.md +642 -96
  4. package/api-promise.d.mts +2 -0
  5. package/api-promise.d.mts.map +1 -0
  6. package/api-promise.d.ts +2 -0
  7. package/api-promise.d.ts.map +1 -0
  8. package/api-promise.js +6 -0
  9. package/api-promise.js.map +1 -0
  10. package/api-promise.mjs +2 -0
  11. package/api-promise.mjs.map +1 -0
  12. package/client.d.mts +192 -0
  13. package/client.d.mts.map +1 -0
  14. package/client.d.ts +192 -0
  15. package/client.d.ts.map +1 -0
  16. package/client.js +463 -0
  17. package/client.js.map +1 -0
  18. package/client.mjs +459 -0
  19. package/client.mjs.map +1 -0
  20. package/core/api-promise.d.mts +46 -0
  21. package/core/api-promise.d.mts.map +1 -0
  22. package/core/api-promise.d.ts +46 -0
  23. package/core/api-promise.d.ts.map +1 -0
  24. package/core/api-promise.js +74 -0
  25. package/core/api-promise.js.map +1 -0
  26. package/core/api-promise.mjs +70 -0
  27. package/core/api-promise.mjs.map +1 -0
  28. package/core/error.d.mts +46 -0
  29. package/core/error.d.mts.map +1 -0
  30. package/core/error.d.ts +46 -0
  31. package/core/error.d.ts.map +1 -0
  32. package/core/error.js +113 -0
  33. package/core/error.js.map +1 -0
  34. package/core/error.mjs +97 -0
  35. package/core/error.mjs.map +1 -0
  36. package/core/resource.d.mts +6 -0
  37. package/core/resource.d.mts.map +1 -0
  38. package/core/resource.d.ts +6 -0
  39. package/core/resource.d.ts.map +1 -0
  40. package/core/resource.js +11 -0
  41. package/core/resource.js.map +1 -0
  42. package/core/resource.mjs +7 -0
  43. package/core/resource.mjs.map +1 -0
  44. package/core/uploads.d.mts +3 -0
  45. package/core/uploads.d.mts.map +1 -0
  46. package/core/uploads.d.ts +3 -0
  47. package/core/uploads.d.ts.map +1 -0
  48. package/core/uploads.js +6 -0
  49. package/core/uploads.js.map +1 -0
  50. package/core/uploads.mjs +2 -0
  51. package/core/uploads.mjs.map +1 -0
  52. package/error.d.mts +2 -0
  53. package/error.d.mts.map +1 -0
  54. package/error.d.ts +2 -0
  55. package/error.d.ts.map +1 -0
  56. package/error.js +6 -0
  57. package/error.js.map +1 -0
  58. package/error.mjs +2 -0
  59. package/error.mjs.map +1 -0
  60. package/index.d.mts +6 -0
  61. package/index.d.mts.map +1 -0
  62. package/index.d.ts +6 -0
  63. package/index.d.ts.map +1 -0
  64. package/index.js +30 -0
  65. package/index.js.map +1 -0
  66. package/index.mjs +7 -0
  67. package/index.mjs.map +1 -0
  68. package/internal/builtin-types.d.mts +73 -0
  69. package/internal/builtin-types.d.mts.map +1 -0
  70. package/internal/builtin-types.d.ts +73 -0
  71. package/internal/builtin-types.d.ts.map +1 -0
  72. package/internal/builtin-types.js +4 -0
  73. package/internal/builtin-types.js.map +1 -0
  74. package/internal/builtin-types.mjs +3 -0
  75. package/internal/builtin-types.mjs.map +1 -0
  76. package/internal/detect-platform.d.mts +15 -0
  77. package/internal/detect-platform.d.mts.map +1 -0
  78. package/internal/detect-platform.d.ts +15 -0
  79. package/internal/detect-platform.d.ts.map +1 -0
  80. package/internal/detect-platform.js +162 -0
  81. package/internal/detect-platform.js.map +1 -0
  82. package/internal/detect-platform.mjs +157 -0
  83. package/internal/detect-platform.mjs.map +1 -0
  84. package/internal/errors.d.mts +3 -0
  85. package/internal/errors.d.mts.map +1 -0
  86. package/internal/errors.d.ts +3 -0
  87. package/internal/errors.d.ts.map +1 -0
  88. package/internal/errors.js +41 -0
  89. package/internal/errors.js.map +1 -0
  90. package/internal/errors.mjs +36 -0
  91. package/internal/errors.mjs.map +1 -0
  92. package/internal/headers.d.mts +20 -0
  93. package/internal/headers.d.mts.map +1 -0
  94. package/internal/headers.d.ts +20 -0
  95. package/internal/headers.d.ts.map +1 -0
  96. package/internal/headers.js +79 -0
  97. package/internal/headers.js.map +1 -0
  98. package/internal/headers.mjs +74 -0
  99. package/internal/headers.mjs.map +1 -0
  100. package/internal/parse.d.mts +12 -0
  101. package/internal/parse.d.mts.map +1 -0
  102. package/internal/parse.d.ts +12 -0
  103. package/internal/parse.d.ts.map +1 -0
  104. package/internal/parse.js +35 -0
  105. package/internal/parse.js.map +1 -0
  106. package/internal/parse.mjs +32 -0
  107. package/internal/parse.mjs.map +1 -0
  108. package/internal/qs/formats.d.mts +7 -0
  109. package/internal/qs/formats.d.mts.map +1 -0
  110. package/internal/qs/formats.d.ts +7 -0
  111. package/internal/qs/formats.d.ts.map +1 -0
  112. package/internal/qs/formats.js +13 -0
  113. package/internal/qs/formats.js.map +1 -0
  114. package/internal/qs/formats.mjs +9 -0
  115. package/internal/qs/formats.mjs.map +1 -0
  116. package/internal/qs/index.d.mts +10 -0
  117. package/internal/qs/index.d.mts.map +1 -0
  118. package/internal/qs/index.d.ts +10 -0
  119. package/internal/qs/index.d.ts.map +1 -0
  120. package/internal/qs/index.js +14 -0
  121. package/internal/qs/index.js.map +1 -0
  122. package/internal/qs/index.mjs +10 -0
  123. package/internal/qs/index.mjs.map +1 -0
  124. package/internal/qs/stringify.d.mts +3 -0
  125. package/internal/qs/stringify.d.mts.map +1 -0
  126. package/internal/qs/stringify.d.ts +3 -0
  127. package/internal/qs/stringify.d.ts.map +1 -0
  128. package/internal/qs/stringify.js +277 -0
  129. package/internal/qs/stringify.js.map +1 -0
  130. package/internal/qs/stringify.mjs +274 -0
  131. package/internal/qs/stringify.mjs.map +1 -0
  132. package/internal/qs/types.d.mts +57 -0
  133. package/internal/qs/types.d.mts.map +1 -0
  134. package/internal/qs/types.d.ts +57 -0
  135. package/internal/qs/types.d.ts.map +1 -0
  136. package/internal/qs/types.js +3 -0
  137. package/internal/qs/types.js.map +1 -0
  138. package/internal/qs/types.mjs +2 -0
  139. package/internal/qs/types.mjs.map +1 -0
  140. package/internal/qs/utils.d.mts +15 -0
  141. package/internal/qs/utils.d.mts.map +1 -0
  142. package/internal/qs/utils.d.ts +15 -0
  143. package/internal/qs/utils.d.ts.map +1 -0
  144. package/internal/qs/utils.js +230 -0
  145. package/internal/qs/utils.js.map +1 -0
  146. package/internal/qs/utils.mjs +217 -0
  147. package/internal/qs/utils.mjs.map +1 -0
  148. package/internal/request-options.d.mts +75 -0
  149. package/internal/request-options.d.mts.map +1 -0
  150. package/internal/request-options.d.ts +75 -0
  151. package/internal/request-options.d.ts.map +1 -0
  152. package/internal/request-options.js +14 -0
  153. package/internal/request-options.js.map +1 -0
  154. package/internal/request-options.mjs +10 -0
  155. package/internal/request-options.mjs.map +1 -0
  156. package/internal/shim-types.d.mts +17 -0
  157. package/internal/shim-types.d.mts.map +1 -0
  158. package/internal/shim-types.d.ts +17 -0
  159. package/internal/shim-types.d.ts.map +1 -0
  160. package/internal/shim-types.js +4 -0
  161. package/internal/shim-types.js.map +1 -0
  162. package/internal/shim-types.mjs +3 -0
  163. package/internal/shim-types.mjs.map +1 -0
  164. package/internal/shims.d.mts +20 -0
  165. package/internal/shims.d.mts.map +1 -0
  166. package/internal/shims.d.ts +20 -0
  167. package/internal/shims.d.ts.map +1 -0
  168. package/internal/shims.js +92 -0
  169. package/internal/shims.js.map +1 -0
  170. package/internal/shims.mjs +85 -0
  171. package/internal/shims.mjs.map +1 -0
  172. package/internal/to-file.d.mts +45 -0
  173. package/internal/to-file.d.mts.map +1 -0
  174. package/internal/to-file.d.ts +45 -0
  175. package/internal/to-file.d.ts.map +1 -0
  176. package/internal/to-file.js +91 -0
  177. package/internal/to-file.js.map +1 -0
  178. package/internal/to-file.mjs +88 -0
  179. package/internal/to-file.mjs.map +1 -0
  180. package/internal/tslib.js +81 -0
  181. package/internal/tslib.mjs +17 -0
  182. package/internal/types.d.mts +69 -0
  183. package/internal/types.d.mts.map +1 -0
  184. package/internal/types.d.ts +69 -0
  185. package/internal/types.d.ts.map +1 -0
  186. package/internal/types.js +4 -0
  187. package/internal/types.js.map +1 -0
  188. package/internal/types.mjs +3 -0
  189. package/internal/types.mjs.map +1 -0
  190. package/internal/uploads.d.mts +42 -0
  191. package/internal/uploads.d.mts.map +1 -0
  192. package/internal/uploads.d.ts +42 -0
  193. package/internal/uploads.d.ts.map +1 -0
  194. package/internal/uploads.js +141 -0
  195. package/internal/uploads.js.map +1 -0
  196. package/internal/uploads.mjs +131 -0
  197. package/internal/uploads.mjs.map +1 -0
  198. package/internal/utils/base64.d.mts +3 -0
  199. package/internal/utils/base64.d.mts.map +1 -0
  200. package/internal/utils/base64.d.ts +3 -0
  201. package/internal/utils/base64.d.ts.map +1 -0
  202. package/internal/utils/base64.js +38 -0
  203. package/internal/utils/base64.js.map +1 -0
  204. package/internal/utils/base64.mjs +33 -0
  205. package/internal/utils/base64.mjs.map +1 -0
  206. package/internal/utils/bytes.d.mts +4 -0
  207. package/internal/utils/bytes.d.mts.map +1 -0
  208. package/internal/utils/bytes.d.ts +4 -0
  209. package/internal/utils/bytes.d.ts.map +1 -0
  210. package/internal/utils/bytes.js +31 -0
  211. package/internal/utils/bytes.js.map +1 -0
  212. package/internal/utils/bytes.mjs +26 -0
  213. package/internal/utils/bytes.mjs.map +1 -0
  214. package/internal/utils/env.d.mts +9 -0
  215. package/internal/utils/env.d.mts.map +1 -0
  216. package/internal/utils/env.d.ts +9 -0
  217. package/internal/utils/env.d.ts.map +1 -0
  218. package/internal/utils/env.js +24 -0
  219. package/internal/utils/env.js.map +1 -0
  220. package/internal/utils/env.mjs +20 -0
  221. package/internal/utils/env.mjs.map +1 -0
  222. package/internal/utils/log.d.mts +37 -0
  223. package/internal/utils/log.d.mts.map +1 -0
  224. package/internal/utils/log.d.ts +37 -0
  225. package/internal/utils/log.d.ts.map +1 -0
  226. package/internal/utils/log.js +85 -0
  227. package/internal/utils/log.js.map +1 -0
  228. package/internal/utils/log.mjs +79 -0
  229. package/internal/utils/log.mjs.map +1 -0
  230. package/internal/utils/path.d.mts +15 -0
  231. package/internal/utils/path.d.mts.map +1 -0
  232. package/internal/utils/path.d.ts +15 -0
  233. package/internal/utils/path.d.ts.map +1 -0
  234. package/internal/utils/path.js +79 -0
  235. package/internal/utils/path.js.map +1 -0
  236. package/internal/utils/path.mjs +74 -0
  237. package/internal/utils/path.mjs.map +1 -0
  238. package/internal/utils/sleep.d.mts +2 -0
  239. package/internal/utils/sleep.d.mts.map +1 -0
  240. package/internal/utils/sleep.d.ts +2 -0
  241. package/internal/utils/sleep.d.ts.map +1 -0
  242. package/internal/utils/sleep.js +7 -0
  243. package/internal/utils/sleep.js.map +1 -0
  244. package/internal/utils/sleep.mjs +3 -0
  245. package/internal/utils/sleep.mjs.map +1 -0
  246. package/internal/utils/uuid.d.mts +5 -0
  247. package/internal/utils/uuid.d.mts.map +1 -0
  248. package/internal/utils/uuid.d.ts +5 -0
  249. package/internal/utils/uuid.d.ts.map +1 -0
  250. package/internal/utils/uuid.js +19 -0
  251. package/internal/utils/uuid.js.map +1 -0
  252. package/internal/utils/uuid.mjs +15 -0
  253. package/internal/utils/uuid.mjs.map +1 -0
  254. package/internal/utils/values.d.mts +18 -0
  255. package/internal/utils/values.d.mts.map +1 -0
  256. package/internal/utils/values.d.ts +18 -0
  257. package/internal/utils/values.d.ts.map +1 -0
  258. package/internal/utils/values.js +112 -0
  259. package/internal/utils/values.js.map +1 -0
  260. package/internal/utils/values.mjs +94 -0
  261. package/internal/utils/values.mjs.map +1 -0
  262. package/internal/utils.d.mts +7 -0
  263. package/internal/utils.d.mts.map +1 -0
  264. package/internal/utils.d.ts +7 -0
  265. package/internal/utils.d.ts.map +1 -0
  266. package/internal/utils.js +11 -0
  267. package/internal/utils.js.map +1 -0
  268. package/internal/utils.mjs +8 -0
  269. package/internal/utils.mjs.map +1 -0
  270. package/package.json +129 -123
  271. package/resource.d.mts +2 -0
  272. package/resource.d.mts.map +1 -0
  273. package/resource.d.ts +2 -0
  274. package/resource.d.ts.map +1 -0
  275. package/resource.js +6 -0
  276. package/resource.js.map +1 -0
  277. package/resource.mjs +2 -0
  278. package/resource.mjs.map +1 -0
  279. package/resources/custom-router.d.mts +145 -0
  280. package/resources/custom-router.d.mts.map +1 -0
  281. package/resources/custom-router.d.ts +145 -0
  282. package/resources/custom-router.d.ts.map +1 -0
  283. package/resources/custom-router.js +83 -0
  284. package/resources/custom-router.js.map +1 -0
  285. package/resources/custom-router.mjs +79 -0
  286. package/resources/custom-router.mjs.map +1 -0
  287. package/resources/index.d.mts +7 -0
  288. package/resources/index.d.mts.map +1 -0
  289. package/resources/index.d.ts +7 -0
  290. package/resources/index.d.ts.map +1 -0
  291. package/resources/index.js +17 -0
  292. package/resources/index.js.map +1 -0
  293. package/resources/index.mjs +8 -0
  294. package/resources/index.mjs.map +1 -0
  295. package/resources/model-router.d.mts +196 -0
  296. package/resources/model-router.d.mts.map +1 -0
  297. package/resources/model-router.d.ts +196 -0
  298. package/resources/model-router.d.ts.map +1 -0
  299. package/resources/model-router.js +70 -0
  300. package/resources/model-router.js.map +1 -0
  301. package/resources/model-router.mjs +66 -0
  302. package/resources/model-router.mjs.map +1 -0
  303. package/resources/models.d.mts +110 -0
  304. package/resources/models.d.mts.map +1 -0
  305. package/resources/models.d.ts +110 -0
  306. package/resources/models.d.ts.map +1 -0
  307. package/resources/models.js +49 -0
  308. package/resources/models.js.map +1 -0
  309. package/resources/models.mjs +45 -0
  310. package/resources/models.mjs.map +1 -0
  311. package/resources/preferences.d.mts +97 -0
  312. package/resources/preferences.d.mts.map +1 -0
  313. package/resources/preferences.d.ts +97 -0
  314. package/resources/preferences.d.ts.map +1 -0
  315. package/resources/preferences.js +70 -0
  316. package/resources/preferences.js.map +1 -0
  317. package/resources/preferences.mjs +66 -0
  318. package/resources/preferences.mjs.map +1 -0
  319. package/resources/prompt-adaptation.d.mts +679 -0
  320. package/resources/prompt-adaptation.d.mts.map +1 -0
  321. package/resources/prompt-adaptation.d.ts +679 -0
  322. package/resources/prompt-adaptation.d.ts.map +1 -0
  323. package/resources/prompt-adaptation.js +266 -0
  324. package/resources/prompt-adaptation.js.map +1 -0
  325. package/resources/prompt-adaptation.mjs +262 -0
  326. package/resources/prompt-adaptation.mjs.map +1 -0
  327. package/resources/report/index.d.mts +3 -0
  328. package/resources/report/index.d.mts.map +1 -0
  329. package/resources/report/index.d.ts +3 -0
  330. package/resources/report/index.d.ts.map +1 -0
  331. package/resources/report/index.js +9 -0
  332. package/resources/report/index.js.map +1 -0
  333. package/resources/report/index.mjs +4 -0
  334. package/resources/report/index.mjs.map +1 -0
  335. package/resources/report/metrics.d.mts +87 -0
  336. package/resources/report/metrics.d.mts.map +1 -0
  337. package/resources/report/metrics.d.ts +87 -0
  338. package/resources/report/metrics.d.ts.map +1 -0
  339. package/resources/report/metrics.js +57 -0
  340. package/resources/report/metrics.js.map +1 -0
  341. package/resources/report/metrics.mjs +53 -0
  342. package/resources/report/metrics.mjs.map +1 -0
  343. package/resources/report/report.d.mts +10 -0
  344. package/resources/report/report.d.mts.map +1 -0
  345. package/resources/report/report.d.ts +10 -0
  346. package/resources/report/report.d.ts.map +1 -0
  347. package/resources/report/report.js +17 -0
  348. package/resources/report/report.js.map +1 -0
  349. package/resources/report/report.mjs +12 -0
  350. package/resources/report/report.mjs.map +1 -0
  351. package/resources/report.d.mts +2 -0
  352. package/resources/report.d.mts.map +1 -0
  353. package/resources/report.d.ts +2 -0
  354. package/resources/report.d.ts.map +1 -0
  355. package/resources/report.js +6 -0
  356. package/resources/report.js.map +1 -0
  357. package/resources/report.mjs +3 -0
  358. package/resources/report.mjs.map +1 -0
  359. package/resources.d.mts +2 -0
  360. package/resources.d.mts.map +1 -0
  361. package/resources.d.ts +2 -0
  362. package/resources.d.ts.map +1 -0
  363. package/resources.js +5 -0
  364. package/resources.js.map +1 -0
  365. package/resources.mjs +2 -0
  366. package/resources.mjs.map +1 -0
  367. package/src/api-promise.ts +2 -0
  368. package/src/client.ts +791 -0
  369. package/src/core/README.md +3 -0
  370. package/src/core/api-promise.ts +92 -0
  371. package/src/core/error.ts +130 -0
  372. package/src/core/resource.ts +11 -0
  373. package/src/core/uploads.ts +2 -0
  374. package/src/error.ts +2 -0
  375. package/src/index.ts +22 -0
  376. package/src/internal/README.md +3 -0
  377. package/src/internal/builtin-types.ts +93 -0
  378. package/src/internal/detect-platform.ts +196 -0
  379. package/src/internal/errors.ts +33 -0
  380. package/src/internal/headers.ts +97 -0
  381. package/src/internal/parse.ts +50 -0
  382. package/src/internal/qs/LICENSE.md +13 -0
  383. package/src/internal/qs/README.md +3 -0
  384. package/src/internal/qs/formats.ts +10 -0
  385. package/src/internal/qs/index.ts +13 -0
  386. package/src/internal/qs/stringify.ts +385 -0
  387. package/src/internal/qs/types.ts +71 -0
  388. package/src/internal/qs/utils.ts +265 -0
  389. package/src/internal/request-options.ts +91 -0
  390. package/src/internal/shim-types.ts +26 -0
  391. package/src/internal/shims.ts +107 -0
  392. package/src/internal/to-file.ts +154 -0
  393. package/src/internal/types.ts +95 -0
  394. package/src/internal/uploads.ts +187 -0
  395. package/src/internal/utils/base64.ts +40 -0
  396. package/src/internal/utils/bytes.ts +32 -0
  397. package/src/internal/utils/env.ts +20 -0
  398. package/src/internal/utils/log.ts +126 -0
  399. package/src/internal/utils/path.ts +88 -0
  400. package/src/internal/utils/sleep.ts +3 -0
  401. package/src/internal/utils/uuid.ts +17 -0
  402. package/src/internal/utils/values.ts +105 -0
  403. package/src/internal/utils.ts +8 -0
  404. package/src/lib/.keep +4 -0
  405. package/src/resource.ts +2 -0
  406. package/src/resources/custom-router.ts +168 -0
  407. package/src/resources/index.ts +33 -0
  408. package/src/resources/model-router.ts +224 -0
  409. package/src/resources/models.ts +133 -0
  410. package/src/resources/preferences.ts +121 -0
  411. package/src/resources/prompt-adaptation.ts +770 -0
  412. package/src/resources/report/index.ts +4 -0
  413. package/src/resources/report/metrics.ts +99 -0
  414. package/src/resources/report/report.ts +19 -0
  415. package/src/resources/report.ts +3 -0
  416. package/src/resources.ts +1 -0
  417. package/src/tsconfig.json +11 -0
  418. package/src/uploads.ts +2 -0
  419. package/src/version.ts +1 -0
  420. package/uploads.d.mts +2 -0
  421. package/uploads.d.mts.map +1 -0
  422. package/uploads.d.ts +2 -0
  423. package/uploads.d.ts.map +1 -0
  424. package/uploads.js +6 -0
  425. package/uploads.js.map +1 -0
  426. package/uploads.mjs +2 -0
  427. package/uploads.mjs.map +1 -0
  428. package/version.d.mts +2 -0
  429. package/version.d.mts.map +1 -0
  430. package/version.d.ts +2 -0
  431. package/version.d.ts.map +1 -0
  432. package/version.js +5 -0
  433. package/version.js.map +1 -0
  434. package/version.mjs +2 -0
  435. package/version.mjs.map +1 -0
  436. package/LICENCE +0 -21
  437. package/dist/index.cjs +0 -601
  438. package/dist/index.d.cts +0 -228
  439. package/dist/index.d.mts +0 -228
  440. package/dist/index.d.ts +0 -228
  441. package/dist/index.mjs +0 -580
package/dist/index.mjs DELETED
@@ -1,580 +0,0 @@
1
- import * as dotenv from 'dotenv';
2
- import { ChatOpenAI } from '@langchain/openai';
3
- import { AIMessage, SystemMessage, HumanMessage } from '@langchain/core/messages';
4
- import { ChatAnthropic } from '@langchain/anthropic';
5
- import { ChatGoogleGenerativeAI } from '@langchain/google-genai';
6
- import { ChatMistralAI } from '@langchain/mistralai';
7
- import { BaseChatModel } from '@langchain/core/language_models/chat_models';
8
- import axios from 'axios';
9
- import { ChatCohere } from '@langchain/cohere';
10
- import { ChatTogetherAI } from '@langchain/community/chat_models/togetherai';
11
-
12
- const version = "1.1.4";
13
- const packageJson = {
14
- version: version};
15
-
16
- class ChatPerplexity extends BaseChatModel {
17
- _generate(messages, options, runManager) {
18
- throw new Error(
19
- "Method not implemented." + JSON.stringify(messages) + JSON.stringify(options) + JSON.stringify(runManager)
20
- );
21
- }
22
- apiKey;
23
- model;
24
- constructor({ apiKey, model }) {
25
- super({});
26
- this.apiKey = apiKey;
27
- this.model = model;
28
- }
29
- _llmType() {
30
- return "perplexity";
31
- }
32
- /**
33
- * Invokes the Perplexity model.
34
- * @param messages The messages to send to the model.
35
- * @returns The results of the model.
36
- */
37
- async invoke(messages) {
38
- try {
39
- const { data } = await axios.post(
40
- "https://api.perplexity.ai/chat/completions",
41
- {
42
- model: this.model,
43
- messages: messages.map((m) => ({
44
- role: m._getType() === "human" ? "user" : m._getType(),
45
- content: m.content
46
- }))
47
- },
48
- {
49
- headers: {
50
- Authorization: `Bearer ${this.apiKey}`
51
- }
52
- }
53
- );
54
- return new AIMessage(data.choices[0].message.content);
55
- } catch (error) {
56
- if (axios.isAxiosError(error) && error.response) {
57
- throw new Error(`Perplexity API error: ${error.response.statusText}`);
58
- }
59
- throw error;
60
- }
61
- }
62
- }
63
-
64
- const SupportedProvider = {
65
- OPENAI: "openai",
66
- ANTHROPIC: "anthropic",
67
- GOOGLE: "google",
68
- MISTRAL: "mistral",
69
- PERPLEXITY: "perplexity",
70
- COHERE: "cohere",
71
- TOGETHERAI: "togetherai"
72
- };
73
- const SupportedModel = {
74
- GPT_3_5_TURBO: "gpt-3.5-turbo",
75
- GPT_3_5_TURBO_0125: "gpt-3.5-turbo-0125",
76
- GPT_4: "gpt-4",
77
- GPT_4_0613: "gpt-4-0613",
78
- GPT_4_1106_PREVIEW: "gpt-4-1106-preview",
79
- GPT_4_TURBO: "gpt-4-turbo",
80
- GPT_4_TURBO_PREVIEW: "gpt-4-turbo-preview",
81
- GPT_4_TURBO_2024_04_09: "gpt-4-turbo-2024-04-09",
82
- GPT_4O_2024_05_13: "gpt-4o-2024-05-13",
83
- GPT_4O_2024_08_06: "gpt-4o-2024-08-06",
84
- GPT_4O: "gpt-4o",
85
- GPT_4O_MINI_2024_07_18: "gpt-4o-mini-2024-07-18",
86
- GPT_4O_MINI: "gpt-4o-mini",
87
- GPT_4_0125_PREVIEW: "gpt-4-0125-preview",
88
- GPT_4_1: "gpt-4.1",
89
- GPT_4_1_2025_04_14: "gpt-4.1-2025-04-14",
90
- GPT_4_1_MINI: "gpt-4.1-mini",
91
- GPT_4_1_MINI_2025_04_14: "gpt-4.1-mini-2025-04-14",
92
- GPT_4_1_NANO: "gpt-4.1-nano",
93
- GPT_4_1_NANO_2025_04_14: "gpt-4.1-nano-2025-04-14",
94
- CHATGPT_4O_LATEST: "chatgpt-4o-latest",
95
- CLAUDE_2_1: "claude-2.1",
96
- CLAUDE_3_OPUS_20240229: "claude-3-opus-20240229",
97
- CLAUDE_3_SONNET_20240229: "claude-3-sonnet-20240229",
98
- CLAUDE_3_5_SONNET_20240620: "claude-3-5-sonnet-20240620",
99
- CLAUDE_3_5_SONNET_20241022: "claude-3-5-sonnet-20241022",
100
- CLAUDE_3_5_SONNET_LATEST: "claude-3-5-sonnet-latest",
101
- CLAUDE_3_HAIKU_20240307: "claude-3-haiku-20240307",
102
- CLAUDE_3_5_HAIKU_20241022: "claude-3-5-haiku-20241022",
103
- CLAUDE_3_7_SONNET_LATEST: "claude-3-7-sonnet-latest",
104
- CLAUDE_3_7_SONNET_20250219: "claude-3-7-sonnet-20250219",
105
- CLAUDE_OPUS_4_20250514: "claude-opus-4-20250514",
106
- CLAUDE_SONNET_4_20250514: "claude-sonnet-4-20250514",
107
- CLAUDE_OPUS_4_0: "claude-opus-4-0",
108
- CLAUDE_SONNET_4_0: "claude-sonnet-4-0",
109
- CLAUDE_SONNET_4_5: "claude-sonnet-4-5",
110
- CLAUDE_SONNET_4_5_20250929: "claude-sonnet-4-5-20250929",
111
- CLAUDE_HAIKU_4_5: "claude-haiku-4-5",
112
- CLAUDE_HAIKU_4_5_20251001: "claude-haiku-4-5-20251001",
113
- GEMINI_PRO: "gemini-pro",
114
- GEMINI_1_PRO_LATEST: "gemini-1.0-pro-latest",
115
- GEMINI_15_PRO_LATEST: "gemini-1.5-pro-latest",
116
- GEMINI_15_PRO_EXP_0801: "gemini-1.5-pro-exp-0801",
117
- GEMINI_15_FLASH_LATEST: "gemini-1.5-flash-latest",
118
- GEMINI_2_0_FLASH: "gemini-2.0-flash",
119
- GEMINI_2_0_FLASH_001: "gemini-2.0-flash-001",
120
- GEMINI_2_5_FLASH: "gemini-2.5-flash",
121
- GEMINI_2_5_PRO: "gemini-2.5-pro",
122
- COMMAND_R: "command-r",
123
- COMMAND_R_PLUS: "command-r-plus",
124
- MISTRAL_LARGE_LATEST: "mistral-large-latest",
125
- MISTRAL_LARGE_2407: "mistral-large-2407",
126
- MISTRAL_LARGE_2402: "mistral-large-2402",
127
- MISTRAL_MEDIUM_LATEST: "mistral-medium-latest",
128
- MISTRAL_SMALL_LATEST: "mistral-small-latest",
129
- CODESTRAL_LATEST: "codestral-latest",
130
- OPEN_MISTRAL_7B: "open-mistral-7b",
131
- OPEN_MIXTRAL_8X7B: "open-mixtral-8x7b",
132
- OPEN_MIXTRAL_8X22B: "open-mixtral-8x22b",
133
- MISTRAL_7B_INSTRUCT_V0_2: "Mistral-7B-Instruct-v0.2",
134
- MIXTRAL_8X7B_INSTRUCT_V0_1: "Mixtral-8x7B-Instruct-v0.1",
135
- MIXTRAL_8X22B_INSTRUCT_V0_1: "Mixtral-8x22B-Instruct-v0.1",
136
- LLAMA_3_70B_CHAT_HF: "Llama-3-70b-chat-hf",
137
- LLAMA_3_8B_CHAT_HF: "Llama-3-8b-chat-hf",
138
- QWEN2_72B_INSTRUCT: "Qwen2-72B-Instruct",
139
- LLAMA_3_1_8B_INSTRUCT_TURBO: "Meta-Llama-3.1-8B-Instruct-Turbo",
140
- LLAMA_3_1_70B_INSTRUCT_TURBO: "Meta-Llama-3.1-70B-Instruct-Turbo",
141
- LLAMA_3_1_405B_INSTRUCT_TURBO: "Meta-Llama-3.1-405B-Instruct-Turbo",
142
- PERPLEXITY_SONAR: "sonar",
143
- OPEN_MISTRAL_NEMO: "open-mistral-nemo",
144
- DEEPSEEK_R1: "DeepSeek-R1"
145
- };
146
- ({
147
- [SupportedProvider.OPENAI]: [
148
- SupportedModel.GPT_3_5_TURBO,
149
- SupportedModel.GPT_3_5_TURBO_0125,
150
- SupportedModel.GPT_4,
151
- SupportedModel.GPT_4_0613,
152
- SupportedModel.GPT_4_1106_PREVIEW,
153
- SupportedModel.GPT_4_TURBO,
154
- SupportedModel.GPT_4_TURBO_PREVIEW,
155
- SupportedModel.GPT_4_TURBO_2024_04_09,
156
- SupportedModel.GPT_4O_2024_05_13,
157
- SupportedModel.GPT_4O_2024_08_06,
158
- SupportedModel.GPT_4O,
159
- SupportedModel.GPT_4O_MINI_2024_07_18,
160
- SupportedModel.GPT_4O_MINI,
161
- SupportedModel.GPT_4_0125_PREVIEW,
162
- SupportedModel.CHATGPT_4O_LATEST,
163
- SupportedModel.GPT_4_1,
164
- SupportedModel.GPT_4_1_2025_04_14,
165
- SupportedModel.GPT_4_1_MINI,
166
- SupportedModel.GPT_4_1_MINI_2025_04_14,
167
- SupportedModel.GPT_4_1_NANO,
168
- SupportedModel.GPT_4_1_NANO_2025_04_14
169
- ],
170
- [SupportedProvider.ANTHROPIC]: [
171
- SupportedModel.CLAUDE_2_1,
172
- SupportedModel.CLAUDE_3_OPUS_20240229,
173
- SupportedModel.CLAUDE_3_SONNET_20240229,
174
- SupportedModel.CLAUDE_3_5_SONNET_20240620,
175
- SupportedModel.CLAUDE_3_5_SONNET_20241022,
176
- SupportedModel.CLAUDE_3_5_SONNET_LATEST,
177
- SupportedModel.CLAUDE_3_HAIKU_20240307,
178
- SupportedModel.CLAUDE_3_5_HAIKU_20241022,
179
- SupportedModel.CLAUDE_3_7_SONNET_LATEST,
180
- SupportedModel.CLAUDE_3_7_SONNET_20250219,
181
- SupportedModel.CLAUDE_OPUS_4_20250514,
182
- SupportedModel.CLAUDE_SONNET_4_20250514,
183
- SupportedModel.CLAUDE_OPUS_4_0,
184
- SupportedModel.CLAUDE_SONNET_4_0,
185
- SupportedModel.CLAUDE_SONNET_4_5,
186
- SupportedModel.CLAUDE_SONNET_4_5_20250929,
187
- SupportedModel.CLAUDE_HAIKU_4_5,
188
- SupportedModel.CLAUDE_HAIKU_4_5_20251001
189
- ],
190
- [SupportedProvider.GOOGLE]: [
191
- SupportedModel.GEMINI_PRO,
192
- SupportedModel.GEMINI_1_PRO_LATEST,
193
- SupportedModel.GEMINI_15_PRO_LATEST,
194
- SupportedModel.GEMINI_15_PRO_EXP_0801,
195
- SupportedModel.GEMINI_15_FLASH_LATEST,
196
- SupportedModel.GEMINI_2_0_FLASH,
197
- SupportedModel.GEMINI_2_0_FLASH_001,
198
- SupportedModel.GEMINI_2_5_FLASH,
199
- SupportedModel.GEMINI_2_5_PRO
200
- ],
201
- [SupportedProvider.MISTRAL]: [
202
- SupportedModel.MISTRAL_LARGE_LATEST,
203
- SupportedModel.MISTRAL_LARGE_2407,
204
- SupportedModel.MISTRAL_LARGE_2402,
205
- SupportedModel.MISTRAL_MEDIUM_LATEST,
206
- SupportedModel.MISTRAL_SMALL_LATEST,
207
- SupportedModel.CODESTRAL_LATEST,
208
- SupportedModel.OPEN_MISTRAL_7B,
209
- SupportedModel.OPEN_MIXTRAL_8X7B,
210
- SupportedModel.OPEN_MIXTRAL_8X22B,
211
- SupportedModel.OPEN_MISTRAL_NEMO
212
- ],
213
- [SupportedProvider.PERPLEXITY]: [SupportedModel.PERPLEXITY_SONAR],
214
- [SupportedProvider.COHERE]: [
215
- SupportedModel.COMMAND_R,
216
- SupportedModel.COMMAND_R_PLUS
217
- ],
218
- [SupportedProvider.TOGETHERAI]: [
219
- SupportedModel.MISTRAL_7B_INSTRUCT_V0_2,
220
- SupportedModel.MIXTRAL_8X7B_INSTRUCT_V0_1,
221
- SupportedModel.MIXTRAL_8X22B_INSTRUCT_V0_1,
222
- SupportedModel.LLAMA_3_70B_CHAT_HF,
223
- SupportedModel.LLAMA_3_8B_CHAT_HF,
224
- SupportedModel.QWEN2_72B_INSTRUCT,
225
- SupportedModel.LLAMA_3_1_8B_INSTRUCT_TURBO,
226
- SupportedModel.LLAMA_3_1_70B_INSTRUCT_TURBO,
227
- SupportedModel.LLAMA_3_1_405B_INSTRUCT_TURBO,
228
- SupportedModel.DEEPSEEK_R1
229
- ]
230
- });
231
-
232
- function getLangChainModel(provider, llmKeys, responseModel) {
233
- const { OPENAI, ANTHROPIC, GOOGLE, MISTRAL, PERPLEXITY, COHERE, TOGETHERAI } = SupportedProvider;
234
- switch (provider.provider) {
235
- case OPENAI:
236
- if (responseModel) {
237
- return new ChatOpenAI({
238
- modelName: provider.model,
239
- apiKey: llmKeys.openai || process.env.OPENAI_API_KEY
240
- }).withStructuredOutput(responseModel);
241
- }
242
- return new ChatOpenAI({
243
- modelName: provider.model,
244
- apiKey: llmKeys.openai || process.env.OPENAI_API_KEY
245
- });
246
- case ANTHROPIC:
247
- if (responseModel) {
248
- return new ChatAnthropic({
249
- modelName: provider.model,
250
- anthropicApiKey: llmKeys.anthropic || process.env.ANTHROPIC_API_KEY
251
- }).withStructuredOutput(responseModel);
252
- }
253
- return new ChatAnthropic({
254
- modelName: provider.model,
255
- anthropicApiKey: llmKeys.anthropic || process.env.ANTHROPIC_API_KEY
256
- });
257
- case GOOGLE:
258
- if (responseModel) {
259
- return new ChatGoogleGenerativeAI({
260
- modelName: provider.model,
261
- apiKey: llmKeys.google || process.env.GOOGLE_API_KEY
262
- }).withStructuredOutput(responseModel);
263
- }
264
- return new ChatGoogleGenerativeAI({
265
- modelName: provider.model,
266
- apiKey: llmKeys.google || process.env.GOOGLE_API_KEY
267
- });
268
- case MISTRAL:
269
- if (responseModel) {
270
- return new ChatMistralAI({
271
- modelName: provider.model,
272
- apiKey: llmKeys.mistral || process.env.MISTRAL_API_KEY
273
- }).withStructuredOutput(responseModel);
274
- }
275
- return new ChatMistralAI({
276
- modelName: provider.model,
277
- apiKey: llmKeys.mistral || process.env.MISTRAL_API_KEY
278
- });
279
- case PERPLEXITY:
280
- if (responseModel) {
281
- return new ChatPerplexity({
282
- apiKey: llmKeys.perplexity || process.env.PPLX_API_KEY || "",
283
- model: provider.model
284
- }).withStructuredOutput(responseModel);
285
- }
286
- return new ChatPerplexity({
287
- apiKey: llmKeys.perplexity || process.env.PPLX_API_KEY || "",
288
- model: provider.model
289
- });
290
- case COHERE:
291
- if (responseModel) {
292
- return new ChatCohere({
293
- apiKey: process.env.COHERE_API_KEY || llmKeys.cohere,
294
- model: provider.model
295
- }).withStructuredOutput(responseModel);
296
- }
297
- return new ChatCohere({
298
- apiKey: process.env.COHERE_API_KEY || llmKeys.cohere,
299
- model: provider.model
300
- });
301
- case TOGETHERAI:
302
- if (responseModel) {
303
- return new ChatTogetherAI({
304
- apiKey: process.env.TOGETHERAI_API_KEY || llmKeys.togetherai,
305
- model: getTogetheraiModel(provider.model)
306
- }).withStructuredOutput(responseModel);
307
- }
308
- return new ChatTogetherAI({
309
- apiKey: process.env.TOGETHERAI_API_KEY || llmKeys.togetherai,
310
- model: getTogetheraiModel(provider.model)
311
- });
312
- default:
313
- throw new Error(`Unsupported provider: ${provider.provider}`);
314
- }
315
- }
316
- const getTogetheraiModel = (model) => {
317
- if (model === SupportedModel.MISTRAL_7B_INSTRUCT_V0_2 || model === SupportedModel.MIXTRAL_8X7B_INSTRUCT_V0_1 || model === SupportedModel.MIXTRAL_8X22B_INSTRUCT_V0_1) {
318
- return `mistralai/${model}`;
319
- }
320
- if (model === SupportedModel.LLAMA_3_70B_CHAT_HF || model === SupportedModel.LLAMA_3_8B_CHAT_HF || model === SupportedModel.LLAMA_3_1_8B_INSTRUCT_TURBO || model === SupportedModel.LLAMA_3_1_70B_INSTRUCT_TURBO || model === SupportedModel.LLAMA_3_1_405B_INSTRUCT_TURBO) {
321
- return `meta-llama/${model}`;
322
- }
323
- if (model === SupportedModel.QWEN2_72B_INSTRUCT) {
324
- return `Qwen/${model}`;
325
- }
326
- return model;
327
- };
328
- async function callLLM(provider, options, llmKeys, runtimeArgs) {
329
- const model = getLangChainModel(provider, llmKeys, options.responseModel);
330
- const langChainMessages = extendProviderSystemPrompt(
331
- options.messages.map(convertToLangChainMessage),
332
- options,
333
- provider
334
- );
335
- const response = await model.invoke(langChainMessages, runtimeArgs);
336
- return extractContent(response);
337
- }
338
- function extendProviderSystemPrompt(messages, options, provider) {
339
- const matchingProvider = options.llmProviders.find(
340
- (p) => p.provider === provider.provider && p.model === provider.model
341
- );
342
- if (matchingProvider && matchingProvider.systemPrompt) {
343
- messages.unshift(new SystemMessage(matchingProvider.systemPrompt));
344
- }
345
- return messages;
346
- }
347
- function convertToLangChainMessage(msg) {
348
- switch (msg.role) {
349
- case "user":
350
- return new HumanMessage(msg.content);
351
- case "assistant":
352
- return new AIMessage(msg.content);
353
- case "system":
354
- return new SystemMessage(msg.content);
355
- default:
356
- return new HumanMessage(msg.content);
357
- }
358
- }
359
- async function* callLLMStream(provider, options, llmKeys, runtimeArgs) {
360
- const model = getLangChainModel(provider, llmKeys, options.responseModel);
361
- const langChainMessages = extendProviderSystemPrompt(
362
- options.messages.map(convertToLangChainMessage),
363
- options,
364
- provider
365
- );
366
- const stream = await model.stream(langChainMessages, runtimeArgs);
367
- for await (const chunk of stream) {
368
- yield extractContent(chunk);
369
- }
370
- }
371
- function extractContent(response) {
372
- if ("content" in response) {
373
- return typeof response.content === "string" ? response.content : JSON.stringify(response.content);
374
- }
375
- return typeof response === "string" ? response : JSON.stringify(response);
376
- }
377
-
378
- const SDK_VERSION = packageJson.version;
379
- dotenv.config();
380
- const DEFAULT_TIMEOUT = 5;
381
- const BASE_URL = "https://api.notdiamond.ai";
382
- class NotDiamond {
383
- apiKey;
384
- apiUrl;
385
- modelSelectUrl;
386
- feedbackUrl;
387
- createUrl;
388
- llmKeys;
389
- constructor(options = {}) {
390
- this.apiKey = options.apiKey || process.env.NOTDIAMOND_API_KEY || "";
391
- this.apiUrl = options.apiUrl || process.env.NOTDIAMOND_API_URL || BASE_URL;
392
- this.llmKeys = options.llmKeys || {};
393
- this.modelSelectUrl = `${this.apiUrl}/v2/modelRouter/modelSelect`;
394
- this.feedbackUrl = `${this.apiUrl}/v2/report/metrics/feedback`;
395
- this.createUrl = `${this.apiUrl}/v2/preferences/userPreferenceCreate`;
396
- }
397
- getAuthHeader() {
398
- return `Bearer ${this.apiKey}`;
399
- }
400
- async postRequest(url, body) {
401
- try {
402
- const response = await axios.post(url, body, {
403
- headers: {
404
- Authorization: this.getAuthHeader(),
405
- Accept: "application/json",
406
- "Content-Type": "application/json",
407
- "User-Agent": `TS-SDK/${SDK_VERSION}`
408
- }
409
- });
410
- return response.data;
411
- } catch (error) {
412
- if (axios.isAxiosError(error) && error.response) {
413
- return { detail: "An error occurred." };
414
- }
415
- console.error("error", error);
416
- return { detail: "An unexpected error occurred." };
417
- }
418
- }
419
- /**
420
- * Selects the best model for the given messages.
421
- * @param options The options for the model.
422
- * @returns The results of the model.
423
- */
424
- async modelSelect(options) {
425
- const requestBody = {
426
- messages: options.messages,
427
- llm_providers: options.llmProviders.map((provider) => ({
428
- provider: provider.provider,
429
- model: provider.model,
430
- ...provider.contextLength !== void 0 && {
431
- context_length: provider.contextLength
432
- },
433
- ...provider.customInputPrice !== void 0 && {
434
- input_price: provider.customInputPrice
435
- },
436
- ...provider.inputPrice !== void 0 && {
437
- input_price: provider.inputPrice
438
- },
439
- ...provider.customOutputPrice !== void 0 && {
440
- output_price: provider.customOutputPrice
441
- },
442
- ...provider.outputPrice !== void 0 && {
443
- output_price: provider.outputPrice
444
- },
445
- ...provider.customLatency !== void 0 && {
446
- latency: provider.customLatency
447
- },
448
- ...provider.latency !== void 0 && { latency: provider.latency },
449
- ...provider.isCustom !== void 0 && {
450
- is_custom: provider.isCustom
451
- }
452
- })),
453
- ...options.tradeoff && {
454
- tradeoff: options.tradeoff
455
- },
456
- ...options.maxModelDepth && {
457
- max_model_depth: options.maxModelDepth
458
- },
459
- ...options.tools && { tools: options.tools },
460
- ...options.hashContent !== void 0 && {
461
- hash_content: options.hashContent
462
- },
463
- ...options.preferenceId && { preference_id: options.preferenceId },
464
- ...options.timeout ? { timeout: options.timeout } : {
465
- timeout: DEFAULT_TIMEOUT
466
- },
467
- ...options.default && { default: options.default },
468
- ...options.previousSession && {
469
- previous_session: options.previousSession
470
- },
471
- ...options.responseModel && {
472
- response_model: options.responseModel
473
- }
474
- };
475
- return this.postRequest(
476
- this.modelSelectUrl,
477
- requestBody
478
- );
479
- }
480
- /**
481
- * Sends feedback to the NotDiamond API.
482
- * @param options The options for the feedback.
483
- * @returns The results of the feedback.
484
- */
485
- async feedback(options) {
486
- return this.postRequest(this.feedbackUrl, {
487
- session_id: options.sessionId,
488
- feedback: options.feedback,
489
- provider: options.provider
490
- });
491
- }
492
- /**
493
- * Creates a preference id.
494
- * @returns The preference id.
495
- */
496
- async createPreferenceId() {
497
- const response = await this.postRequest(
498
- this.createUrl,
499
- {}
500
- );
501
- if ("preference_id" in response) {
502
- return response.preference_id;
503
- }
504
- throw new Error("Invalid response: preference_id not found");
505
- }
506
- /**
507
- *
508
- * @param options The options for the model.
509
- * @returns A promise that resolves to the results of the model.
510
- */
511
- async acreate(options, runtimeArgs = {}) {
512
- const selectedModel = await this.modelSelect(options);
513
- const { providers } = selectedModel;
514
- const content = await callLLM(
515
- providers[0],
516
- options,
517
- this.llmKeys,
518
- runtimeArgs
519
- );
520
- return { content, providers };
521
- }
522
- /**
523
- *
524
- * @param options The options for the model.
525
- * @param callback Optional callback function to handle the result.
526
- * @returns A promise that resolves to the results of the model or a callback function
527
- */
528
- create(options, runtimeArgs = {}, callback) {
529
- const promise = this.acreate(options, runtimeArgs);
530
- if (callback) {
531
- promise.then((result) => callback(null, result)).catch((error) => callback(error));
532
- } else {
533
- return promise;
534
- }
535
- }
536
- /**
537
- * Streams the results of the model asynchronously.
538
- * @param options The options for the model.
539
- * @returns A promise that resolves to an object containing the provider and an AsyncIterable of strings.
540
- */
541
- async astream(options, runtimeArgs = {}) {
542
- const selectedModel = await this.modelSelect(options);
543
- const { providers } = selectedModel;
544
- const stream = await Promise.resolve(
545
- callLLMStream(
546
- providers?.[0] || options.default,
547
- options,
548
- this.llmKeys,
549
- runtimeArgs
550
- )
551
- );
552
- return {
553
- provider: providers?.[0] || options.default,
554
- stream
555
- };
556
- }
557
- /**
558
- * Streams the results of the model.
559
- * @param options The options for the model.
560
- * @param callback Optional callback function to handle each chunk of the stream.
561
- * @returns A promise that resolves to an object containing the provider and an AsyncIterable of strings or a callback function
562
- */
563
- stream(options, runtimeArgs = {}, callback) {
564
- if (!options.llmProviders || options.llmProviders.length === 0) {
565
- throw new Error("No LLM providers specified");
566
- }
567
- const promise = this.astream(options, runtimeArgs);
568
- if (callback) {
569
- promise.then(async ({ provider, stream }) => {
570
- for await (const chunk of stream) {
571
- callback(null, { provider, chunk });
572
- }
573
- }).catch((error) => callback(error));
574
- } else {
575
- return promise;
576
- }
577
- }
578
- }
579
-
580
- export { NotDiamond, SupportedModel, SupportedProvider };