ai-functions 0.3.0 → 0.4.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 (400) hide show
  1. package/.turbo/turbo-build.log +5 -0
  2. package/.turbo/turbo-test.log +105 -0
  3. package/README.md +190 -86
  4. package/TODO.md +138 -0
  5. package/dist/ai-promise.d.ts +219 -0
  6. package/dist/ai-promise.d.ts.map +1 -0
  7. package/dist/ai-promise.js +610 -0
  8. package/dist/ai-promise.js.map +1 -0
  9. package/dist/ai.d.ts +285 -0
  10. package/dist/ai.d.ts.map +1 -0
  11. package/dist/ai.js +842 -0
  12. package/dist/ai.js.map +1 -0
  13. package/dist/batch/anthropic.d.ts +23 -0
  14. package/dist/batch/anthropic.d.ts.map +1 -0
  15. package/dist/batch/anthropic.js +257 -0
  16. package/dist/batch/anthropic.js.map +1 -0
  17. package/dist/batch/bedrock.d.ts +64 -0
  18. package/dist/batch/bedrock.d.ts.map +1 -0
  19. package/dist/batch/bedrock.js +586 -0
  20. package/dist/batch/bedrock.js.map +1 -0
  21. package/dist/batch/cloudflare.d.ts +37 -0
  22. package/dist/batch/cloudflare.d.ts.map +1 -0
  23. package/dist/batch/cloudflare.js +289 -0
  24. package/dist/batch/cloudflare.js.map +1 -0
  25. package/dist/batch/google.d.ts +41 -0
  26. package/dist/batch/google.d.ts.map +1 -0
  27. package/dist/batch/google.js +360 -0
  28. package/dist/batch/google.js.map +1 -0
  29. package/dist/batch/index.d.ts +31 -0
  30. package/dist/batch/index.d.ts.map +1 -0
  31. package/dist/batch/index.js +31 -0
  32. package/dist/batch/index.js.map +1 -0
  33. package/dist/batch/memory.d.ts +44 -0
  34. package/dist/batch/memory.d.ts.map +1 -0
  35. package/dist/batch/memory.js +188 -0
  36. package/dist/batch/memory.js.map +1 -0
  37. package/dist/batch/openai.d.ts +37 -0
  38. package/dist/batch/openai.d.ts.map +1 -0
  39. package/dist/batch/openai.js +403 -0
  40. package/dist/batch/openai.js.map +1 -0
  41. package/dist/batch-map.d.ts +125 -0
  42. package/dist/batch-map.d.ts.map +1 -0
  43. package/dist/batch-map.js +406 -0
  44. package/dist/batch-map.js.map +1 -0
  45. package/dist/batch-queue.d.ts +273 -0
  46. package/dist/batch-queue.d.ts.map +1 -0
  47. package/dist/batch-queue.js +271 -0
  48. package/dist/batch-queue.js.map +1 -0
  49. package/dist/context.d.ts +133 -0
  50. package/dist/context.d.ts.map +1 -0
  51. package/dist/context.js +267 -0
  52. package/dist/context.js.map +1 -0
  53. package/dist/embeddings.d.ts +123 -0
  54. package/dist/embeddings.d.ts.map +1 -0
  55. package/dist/embeddings.js +170 -0
  56. package/dist/embeddings.js.map +1 -0
  57. package/dist/eval/index.d.ts +8 -0
  58. package/dist/eval/index.d.ts.map +1 -0
  59. package/dist/eval/index.js +8 -0
  60. package/dist/eval/index.js.map +1 -0
  61. package/dist/eval/models.d.ts +66 -0
  62. package/dist/eval/models.d.ts.map +1 -0
  63. package/dist/eval/models.js +120 -0
  64. package/dist/eval/models.js.map +1 -0
  65. package/dist/eval/runner.d.ts +64 -0
  66. package/dist/eval/runner.d.ts.map +1 -0
  67. package/dist/eval/runner.js +148 -0
  68. package/dist/eval/runner.js.map +1 -0
  69. package/dist/generate.d.ts +168 -0
  70. package/dist/generate.d.ts.map +1 -0
  71. package/dist/generate.js +174 -0
  72. package/dist/generate.js.map +1 -0
  73. package/dist/index.d.ts +29 -4
  74. package/dist/index.d.ts.map +1 -1
  75. package/dist/index.js +53 -52
  76. package/dist/index.js.map +1 -1
  77. package/dist/primitives.d.ts +292 -0
  78. package/dist/primitives.d.ts.map +1 -0
  79. package/dist/primitives.js +471 -0
  80. package/dist/primitives.js.map +1 -0
  81. package/dist/providers/cloudflare.d.ts +9 -0
  82. package/dist/providers/cloudflare.d.ts.map +1 -0
  83. package/dist/providers/cloudflare.js +9 -0
  84. package/dist/providers/cloudflare.js.map +1 -0
  85. package/dist/providers/index.d.ts +9 -0
  86. package/dist/providers/index.d.ts.map +1 -0
  87. package/dist/providers/index.js +9 -0
  88. package/dist/providers/index.js.map +1 -0
  89. package/dist/schema.d.ts +54 -0
  90. package/dist/schema.d.ts.map +1 -0
  91. package/dist/schema.js +109 -0
  92. package/dist/schema.js.map +1 -0
  93. package/dist/template.d.ts +73 -0
  94. package/dist/template.d.ts.map +1 -0
  95. package/dist/template.js +129 -0
  96. package/dist/template.js.map +1 -0
  97. package/dist/types.d.ts +474 -106
  98. package/dist/types.d.ts.map +1 -1
  99. package/dist/types.js +4 -8
  100. package/dist/types.js.map +1 -1
  101. package/evalite.config.ts +19 -0
  102. package/evals/README.md +212 -0
  103. package/evals/classification.eval.ts +108 -0
  104. package/evals/marketing.eval.ts +370 -0
  105. package/evals/math.eval.ts +94 -0
  106. package/evals/run-evals.ts +166 -0
  107. package/evals/structured-output.eval.ts +143 -0
  108. package/evals/writing.eval.ts +117 -0
  109. package/examples/batch-blog-posts.ts +160 -0
  110. package/package.json +57 -57
  111. package/src/ai-promise.ts +784 -0
  112. package/src/ai.ts +1183 -0
  113. package/src/batch/anthropic.ts +375 -0
  114. package/src/batch/bedrock.ts +801 -0
  115. package/src/batch/cloudflare.ts +421 -0
  116. package/src/batch/google.ts +491 -0
  117. package/src/batch/index.ts +31 -0
  118. package/src/batch/memory.ts +253 -0
  119. package/src/batch/openai.ts +557 -0
  120. package/src/batch-map.ts +534 -0
  121. package/src/batch-queue.ts +493 -0
  122. package/src/context.ts +332 -0
  123. package/src/embeddings.ts +244 -0
  124. package/src/eval/index.ts +8 -0
  125. package/src/eval/models.ts +158 -0
  126. package/src/eval/runner.ts +217 -0
  127. package/src/generate.ts +245 -0
  128. package/src/index.ts +154 -0
  129. package/src/primitives.ts +612 -0
  130. package/src/providers/cloudflare.ts +15 -0
  131. package/src/providers/index.ts +14 -0
  132. package/src/schema.ts +147 -0
  133. package/src/template.ts +209 -0
  134. package/src/types.ts +540 -0
  135. package/test/README.md +105 -0
  136. package/test/ai-proxy.test.ts +192 -0
  137. package/test/async-iterators.test.ts +327 -0
  138. package/test/batch-background.test.ts +482 -0
  139. package/test/batch-blog-posts.test.ts +387 -0
  140. package/test/blog-generation.test.ts +510 -0
  141. package/test/browse-read.test.ts +611 -0
  142. package/test/core-functions.test.ts +694 -0
  143. package/test/decide.test.ts +393 -0
  144. package/test/define.test.ts +274 -0
  145. package/test/e2e-bedrock-manual.ts +163 -0
  146. package/test/e2e-bedrock.test.ts +191 -0
  147. package/test/e2e-flex-gateway.ts +157 -0
  148. package/test/e2e-flex-manual.ts +183 -0
  149. package/test/e2e-flex.test.ts +209 -0
  150. package/test/e2e-google-manual.ts +178 -0
  151. package/test/e2e-google.test.ts +216 -0
  152. package/test/embeddings.test.ts +284 -0
  153. package/test/evals/define-function.eval.test.ts +379 -0
  154. package/test/evals/primitives.eval.test.ts +384 -0
  155. package/test/function-types.test.ts +492 -0
  156. package/test/generate-core.test.ts +319 -0
  157. package/test/generate.test.ts +163 -0
  158. package/test/implicit-batch.test.ts +422 -0
  159. package/test/schema.test.ts +109 -0
  160. package/test/tagged-templates.test.ts +302 -0
  161. package/tsconfig.json +10 -0
  162. package/vitest.config.ts +42 -0
  163. package/LICENSE +0 -21
  164. package/bin/cli.js +0 -5
  165. package/dist/cli/index.d.ts +0 -10
  166. package/dist/cli/index.d.ts.map +0 -1
  167. package/dist/cli/index.js +0 -38
  168. package/dist/cli/index.js.map +0 -1
  169. package/dist/cli/index.test.d.ts +0 -2
  170. package/dist/cli/index.test.d.ts.map +0 -1
  171. package/dist/cli/index.test.js +0 -35
  172. package/dist/cli/index.test.js.map +0 -1
  173. package/dist/constants/models.d.ts +0 -10
  174. package/dist/constants/models.d.ts.map +0 -1
  175. package/dist/constants/models.js +0 -12
  176. package/dist/constants/models.js.map +0 -1
  177. package/dist/converters/index.d.ts +0 -3
  178. package/dist/converters/index.d.ts.map +0 -1
  179. package/dist/converters/index.js +0 -3
  180. package/dist/converters/index.js.map +0 -1
  181. package/dist/converters/model.d.ts +0 -4
  182. package/dist/converters/model.d.ts.map +0 -1
  183. package/dist/converters/model.js +0 -19
  184. package/dist/converters/model.js.map +0 -1
  185. package/dist/converters/schema.d.ts +0 -4
  186. package/dist/converters/schema.d.ts.map +0 -1
  187. package/dist/converters/schema.js +0 -25
  188. package/dist/converters/schema.js.map +0 -1
  189. package/dist/core/responses.d.ts +0 -5
  190. package/dist/core/responses.d.ts.map +0 -1
  191. package/dist/core/responses.js +0 -16
  192. package/dist/core/responses.js.map +0 -1
  193. package/dist/core/responses.test.d.ts +0 -2
  194. package/dist/core/responses.test.d.ts.map +0 -1
  195. package/dist/core/responses.test.js +0 -31
  196. package/dist/core/responses.test.js.map +0 -1
  197. package/dist/errors.d.ts +0 -6
  198. package/dist/errors.d.ts.map +0 -1
  199. package/dist/errors.js +0 -9
  200. package/dist/errors.js.map +0 -1
  201. package/dist/examples/streaming.test.d.ts +0 -2
  202. package/dist/examples/streaming.test.d.ts.map +0 -1
  203. package/dist/examples/streaming.test.js +0 -176
  204. package/dist/examples/streaming.test.js.map +0 -1
  205. package/dist/factory/__tests__/index.test.d.ts +0 -2
  206. package/dist/factory/__tests__/index.test.d.ts.map +0 -1
  207. package/dist/factory/__tests__/index.test.js +0 -430
  208. package/dist/factory/__tests__/index.test.js.map +0 -1
  209. package/dist/factory/__tests__/list.test.d.ts +0 -2
  210. package/dist/factory/__tests__/list.test.d.ts.map +0 -1
  211. package/dist/factory/__tests__/list.test.js +0 -92
  212. package/dist/factory/__tests__/list.test.js.map +0 -1
  213. package/dist/factory/index.d.ts +0 -20
  214. package/dist/factory/index.d.ts.map +0 -1
  215. package/dist/factory/index.js +0 -287
  216. package/dist/factory/index.js.map +0 -1
  217. package/dist/factory/index.test.d.ts +0 -2
  218. package/dist/factory/index.test.d.ts.map +0 -1
  219. package/dist/factory/index.test.js +0 -287
  220. package/dist/factory/index.test.js.map +0 -1
  221. package/dist/factory/list.d.ts +0 -3
  222. package/dist/factory/list.d.ts.map +0 -1
  223. package/dist/factory/list.js +0 -221
  224. package/dist/factory/list.js.map +0 -1
  225. package/dist/factory/list.test.d.ts +0 -2
  226. package/dist/factory/list.test.d.ts.map +0 -1
  227. package/dist/factory/list.test.js +0 -84
  228. package/dist/factory/list.test.js.map +0 -1
  229. package/dist/generate/index.d.ts +0 -5
  230. package/dist/generate/index.d.ts.map +0 -1
  231. package/dist/generate/index.js +0 -17
  232. package/dist/generate/index.js.map +0 -1
  233. package/dist/index.test.d.ts +0 -2
  234. package/dist/index.test.d.ts.map +0 -1
  235. package/dist/index.test.js +0 -59
  236. package/dist/index.test.js.map +0 -1
  237. package/dist/list/await.d.ts +0 -3
  238. package/dist/list/await.d.ts.map +0 -1
  239. package/dist/list/await.js +0 -28
  240. package/dist/list/await.js.map +0 -1
  241. package/dist/list/constants.d.ts +0 -4
  242. package/dist/list/constants.d.ts.map +0 -1
  243. package/dist/list/constants.js +0 -5
  244. package/dist/list/constants.js.map +0 -1
  245. package/dist/list/create-function.d.ts +0 -3
  246. package/dist/list/create-function.d.ts.map +0 -1
  247. package/dist/list/create-function.js +0 -11
  248. package/dist/list/create-function.js.map +0 -1
  249. package/dist/list/index.d.ts +0 -4
  250. package/dist/list/index.d.ts.map +0 -1
  251. package/dist/list/index.js +0 -5
  252. package/dist/list/index.js.map +0 -1
  253. package/dist/list/prompt.d.ts +0 -3
  254. package/dist/list/prompt.d.ts.map +0 -1
  255. package/dist/list/prompt.js +0 -6
  256. package/dist/list/prompt.js.map +0 -1
  257. package/dist/list/schemas.d.ts +0 -4
  258. package/dist/list/schemas.d.ts.map +0 -1
  259. package/dist/list/schemas.js +0 -8
  260. package/dist/list/schemas.js.map +0 -1
  261. package/dist/list/stream.d.ts +0 -3
  262. package/dist/list/stream.d.ts.map +0 -1
  263. package/dist/list/stream.js +0 -33
  264. package/dist/list/stream.js.map +0 -1
  265. package/dist/list/types.d.ts +0 -11
  266. package/dist/list/types.d.ts.map +0 -1
  267. package/dist/list/types.js +0 -2
  268. package/dist/list/types.js.map +0 -1
  269. package/dist/list/validation.d.ts +0 -3
  270. package/dist/list/validation.d.ts.map +0 -1
  271. package/dist/list/validation.js +0 -12
  272. package/dist/list/validation.js.map +0 -1
  273. package/dist/providers/config.d.ts +0 -4
  274. package/dist/providers/config.d.ts.map +0 -1
  275. package/dist/providers/config.js +0 -21
  276. package/dist/providers/config.js.map +0 -1
  277. package/dist/providers/config.test.d.ts +0 -2
  278. package/dist/providers/config.test.d.ts.map +0 -1
  279. package/dist/providers/config.test.js +0 -37
  280. package/dist/providers/config.test.js.map +0 -1
  281. package/dist/proxy/constants.d.ts +0 -4
  282. package/dist/proxy/constants.d.ts.map +0 -1
  283. package/dist/proxy/constants.js +0 -5
  284. package/dist/proxy/constants.js.map +0 -1
  285. package/dist/proxy/create-function.d.ts +0 -4
  286. package/dist/proxy/create-function.d.ts.map +0 -1
  287. package/dist/proxy/create-function.js +0 -24
  288. package/dist/proxy/create-function.js.map +0 -1
  289. package/dist/proxy/create-proxy.d.ts +0 -2
  290. package/dist/proxy/create-proxy.d.ts.map +0 -1
  291. package/dist/proxy/create-proxy.js +0 -11
  292. package/dist/proxy/create-proxy.js.map +0 -1
  293. package/dist/proxy/function-generator.d.ts +0 -9
  294. package/dist/proxy/function-generator.d.ts.map +0 -1
  295. package/dist/proxy/function-generator.js +0 -29
  296. package/dist/proxy/function-generator.js.map +0 -1
  297. package/dist/proxy/index.d.ts +0 -4
  298. package/dist/proxy/index.d.ts.map +0 -1
  299. package/dist/proxy/index.js +0 -4
  300. package/dist/proxy/index.js.map +0 -1
  301. package/dist/proxy/prompt.d.ts +0 -2
  302. package/dist/proxy/prompt.d.ts.map +0 -1
  303. package/dist/proxy/prompt.js +0 -6
  304. package/dist/proxy/prompt.js.map +0 -1
  305. package/dist/proxy/types.d.ts +0 -7
  306. package/dist/proxy/types.d.ts.map +0 -1
  307. package/dist/proxy/types.js +0 -2
  308. package/dist/proxy/types.js.map +0 -1
  309. package/dist/queue/manager.d.ts +0 -5
  310. package/dist/queue/manager.d.ts.map +0 -1
  311. package/dist/queue/manager.js +0 -37
  312. package/dist/queue/manager.js.map +0 -1
  313. package/dist/queue/manager.test.d.ts +0 -2
  314. package/dist/queue/manager.test.d.ts.map +0 -1
  315. package/dist/queue/manager.test.js +0 -52
  316. package/dist/queue/manager.test.js.map +0 -1
  317. package/dist/schema-converter.d.ts +0 -4
  318. package/dist/schema-converter.d.ts.map +0 -1
  319. package/dist/schema-converter.js +0 -30
  320. package/dist/schema-converter.js.map +0 -1
  321. package/dist/stream/index.d.ts +0 -7
  322. package/dist/stream/index.d.ts.map +0 -1
  323. package/dist/stream/index.js +0 -23
  324. package/dist/stream/index.js.map +0 -1
  325. package/dist/streaming/utils.d.ts +0 -4
  326. package/dist/streaming/utils.d.ts.map +0 -1
  327. package/dist/streaming/utils.js +0 -131
  328. package/dist/streaming/utils.js.map +0 -1
  329. package/dist/streaming/utils.test.d.ts +0 -2
  330. package/dist/streaming/utils.test.d.ts.map +0 -1
  331. package/dist/streaming/utils.test.js +0 -84
  332. package/dist/streaming/utils.test.js.map +0 -1
  333. package/dist/templates/result.d.ts +0 -7
  334. package/dist/templates/result.d.ts.map +0 -1
  335. package/dist/templates/result.js +0 -40
  336. package/dist/templates/result.js.map +0 -1
  337. package/dist/templates/result.test.d.ts +0 -2
  338. package/dist/templates/result.test.d.ts.map +0 -1
  339. package/dist/templates/result.test.js +0 -75
  340. package/dist/templates/result.test.js.map +0 -1
  341. package/dist/test/setup.d.ts +0 -2
  342. package/dist/test/setup.d.ts.map +0 -1
  343. package/dist/test/setup.js +0 -21
  344. package/dist/test/setup.js.map +0 -1
  345. package/dist/test-types.d.ts +0 -13
  346. package/dist/test-types.d.ts.map +0 -1
  347. package/dist/test-types.js +0 -55
  348. package/dist/test-types.js.map +0 -1
  349. package/dist/types/index.d.ts +0 -4
  350. package/dist/types/index.d.ts.map +0 -1
  351. package/dist/types/index.js +0 -4
  352. package/dist/types/index.js.map +0 -1
  353. package/dist/types/list.d.ts +0 -10
  354. package/dist/types/list.d.ts.map +0 -1
  355. package/dist/types/list.js +0 -2
  356. package/dist/types/list.js.map +0 -1
  357. package/dist/types/model.d.ts +0 -7
  358. package/dist/types/model.d.ts.map +0 -1
  359. package/dist/types/model.js +0 -2
  360. package/dist/types/model.js.map +0 -1
  361. package/dist/types/options.d.ts +0 -25
  362. package/dist/types/options.d.ts.map +0 -1
  363. package/dist/types/options.js +0 -2
  364. package/dist/types/options.js.map +0 -1
  365. package/dist/types/schema.d.ts +0 -5
  366. package/dist/types/schema.d.ts.map +0 -1
  367. package/dist/types/schema.js +0 -2
  368. package/dist/types/schema.js.map +0 -1
  369. package/dist/utils/__tests__/request-handler.test.d.ts +0 -2
  370. package/dist/utils/__tests__/request-handler.test.d.ts.map +0 -1
  371. package/dist/utils/__tests__/request-handler.test.js +0 -134
  372. package/dist/utils/__tests__/request-handler.test.js.map +0 -1
  373. package/dist/utils/__tests__/schema.test.d.ts +0 -2
  374. package/dist/utils/__tests__/schema.test.d.ts.map +0 -1
  375. package/dist/utils/__tests__/schema.test.js +0 -49
  376. package/dist/utils/__tests__/schema.test.js.map +0 -1
  377. package/dist/utils/__tests__/stream-progress.test.d.ts +0 -2
  378. package/dist/utils/__tests__/stream-progress.test.d.ts.map +0 -1
  379. package/dist/utils/__tests__/stream-progress.test.js +0 -85
  380. package/dist/utils/__tests__/stream-progress.test.js.map +0 -1
  381. package/dist/utils/index.d.ts +0 -2
  382. package/dist/utils/index.d.ts.map +0 -1
  383. package/dist/utils/index.js +0 -2
  384. package/dist/utils/index.js.map +0 -1
  385. package/dist/utils/request-handler.d.ts +0 -17
  386. package/dist/utils/request-handler.d.ts.map +0 -1
  387. package/dist/utils/request-handler.js +0 -105
  388. package/dist/utils/request-handler.js.map +0 -1
  389. package/dist/utils/schema.d.ts +0 -11
  390. package/dist/utils/schema.d.ts.map +0 -1
  391. package/dist/utils/schema.js +0 -51
  392. package/dist/utils/schema.js.map +0 -1
  393. package/dist/utils/stream-progress.d.ts +0 -17
  394. package/dist/utils/stream-progress.d.ts.map +0 -1
  395. package/dist/utils/stream-progress.js +0 -86
  396. package/dist/utils/stream-progress.js.map +0 -1
  397. package/dist/utils/validation.d.ts +0 -3
  398. package/dist/utils/validation.d.ts.map +0 -1
  399. package/dist/utils/validation.js +0 -30
  400. package/dist/utils/validation.js.map +0 -1
@@ -1,287 +0,0 @@
1
- import { generateText, generateObject, Output } from 'ai';
2
- import { openai } from '@ai-sdk/openai';
3
- import { createOpenAICompatible } from '@ai-sdk/openai-compatible';
4
- import { Response } from 'undici';
5
- import { z } from 'zod';
6
- import PQueue from 'p-queue';
7
- import { createRequestHandler } from '../utils/request-handler';
8
- import { StreamProgressTracker } from '../utils/stream-progress';
9
- import { AIRequestError } from '../errors';
10
- // Add this at the top of the file, before any other code
11
- function isTemplateStringsArray(value) {
12
- return Array.isArray(value) && 'raw' in value;
13
- }
14
- export function isStreamingResult(result) {
15
- return (result !== null &&
16
- typeof result === 'object' &&
17
- 'experimental_stream' in result &&
18
- typeof result.experimental_stream === 'object' &&
19
- Symbol.asyncIterator in result.experimental_stream);
20
- }
21
- export function isJsonResult(result) {
22
- return 'object' in result && 'toJsonResponse' in result;
23
- }
24
- // PLACEHOLDER: response creation functions
25
- export function createAIFunction(schema) {
26
- const fn = async (args, options = {}) => {
27
- if (!args) {
28
- return { schema };
29
- }
30
- const requestHandler = createRequestHandler({ requestHandling: options.requestHandling });
31
- const result = await requestHandler.execute(async () => {
32
- return generateText({
33
- model: options.model || getProvider()('gpt-4o-mini'),
34
- prompt: options.prompt || '',
35
- maxRetries: 2,
36
- experimental_output: Output.object({ schema: schema }),
37
- system: options.system,
38
- temperature: options.temperature,
39
- maxTokens: options.maxTokens,
40
- topP: options.topP,
41
- frequencyPenalty: options.frequencyPenalty,
42
- presencePenalty: options.presencePenalty,
43
- stopSequences: options.stop ? Array.isArray(options.stop) ? options.stop : [options.stop] : undefined,
44
- seed: options.seed,
45
- });
46
- });
47
- if (!result.experimental_output) {
48
- throw new Error('No output received from model');
49
- }
50
- return result.experimental_output;
51
- };
52
- fn.schema = schema;
53
- return fn;
54
- }
55
- // PLACEHOLDER: createTemplateFunction implementation
56
- function getProvider() {
57
- const gateway = process.env.AI_GATEWAY;
58
- const apiKey = process.env.OPENAI_API_KEY;
59
- if (!apiKey) {
60
- throw new Error('OPENAI_API_KEY environment variable is required');
61
- }
62
- return gateway
63
- ? createOpenAICompatible({
64
- baseURL: gateway,
65
- name: 'openai',
66
- headers: {
67
- 'Authorization': `Bearer ${apiKey}`,
68
- 'Content-Type': 'application/json'
69
- }
70
- })
71
- : openai;
72
- }
73
- export function createJsonResponse(result) {
74
- return result.toJsonResponse();
75
- }
76
- export function createStreamResponse(result) {
77
- return new Response(result.experimental_stream, {
78
- headers: { 'Content-Type': 'text/plain' },
79
- });
80
- }
81
- export function createTextResponse(result) {
82
- return new Response(result.text, {
83
- headers: { 'Content-Type': 'text/plain' },
84
- });
85
- }
86
- export function createTemplateFunction(defaultOptions = {}) {
87
- let currentPrompt;
88
- let queue;
89
- const initQueue = (options) => {
90
- if (!queue && options.concurrency) {
91
- queue = new PQueue({ concurrency: options.concurrency });
92
- }
93
- return queue;
94
- };
95
- const templateFn = async (prompt, options = defaultOptions) => {
96
- currentPrompt = prompt;
97
- const modelParams = {
98
- temperature: options.temperature,
99
- maxTokens: options.maxTokens,
100
- topP: options.topP,
101
- frequencyPenalty: options.frequencyPenalty,
102
- presencePenalty: options.presencePenalty,
103
- stopSequences: options.stop ? Array.isArray(options.stop) ? options.stop : [options.stop] : undefined,
104
- seed: options.seed,
105
- system: options.system,
106
- };
107
- const executeRequest = async () => {
108
- try {
109
- if (options.outputFormat === 'json') {
110
- try {
111
- const model = options.model || openai(process.env.OPENAI_DEFAULT_MODEL || 'gpt-4o', { structuredOutputs: true });
112
- if (options.schema) {
113
- const schema = options.schema instanceof z.ZodType
114
- ? options.schema
115
- : z.object(Object.fromEntries(Object.entries(options.schema).map(([key, type]) => [
116
- key,
117
- type === 'string' ? z.string() :
118
- type === 'number' ? z.number() :
119
- type === 'boolean' ? z.boolean() :
120
- type === 'array' ? z.array(z.unknown()) :
121
- type === 'object' ? z.record(z.string(), z.unknown()) :
122
- z.unknown()
123
- ])));
124
- const result = await generateObject({
125
- model,
126
- schema,
127
- prompt,
128
- ...modelParams,
129
- });
130
- return JSON.stringify(result.object);
131
- }
132
- else {
133
- const result = await generateObject({
134
- model,
135
- output: 'no-schema',
136
- prompt,
137
- ...modelParams,
138
- });
139
- return JSON.stringify(result.object);
140
- }
141
- }
142
- catch (error) {
143
- if (error instanceof Error) {
144
- throw new AIRequestError(`Invalid JSON format: ${error.message}`, error, false);
145
- }
146
- throw new AIRequestError('Invalid JSON format', error, false);
147
- }
148
- }
149
- const result = (await generateText({
150
- model: options.model || openai('gpt-4o-mini'),
151
- prompt,
152
- ...modelParams,
153
- ...options,
154
- }));
155
- if (!result) {
156
- throw new AIRequestError('No result received from model', undefined, false);
157
- }
158
- return result.text;
159
- }
160
- catch (error) {
161
- if (error instanceof Error) {
162
- throw error;
163
- }
164
- throw new AIRequestError('Failed to generate text', error, false);
165
- }
166
- };
167
- try {
168
- const currentQueue = initQueue(options);
169
- if (!currentQueue) {
170
- return executeRequest();
171
- }
172
- return currentQueue.add(executeRequest);
173
- }
174
- catch (error) {
175
- if (error instanceof Error) {
176
- throw error;
177
- }
178
- throw new AIRequestError('Failed to generate text', error, false);
179
- }
180
- };
181
- const asyncIterator = async function* () {
182
- if (!currentPrompt) {
183
- return;
184
- }
185
- const options = defaultOptions;
186
- const modelParams = {
187
- temperature: options.temperature,
188
- maxTokens: options.maxTokens,
189
- topP: options.topP,
190
- frequencyPenalty: options.frequencyPenalty,
191
- presencePenalty: options.presencePenalty,
192
- stopSequences: options.stop ? Array.isArray(options.stop) ? options.stop : [options.stop] : undefined,
193
- seed: options.seed,
194
- system: options.system,
195
- };
196
- const progressTracker = options.streaming ?
197
- new StreamProgressTracker(options.streaming) : undefined;
198
- const executeRequest = async () => {
199
- const result = (await generateText({
200
- model: options.model || openai('gpt-4o-mini'),
201
- prompt: currentPrompt,
202
- maxRetries: 2,
203
- ...modelParams,
204
- ...options,
205
- }));
206
- if (!result) {
207
- throw new Error('No result received from model');
208
- }
209
- return result;
210
- };
211
- try {
212
- const currentQueue = initQueue(options);
213
- const result = currentQueue
214
- ? await currentQueue.add(executeRequest)
215
- : await executeRequest();
216
- if (isStreamingResult(result)) {
217
- for await (const chunk of result.experimental_stream) {
218
- if (progressTracker) {
219
- progressTracker.onChunk(chunk);
220
- }
221
- yield chunk;
222
- }
223
- progressTracker?.onComplete();
224
- }
225
- else if (result) {
226
- if (progressTracker) {
227
- progressTracker.onChunk(result.text);
228
- progressTracker.onComplete();
229
- }
230
- yield result.text;
231
- }
232
- }
233
- catch (error) {
234
- const errorMessage = error instanceof Error ? error.message : 'Failed to generate text';
235
- progressTracker?.onChunk(errorMessage);
236
- progressTracker?.onComplete();
237
- console.error('Error in asyncIterator:', error);
238
- yield errorMessage;
239
- }
240
- };
241
- const createAsyncIterablePromise = (promise, prompt, options = defaultOptions) => {
242
- const asyncIterable = {
243
- [Symbol.asyncIterator]: asyncIterator
244
- };
245
- const callablePromise = Object.assign(async (opts) => {
246
- if (!opts)
247
- return promise;
248
- return templateFn(prompt, { ...options, ...opts });
249
- }, {
250
- then: (onfulfilled, onrejected) => promise.then(onfulfilled, onrejected),
251
- catch: (onrejected) => promise.catch(onrejected),
252
- finally: (onfinally) => promise.finally(onfinally),
253
- [Symbol.asyncIterator]: asyncIterable[Symbol.asyncIterator]
254
- });
255
- return callablePromise;
256
- };
257
- const baseFn = Object.assign((stringsOrOptions, ...values) => {
258
- if (!stringsOrOptions) {
259
- return createAsyncIterablePromise(templateFn('', defaultOptions), '', defaultOptions);
260
- }
261
- if (isTemplateStringsArray(stringsOrOptions)) {
262
- const strings = stringsOrOptions;
263
- if (strings.length - 1 !== values.length) {
264
- throw new Error('Template literal slots must match provided values');
265
- }
266
- const lastValue = values[values.length - 1];
267
- const options = typeof lastValue === 'object' && !Array.isArray(lastValue) && lastValue !== null
268
- ? { ...defaultOptions, ...lastValue }
269
- : defaultOptions;
270
- const actualValues = typeof lastValue === 'object' && !Array.isArray(lastValue) && lastValue !== null
271
- ? values.slice(0, -1)
272
- : values;
273
- const prompt = strings.reduce((acc, str, i) => acc + str + (actualValues[i] || ''), '');
274
- return createAsyncIterablePromise(templateFn(prompt, options), prompt, options);
275
- }
276
- return createAsyncIterablePromise(templateFn('', { ...defaultOptions, ...stringsOrOptions }), '', { ...defaultOptions, ...stringsOrOptions });
277
- }, {
278
- withOptions: (opts = {}) => {
279
- const prompt = opts.prompt || currentPrompt || '';
280
- return templateFn(prompt, { ...defaultOptions, ...opts });
281
- },
282
- [Symbol.asyncIterator]: asyncIterator,
283
- queue
284
- });
285
- return baseFn;
286
- }
287
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/factory/index.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=index.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.test.d.ts","sourceRoot":"","sources":["../../src/factory/index.test.ts"],"names":[],"mappings":""}
@@ -1,287 +0,0 @@
1
- import { describe, expect, it, beforeEach } from 'vitest';
2
- import { createTemplateFunction } from './index';
3
- import { openai } from '@ai-sdk/openai';
4
- // import { anthropic } from '@ai-sdk/anthropic' // Commented out as it's just for test demonstration
5
- describe('Template Function', () => {
6
- beforeEach(() => {
7
- process.env.OPENAI_API_KEY = process.env.OPENAI_API_KEY || 'test-key';
8
- });
9
- const model = openai('gpt-4o-mini');
10
- describe('Template Literals', () => {
11
- it('should support markdown generation', async () => {
12
- const ai = createTemplateFunction();
13
- const title = 'AI Functions';
14
- const result = await ai `write a blog post in markdown starting with "# ${title}"`({ model });
15
- expect(result).toMatch(/^# AI Functions/);
16
- expect(result).toContain('# ');
17
- expect(result).toContain('\n');
18
- }, 30000);
19
- // it('should support complex object summarization', async () => {
20
- // const ai = createTemplateFunction()
21
- // const itinerary = {
22
- // dates: ['2024-01-01', '2024-01-02'],
23
- // location: 'Miami Beach',
24
- // activities: ['Swimming', 'Surfing']
25
- // }
26
- // const result = await ai`Summarize the itinerary: ${JSON.stringify(itinerary)}`({ model })
27
- // expect(result).toContain('Miami Beach')
28
- // expect(result).toMatch(/[Ss]wimming/)
29
- // })
30
- it('should support multiple interpolated values', async () => {
31
- const ai = createTemplateFunction();
32
- const city = 'Paris';
33
- const days = 3;
34
- const interests = ['art', 'food'];
35
- const result = await ai `Create an itinerary for ${days} days in ${city} focusing on ${interests.join(' and ')}`({ model });
36
- expect(result).toContain('Paris');
37
- expect(result).toContain('art');
38
- expect(result).toContain('food');
39
- }, 30000);
40
- });
41
- // describe('Structured Outputs', () => {
42
- // it('should support getting and using schema functions', async () => {
43
- // const ai = new Proxy(createTemplateFunction(), {
44
- // get: (target, prop) => {
45
- // if (prop === 'categorizeProduct') {
46
- // return createAIFunction(z.object({
47
- // productType: z.enum(['App', 'API', 'Marketplace', 'Platform', 'Service', 'Website']),
48
- // customer: z.string().describe('ideal customer profile'),
49
- // solution: z.string().describe('describe the offer'),
50
- // description: z.string().describe('website meta description')
51
- // }))
52
- // }
53
- // return target[prop]
54
- // }
55
- // })
56
- // // Get the function and use it later
57
- // const categorizeProduct = ai.categorizeProduct
58
- // const result1 = await categorizeProduct({ domain: 'stripe.com' }, { model })
59
- // expect(result1).toHaveProperty('productType')
60
- // expect(result1).toHaveProperty('customer')
61
- // expect(result1).toHaveProperty('solution')
62
- // expect(result1).toHaveProperty('description')
63
- // expect(['App', 'API', 'Marketplace', 'Platform', 'Service', 'Website']).toContain(result1.productType)
64
- // // Immediate invocation pattern
65
- // const result2 = await ai.categorizeProduct({
66
- // productType: 'App | API | Marketplace | Platform | Service | Website',
67
- // customer: 'ideal customer profile',
68
- // solution: 'describe the offer',
69
- // description: 'website meta description',
70
- // })({ name: 'drively AI' }, { model })
71
- // expect(result2).toHaveProperty('productType')
72
- // expect(result2).toHaveProperty('customer')
73
- // expect(result2).toHaveProperty('solution')
74
- // expect(result2).toHaveProperty('description')
75
- // expect(['App', 'API', 'Marketplace', 'Platform', 'Service', 'Website']).toContain(result2.productType)
76
- // }, 30000)
77
- // it('should support enum output format', async () => {
78
- // const ai = new Proxy(createTemplateFunction(), {
79
- // get: (target, prop) => {
80
- // if (prop === 'classifyMovie') {
81
- // return createAIFunction(z.enum(['action', 'comedy', 'drama', 'horror', 'sci-fi']))
82
- // }
83
- // return target[prop]
84
- // }
85
- // })
86
- // // Get the function and use it later
87
- // const classifyMovie = ai.classifyMovie
88
- // const result1 = await classifyMovie({
89
- // plot: 'A group of astronauts travel through a wormhole in search of a new habitable planet for humanity.'
90
- // }, { model })
91
- // expect(['action', 'comedy', 'drama', 'horror', 'sci-fi']).toContain(result1)
92
- // // Immediate invocation pattern
93
- // const result2 = await ai.classifyMovie({
94
- // genre: ['action', 'comedy', 'drama', 'horror', 'sci-fi']
95
- // })({
96
- // plot: 'A detective investigates a series of mysterious disappearances in a small town.'
97
- // }, { model })
98
- // expect(['action', 'comedy', 'drama', 'horror', 'sci-fi']).toContain(result2)
99
- // }, 30000)
100
- // })
101
- describe('Configuration', () => {
102
- it('should support model specification', async () => {
103
- const ai = createTemplateFunction();
104
- const result = await ai `Hello`({ model: openai('gpt-4o-mini') });
105
- expect(result).toBeDefined();
106
- });
107
- it('should support system prompts', async () => {
108
- const ai = createTemplateFunction();
109
- const result = await ai `List fun activities`({
110
- model,
111
- system: 'You are an expert tour guide',
112
- temperature: 0.2
113
- });
114
- expect(result).toBeDefined();
115
- });
116
- it('should support concurrency limits', async () => {
117
- const ai = createTemplateFunction();
118
- const startTime = Date.now();
119
- const results = await Promise.all([
120
- ai `task 1`({ model, concurrency: 2 }),
121
- ai `task 2`({ model, concurrency: 2 }),
122
- ai `task 3`({ model, concurrency: 2 })
123
- ]);
124
- const endTime = Date.now();
125
- expect(results).toHaveLength(3);
126
- // With concurrency of 2, it should take at least 2 batches
127
- expect(endTime - startTime).toBeGreaterThan(100);
128
- });
129
- });
130
- // describe('Composable Functions & Workflows', () => {
131
- // it('should support function composition', async () => {
132
- // const ai = createTemplateFunction()
133
- // const list = createTemplateFunction()
134
- // const listBlogPosts = (count: number, topic: string) =>
135
- // list`${count} blog post titles about ${topic}`({ model })
136
- // const writeBlogPost = (title: string) =>
137
- // ai`write a blog post in markdown starting with "# ${title}"`({ model })
138
- // async function* writeBlog(count: number, topic: string) {
139
- // for await (const title of await listBlogPosts(count, topic)) {
140
- // const content = await writeBlogPost(title)
141
- // yield { title, content }
142
- // }
143
- // }
144
- // const posts = []
145
- // for await (const post of writeBlog(2, 'future of car sales')) {
146
- // posts.push(post)
147
- // }
148
- // expect(posts).toHaveLength(2)
149
- // posts.forEach(post => {
150
- // expect(post).toHaveProperty('title')
151
- // expect(post).toHaveProperty('content')
152
- // expect(post.content).toMatch(new RegExp(`^# ${post.title}`))
153
- // })
154
- // })
155
- // it('should support nested template functions', async () => {
156
- // const ai = createTemplateFunction()
157
- // const generateName = (type: string) => ai`generate a name for a ${type}`({ model })
158
- // const generateFunction = (name: string) =>
159
- // ai`write a function in TypeScript called ${name}`({ model })
160
- // const name = await generateName('utility function')
161
- // const result = await generateFunction(name)
162
- // expect(result).toContain('function')
163
- // expect(result).toContain(name)
164
- // expect(result).toContain('export')
165
- // })
166
- // })
167
- // describe('Alternative Providers', () => {
168
- // it('should support OpenAI provider', async () => {
169
- // const ai = createTemplateFunction()
170
- // const result = await ai`Hello`({ model: openai('gpt-4o-mini') })
171
- // expect(result).toBeDefined()
172
- // })
173
- // // This test is commented out as we don't want to actually import anthropic
174
- // // but it demonstrates how the test would look
175
- // /*
176
- // it('should support Anthropic provider', async () => {
177
- // const ai = createTemplateFunction()
178
- // const result = await ai`write a function in TypeScript called ${name}`({
179
- // model: anthropic('claude-3-5-sonnet-20241022')
180
- // })
181
- // expect(result).toContain('function')
182
- // expect(result).toContain('export')
183
- // })
184
- // */
185
- // it('should support custom provider configuration', async () => {
186
- // const ai = createTemplateFunction()
187
- // const result = await ai`Hello`({
188
- // model: openai('gpt-4o-mini', { structuredOutputs: true })
189
- // })
190
- // expect(result).toBeDefined()
191
- // })
192
- // })
193
- // describe('Advanced Features', () => {
194
- // it('should support streaming with onChunk callback', async () => {
195
- // const ai = createTemplateFunction()
196
- // const chunks: string[] = []
197
- // const result = await ai`Write a short story`({
198
- // model,
199
- // streaming: {
200
- // onProgress: (chunk) => chunks.push(chunk)
201
- // }
202
- // })
203
- // expect(result).toBeDefined()
204
- // expect(chunks.length).toBeGreaterThan(0)
205
- // expect(chunks.join('')).toBe(result)
206
- // })
207
- // it('should support structured outputs with OpenAI', async () => {
208
- // const schema = z.object({
209
- // name: z.string(),
210
- // ingredients: z.array(z.object({
211
- // name: z.string(),
212
- // amount: z.string().nullable() // Note: using nullable instead of optional
213
- // })),
214
- // steps: z.array(z.string())
215
- // })
216
- // const ai = createTemplateFunction()
217
- // const result = await ai`Generate a recipe`({
218
- // model: openai('gpt-4o-mini', { structuredOutputs: true }),
219
- // outputFormat: 'object',
220
- // schema,
221
- // schemaName: 'recipe',
222
- // schemaDescription: 'A cooking recipe with ingredients and steps.'
223
- // })
224
- // const parsed = JSON.parse(result)
225
- // expect(() => schema.parse(parsed)).not.toThrow()
226
- // })
227
- // it('should support long text generation', async () => {
228
- // const ai = createTemplateFunction()
229
- // const result = await ai`Write a detailed essay about the history of Rome`({
230
- // model,
231
- // maxSteps: 3,
232
- // experimental_continueSteps: true,
233
- // system: 'Stop when sufficient information was provided.'
234
- // })
235
- // expect(result.length).toBeGreaterThan(1000) // Assuming it generates substantial content
236
- // expect(result).toContain('Rome')
237
- // })
238
- // it('should support predicted outputs', async () => {
239
- // const ai = createTemplateFunction()
240
- // const existingCode = `interface User {
241
- // Username: string;
242
- // Age: number;
243
- // }`
244
- // const result = await ai`Replace the Username property with an Email property`({
245
- // model,
246
- // experimental_providerMetadata: {
247
- // openai: {
248
- // prediction: {
249
- // type: 'content',
250
- // content: existingCode
251
- // }
252
- // }
253
- // }
254
- // })
255
- // expect(result).toContain('interface User')
256
- // expect(result).toContain('Email: string')
257
- // expect(result).not.toContain('Username')
258
- // })
259
- // it('should support streaming with tool calls', async () => {
260
- // const ai = createTemplateFunction()
261
- // const toolCalls: any[] = []
262
- // const toolResults: any[] = []
263
- // await ai`What are some San Francisco tourist attractions?`({
264
- // model,
265
- // tools: {
266
- // cityAttractions: {
267
- // parameters: z.object({ city: z.string() }),
268
- // execute: async ({ city }) => ({
269
- // attractions: ['Alcatraz', 'Golden Gate Bridge', 'Fisherman\'s Wharf']
270
- // })
271
- // }
272
- // },
273
- // streaming: {
274
- // onProgress: (chunk) => {
275
- // if (chunk.type === 'tool-call') toolCalls.push(chunk)
276
- // if (chunk.type === 'tool-result') toolResults.push(chunk)
277
- // }
278
- // }
279
- // })
280
- // expect(toolCalls.length).toBeGreaterThan(0)
281
- // expect(toolResults.length).toBeGreaterThan(0)
282
- // expect(toolCalls[0].toolName).toBe('cityAttractions')
283
- // })
284
- // })
285
- // })
286
- });
287
- //# sourceMappingURL=index.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../src/factory/index.test.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import type { AIFunctionOptions, BaseTemplateFunction } from '../types';
2
- export declare function createListFunction(defaultOptions?: AIFunctionOptions): BaseTemplateFunction;
3
- //# sourceMappingURL=list.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/factory/list.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,iBAAiB,EAAE,oBAAoB,EAAyB,MAAM,UAAU,CAAA;AAc9F,wBAAgB,kBAAkB,CAAC,cAAc,GAAE,iBAAsB,GAAG,oBAAoB,CAwO/F"}