@fondation-io/ai 7.0.0-beta.45

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 (536) hide show
  1. package/CHANGELOG.md +7687 -0
  2. package/README.md +238 -0
  3. package/dist/index.d.mts +7056 -0
  4. package/dist/index.d.ts +7056 -0
  5. package/dist/index.js +14607 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/index.mjs +14578 -0
  8. package/dist/index.mjs.map +1 -0
  9. package/dist/internal/index.d.mts +303 -0
  10. package/dist/internal/index.d.ts +303 -0
  11. package/dist/internal/index.js +1352 -0
  12. package/dist/internal/index.js.map +1 -0
  13. package/dist/internal/index.mjs +1336 -0
  14. package/dist/internal/index.mjs.map +1 -0
  15. package/dist/test/index.d.mts +265 -0
  16. package/dist/test/index.d.ts +265 -0
  17. package/dist/test/index.js +509 -0
  18. package/dist/test/index.js.map +1 -0
  19. package/dist/test/index.mjs +472 -0
  20. package/dist/test/index.mjs.map +1 -0
  21. package/docs/00-introduction/index.mdx +76 -0
  22. package/docs/02-foundations/01-overview.mdx +43 -0
  23. package/docs/02-foundations/02-providers-and-models.mdx +160 -0
  24. package/docs/02-foundations/03-prompts.mdx +616 -0
  25. package/docs/02-foundations/04-tools.mdx +251 -0
  26. package/docs/02-foundations/05-streaming.mdx +62 -0
  27. package/docs/02-foundations/06-provider-options.mdx +345 -0
  28. package/docs/02-foundations/index.mdx +49 -0
  29. package/docs/02-getting-started/00-choosing-a-provider.mdx +110 -0
  30. package/docs/02-getting-started/01-navigating-the-library.mdx +85 -0
  31. package/docs/02-getting-started/02-nextjs-app-router.mdx +559 -0
  32. package/docs/02-getting-started/03-nextjs-pages-router.mdx +542 -0
  33. package/docs/02-getting-started/04-svelte.mdx +627 -0
  34. package/docs/02-getting-started/05-nuxt.mdx +566 -0
  35. package/docs/02-getting-started/06-nodejs.mdx +512 -0
  36. package/docs/02-getting-started/07-expo.mdx +766 -0
  37. package/docs/02-getting-started/08-tanstack-start.mdx +583 -0
  38. package/docs/02-getting-started/09-coding-agents.mdx +179 -0
  39. package/docs/02-getting-started/index.mdx +44 -0
  40. package/docs/03-agents/01-overview.mdx +96 -0
  41. package/docs/03-agents/02-building-agents.mdx +449 -0
  42. package/docs/03-agents/03-workflows.mdx +386 -0
  43. package/docs/03-agents/04-loop-control.mdx +394 -0
  44. package/docs/03-agents/05-configuring-call-options.mdx +286 -0
  45. package/docs/03-agents/06-memory.mdx +222 -0
  46. package/docs/03-agents/06-subagents.mdx +362 -0
  47. package/docs/03-agents/index.mdx +46 -0
  48. package/docs/03-ai-sdk-core/01-overview.mdx +31 -0
  49. package/docs/03-ai-sdk-core/05-generating-text.mdx +707 -0
  50. package/docs/03-ai-sdk-core/10-generating-structured-data.mdx +498 -0
  51. package/docs/03-ai-sdk-core/15-tools-and-tool-calling.mdx +1148 -0
  52. package/docs/03-ai-sdk-core/16-mcp-tools.mdx +383 -0
  53. package/docs/03-ai-sdk-core/20-prompt-engineering.mdx +146 -0
  54. package/docs/03-ai-sdk-core/25-settings.mdx +216 -0
  55. package/docs/03-ai-sdk-core/26-reasoning.mdx +190 -0
  56. package/docs/03-ai-sdk-core/30-embeddings.mdx +236 -0
  57. package/docs/03-ai-sdk-core/31-reranking.mdx +218 -0
  58. package/docs/03-ai-sdk-core/35-image-generation.mdx +341 -0
  59. package/docs/03-ai-sdk-core/36-transcription.mdx +227 -0
  60. package/docs/03-ai-sdk-core/37-speech.mdx +169 -0
  61. package/docs/03-ai-sdk-core/38-video-generation.mdx +366 -0
  62. package/docs/03-ai-sdk-core/40-middleware.mdx +485 -0
  63. package/docs/03-ai-sdk-core/45-provider-management.mdx +349 -0
  64. package/docs/03-ai-sdk-core/50-error-handling.mdx +149 -0
  65. package/docs/03-ai-sdk-core/55-testing.mdx +219 -0
  66. package/docs/03-ai-sdk-core/60-telemetry.mdx +391 -0
  67. package/docs/03-ai-sdk-core/65-devtools.mdx +107 -0
  68. package/docs/03-ai-sdk-core/65-event-listeners.mdx +1303 -0
  69. package/docs/03-ai-sdk-core/index.mdx +99 -0
  70. package/docs/04-ai-sdk-ui/01-overview.mdx +44 -0
  71. package/docs/04-ai-sdk-ui/02-chatbot.mdx +1320 -0
  72. package/docs/04-ai-sdk-ui/03-chatbot-message-persistence.mdx +534 -0
  73. package/docs/04-ai-sdk-ui/03-chatbot-resume-streams.mdx +263 -0
  74. package/docs/04-ai-sdk-ui/03-chatbot-tool-usage.mdx +682 -0
  75. package/docs/04-ai-sdk-ui/04-generative-user-interfaces.mdx +389 -0
  76. package/docs/04-ai-sdk-ui/05-completion.mdx +181 -0
  77. package/docs/04-ai-sdk-ui/08-object-generation.mdx +344 -0
  78. package/docs/04-ai-sdk-ui/20-streaming-data.mdx +397 -0
  79. package/docs/04-ai-sdk-ui/21-error-handling.mdx +190 -0
  80. package/docs/04-ai-sdk-ui/21-transport.mdx +174 -0
  81. package/docs/04-ai-sdk-ui/24-reading-ui-message-streams.mdx +104 -0
  82. package/docs/04-ai-sdk-ui/25-message-metadata.mdx +152 -0
  83. package/docs/04-ai-sdk-ui/50-stream-protocol.mdx +503 -0
  84. package/docs/04-ai-sdk-ui/index.mdx +64 -0
  85. package/docs/05-ai-sdk-rsc/01-overview.mdx +45 -0
  86. package/docs/05-ai-sdk-rsc/02-streaming-react-components.mdx +209 -0
  87. package/docs/05-ai-sdk-rsc/03-generative-ui-state.mdx +279 -0
  88. package/docs/05-ai-sdk-rsc/03-saving-and-restoring-states.mdx +105 -0
  89. package/docs/05-ai-sdk-rsc/04-multistep-interfaces.mdx +282 -0
  90. package/docs/05-ai-sdk-rsc/05-streaming-values.mdx +157 -0
  91. package/docs/05-ai-sdk-rsc/06-loading-state.mdx +273 -0
  92. package/docs/05-ai-sdk-rsc/08-error-handling.mdx +94 -0
  93. package/docs/05-ai-sdk-rsc/09-authentication.mdx +42 -0
  94. package/docs/05-ai-sdk-rsc/10-migrating-to-ui.mdx +722 -0
  95. package/docs/05-ai-sdk-rsc/index.mdx +63 -0
  96. package/docs/06-advanced/01-prompt-engineering.mdx +96 -0
  97. package/docs/06-advanced/02-stopping-streams.mdx +184 -0
  98. package/docs/06-advanced/03-backpressure.mdx +173 -0
  99. package/docs/06-advanced/04-caching.mdx +169 -0
  100. package/docs/06-advanced/05-multiple-streamables.mdx +68 -0
  101. package/docs/06-advanced/06-rate-limiting.mdx +60 -0
  102. package/docs/06-advanced/07-rendering-ui-with-language-models.mdx +225 -0
  103. package/docs/06-advanced/08-model-as-router.mdx +120 -0
  104. package/docs/06-advanced/09-multistep-interfaces.mdx +115 -0
  105. package/docs/06-advanced/09-sequential-generations.mdx +55 -0
  106. package/docs/06-advanced/10-vercel-deployment-guide.mdx +117 -0
  107. package/docs/06-advanced/index.mdx +11 -0
  108. package/docs/07-reference/01-ai-sdk-core/01-generate-text.mdx +2785 -0
  109. package/docs/07-reference/01-ai-sdk-core/02-stream-text.mdx +3752 -0
  110. package/docs/07-reference/01-ai-sdk-core/05-embed.mdx +332 -0
  111. package/docs/07-reference/01-ai-sdk-core/06-embed-many.mdx +330 -0
  112. package/docs/07-reference/01-ai-sdk-core/06-rerank.mdx +323 -0
  113. package/docs/07-reference/01-ai-sdk-core/10-generate-image.mdx +251 -0
  114. package/docs/07-reference/01-ai-sdk-core/11-transcribe.mdx +152 -0
  115. package/docs/07-reference/01-ai-sdk-core/12-generate-speech.mdx +221 -0
  116. package/docs/07-reference/01-ai-sdk-core/13-generate-video.mdx +264 -0
  117. package/docs/07-reference/01-ai-sdk-core/15-agent.mdx +235 -0
  118. package/docs/07-reference/01-ai-sdk-core/16-tool-loop-agent.mdx +973 -0
  119. package/docs/07-reference/01-ai-sdk-core/17-create-agent-ui-stream.mdx +154 -0
  120. package/docs/07-reference/01-ai-sdk-core/18-create-agent-ui-stream-response.mdx +173 -0
  121. package/docs/07-reference/01-ai-sdk-core/18-pipe-agent-ui-stream-to-response.mdx +150 -0
  122. package/docs/07-reference/01-ai-sdk-core/20-tool.mdx +209 -0
  123. package/docs/07-reference/01-ai-sdk-core/22-dynamic-tool.mdx +223 -0
  124. package/docs/07-reference/01-ai-sdk-core/23-create-mcp-client.mdx +423 -0
  125. package/docs/07-reference/01-ai-sdk-core/24-mcp-stdio-transport.mdx +68 -0
  126. package/docs/07-reference/01-ai-sdk-core/25-json-schema.mdx +94 -0
  127. package/docs/07-reference/01-ai-sdk-core/26-zod-schema.mdx +109 -0
  128. package/docs/07-reference/01-ai-sdk-core/27-valibot-schema.mdx +58 -0
  129. package/docs/07-reference/01-ai-sdk-core/28-output.mdx +342 -0
  130. package/docs/07-reference/01-ai-sdk-core/30-model-message.mdx +435 -0
  131. package/docs/07-reference/01-ai-sdk-core/31-ui-message.mdx +264 -0
  132. package/docs/07-reference/01-ai-sdk-core/32-validate-ui-messages.mdx +101 -0
  133. package/docs/07-reference/01-ai-sdk-core/33-safe-validate-ui-messages.mdx +113 -0
  134. package/docs/07-reference/01-ai-sdk-core/40-provider-registry.mdx +198 -0
  135. package/docs/07-reference/01-ai-sdk-core/42-custom-provider.mdx +157 -0
  136. package/docs/07-reference/01-ai-sdk-core/50-cosine-similarity.mdx +52 -0
  137. package/docs/07-reference/01-ai-sdk-core/60-wrap-language-model.mdx +59 -0
  138. package/docs/07-reference/01-ai-sdk-core/61-wrap-image-model.mdx +64 -0
  139. package/docs/07-reference/01-ai-sdk-core/65-language-model-v2-middleware.mdx +74 -0
  140. package/docs/07-reference/01-ai-sdk-core/66-extract-reasoning-middleware.mdx +68 -0
  141. package/docs/07-reference/01-ai-sdk-core/67-simulate-streaming-middleware.mdx +71 -0
  142. package/docs/07-reference/01-ai-sdk-core/68-default-settings-middleware.mdx +80 -0
  143. package/docs/07-reference/01-ai-sdk-core/69-add-tool-input-examples-middleware.mdx +155 -0
  144. package/docs/07-reference/01-ai-sdk-core/70-extract-json-middleware.mdx +147 -0
  145. package/docs/07-reference/01-ai-sdk-core/70-step-count-is.mdx +84 -0
  146. package/docs/07-reference/01-ai-sdk-core/71-has-tool-call.mdx +120 -0
  147. package/docs/07-reference/01-ai-sdk-core/75-simulate-readable-stream.mdx +94 -0
  148. package/docs/07-reference/01-ai-sdk-core/80-smooth-stream.mdx +145 -0
  149. package/docs/07-reference/01-ai-sdk-core/90-generate-id.mdx +30 -0
  150. package/docs/07-reference/01-ai-sdk-core/91-create-id-generator.mdx +89 -0
  151. package/docs/07-reference/01-ai-sdk-core/92-default-generated-file.mdx +68 -0
  152. package/docs/07-reference/01-ai-sdk-core/index.mdx +160 -0
  153. package/docs/07-reference/02-ai-sdk-ui/01-use-chat.mdx +493 -0
  154. package/docs/07-reference/02-ai-sdk-ui/02-use-completion.mdx +185 -0
  155. package/docs/07-reference/02-ai-sdk-ui/03-use-object.mdx +196 -0
  156. package/docs/07-reference/02-ai-sdk-ui/31-convert-to-model-messages.mdx +231 -0
  157. package/docs/07-reference/02-ai-sdk-ui/32-prune-messages.mdx +108 -0
  158. package/docs/07-reference/02-ai-sdk-ui/40-create-ui-message-stream.mdx +162 -0
  159. package/docs/07-reference/02-ai-sdk-ui/41-create-ui-message-stream-response.mdx +119 -0
  160. package/docs/07-reference/02-ai-sdk-ui/42-pipe-ui-message-stream-to-response.mdx +77 -0
  161. package/docs/07-reference/02-ai-sdk-ui/43-read-ui-message-stream.mdx +57 -0
  162. package/docs/07-reference/02-ai-sdk-ui/46-infer-ui-tools.mdx +99 -0
  163. package/docs/07-reference/02-ai-sdk-ui/47-infer-ui-tool.mdx +75 -0
  164. package/docs/07-reference/02-ai-sdk-ui/50-direct-chat-transport.mdx +333 -0
  165. package/docs/07-reference/02-ai-sdk-ui/index.mdx +89 -0
  166. package/docs/07-reference/03-ai-sdk-rsc/01-stream-ui.mdx +767 -0
  167. package/docs/07-reference/03-ai-sdk-rsc/02-create-ai.mdx +90 -0
  168. package/docs/07-reference/03-ai-sdk-rsc/03-create-streamable-ui.mdx +91 -0
  169. package/docs/07-reference/03-ai-sdk-rsc/04-create-streamable-value.mdx +78 -0
  170. package/docs/07-reference/03-ai-sdk-rsc/05-read-streamable-value.mdx +79 -0
  171. package/docs/07-reference/03-ai-sdk-rsc/06-get-ai-state.mdx +50 -0
  172. package/docs/07-reference/03-ai-sdk-rsc/07-get-mutable-ai-state.mdx +70 -0
  173. package/docs/07-reference/03-ai-sdk-rsc/08-use-ai-state.mdx +26 -0
  174. package/docs/07-reference/03-ai-sdk-rsc/09-use-actions.mdx +42 -0
  175. package/docs/07-reference/03-ai-sdk-rsc/10-use-ui-state.mdx +35 -0
  176. package/docs/07-reference/03-ai-sdk-rsc/11-use-streamable-value.mdx +46 -0
  177. package/docs/07-reference/03-ai-sdk-rsc/20-render.mdx +266 -0
  178. package/docs/07-reference/03-ai-sdk-rsc/index.mdx +67 -0
  179. package/docs/07-reference/05-ai-sdk-errors/ai-api-call-error.mdx +31 -0
  180. package/docs/07-reference/05-ai-sdk-errors/ai-download-error.mdx +28 -0
  181. package/docs/07-reference/05-ai-sdk-errors/ai-empty-response-body-error.mdx +24 -0
  182. package/docs/07-reference/05-ai-sdk-errors/ai-invalid-argument-error.mdx +26 -0
  183. package/docs/07-reference/05-ai-sdk-errors/ai-invalid-data-content-error.mdx +26 -0
  184. package/docs/07-reference/05-ai-sdk-errors/ai-invalid-message-role-error.mdx +25 -0
  185. package/docs/07-reference/05-ai-sdk-errors/ai-invalid-prompt-error.mdx +47 -0
  186. package/docs/07-reference/05-ai-sdk-errors/ai-invalid-response-data-error.mdx +25 -0
  187. package/docs/07-reference/05-ai-sdk-errors/ai-invalid-tool-approval-error.mdx +24 -0
  188. package/docs/07-reference/05-ai-sdk-errors/ai-invalid-tool-input-error.mdx +27 -0
  189. package/docs/07-reference/05-ai-sdk-errors/ai-json-parse-error.mdx +25 -0
  190. package/docs/07-reference/05-ai-sdk-errors/ai-load-api-key-error.mdx +24 -0
  191. package/docs/07-reference/05-ai-sdk-errors/ai-load-setting-error.mdx +24 -0
  192. package/docs/07-reference/05-ai-sdk-errors/ai-message-conversion-error.mdx +25 -0
  193. package/docs/07-reference/05-ai-sdk-errors/ai-no-content-generated-error.mdx +24 -0
  194. package/docs/07-reference/05-ai-sdk-errors/ai-no-image-generated-error.mdx +36 -0
  195. package/docs/07-reference/05-ai-sdk-errors/ai-no-object-generated-error.mdx +43 -0
  196. package/docs/07-reference/05-ai-sdk-errors/ai-no-output-generated-error.mdx +25 -0
  197. package/docs/07-reference/05-ai-sdk-errors/ai-no-speech-generated-error.mdx +24 -0
  198. package/docs/07-reference/05-ai-sdk-errors/ai-no-such-model-error.mdx +26 -0
  199. package/docs/07-reference/05-ai-sdk-errors/ai-no-such-provider-error.mdx +28 -0
  200. package/docs/07-reference/05-ai-sdk-errors/ai-no-such-tool-error.mdx +26 -0
  201. package/docs/07-reference/05-ai-sdk-errors/ai-no-transcript-generated-error.mdx +24 -0
  202. package/docs/07-reference/05-ai-sdk-errors/ai-no-video-generated-error.mdx +39 -0
  203. package/docs/07-reference/05-ai-sdk-errors/ai-retry-error.mdx +27 -0
  204. package/docs/07-reference/05-ai-sdk-errors/ai-too-many-embedding-values-for-call-error.mdx +27 -0
  205. package/docs/07-reference/05-ai-sdk-errors/ai-tool-call-not-found-for-approval-error.mdx +25 -0
  206. package/docs/07-reference/05-ai-sdk-errors/ai-tool-call-repair-error.mdx +28 -0
  207. package/docs/07-reference/05-ai-sdk-errors/ai-type-validation-error.mdx +25 -0
  208. package/docs/07-reference/05-ai-sdk-errors/ai-ui-message-stream-error.mdx +67 -0
  209. package/docs/07-reference/05-ai-sdk-errors/ai-unsupported-functionality-error.mdx +25 -0
  210. package/docs/07-reference/05-ai-sdk-errors/index.mdx +39 -0
  211. package/docs/07-reference/index.mdx +28 -0
  212. package/docs/08-migration-guides/00-versioning.mdx +46 -0
  213. package/docs/08-migration-guides/23-migration-guide-7-0.mdx +95 -0
  214. package/docs/08-migration-guides/24-migration-guide-6-0.mdx +823 -0
  215. package/docs/08-migration-guides/25-migration-guide-5-0-data.mdx +882 -0
  216. package/docs/08-migration-guides/26-migration-guide-5-0.mdx +3427 -0
  217. package/docs/08-migration-guides/27-migration-guide-4-2.mdx +99 -0
  218. package/docs/08-migration-guides/28-migration-guide-4-1.mdx +14 -0
  219. package/docs/08-migration-guides/29-migration-guide-4-0.mdx +1157 -0
  220. package/docs/08-migration-guides/36-migration-guide-3-4.mdx +14 -0
  221. package/docs/08-migration-guides/37-migration-guide-3-3.mdx +64 -0
  222. package/docs/08-migration-guides/38-migration-guide-3-2.mdx +46 -0
  223. package/docs/08-migration-guides/39-migration-guide-3-1.mdx +168 -0
  224. package/docs/08-migration-guides/index.mdx +22 -0
  225. package/docs/09-troubleshooting/01-azure-stream-slow.mdx +33 -0
  226. package/docs/09-troubleshooting/03-server-actions-in-client-components.mdx +40 -0
  227. package/docs/09-troubleshooting/04-strange-stream-output.mdx +36 -0
  228. package/docs/09-troubleshooting/05-streamable-ui-errors.mdx +16 -0
  229. package/docs/09-troubleshooting/05-tool-invocation-missing-result.mdx +106 -0
  230. package/docs/09-troubleshooting/06-streaming-not-working-when-deployed.mdx +31 -0
  231. package/docs/09-troubleshooting/06-streaming-not-working-when-proxied.mdx +31 -0
  232. package/docs/09-troubleshooting/06-timeout-on-vercel.mdx +60 -0
  233. package/docs/09-troubleshooting/07-unclosed-streams.mdx +34 -0
  234. package/docs/09-troubleshooting/08-use-chat-failed-to-parse-stream.mdx +26 -0
  235. package/docs/09-troubleshooting/09-client-stream-error.mdx +25 -0
  236. package/docs/09-troubleshooting/10-use-chat-tools-no-response.mdx +32 -0
  237. package/docs/09-troubleshooting/11-use-chat-custom-request-options.mdx +149 -0
  238. package/docs/09-troubleshooting/12-typescript-performance-zod.mdx +46 -0
  239. package/docs/09-troubleshooting/12-use-chat-an-error-occurred.mdx +59 -0
  240. package/docs/09-troubleshooting/13-repeated-assistant-messages.mdx +73 -0
  241. package/docs/09-troubleshooting/14-stream-abort-handling.mdx +73 -0
  242. package/docs/09-troubleshooting/14-tool-calling-with-structured-outputs.mdx +48 -0
  243. package/docs/09-troubleshooting/15-abort-breaks-resumable-streams.mdx +55 -0
  244. package/docs/09-troubleshooting/15-stream-text-not-working.mdx +33 -0
  245. package/docs/09-troubleshooting/16-streaming-status-delay.mdx +63 -0
  246. package/docs/09-troubleshooting/17-use-chat-stale-body-data.mdx +141 -0
  247. package/docs/09-troubleshooting/18-ontoolcall-type-narrowing.mdx +66 -0
  248. package/docs/09-troubleshooting/19-unsupported-model-version.mdx +50 -0
  249. package/docs/09-troubleshooting/20-no-object-generated-content-filter.mdx +76 -0
  250. package/docs/09-troubleshooting/21-missing-tool-results-error.mdx +82 -0
  251. package/docs/09-troubleshooting/30-model-is-not-assignable-to-type.mdx +21 -0
  252. package/docs/09-troubleshooting/40-typescript-cannot-find-namespace-jsx.mdx +24 -0
  253. package/docs/09-troubleshooting/50-react-maximum-update-depth-exceeded.mdx +39 -0
  254. package/docs/09-troubleshooting/60-jest-cannot-find-module-ai-rsc.mdx +22 -0
  255. package/docs/09-troubleshooting/70-high-memory-usage-with-images.mdx +108 -0
  256. package/docs/09-troubleshooting/index.mdx +11 -0
  257. package/internal.d.ts +1 -0
  258. package/package.json +120 -0
  259. package/src/agent/agent.ts +156 -0
  260. package/src/agent/create-agent-ui-stream-response.ts +61 -0
  261. package/src/agent/create-agent-ui-stream.ts +84 -0
  262. package/src/agent/index.ts +37 -0
  263. package/src/agent/infer-agent-tools.ts +7 -0
  264. package/src/agent/infer-agent-ui-message.ts +11 -0
  265. package/src/agent/pipe-agent-ui-stream-to-response.ts +64 -0
  266. package/src/agent/tool-loop-agent-settings.ts +252 -0
  267. package/src/agent/tool-loop-agent.ts +205 -0
  268. package/src/embed/embed-events.ts +181 -0
  269. package/src/embed/embed-many-result.ts +53 -0
  270. package/src/embed/embed-many.ts +428 -0
  271. package/src/embed/embed-result.ts +50 -0
  272. package/src/embed/embed.ts +266 -0
  273. package/src/embed/index.ts +5 -0
  274. package/src/error/index.ts +37 -0
  275. package/src/error/invalid-argument-error.ts +34 -0
  276. package/src/error/invalid-stream-part-error.ts +28 -0
  277. package/src/error/invalid-tool-approval-error.ts +26 -0
  278. package/src/error/invalid-tool-input-error.ts +33 -0
  279. package/src/error/missing-tool-result-error.ts +28 -0
  280. package/src/error/no-image-generated-error.ts +39 -0
  281. package/src/error/no-object-generated-error.ts +70 -0
  282. package/src/error/no-output-generated-error.ts +26 -0
  283. package/src/error/no-speech-generated-error.ts +28 -0
  284. package/src/error/no-such-tool-error.ts +35 -0
  285. package/src/error/no-transcript-generated-error.ts +30 -0
  286. package/src/error/no-video-generated-error.ts +57 -0
  287. package/src/error/tool-call-not-found-for-approval-error.ts +32 -0
  288. package/src/error/tool-call-repair-error.ts +30 -0
  289. package/src/error/ui-message-stream-error.ts +48 -0
  290. package/src/error/unsupported-model-version-error.ts +23 -0
  291. package/src/error/verify-no-object-generated-error.ts +27 -0
  292. package/src/generate-image/generate-image-result.ts +42 -0
  293. package/src/generate-image/generate-image.ts +361 -0
  294. package/src/generate-image/index.ts +18 -0
  295. package/src/generate-object/generate-object-result.ts +67 -0
  296. package/src/generate-object/generate-object.ts +514 -0
  297. package/src/generate-object/index.ts +9 -0
  298. package/src/generate-object/inject-json-instruction.ts +30 -0
  299. package/src/generate-object/output-strategy.ts +415 -0
  300. package/src/generate-object/parse-and-validate-object-result.ts +111 -0
  301. package/src/generate-object/repair-text.ts +12 -0
  302. package/src/generate-object/stream-object-result.ts +120 -0
  303. package/src/generate-object/stream-object.ts +984 -0
  304. package/src/generate-object/validate-object-generation-input.ts +144 -0
  305. package/src/generate-speech/generate-speech-result.ts +30 -0
  306. package/src/generate-speech/generate-speech.ts +191 -0
  307. package/src/generate-speech/generated-audio-file.ts +65 -0
  308. package/src/generate-speech/index.ts +3 -0
  309. package/src/generate-text/collect-tool-approvals.ts +116 -0
  310. package/src/generate-text/content-part.ts +31 -0
  311. package/src/generate-text/core-events.ts +390 -0
  312. package/src/generate-text/create-execute-tools-transformation.ts +144 -0
  313. package/src/generate-text/execute-tool-call.ts +190 -0
  314. package/src/generate-text/extract-reasoning-content.ts +17 -0
  315. package/src/generate-text/extract-text-content.ts +15 -0
  316. package/src/generate-text/generate-text-result.ts +168 -0
  317. package/src/generate-text/generate-text.ts +1445 -0
  318. package/src/generate-text/generated-file.ts +70 -0
  319. package/src/generate-text/index.ts +78 -0
  320. package/src/generate-text/invoke-tool-callbacks-from-stream.ts +81 -0
  321. package/src/generate-text/is-approval-needed.ts +29 -0
  322. package/src/generate-text/output-utils.ts +23 -0
  323. package/src/generate-text/output.ts +590 -0
  324. package/src/generate-text/parse-tool-call.ts +188 -0
  325. package/src/generate-text/prepare-step.ts +103 -0
  326. package/src/generate-text/prune-messages.ts +167 -0
  327. package/src/generate-text/reasoning-output.ts +99 -0
  328. package/src/generate-text/reasoning.ts +10 -0
  329. package/src/generate-text/response-message.ts +10 -0
  330. package/src/generate-text/smooth-stream.ts +162 -0
  331. package/src/generate-text/step-result.ts +310 -0
  332. package/src/generate-text/stop-condition.ts +29 -0
  333. package/src/generate-text/stream-model-call.ts +418 -0
  334. package/src/generate-text/stream-text-result.ts +536 -0
  335. package/src/generate-text/stream-text.ts +2696 -0
  336. package/src/generate-text/to-response-messages.ts +195 -0
  337. package/src/generate-text/tool-approval-request-output.ts +21 -0
  338. package/src/generate-text/tool-call-repair-function.ts +27 -0
  339. package/src/generate-text/tool-call.ts +47 -0
  340. package/src/generate-text/tool-error.ts +34 -0
  341. package/src/generate-text/tool-output-denied.ts +21 -0
  342. package/src/generate-text/tool-output.ts +7 -0
  343. package/src/generate-text/tool-result.ts +36 -0
  344. package/src/generate-text/tool-set.ts +14 -0
  345. package/src/generate-video/generate-video-result.ts +36 -0
  346. package/src/generate-video/generate-video.ts +402 -0
  347. package/src/generate-video/index.ts +3 -0
  348. package/src/global.ts +36 -0
  349. package/src/index.ts +49 -0
  350. package/src/logger/index.ts +6 -0
  351. package/src/logger/log-warnings.ts +140 -0
  352. package/src/middleware/add-tool-input-examples-middleware.ts +90 -0
  353. package/src/middleware/default-embedding-settings-middleware.ts +22 -0
  354. package/src/middleware/default-settings-middleware.ts +33 -0
  355. package/src/middleware/extract-json-middleware.ts +197 -0
  356. package/src/middleware/extract-reasoning-middleware.ts +249 -0
  357. package/src/middleware/index.ts +10 -0
  358. package/src/middleware/simulate-streaming-middleware.ts +79 -0
  359. package/src/middleware/wrap-embedding-model.ts +89 -0
  360. package/src/middleware/wrap-image-model.ts +92 -0
  361. package/src/middleware/wrap-language-model.ts +108 -0
  362. package/src/middleware/wrap-provider.ts +51 -0
  363. package/src/model/as-embedding-model-v3.ts +24 -0
  364. package/src/model/as-embedding-model-v4.ts +25 -0
  365. package/src/model/as-image-model-v3.ts +24 -0
  366. package/src/model/as-image-model-v4.ts +21 -0
  367. package/src/model/as-language-model-v3.ts +103 -0
  368. package/src/model/as-language-model-v4.ts +25 -0
  369. package/src/model/as-provider-v3.ts +36 -0
  370. package/src/model/as-provider-v4.ts +47 -0
  371. package/src/model/as-reranking-model-v4.ts +16 -0
  372. package/src/model/as-speech-model-v3.ts +24 -0
  373. package/src/model/as-speech-model-v4.ts +21 -0
  374. package/src/model/as-transcription-model-v3.ts +24 -0
  375. package/src/model/as-transcription-model-v4.ts +25 -0
  376. package/src/model/as-video-model-v4.ts +19 -0
  377. package/src/model/resolve-model.ts +172 -0
  378. package/src/prompt/call-settings.ts +169 -0
  379. package/src/prompt/content-part.ts +236 -0
  380. package/src/prompt/convert-to-language-model-prompt.ts +548 -0
  381. package/src/prompt/create-tool-model-output.ts +34 -0
  382. package/src/prompt/data-content.ts +134 -0
  383. package/src/prompt/index.ts +27 -0
  384. package/src/prompt/invalid-data-content-error.ts +29 -0
  385. package/src/prompt/invalid-message-role-error.ts +27 -0
  386. package/src/prompt/message-conversion-error.ts +28 -0
  387. package/src/prompt/message.ts +72 -0
  388. package/src/prompt/prepare-call-settings.ts +110 -0
  389. package/src/prompt/prepare-tools-and-tool-choice.ts +86 -0
  390. package/src/prompt/prompt.ts +43 -0
  391. package/src/prompt/split-data-url.ts +17 -0
  392. package/src/prompt/standardize-prompt.ts +99 -0
  393. package/src/prompt/wrap-gateway-error.ts +29 -0
  394. package/src/registry/custom-provider.ts +210 -0
  395. package/src/registry/index.ts +7 -0
  396. package/src/registry/no-such-provider-error.ts +41 -0
  397. package/src/registry/provider-registry.ts +331 -0
  398. package/src/rerank/index.ts +8 -0
  399. package/src/rerank/rerank-events.ts +189 -0
  400. package/src/rerank/rerank-result.ts +70 -0
  401. package/src/rerank/rerank.ts +348 -0
  402. package/src/telemetry/assemble-operation-name.ts +21 -0
  403. package/src/telemetry/get-base-telemetry-attributes.ts +45 -0
  404. package/src/telemetry/get-global-telemetry-integration.ts +126 -0
  405. package/src/telemetry/get-tracer.ts +20 -0
  406. package/src/telemetry/index.ts +4 -0
  407. package/src/telemetry/noop-tracer.ts +69 -0
  408. package/src/telemetry/open-telemetry-integration.ts +875 -0
  409. package/src/telemetry/record-span.ts +75 -0
  410. package/src/telemetry/select-telemetry-attributes.ts +78 -0
  411. package/src/telemetry/stringify-for-telemetry.ts +33 -0
  412. package/src/telemetry/telemetry-integration-registry.ts +22 -0
  413. package/src/telemetry/telemetry-integration.ts +139 -0
  414. package/src/telemetry/telemetry-settings.ts +55 -0
  415. package/src/test/mock-embedding-model-v2.ts +35 -0
  416. package/src/test/mock-embedding-model-v3.ts +48 -0
  417. package/src/test/mock-embedding-model-v4.ts +48 -0
  418. package/src/test/mock-image-model-v2.ts +28 -0
  419. package/src/test/mock-image-model-v3.ts +28 -0
  420. package/src/test/mock-image-model-v4.ts +28 -0
  421. package/src/test/mock-language-model-v2.ts +72 -0
  422. package/src/test/mock-language-model-v3.ts +77 -0
  423. package/src/test/mock-language-model-v4.ts +77 -0
  424. package/src/test/mock-provider-v2.ts +68 -0
  425. package/src/test/mock-provider-v3.ts +80 -0
  426. package/src/test/mock-provider-v4.ts +80 -0
  427. package/src/test/mock-reranking-model-v3.ts +25 -0
  428. package/src/test/mock-reranking-model-v4.ts +25 -0
  429. package/src/test/mock-server-response.ts +69 -0
  430. package/src/test/mock-speech-model-v2.ts +24 -0
  431. package/src/test/mock-speech-model-v3.ts +24 -0
  432. package/src/test/mock-speech-model-v4.ts +24 -0
  433. package/src/test/mock-tracer.ts +156 -0
  434. package/src/test/mock-transcription-model-v2.ts +24 -0
  435. package/src/test/mock-transcription-model-v3.ts +24 -0
  436. package/src/test/mock-transcription-model-v4.ts +24 -0
  437. package/src/test/mock-values.ts +4 -0
  438. package/src/test/mock-video-model-v3.ts +28 -0
  439. package/src/test/mock-video-model-v4.ts +28 -0
  440. package/src/test/not-implemented.ts +3 -0
  441. package/src/text-stream/create-text-stream-response.ts +30 -0
  442. package/src/text-stream/index.ts +2 -0
  443. package/src/text-stream/pipe-text-stream-to-response.ts +38 -0
  444. package/src/transcribe/index.ts +2 -0
  445. package/src/transcribe/transcribe-result.ts +60 -0
  446. package/src/transcribe/transcribe.ts +187 -0
  447. package/src/types/embedding-model-middleware.ts +15 -0
  448. package/src/types/embedding-model.ts +20 -0
  449. package/src/types/image-model-middleware.ts +15 -0
  450. package/src/types/image-model-response-metadata.ts +16 -0
  451. package/src/types/image-model.ts +19 -0
  452. package/src/types/index.ts +29 -0
  453. package/src/types/json-value.ts +15 -0
  454. package/src/types/language-model-middleware.ts +15 -0
  455. package/src/types/language-model-request-metadata.ts +6 -0
  456. package/src/types/language-model-response-metadata.ts +21 -0
  457. package/src/types/language-model.ts +106 -0
  458. package/src/types/provider-metadata.ts +16 -0
  459. package/src/types/provider.ts +55 -0
  460. package/src/types/reranking-model.ts +6 -0
  461. package/src/types/speech-model-response-metadata.ts +21 -0
  462. package/src/types/speech-model.ts +10 -0
  463. package/src/types/transcription-model-response-metadata.ts +16 -0
  464. package/src/types/transcription-model.ts +14 -0
  465. package/src/types/usage.ts +200 -0
  466. package/src/types/video-model-response-metadata.ts +28 -0
  467. package/src/types/video-model.ts +15 -0
  468. package/src/types/warning.ts +7 -0
  469. package/src/ui/call-completion-api.ts +157 -0
  470. package/src/ui/chat-transport.ts +83 -0
  471. package/src/ui/chat.ts +786 -0
  472. package/src/ui/convert-file-list-to-file-ui-parts.ts +36 -0
  473. package/src/ui/convert-to-model-messages.ts +403 -0
  474. package/src/ui/default-chat-transport.ts +36 -0
  475. package/src/ui/direct-chat-transport.ts +117 -0
  476. package/src/ui/http-chat-transport.ts +273 -0
  477. package/src/ui/index.ts +76 -0
  478. package/src/ui/last-assistant-message-is-complete-with-approval-responses.ts +44 -0
  479. package/src/ui/last-assistant-message-is-complete-with-tool-calls.ts +39 -0
  480. package/src/ui/process-text-stream.ts +16 -0
  481. package/src/ui/process-ui-message-stream.ts +858 -0
  482. package/src/ui/text-stream-chat-transport.ts +23 -0
  483. package/src/ui/transform-text-to-ui-message-stream.ts +27 -0
  484. package/src/ui/ui-messages.ts +602 -0
  485. package/src/ui/use-completion.ts +84 -0
  486. package/src/ui/validate-ui-messages.ts +521 -0
  487. package/src/ui-message-stream/create-ui-message-stream-response.ts +44 -0
  488. package/src/ui-message-stream/create-ui-message-stream.ts +145 -0
  489. package/src/ui-message-stream/get-response-ui-message-id.ts +35 -0
  490. package/src/ui-message-stream/handle-ui-message-stream-finish.ts +170 -0
  491. package/src/ui-message-stream/index.ts +14 -0
  492. package/src/ui-message-stream/json-to-sse-transform-stream.ts +17 -0
  493. package/src/ui-message-stream/pipe-ui-message-stream-to-response.ts +51 -0
  494. package/src/ui-message-stream/read-ui-message-stream.ts +87 -0
  495. package/src/ui-message-stream/ui-message-chunks.ts +372 -0
  496. package/src/ui-message-stream/ui-message-stream-headers.ts +7 -0
  497. package/src/ui-message-stream/ui-message-stream-on-finish-callback.ts +32 -0
  498. package/src/ui-message-stream/ui-message-stream-on-step-finish-callback.ts +25 -0
  499. package/src/ui-message-stream/ui-message-stream-response-init.ts +14 -0
  500. package/src/ui-message-stream/ui-message-stream-writer.ts +24 -0
  501. package/src/util/as-array.ts +3 -0
  502. package/src/util/async-iterable-stream.ts +94 -0
  503. package/src/util/consume-stream.ts +31 -0
  504. package/src/util/cosine-similarity.ts +46 -0
  505. package/src/util/create-resolvable-promise.ts +30 -0
  506. package/src/util/create-stitchable-stream.ts +112 -0
  507. package/src/util/data-url.ts +17 -0
  508. package/src/util/deep-partial.ts +84 -0
  509. package/src/util/detect-media-type.ts +226 -0
  510. package/src/util/download/create-download.ts +13 -0
  511. package/src/util/download/download-function.ts +45 -0
  512. package/src/util/download/download.ts +74 -0
  513. package/src/util/error-handler.ts +1 -0
  514. package/src/util/fix-json.ts +401 -0
  515. package/src/util/get-potential-start-index.ts +39 -0
  516. package/src/util/index.ts +12 -0
  517. package/src/util/is-deep-equal-data.ts +48 -0
  518. package/src/util/is-non-empty-object.ts +5 -0
  519. package/src/util/job.ts +1 -0
  520. package/src/util/log-v2-compatibility-warning.ts +21 -0
  521. package/src/util/merge-abort-signals.ts +43 -0
  522. package/src/util/merge-objects.ts +79 -0
  523. package/src/util/notify.ts +22 -0
  524. package/src/util/now.ts +4 -0
  525. package/src/util/parse-partial-json.ts +30 -0
  526. package/src/util/prepare-headers.ts +14 -0
  527. package/src/util/prepare-retries.ts +47 -0
  528. package/src/util/retry-error.ts +41 -0
  529. package/src/util/retry-with-exponential-backoff.ts +154 -0
  530. package/src/util/serial-job-executor.ts +36 -0
  531. package/src/util/simulate-readable-stream.ts +39 -0
  532. package/src/util/split-array.ts +20 -0
  533. package/src/util/value-of.ts +65 -0
  534. package/src/util/write-to-server-response.ts +49 -0
  535. package/src/version.ts +5 -0
  536. package/test.d.ts +1 -0
@@ -0,0 +1,216 @@
1
+ ---
2
+ title: Settings
3
+ description: Learn how to configure the AI SDK.
4
+ ---
5
+
6
+ # Settings
7
+
8
+ Large language models (LLMs) typically provide settings to augment their output.
9
+
10
+ All AI SDK functions support the following common settings in addition to the model, the [prompt](./prompts), and additional provider-specific settings:
11
+
12
+ ```ts highlight="3-5"
13
+ const result = await generateText({
14
+ model: __MODEL__,
15
+ maxOutputTokens: 512,
16
+ temperature: 0.3,
17
+ maxRetries: 5,
18
+ prompt: 'Invent a new holiday and describe its traditions.',
19
+ });
20
+ ```
21
+
22
+ <Note>
23
+ Some providers do not support all common settings. If you use a setting with a
24
+ provider that does not support it, a warning will be generated. You can check
25
+ the `warnings` property in the result object to see if any warnings were
26
+ generated.
27
+ </Note>
28
+
29
+ ### `maxOutputTokens`
30
+
31
+ Maximum number of tokens to generate.
32
+
33
+ ### `temperature`
34
+
35
+ Temperature setting.
36
+
37
+ The value is passed through to the provider. The range depends on the provider and model.
38
+ For most providers, `0` means almost deterministic results, and higher values mean more randomness.
39
+
40
+ It is recommended to set either `temperature` or `topP`, but not both.
41
+
42
+ <Note>In AI SDK 5.0, temperature is no longer set to `0` by default.</Note>
43
+
44
+ ### `topP`
45
+
46
+ Nucleus sampling.
47
+
48
+ The value is passed through to the provider. The range depends on the provider and model.
49
+ For most providers, nucleus sampling is a number between 0 and 1.
50
+ E.g. 0.1 would mean that only tokens with the top 10% probability mass are considered.
51
+
52
+ It is recommended to set either `temperature` or `topP`, but not both.
53
+
54
+ ### `topK`
55
+
56
+ Only sample from the top K options for each subsequent token.
57
+
58
+ Used to remove "long tail" low probability responses.
59
+ Recommended for advanced use cases only. You usually only need to use `temperature`.
60
+
61
+ ### `presencePenalty`
62
+
63
+ The presence penalty affects the likelihood of the model to repeat information that is already in the prompt.
64
+
65
+ The value is passed through to the provider. The range depends on the provider and model.
66
+ For most providers, `0` means no penalty.
67
+
68
+ ### `frequencyPenalty`
69
+
70
+ The frequency penalty affects the likelihood of the model to repeatedly use the same words or phrases.
71
+
72
+ The value is passed through to the provider. The range depends on the provider and model.
73
+ For most providers, `0` means no penalty.
74
+
75
+ ### `stopSequences`
76
+
77
+ The stop sequences to use for stopping the text generation.
78
+
79
+ If set, the model will stop generating text when one of the stop sequences is generated.
80
+ Providers may have limits on the number of stop sequences.
81
+
82
+ ### `seed`
83
+
84
+ It is the seed (integer) to use for random sampling.
85
+ If set and supported by the model, calls will generate deterministic results.
86
+
87
+ ### `reasoning`
88
+
89
+ Controls how much reasoning the model performs before generating a response.
90
+
91
+ | Value | Behavior |
92
+ | -------------------- | -------------------------------------------------------------------- |
93
+ | `'provider-default'` | Use the provider's default reasoning behavior (default when omitted) |
94
+ | `'none'` | Disable reasoning |
95
+ | `'minimal'` | Bare-minimum reasoning |
96
+ | `'low'` | Fast, concise reasoning |
97
+ | `'medium'` | Balanced reasoning |
98
+ | `'high'` | Thorough reasoning |
99
+ | `'xhigh'` | Maximum reasoning |
100
+
101
+ If you also set reasoning-related options in `providerOptions` (e.g. `openai.reasoningEffort` or `anthropic.thinking`), the provider-specific options take precedence and the top-level `reasoning` parameter is ignored.
102
+
103
+ See the [reasoning guide](/docs/ai-sdk-core/reasoning) for details on per-provider mapping and migration from `providerOptions`.
104
+
105
+ ### `maxRetries`
106
+
107
+ Maximum number of retries. Set to 0 to disable retries. Default: `2`.
108
+
109
+ ### `abortSignal`
110
+
111
+ An optional abort signal that can be used to cancel the call.
112
+
113
+ The abort signal can e.g. be forwarded from a user interface to cancel the call,
114
+ or to define a timeout using `AbortSignal.timeout`.
115
+
116
+ #### Example: AbortSignal.timeout
117
+
118
+ ```ts
119
+ const result = await generateText({
120
+ model: __MODEL__,
121
+ prompt: 'Invent a new holiday and describe its traditions.',
122
+ abortSignal: AbortSignal.timeout(5000), // 5 seconds
123
+ });
124
+ ```
125
+
126
+ ### `timeout`
127
+
128
+ An optional timeout in milliseconds. The call will be aborted if it takes longer than the specified duration.
129
+
130
+ This is a convenience parameter that creates an abort signal internally. It can be used alongside `abortSignal` - if both are provided, the call will abort when either condition is met.
131
+
132
+ You can specify the timeout either as a number (milliseconds) or as an object with `totalMs`, `stepMs`, and/or `chunkMs` properties:
133
+
134
+ - `totalMs`: The total timeout for the entire call including all steps.
135
+ - `stepMs`: The timeout for each individual step (LLM call). This is useful for multi-step generations where you want to limit the time spent on each step independently.
136
+ - `chunkMs`: The timeout between stream chunks (streaming only). The call will abort if no new chunk is received within this duration. This is useful for detecting stalled streams.
137
+
138
+ #### Example: 5 second timeout (number format)
139
+
140
+ ```ts
141
+ const result = await generateText({
142
+ model: __MODEL__,
143
+ prompt: 'Invent a new holiday and describe its traditions.',
144
+ timeout: 5000, // 5 seconds
145
+ });
146
+ ```
147
+
148
+ #### Example: 5 second total timeout (object format)
149
+
150
+ ```ts
151
+ const result = await generateText({
152
+ model: __MODEL__,
153
+ prompt: 'Invent a new holiday and describe its traditions.',
154
+ timeout: { totalMs: 5000 }, // 5 seconds
155
+ });
156
+ ```
157
+
158
+ #### Example: 10 second step timeout
159
+
160
+ ```ts
161
+ const result = await generateText({
162
+ model: __MODEL__,
163
+ prompt: 'Invent a new holiday and describe its traditions.',
164
+ timeout: { stepMs: 10000 }, // 10 seconds per step
165
+ });
166
+ ```
167
+
168
+ #### Example: Combined total and step timeout
169
+
170
+ ```ts
171
+ const result = await generateText({
172
+ model: __MODEL__,
173
+ prompt: 'Invent a new holiday and describe its traditions.',
174
+ timeout: {
175
+ totalMs: 60000, // 60 seconds total
176
+ stepMs: 10000, // 10 seconds per step
177
+ },
178
+ });
179
+ ```
180
+
181
+ #### Example: Per-chunk timeout for streaming (streamText only)
182
+
183
+ ```ts
184
+ const result = streamText({
185
+ model: __MODEL__,
186
+ prompt: 'Invent a new holiday and describe its traditions.',
187
+ timeout: { chunkMs: 5000 }, // abort if no chunk received for 5 seconds
188
+ });
189
+ ```
190
+
191
+ ### `headers`
192
+
193
+ Additional HTTP headers to be sent with the request. Only applicable for HTTP-based providers.
194
+
195
+ You can use the request headers to provide additional information to the provider,
196
+ depending on what the provider supports. For example, some observability providers support
197
+ headers such as `Prompt-Id`.
198
+
199
+ ```ts
200
+ import { generateText } from 'ai';
201
+ __PROVIDER_IMPORT__;
202
+
203
+ const result = await generateText({
204
+ model: __MODEL__,
205
+ prompt: 'Invent a new holiday and describe its traditions.',
206
+ headers: {
207
+ 'Prompt-Id': 'my-prompt-id',
208
+ },
209
+ });
210
+ ```
211
+
212
+ <Note>
213
+ The `headers` setting is for request-specific headers. You can also set
214
+ `headers` in the provider configuration. These headers will be sent with every
215
+ request made by the provider.
216
+ </Note>
@@ -0,0 +1,190 @@
1
+ ---
2
+ title: Reasoning
3
+ description: Learn how to control reasoning across providers with the top-level reasoning parameter.
4
+ ---
5
+
6
+ # Reasoning
7
+
8
+ Many language models support an internal "reasoning" phase (sometimes also called "thinking") before producing a response. The AI SDK provides a top-level `reasoning` parameter on [`generateText`](/docs/reference/ai-sdk-core/generate-text) and [`streamText`](/docs/reference/ai-sdk-core/stream-text) that controls this behavior across providers with a single, portable setting.
9
+
10
+ ## Basic Usage
11
+
12
+ ```ts
13
+ import { generateText } from 'ai';
14
+
15
+ const { text, reasoning, reasoningText } = await generateText({
16
+ model: 'anthropic/claude-sonnet-4.6,
17
+ reasoning: 'medium',
18
+ prompt: 'How many people will live in the world in 2040?',
19
+ });
20
+ ```
21
+
22
+ The `reasoning` parameter accepts the following values:
23
+
24
+ | Value | Behavior |
25
+ | -------------------- | -------------------------------------------------------------------- |
26
+ | `'provider-default'` | Use the provider's default reasoning behavior (default when omitted) |
27
+ | `'none'` | Disable reasoning |
28
+ | `'minimal'` | Bare-minimum reasoning |
29
+ | `'low'` | Fast, concise reasoning |
30
+ | `'medium'` | Balanced reasoning |
31
+ | `'high'` | Thorough reasoning |
32
+ | `'xhigh'` | Maximum reasoning |
33
+
34
+ ## Streaming
35
+
36
+ The `reasoning` parameter works the same way with `streamText`:
37
+
38
+ ```ts
39
+ import { streamText } from 'ai';
40
+
41
+ const result = streamText({
42
+ model: 'google/gemini-3-flash-preview',
43
+ reasoning: 'high',
44
+ prompt: 'Explain the Riemann hypothesis in simple terms.',
45
+ });
46
+
47
+ for await (const part of result.fullStream) {
48
+ if (part.type === 'reasoning') {
49
+ process.stdout.write(part.textDelta);
50
+ } else if (part.type === 'text-delta') {
51
+ process.stdout.write(part.textDelta);
52
+ }
53
+ }
54
+ ```
55
+
56
+ ## Precedence Rules
57
+
58
+ The top-level `reasoning` parameter and provider-specific `providerOptions` are **never merged**. If you set reasoning-related options in `providerOptions`, they take full precedence and the top-level `reasoning` parameter is ignored.
59
+
60
+ ```ts
61
+ import { generateText } from 'ai';
62
+ import { openai } from '@ai-sdk/openai';
63
+
64
+ const { text } = await generateText({
65
+ model: openai.responses('gpt-5.4'),
66
+ reasoning: 'low', // ignored because providerOptions.openai.reasoningEffort is set
67
+ providerOptions: {
68
+ openai: {
69
+ reasoningEffort: 'high', // this wins
70
+ },
71
+ },
72
+ prompt: 'Explain quantum entanglement.',
73
+ });
74
+ ```
75
+
76
+ This design lets you use the portable `reasoning` parameter by default and fall back to `providerOptions` only when you need provider-specific features like exact token budgets.
77
+
78
+ ## Provider Support
79
+
80
+ The `reasoning` parameter is supported by the following providers: OpenAI, Anthropic, Google, xAI, Groq, DeepSeek, Fireworks, and Amazon Bedrock. Each provider translates the value to its native reasoning API. Some providers support all six levels natively, while others coerce to fewer levels (a warning is emitted when coercion occurs). Some providers use a numeric token budget instead of an enum for reasoning control; in those cases the top-level `reasoning` value is mapped to a budget calculated as a percentage of the model's maximum output tokens.
81
+
82
+ Providers that do not support reasoning (e.g. Mistral, Perplexity, Cohere) emit an `unsupported` warning and ignore the parameter.
83
+
84
+ ## Migrating from `providerOptions`
85
+
86
+ If you currently control reasoning via `providerOptions`, you can migrate to the top-level `reasoning` parameter for portability across providers.
87
+
88
+ ### Before (Anthropic)
89
+
90
+ ```ts
91
+ const { text } = await generateText({
92
+ model: anthropic('claude-opus-4.6'),
93
+ providerOptions: {
94
+ anthropic: {
95
+ thinking: { type: 'adaptive', effort: 'high' },
96
+ },
97
+ },
98
+ prompt: 'How many people will live in the world in 2040?',
99
+ });
100
+ ```
101
+
102
+ ### After (Anthropic)
103
+
104
+ ```ts
105
+ const { text } = await generateText({
106
+ model: anthropic('claude-opus-4.6'),
107
+ reasoning: 'high',
108
+ prompt: 'How many people will live in the world in 2040?',
109
+ });
110
+ ```
111
+
112
+ ### Before (Anthropic with older model)
113
+
114
+ ```ts
115
+ const { text } = await generateText({
116
+ model: anthropic('claude-sonnet-4-20250514'),
117
+ providerOptions: {
118
+ anthropic: {
119
+ thinking: { type: 'enabled', budgetTokens: 12000 },
120
+ },
121
+ },
122
+ prompt: 'How many people will live in the world in 2040?',
123
+ });
124
+ ```
125
+
126
+ ### After (Anthropic with older model)
127
+
128
+ ```ts
129
+ const { text } = await generateText({
130
+ model: anthropic('claude-sonnet-4-20250514'),
131
+ reasoning: 'medium',
132
+ prompt: 'How many people will live in the world in 2040?',
133
+ });
134
+ ```
135
+
136
+ If you need to enforce an exact token budget (e.g. exactly 12000 tokens), keep using `providerOptions` instead of the top-level `reasoning` parameter.
137
+
138
+ ### Before (Google with `includeThoughts`)
139
+
140
+ ```ts
141
+ const { text } = await generateText({
142
+ model: google('gemini-3-flash-preview'),
143
+ providerOptions: {
144
+ google: {
145
+ thinkingConfig: { thinkingBudget: 4096, includeThoughts: true },
146
+ },
147
+ },
148
+ prompt: 'Explain the Riemann hypothesis in simple terms.',
149
+ });
150
+ ```
151
+
152
+ ### After (Google with `includeThoughts`)
153
+
154
+ ```ts
155
+ const { text } = await generateText({
156
+ model: google('gemini-3-flash-preview'),
157
+ reasoning: 'medium',
158
+ providerOptions: {
159
+ google: { thinkingConfig: { includeThoughts: true } },
160
+ },
161
+ prompt: 'Explain the Riemann hypothesis in simple terms.',
162
+ });
163
+ ```
164
+
165
+ ### Before (OpenAI with `reasoningSummary`)
166
+
167
+ ```ts
168
+ const { text } = await generateText({
169
+ model: openai.responses('o3'),
170
+ providerOptions: {
171
+ openai: { reasoningEffort: 'high', reasoningSummary: 'auto' },
172
+ },
173
+ prompt: 'Explain quantum entanglement.',
174
+ });
175
+ ```
176
+
177
+ ### After (OpenAI with `reasoningSummary`)
178
+
179
+ ```ts
180
+ const { text } = await generateText({
181
+ model: openai.responses('o3'),
182
+ reasoning: 'high',
183
+ providerOptions: {
184
+ openai: { reasoningSummary: 'auto' },
185
+ },
186
+ prompt: 'Explain quantum entanglement.',
187
+ });
188
+ ```
189
+
190
+ Note that `providerOptions` can still be used alongside `reasoning` for provider-specific features unrelated to reasoning effort. However, if `providerOptions` includes reasoning effort/budget settings (e.g. `reasoningEffort`, `thinking`, `thinkingConfig.thinkingBudget`), those take full precedence and the top-level `reasoning` parameter is ignored.
@@ -0,0 +1,236 @@
1
+ ---
2
+ title: Embeddings
3
+ description: Learn how to embed values with the AI SDK.
4
+ ---
5
+
6
+ # Embeddings
7
+
8
+ Embeddings are a way to represent words, phrases, or images as vectors in a high-dimensional space.
9
+ In this space, similar words are close to each other, and the distance between words can be used to measure their similarity.
10
+
11
+ ## Embedding a Single Value
12
+
13
+ The AI SDK provides the [`embed`](/docs/reference/ai-sdk-core/embed) function to embed single values, which is useful for tasks such as finding similar words
14
+ or phrases or clustering text.
15
+ You can use it with embeddings models, e.g. `openai.embeddingModel('text-embedding-3-large')` or `mistral.embeddingModel('mistral-embed')`.
16
+
17
+ ```tsx
18
+ import { embed } from 'ai';
19
+
20
+ // 'embedding' is a single embedding object (number[])
21
+ const { embedding } = await embed({
22
+ model: 'openai/text-embedding-3-small',
23
+ value: 'sunny day at the beach',
24
+ });
25
+ ```
26
+
27
+ ## Embedding Many Values
28
+
29
+ When loading data, e.g. when preparing a data store for retrieval-augmented generation (RAG),
30
+ it is often useful to embed many values at once (batch embedding).
31
+
32
+ The AI SDK provides the [`embedMany`](/docs/reference/ai-sdk-core/embed-many) function for this purpose.
33
+ Similar to `embed`, you can use it with embeddings models,
34
+ e.g. `openai.embeddingModel('text-embedding-3-large')` or `mistral.embeddingModel('mistral-embed')`.
35
+
36
+ ```tsx
37
+ import { embedMany } from 'ai';
38
+
39
+ // 'embeddings' is an array of embedding objects (number[][]).
40
+ // It is sorted in the same order as the input values.
41
+ const { embeddings } = await embedMany({
42
+ model: 'openai/text-embedding-3-small',
43
+ values: [
44
+ 'sunny day at the beach',
45
+ 'rainy afternoon in the city',
46
+ 'snowy night in the mountains',
47
+ ],
48
+ });
49
+ ```
50
+
51
+ ## Embedding Similarity
52
+
53
+ After embedding values, you can calculate the similarity between them using the [`cosineSimilarity`](/docs/reference/ai-sdk-core/cosine-similarity) function.
54
+ This is useful to e.g. find similar words or phrases in a dataset.
55
+ You can also rank and filter related items based on their similarity.
56
+
57
+ ```ts highlight={"1,9"}
58
+ import { cosineSimilarity, embedMany } from 'ai';
59
+
60
+ const { embeddings } = await embedMany({
61
+ model: 'openai/text-embedding-3-small',
62
+ values: ['sunny day at the beach', 'rainy afternoon in the city'],
63
+ });
64
+
65
+ console.log(
66
+ `cosine similarity: ${cosineSimilarity(embeddings[0], embeddings[1])}`,
67
+ );
68
+ ```
69
+
70
+ ## Token Usage
71
+
72
+ Many providers charge based on the number of tokens used to generate embeddings.
73
+ Both `embed` and `embedMany` provide token usage information in the `usage` property of the result object:
74
+
75
+ ```ts highlight={"3,8"}
76
+ import { embed } from 'ai';
77
+
78
+ const { embedding, usage } = await embed({
79
+ model: 'openai/text-embedding-3-small',
80
+ value: 'sunny day at the beach',
81
+ });
82
+
83
+ console.log(usage); // { tokens: 10 }
84
+ ```
85
+
86
+ ## Settings
87
+
88
+ ### Provider Options
89
+
90
+ Embedding model settings can be configured using `providerOptions` for provider-specific parameters:
91
+
92
+ ```ts highlight={"4-8"}
93
+ import { embed } from 'ai';
94
+
95
+ const { embedding } = await embed({
96
+ model: 'openai/text-embedding-3-small',
97
+ value: 'sunny day at the beach',
98
+ providerOptions: {
99
+ openai: {
100
+ dimensions: 512, // Reduce embedding dimensions
101
+ },
102
+ },
103
+ });
104
+ ```
105
+
106
+ ### Parallel Requests
107
+
108
+ The `embedMany` function now supports parallel processing with configurable `maxParallelCalls` to optimize performance:
109
+
110
+ ```ts highlight={"3"}
111
+ import { embedMany } from 'ai';
112
+
113
+ const { embeddings, usage } = await embedMany({
114
+ maxParallelCalls: 2, // Limit parallel requests
115
+ model: 'openai/text-embedding-3-small',
116
+ values: [
117
+ 'sunny day at the beach',
118
+ 'rainy afternoon in the city',
119
+ 'snowy night in the mountains',
120
+ ],
121
+ });
122
+ ```
123
+
124
+ ### Retries
125
+
126
+ Both `embed` and `embedMany` accept an optional `maxRetries` parameter of type `number`
127
+ that you can use to set the maximum number of retries for the embedding process.
128
+ It defaults to `2` retries (3 attempts in total). You can set it to `0` to disable retries.
129
+
130
+ ```ts highlight={"6"}
131
+ import { embed } from 'ai';
132
+
133
+ const { embedding } = await embed({
134
+ model: 'openai/text-embedding-3-small',
135
+ value: 'sunny day at the beach',
136
+ maxRetries: 0, // Disable retries
137
+ });
138
+ ```
139
+
140
+ ### Abort Signals and Timeouts
141
+
142
+ Both `embed` and `embedMany` accept an optional `abortSignal` parameter of
143
+ type [`AbortSignal`](https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal)
144
+ that you can use to abort the embedding process or set a timeout.
145
+
146
+ ```ts highlight={"6"}
147
+ import { embed } from 'ai';
148
+
149
+ const { embedding } = await embed({
150
+ model: 'openai/text-embedding-3-small',
151
+ value: 'sunny day at the beach',
152
+ abortSignal: AbortSignal.timeout(1000), // Abort after 1 second
153
+ });
154
+ ```
155
+
156
+ ### Custom Headers
157
+
158
+ Both `embed` and `embedMany` accept an optional `headers` parameter of type `Record<string, string>`
159
+ that you can use to add custom headers to the embedding request.
160
+
161
+ ```ts highlight={"6"}
162
+ import { embed } from 'ai';
163
+
164
+ const { embedding } = await embed({
165
+ model: 'openai/text-embedding-3-small',
166
+ value: 'sunny day at the beach',
167
+ headers: { 'X-Custom-Header': 'custom-value' },
168
+ });
169
+ ```
170
+
171
+ ## Response Information
172
+
173
+ Both `embed` and `embedMany` return response information that includes the raw provider response:
174
+
175
+ ```ts highlight={"3,8"}
176
+ import { embed } from 'ai';
177
+
178
+ const { embedding, response } = await embed({
179
+ model: 'openai/text-embedding-3-small',
180
+ value: 'sunny day at the beach',
181
+ });
182
+
183
+ console.log(response); // Raw provider response
184
+ ```
185
+
186
+ ## Embedding Middleware
187
+
188
+ You can enhance embedding models, e.g. to set default values, using
189
+ `wrapEmbeddingModel` and `EmbeddingModelMiddleware`.
190
+
191
+ Here is an example that uses the built-in `defaultEmbeddingSettingsMiddleware`:
192
+
193
+ ```ts
194
+ import {
195
+ defaultEmbeddingSettingsMiddleware,
196
+ embed,
197
+ wrapEmbeddingModel,
198
+ gateway,
199
+ } from 'ai';
200
+
201
+ const embeddingModelWithDefaults = wrapEmbeddingModel({
202
+ model: gateway.embeddingModel('google/gemini-embedding-001'),
203
+ middleware: defaultEmbeddingSettingsMiddleware({
204
+ settings: {
205
+ providerOptions: {
206
+ google: {
207
+ outputDimensionality: 256,
208
+ taskType: 'CLASSIFICATION',
209
+ },
210
+ },
211
+ },
212
+ }),
213
+ });
214
+ ```
215
+
216
+ ## Embedding Providers & Models
217
+
218
+ Several providers offer embedding models:
219
+
220
+ | Provider | Model | Embedding Dimensions | Multimodal |
221
+ | ----------------------------------------------------------------------------------------- | ------------------------------- | -------------------- | ------------------- |
222
+ | [OpenAI](/providers/ai-sdk-providers/openai#embedding-models) | `text-embedding-3-large` | 3072 | <Cross size={18} /> |
223
+ | [OpenAI](/providers/ai-sdk-providers/openai#embedding-models) | `text-embedding-3-small` | 1536 | <Cross size={18} /> |
224
+ | [OpenAI](/providers/ai-sdk-providers/openai#embedding-models) | `text-embedding-ada-002` | 1536 | <Cross size={18} /> |
225
+ | [Google Generative AI](/providers/ai-sdk-providers/google-generative-ai#embedding-models) | `gemini-embedding-001` | 3072 | <Cross size={18} /> |
226
+ | [Google Generative AI](/providers/ai-sdk-providers/google-generative-ai#embedding-models) | `gemini-embedding-2-preview` | 3072 | <Check size={18} /> |
227
+ | [Mistral](/providers/ai-sdk-providers/mistral#embedding-models) | `mistral-embed` | 1024 | <Cross size={18} /> |
228
+ | [Cohere](/providers/ai-sdk-providers/cohere#embedding-models) | `embed-english-v3.0` | 1024 | <Cross size={18} /> |
229
+ | [Cohere](/providers/ai-sdk-providers/cohere#embedding-models) | `embed-multilingual-v3.0` | 1024 | <Cross size={18} /> |
230
+ | [Cohere](/providers/ai-sdk-providers/cohere#embedding-models) | `embed-english-light-v3.0` | 384 | <Cross size={18} /> |
231
+ | [Cohere](/providers/ai-sdk-providers/cohere#embedding-models) | `embed-multilingual-light-v3.0` | 384 | <Cross size={18} /> |
232
+ | [Cohere](/providers/ai-sdk-providers/cohere#embedding-models) | `embed-english-v2.0` | 4096 | <Cross size={18} /> |
233
+ | [Cohere](/providers/ai-sdk-providers/cohere#embedding-models) | `embed-english-light-v2.0` | 1024 | <Cross size={18} /> |
234
+ | [Cohere](/providers/ai-sdk-providers/cohere#embedding-models) | `embed-multilingual-v2.0` | 768 | <Cross size={18} /> |
235
+ | [Amazon Bedrock](/providers/ai-sdk-providers/amazon-bedrock#embedding-models) | `amazon.titan-embed-text-v1` | 1536 | <Cross size={18} /> |
236
+ | [Amazon Bedrock](/providers/ai-sdk-providers/amazon-bedrock#embedding-models) | `amazon.titan-embed-text-v2:0` | 1024 | <Cross size={18} /> |