ai 6.0.31 → 6.0.32
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.
- package/CHANGELOG.md +6 -0
- package/dist/index.js +1 -1
- package/dist/index.mjs +1 -1
- package/dist/internal/index.js +1 -1
- package/dist/internal/index.mjs +1 -1
- package/docs/00-introduction/index.mdx +76 -0
- package/docs/02-foundations/01-overview.mdx +43 -0
- package/docs/02-foundations/02-providers-and-models.mdx +163 -0
- package/docs/02-foundations/03-prompts.mdx +620 -0
- package/docs/02-foundations/04-tools.mdx +160 -0
- package/docs/02-foundations/05-streaming.mdx +62 -0
- package/docs/02-foundations/index.mdx +43 -0
- package/docs/02-getting-started/00-choosing-a-provider.mdx +110 -0
- package/docs/02-getting-started/01-navigating-the-library.mdx +85 -0
- package/docs/02-getting-started/02-nextjs-app-router.mdx +556 -0
- package/docs/02-getting-started/03-nextjs-pages-router.mdx +542 -0
- package/docs/02-getting-started/04-svelte.mdx +627 -0
- package/docs/02-getting-started/05-nuxt.mdx +566 -0
- package/docs/02-getting-started/06-nodejs.mdx +512 -0
- package/docs/02-getting-started/07-expo.mdx +766 -0
- package/docs/02-getting-started/08-tanstack-start.mdx +583 -0
- package/docs/02-getting-started/index.mdx +44 -0
- package/docs/03-agents/01-overview.mdx +96 -0
- package/docs/03-agents/02-building-agents.mdx +367 -0
- package/docs/03-agents/03-workflows.mdx +370 -0
- package/docs/03-agents/04-loop-control.mdx +350 -0
- package/docs/03-agents/05-configuring-call-options.mdx +286 -0
- package/docs/03-agents/index.mdx +40 -0
- package/docs/03-ai-sdk-core/01-overview.mdx +33 -0
- package/docs/03-ai-sdk-core/05-generating-text.mdx +600 -0
- package/docs/03-ai-sdk-core/10-generating-structured-data.mdx +662 -0
- package/docs/03-ai-sdk-core/15-tools-and-tool-calling.mdx +1102 -0
- package/docs/03-ai-sdk-core/16-mcp-tools.mdx +375 -0
- package/docs/03-ai-sdk-core/20-prompt-engineering.mdx +144 -0
- package/docs/03-ai-sdk-core/25-settings.mdx +198 -0
- package/docs/03-ai-sdk-core/30-embeddings.mdx +247 -0
- package/docs/03-ai-sdk-core/31-reranking.mdx +218 -0
- package/docs/03-ai-sdk-core/35-image-generation.mdx +341 -0
- package/docs/03-ai-sdk-core/36-transcription.mdx +173 -0
- package/docs/03-ai-sdk-core/37-speech.mdx +167 -0
- package/docs/03-ai-sdk-core/40-middleware.mdx +480 -0
- package/docs/03-ai-sdk-core/45-provider-management.mdx +349 -0
- package/docs/03-ai-sdk-core/50-error-handling.mdx +149 -0
- package/docs/03-ai-sdk-core/55-testing.mdx +218 -0
- package/docs/03-ai-sdk-core/60-telemetry.mdx +313 -0
- package/docs/03-ai-sdk-core/65-devtools.mdx +107 -0
- package/docs/03-ai-sdk-core/index.mdx +88 -0
- package/docs/04-ai-sdk-ui/01-overview.mdx +44 -0
- package/docs/04-ai-sdk-ui/02-chatbot.mdx +1313 -0
- package/docs/04-ai-sdk-ui/03-chatbot-message-persistence.mdx +535 -0
- package/docs/04-ai-sdk-ui/03-chatbot-resume-streams.mdx +263 -0
- package/docs/04-ai-sdk-ui/03-chatbot-tool-usage.mdx +682 -0
- package/docs/04-ai-sdk-ui/04-generative-user-interfaces.mdx +389 -0
- package/docs/04-ai-sdk-ui/05-completion.mdx +186 -0
- package/docs/04-ai-sdk-ui/08-object-generation.mdx +344 -0
- package/docs/04-ai-sdk-ui/20-streaming-data.mdx +397 -0
- package/docs/04-ai-sdk-ui/21-error-handling.mdx +190 -0
- package/docs/04-ai-sdk-ui/21-transport.mdx +174 -0
- package/docs/04-ai-sdk-ui/24-reading-ui-message-streams.mdx +104 -0
- package/docs/04-ai-sdk-ui/25-message-metadata.mdx +152 -0
- package/docs/04-ai-sdk-ui/50-stream-protocol.mdx +477 -0
- package/docs/04-ai-sdk-ui/index.mdx +64 -0
- package/docs/05-ai-sdk-rsc/01-overview.mdx +45 -0
- package/docs/05-ai-sdk-rsc/02-streaming-react-components.mdx +209 -0
- package/docs/05-ai-sdk-rsc/03-generative-ui-state.mdx +279 -0
- package/docs/05-ai-sdk-rsc/03-saving-and-restoring-states.mdx +105 -0
- package/docs/05-ai-sdk-rsc/04-multistep-interfaces.mdx +282 -0
- package/docs/05-ai-sdk-rsc/05-streaming-values.mdx +158 -0
- package/docs/05-ai-sdk-rsc/06-loading-state.mdx +273 -0
- package/docs/05-ai-sdk-rsc/08-error-handling.mdx +96 -0
- package/docs/05-ai-sdk-rsc/09-authentication.mdx +42 -0
- package/docs/05-ai-sdk-rsc/10-migrating-to-ui.mdx +722 -0
- package/docs/05-ai-sdk-rsc/index.mdx +58 -0
- package/docs/06-advanced/01-prompt-engineering.mdx +96 -0
- package/docs/06-advanced/02-stopping-streams.mdx +184 -0
- package/docs/06-advanced/03-backpressure.mdx +173 -0
- package/docs/06-advanced/04-caching.mdx +169 -0
- package/docs/06-advanced/05-multiple-streamables.mdx +68 -0
- package/docs/06-advanced/06-rate-limiting.mdx +60 -0
- package/docs/06-advanced/07-rendering-ui-with-language-models.mdx +213 -0
- package/docs/06-advanced/08-model-as-router.mdx +120 -0
- package/docs/06-advanced/09-multistep-interfaces.mdx +115 -0
- package/docs/06-advanced/09-sequential-generations.mdx +55 -0
- package/docs/06-advanced/10-vercel-deployment-guide.mdx +117 -0
- package/docs/06-advanced/index.mdx +11 -0
- package/docs/07-reference/01-ai-sdk-core/01-generate-text.mdx +2142 -0
- package/docs/07-reference/01-ai-sdk-core/02-stream-text.mdx +3215 -0
- package/docs/07-reference/01-ai-sdk-core/03-generate-object.mdx +780 -0
- package/docs/07-reference/01-ai-sdk-core/04-stream-object.mdx +1140 -0
- package/docs/07-reference/01-ai-sdk-core/05-embed.mdx +190 -0
- package/docs/07-reference/01-ai-sdk-core/06-embed-many.mdx +171 -0
- package/docs/07-reference/01-ai-sdk-core/06-rerank.mdx +309 -0
- package/docs/07-reference/01-ai-sdk-core/10-generate-image.mdx +227 -0
- package/docs/07-reference/01-ai-sdk-core/11-transcribe.mdx +138 -0
- package/docs/07-reference/01-ai-sdk-core/12-generate-speech.mdx +214 -0
- package/docs/07-reference/01-ai-sdk-core/15-agent.mdx +203 -0
- package/docs/07-reference/01-ai-sdk-core/16-tool-loop-agent.mdx +449 -0
- package/docs/07-reference/01-ai-sdk-core/17-create-agent-ui-stream.mdx +148 -0
- package/docs/07-reference/01-ai-sdk-core/18-create-agent-ui-stream-response.mdx +168 -0
- package/docs/07-reference/01-ai-sdk-core/18-pipe-agent-ui-stream-to-response.mdx +144 -0
- package/docs/07-reference/01-ai-sdk-core/20-tool.mdx +196 -0
- package/docs/07-reference/01-ai-sdk-core/22-dynamic-tool.mdx +175 -0
- package/docs/07-reference/01-ai-sdk-core/23-create-mcp-client.mdx +410 -0
- package/docs/07-reference/01-ai-sdk-core/24-mcp-stdio-transport.mdx +68 -0
- package/docs/07-reference/01-ai-sdk-core/25-json-schema.mdx +94 -0
- package/docs/07-reference/01-ai-sdk-core/26-zod-schema.mdx +109 -0
- package/docs/07-reference/01-ai-sdk-core/27-valibot-schema.mdx +55 -0
- package/docs/07-reference/01-ai-sdk-core/28-output.mdx +342 -0
- package/docs/07-reference/01-ai-sdk-core/30-model-message.mdx +415 -0
- package/docs/07-reference/01-ai-sdk-core/31-ui-message.mdx +246 -0
- package/docs/07-reference/01-ai-sdk-core/32-validate-ui-messages.mdx +101 -0
- package/docs/07-reference/01-ai-sdk-core/33-safe-validate-ui-messages.mdx +113 -0
- package/docs/07-reference/01-ai-sdk-core/40-provider-registry.mdx +182 -0
- package/docs/07-reference/01-ai-sdk-core/42-custom-provider.mdx +121 -0
- package/docs/07-reference/01-ai-sdk-core/50-cosine-similarity.mdx +52 -0
- package/docs/07-reference/01-ai-sdk-core/60-wrap-language-model.mdx +59 -0
- package/docs/07-reference/01-ai-sdk-core/61-wrap-image-model.mdx +64 -0
- package/docs/07-reference/01-ai-sdk-core/65-language-model-v2-middleware.mdx +46 -0
- package/docs/07-reference/01-ai-sdk-core/66-extract-reasoning-middleware.mdx +68 -0
- package/docs/07-reference/01-ai-sdk-core/67-simulate-streaming-middleware.mdx +71 -0
- package/docs/07-reference/01-ai-sdk-core/68-default-settings-middleware.mdx +80 -0
- package/docs/07-reference/01-ai-sdk-core/69-add-tool-input-examples-middleware.mdx +155 -0
- package/docs/07-reference/01-ai-sdk-core/70-extract-json-middleware.mdx +147 -0
- package/docs/07-reference/01-ai-sdk-core/70-step-count-is.mdx +84 -0
- package/docs/07-reference/01-ai-sdk-core/71-has-tool-call.mdx +120 -0
- package/docs/07-reference/01-ai-sdk-core/75-simulate-readable-stream.mdx +94 -0
- package/docs/07-reference/01-ai-sdk-core/80-smooth-stream.mdx +145 -0
- package/docs/07-reference/01-ai-sdk-core/90-generate-id.mdx +43 -0
- package/docs/07-reference/01-ai-sdk-core/91-create-id-generator.mdx +89 -0
- package/docs/07-reference/01-ai-sdk-core/index.mdx +159 -0
- package/docs/07-reference/02-ai-sdk-ui/01-use-chat.mdx +446 -0
- package/docs/07-reference/02-ai-sdk-ui/02-use-completion.mdx +179 -0
- package/docs/07-reference/02-ai-sdk-ui/03-use-object.mdx +178 -0
- package/docs/07-reference/02-ai-sdk-ui/31-convert-to-model-messages.mdx +230 -0
- package/docs/07-reference/02-ai-sdk-ui/32-prune-messages.mdx +108 -0
- package/docs/07-reference/02-ai-sdk-ui/40-create-ui-message-stream.mdx +151 -0
- package/docs/07-reference/02-ai-sdk-ui/41-create-ui-message-stream-response.mdx +113 -0
- package/docs/07-reference/02-ai-sdk-ui/42-pipe-ui-message-stream-to-response.mdx +73 -0
- package/docs/07-reference/02-ai-sdk-ui/43-read-ui-message-stream.mdx +57 -0
- package/docs/07-reference/02-ai-sdk-ui/46-infer-ui-tools.mdx +99 -0
- package/docs/07-reference/02-ai-sdk-ui/47-infer-ui-tool.mdx +75 -0
- package/docs/07-reference/02-ai-sdk-ui/50-direct-chat-transport.mdx +333 -0
- package/docs/07-reference/02-ai-sdk-ui/index.mdx +89 -0
- package/docs/07-reference/03-ai-sdk-rsc/01-stream-ui.mdx +767 -0
- package/docs/07-reference/03-ai-sdk-rsc/02-create-ai.mdx +90 -0
- package/docs/07-reference/03-ai-sdk-rsc/03-create-streamable-ui.mdx +91 -0
- package/docs/07-reference/03-ai-sdk-rsc/04-create-streamable-value.mdx +48 -0
- package/docs/07-reference/03-ai-sdk-rsc/05-read-streamable-value.mdx +78 -0
- package/docs/07-reference/03-ai-sdk-rsc/06-get-ai-state.mdx +50 -0
- package/docs/07-reference/03-ai-sdk-rsc/07-get-mutable-ai-state.mdx +70 -0
- package/docs/07-reference/03-ai-sdk-rsc/08-use-ai-state.mdx +26 -0
- package/docs/07-reference/03-ai-sdk-rsc/09-use-actions.mdx +42 -0
- package/docs/07-reference/03-ai-sdk-rsc/10-use-ui-state.mdx +35 -0
- package/docs/07-reference/03-ai-sdk-rsc/11-use-streamable-value.mdx +46 -0
- package/docs/07-reference/03-ai-sdk-rsc/20-render.mdx +262 -0
- package/docs/07-reference/03-ai-sdk-rsc/index.mdx +67 -0
- package/docs/07-reference/04-stream-helpers/01-ai-stream.mdx +89 -0
- package/docs/07-reference/04-stream-helpers/02-streaming-text-response.mdx +79 -0
- package/docs/07-reference/04-stream-helpers/05-stream-to-response.mdx +108 -0
- package/docs/07-reference/04-stream-helpers/07-openai-stream.mdx +77 -0
- package/docs/07-reference/04-stream-helpers/08-anthropic-stream.mdx +79 -0
- package/docs/07-reference/04-stream-helpers/09-aws-bedrock-stream.mdx +91 -0
- package/docs/07-reference/04-stream-helpers/10-aws-bedrock-anthropic-stream.mdx +96 -0
- package/docs/07-reference/04-stream-helpers/10-aws-bedrock-messages-stream.mdx +96 -0
- package/docs/07-reference/04-stream-helpers/11-aws-bedrock-cohere-stream.mdx +93 -0
- package/docs/07-reference/04-stream-helpers/12-aws-bedrock-llama-2-stream.mdx +93 -0
- package/docs/07-reference/04-stream-helpers/13-cohere-stream.mdx +78 -0
- package/docs/07-reference/04-stream-helpers/14-google-generative-ai-stream.mdx +85 -0
- package/docs/07-reference/04-stream-helpers/15-hugging-face-stream.mdx +84 -0
- package/docs/07-reference/04-stream-helpers/16-langchain-adapter.mdx +98 -0
- package/docs/07-reference/04-stream-helpers/16-llamaindex-adapter.mdx +70 -0
- package/docs/07-reference/04-stream-helpers/17-mistral-stream.mdx +81 -0
- package/docs/07-reference/04-stream-helpers/18-replicate-stream.mdx +83 -0
- package/docs/07-reference/04-stream-helpers/19-inkeep-stream.mdx +80 -0
- package/docs/07-reference/04-stream-helpers/index.mdx +103 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-api-call-error.mdx +30 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-download-error.mdx +27 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-empty-response-body-error.mdx +24 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-invalid-argument-error.mdx +26 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-invalid-data-content-error.mdx +25 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-invalid-data-content.mdx +26 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-invalid-message-role-error.mdx +25 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-invalid-prompt-error.mdx +47 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-invalid-response-data-error.mdx +25 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-invalid-tool-approval-error.mdx +25 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-invalid-tool-input-error.mdx +27 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-json-parse-error.mdx +25 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-load-api-key-error.mdx +24 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-load-setting-error.mdx +24 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-message-conversion-error.mdx +25 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-no-content-generated-error.mdx +24 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-no-image-generated-error.mdx +36 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-no-object-generated-error.mdx +43 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-no-speech-generated-error.mdx +25 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-no-such-model-error.mdx +26 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-no-such-provider-error.mdx +28 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-no-such-tool-error.mdx +26 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-no-transcript-generated-error.mdx +25 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-retry-error.mdx +27 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-too-many-embedding-values-for-call-error.mdx +27 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-tool-call-not-found-for-approval-error.mdx +26 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-tool-call-repair-error.mdx +28 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-type-validation-error.mdx +25 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-unsupported-functionality-error.mdx +25 -0
- package/docs/07-reference/05-ai-sdk-errors/index.mdx +38 -0
- package/docs/07-reference/index.mdx +34 -0
- package/docs/08-migration-guides/00-versioning.mdx +46 -0
- package/docs/08-migration-guides/24-migration-guide-6-0.mdx +823 -0
- package/docs/08-migration-guides/25-migration-guide-5-0-data.mdx +882 -0
- package/docs/08-migration-guides/26-migration-guide-5-0.mdx +3427 -0
- package/docs/08-migration-guides/27-migration-guide-4-2.mdx +99 -0
- package/docs/08-migration-guides/28-migration-guide-4-1.mdx +14 -0
- package/docs/08-migration-guides/29-migration-guide-4-0.mdx +1157 -0
- package/docs/08-migration-guides/36-migration-guide-3-4.mdx +14 -0
- package/docs/08-migration-guides/37-migration-guide-3-3.mdx +64 -0
- package/docs/08-migration-guides/38-migration-guide-3-2.mdx +46 -0
- package/docs/08-migration-guides/39-migration-guide-3-1.mdx +168 -0
- package/docs/08-migration-guides/index.mdx +22 -0
- package/docs/09-troubleshooting/01-azure-stream-slow.mdx +33 -0
- package/docs/09-troubleshooting/02-client-side-function-calls-not-invoked.mdx +22 -0
- package/docs/09-troubleshooting/03-server-actions-in-client-components.mdx +40 -0
- package/docs/09-troubleshooting/04-strange-stream-output.mdx +36 -0
- package/docs/09-troubleshooting/05-streamable-ui-errors.mdx +16 -0
- package/docs/09-troubleshooting/05-tool-invocation-missing-result.mdx +106 -0
- package/docs/09-troubleshooting/06-streaming-not-working-when-deployed.mdx +31 -0
- package/docs/09-troubleshooting/06-streaming-not-working-when-proxied.mdx +31 -0
- package/docs/09-troubleshooting/06-timeout-on-vercel.mdx +60 -0
- package/docs/09-troubleshooting/07-unclosed-streams.mdx +34 -0
- package/docs/09-troubleshooting/08-use-chat-failed-to-parse-stream.mdx +26 -0
- package/docs/09-troubleshooting/09-client-stream-error.mdx +25 -0
- package/docs/09-troubleshooting/10-use-chat-tools-no-response.mdx +32 -0
- package/docs/09-troubleshooting/11-use-chat-custom-request-options.mdx +149 -0
- package/docs/09-troubleshooting/12-typescript-performance-zod.mdx +46 -0
- package/docs/09-troubleshooting/12-use-chat-an-error-occurred.mdx +59 -0
- package/docs/09-troubleshooting/13-repeated-assistant-messages.mdx +73 -0
- package/docs/09-troubleshooting/14-stream-abort-handling.mdx +73 -0
- package/docs/09-troubleshooting/14-tool-calling-with-structured-outputs.mdx +48 -0
- package/docs/09-troubleshooting/15-abort-breaks-resumable-streams.mdx +55 -0
- package/docs/09-troubleshooting/15-stream-text-not-working.mdx +33 -0
- package/docs/09-troubleshooting/16-streaming-status-delay.mdx +63 -0
- package/docs/09-troubleshooting/17-use-chat-stale-body-data.mdx +141 -0
- package/docs/09-troubleshooting/18-ontoolcall-type-narrowing.mdx +66 -0
- package/docs/09-troubleshooting/19-unsupported-model-version.mdx +50 -0
- package/docs/09-troubleshooting/20-no-object-generated-content-filter.mdx +72 -0
- package/docs/09-troubleshooting/30-model-is-not-assignable-to-type.mdx +21 -0
- package/docs/09-troubleshooting/40-typescript-cannot-find-namespace-jsx.mdx +24 -0
- package/docs/09-troubleshooting/50-react-maximum-update-depth-exceeded.mdx +39 -0
- package/docs/09-troubleshooting/60-jest-cannot-find-module-ai-rsc.mdx +22 -0
- package/docs/09-troubleshooting/index.mdx +11 -0
- package/package.json +8 -4
|
@@ -0,0 +1,286 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Configuring Call Options
|
|
3
|
+
description: Pass type-safe runtime inputs to dynamically configure agent behavior.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Configuring Call Options
|
|
7
|
+
|
|
8
|
+
Call options allow you to pass type-safe structured inputs to your agent. Use them to dynamically modify any agent setting based on the specific request.
|
|
9
|
+
|
|
10
|
+
## Why Use Call Options?
|
|
11
|
+
|
|
12
|
+
When you need agent behavior to change based on runtime context:
|
|
13
|
+
|
|
14
|
+
- **Add dynamic context** - Inject retrieved documents, user preferences, or session data into prompts
|
|
15
|
+
- **Select models dynamically** - Choose faster or more capable models based on request complexity
|
|
16
|
+
- **Configure tools per request** - Pass user location to search tools or adjust tool behavior
|
|
17
|
+
- **Customize provider options** - Set reasoning effort, temperature, or other provider-specific settings
|
|
18
|
+
|
|
19
|
+
Without call options, you'd need to create multiple agents or handle configuration logic outside the agent.
|
|
20
|
+
|
|
21
|
+
## How It Works
|
|
22
|
+
|
|
23
|
+
Define call options in three steps:
|
|
24
|
+
|
|
25
|
+
1. **Define the schema** - Specify what inputs you accept using `callOptionsSchema`
|
|
26
|
+
2. **Configure with `prepareCall`** - Use those inputs to modify agent settings
|
|
27
|
+
3. **Pass options at runtime** - Provide the options when calling `generate()` or `stream()`
|
|
28
|
+
|
|
29
|
+
## Basic Example
|
|
30
|
+
|
|
31
|
+
Add user context to your agent's prompt at runtime:
|
|
32
|
+
|
|
33
|
+
```ts
|
|
34
|
+
import { ToolLoopAgent } from 'ai';
|
|
35
|
+
__PROVIDER_IMPORT__;
|
|
36
|
+
import { z } from 'zod';
|
|
37
|
+
|
|
38
|
+
const supportAgent = new ToolLoopAgent({
|
|
39
|
+
model: __MODEL__,
|
|
40
|
+
callOptionsSchema: z.object({
|
|
41
|
+
userId: z.string(),
|
|
42
|
+
accountType: z.enum(['free', 'pro', 'enterprise']),
|
|
43
|
+
}),
|
|
44
|
+
instructions: 'You are a helpful customer support agent.',
|
|
45
|
+
prepareCall: ({ options, ...settings }) => ({
|
|
46
|
+
...settings,
|
|
47
|
+
instructions:
|
|
48
|
+
settings.instructions +
|
|
49
|
+
`\nUser context:
|
|
50
|
+
- Account type: ${options.accountType}
|
|
51
|
+
- User ID: ${options.userId}
|
|
52
|
+
|
|
53
|
+
Adjust your response based on the user's account level.`,
|
|
54
|
+
}),
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
// Call the agent with specific user context
|
|
58
|
+
const result = await supportAgent.generate({
|
|
59
|
+
prompt: 'How do I upgrade my account?',
|
|
60
|
+
options: {
|
|
61
|
+
userId: 'user_123',
|
|
62
|
+
accountType: 'free',
|
|
63
|
+
},
|
|
64
|
+
});
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
The `options` parameter is now required and type-checked. If you don't provide it or pass incorrect types, TypeScript will error.
|
|
68
|
+
|
|
69
|
+
## Modifying Agent Settings
|
|
70
|
+
|
|
71
|
+
Use `prepareCall` to modify any agent setting. Return only the settings you want to change.
|
|
72
|
+
|
|
73
|
+
### Dynamic Model Selection
|
|
74
|
+
|
|
75
|
+
Choose models based on request characteristics:
|
|
76
|
+
|
|
77
|
+
```ts
|
|
78
|
+
import { ToolLoopAgent } from 'ai';
|
|
79
|
+
__PROVIDER_IMPORT__;
|
|
80
|
+
import { z } from 'zod';
|
|
81
|
+
|
|
82
|
+
const agent = new ToolLoopAgent({
|
|
83
|
+
model: __MODEL__, // Default model
|
|
84
|
+
callOptionsSchema: z.object({
|
|
85
|
+
complexity: z.enum(['simple', 'complex']),
|
|
86
|
+
}),
|
|
87
|
+
prepareCall: ({ options, ...settings }) => ({
|
|
88
|
+
...settings,
|
|
89
|
+
model:
|
|
90
|
+
options.complexity === 'simple' ? 'openai/gpt-4o-mini' : 'openai/o1-mini',
|
|
91
|
+
}),
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
// Use faster model for simple queries
|
|
95
|
+
await agent.generate({
|
|
96
|
+
prompt: 'What is 2+2?',
|
|
97
|
+
options: { complexity: 'simple' },
|
|
98
|
+
});
|
|
99
|
+
|
|
100
|
+
// Use more capable model for complex reasoning
|
|
101
|
+
await agent.generate({
|
|
102
|
+
prompt: 'Explain quantum entanglement',
|
|
103
|
+
options: { complexity: 'complex' },
|
|
104
|
+
});
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
### Dynamic Tool Configuration
|
|
108
|
+
|
|
109
|
+
Configure tools based on runtime context:
|
|
110
|
+
|
|
111
|
+
```ts
|
|
112
|
+
import { openai } from '@ai-sdk/openai';
|
|
113
|
+
import { ToolLoopAgent } from 'ai';
|
|
114
|
+
__PROVIDER_IMPORT__;
|
|
115
|
+
import { z } from 'zod';
|
|
116
|
+
|
|
117
|
+
const newsAgent = new ToolLoopAgent({
|
|
118
|
+
model: __MODEL__,
|
|
119
|
+
callOptionsSchema: z.object({
|
|
120
|
+
userCity: z.string().optional(),
|
|
121
|
+
userRegion: z.string().optional(),
|
|
122
|
+
}),
|
|
123
|
+
tools: {
|
|
124
|
+
web_search: openai.tools.webSearch(),
|
|
125
|
+
},
|
|
126
|
+
prepareCall: ({ options, ...settings }) => ({
|
|
127
|
+
...settings,
|
|
128
|
+
tools: {
|
|
129
|
+
web_search: openai.tools.webSearch({
|
|
130
|
+
searchContextSize: 'low',
|
|
131
|
+
userLocation: {
|
|
132
|
+
type: 'approximate',
|
|
133
|
+
city: options.userCity,
|
|
134
|
+
region: options.userRegion,
|
|
135
|
+
country: 'US',
|
|
136
|
+
},
|
|
137
|
+
}),
|
|
138
|
+
},
|
|
139
|
+
}),
|
|
140
|
+
});
|
|
141
|
+
|
|
142
|
+
await newsAgent.generate({
|
|
143
|
+
prompt: 'What are the top local news stories?',
|
|
144
|
+
options: {
|
|
145
|
+
userCity: 'San Francisco',
|
|
146
|
+
userRegion: 'California',
|
|
147
|
+
},
|
|
148
|
+
});
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
### Provider-Specific Options
|
|
152
|
+
|
|
153
|
+
Configure provider settings dynamically:
|
|
154
|
+
|
|
155
|
+
```ts
|
|
156
|
+
import { openai, OpenAIProviderOptions } from '@ai-sdk/openai';
|
|
157
|
+
import { ToolLoopAgent } from 'ai';
|
|
158
|
+
import { z } from 'zod';
|
|
159
|
+
|
|
160
|
+
const agent = new ToolLoopAgent({
|
|
161
|
+
model: 'openai/o3',
|
|
162
|
+
callOptionsSchema: z.object({
|
|
163
|
+
taskDifficulty: z.enum(['low', 'medium', 'high']),
|
|
164
|
+
}),
|
|
165
|
+
prepareCall: ({ options, ...settings }) => ({
|
|
166
|
+
...settings,
|
|
167
|
+
providerOptions: {
|
|
168
|
+
openai: {
|
|
169
|
+
reasoningEffort: options.taskDifficulty,
|
|
170
|
+
} satisfies OpenAIProviderOptions,
|
|
171
|
+
},
|
|
172
|
+
}),
|
|
173
|
+
});
|
|
174
|
+
|
|
175
|
+
await agent.generate({
|
|
176
|
+
prompt: 'Analyze this complex scenario...',
|
|
177
|
+
options: { taskDifficulty: 'high' },
|
|
178
|
+
});
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
## Advanced Patterns
|
|
182
|
+
|
|
183
|
+
### Retrieval Augmented Generation (RAG)
|
|
184
|
+
|
|
185
|
+
Fetch relevant context and inject it into your prompt:
|
|
186
|
+
|
|
187
|
+
```ts
|
|
188
|
+
import { ToolLoopAgent } from 'ai';
|
|
189
|
+
__PROVIDER_IMPORT__;
|
|
190
|
+
import { z } from 'zod';
|
|
191
|
+
|
|
192
|
+
const ragAgent = new ToolLoopAgent({
|
|
193
|
+
model: __MODEL__,
|
|
194
|
+
callOptionsSchema: z.object({
|
|
195
|
+
query: z.string(),
|
|
196
|
+
}),
|
|
197
|
+
prepareCall: async ({ options, ...settings }) => {
|
|
198
|
+
// Fetch relevant documents (this can be async)
|
|
199
|
+
const documents = await vectorSearch(options.query);
|
|
200
|
+
|
|
201
|
+
return {
|
|
202
|
+
...settings,
|
|
203
|
+
instructions: `Answer questions using the following context:
|
|
204
|
+
|
|
205
|
+
${documents.map(doc => doc.content).join('\n\n')}`,
|
|
206
|
+
};
|
|
207
|
+
},
|
|
208
|
+
});
|
|
209
|
+
|
|
210
|
+
await ragAgent.generate({
|
|
211
|
+
prompt: 'What is our refund policy?',
|
|
212
|
+
options: { query: 'refund policy' },
|
|
213
|
+
});
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
The `prepareCall` function can be async, enabling you to fetch data before configuring the agent.
|
|
217
|
+
|
|
218
|
+
### Combining Multiple Modifications
|
|
219
|
+
|
|
220
|
+
Modify multiple settings together:
|
|
221
|
+
|
|
222
|
+
```ts
|
|
223
|
+
import { ToolLoopAgent } from 'ai';
|
|
224
|
+
__PROVIDER_IMPORT__;
|
|
225
|
+
import { z } from 'zod';
|
|
226
|
+
|
|
227
|
+
const agent = new ToolLoopAgent({
|
|
228
|
+
model: __MODEL__,
|
|
229
|
+
callOptionsSchema: z.object({
|
|
230
|
+
userRole: z.enum(['admin', 'user']),
|
|
231
|
+
urgency: z.enum(['low', 'high']),
|
|
232
|
+
}),
|
|
233
|
+
tools: {
|
|
234
|
+
readDatabase: readDatabaseTool,
|
|
235
|
+
writeDatabase: writeDatabaseTool,
|
|
236
|
+
},
|
|
237
|
+
prepareCall: ({ options, ...settings }) => ({
|
|
238
|
+
...settings,
|
|
239
|
+
// Upgrade model for urgent requests
|
|
240
|
+
model: options.urgency === 'high' ? __MODEL__ : settings.model,
|
|
241
|
+
// Limit tools based on user role
|
|
242
|
+
activeTools:
|
|
243
|
+
options.userRole === 'admin'
|
|
244
|
+
? ['readDatabase', 'writeDatabase']
|
|
245
|
+
: ['readDatabase'],
|
|
246
|
+
// Adjust instructions
|
|
247
|
+
instructions: `You are a ${options.userRole} assistant.
|
|
248
|
+
${options.userRole === 'admin' ? 'You have full database access.' : 'You have read-only access.'}`,
|
|
249
|
+
}),
|
|
250
|
+
});
|
|
251
|
+
|
|
252
|
+
await agent.generate({
|
|
253
|
+
prompt: 'Update the user record',
|
|
254
|
+
options: {
|
|
255
|
+
userRole: 'admin',
|
|
256
|
+
urgency: 'high',
|
|
257
|
+
},
|
|
258
|
+
});
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
## Using with createAgentUIStreamResponse
|
|
262
|
+
|
|
263
|
+
Pass call options through API routes to your agent:
|
|
264
|
+
|
|
265
|
+
```ts filename="app/api/chat/route.ts"
|
|
266
|
+
import { createAgentUIStreamResponse } from 'ai';
|
|
267
|
+
import { myAgent } from '@/ai/agents/my-agent';
|
|
268
|
+
|
|
269
|
+
export async function POST(request: Request) {
|
|
270
|
+
const { messages, userId, accountType } = await request.json();
|
|
271
|
+
|
|
272
|
+
return createAgentUIStreamResponse({
|
|
273
|
+
agent: myAgent,
|
|
274
|
+
messages,
|
|
275
|
+
options: {
|
|
276
|
+
userId,
|
|
277
|
+
accountType,
|
|
278
|
+
},
|
|
279
|
+
});
|
|
280
|
+
}
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
## Next Steps
|
|
284
|
+
|
|
285
|
+
- Learn about [loop control](/docs/agents/loop-control) for execution management
|
|
286
|
+
- Explore [workflow patterns](/docs/agents/workflows) for complex multi-step processes
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Agents
|
|
3
|
+
description: An overview of building agents with the AI SDK.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Agents
|
|
7
|
+
|
|
8
|
+
The following section show you how to build agents with the AI SDK - systems where large language models (LLMs) use tools in a loop to accomplish tasks.
|
|
9
|
+
|
|
10
|
+
<IndexCards
|
|
11
|
+
cards={[
|
|
12
|
+
{
|
|
13
|
+
title: 'Overview',
|
|
14
|
+
description: 'Learn what agents are and why to use the Agent class.',
|
|
15
|
+
href: '/docs/agents/overview',
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
title: 'Building Agents',
|
|
19
|
+
description: 'Complete guide to creating agents with the Agent class.',
|
|
20
|
+
href: '/docs/agents/building-agents',
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
title: 'Workflow Patterns',
|
|
24
|
+
description:
|
|
25
|
+
'Structured patterns using core functions for complex workflows.',
|
|
26
|
+
href: '/docs/agents/workflows',
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
title: 'Loop Control',
|
|
30
|
+
description: 'Advanced execution control with stopWhen and prepareStep.',
|
|
31
|
+
href: '/docs/agents/loop-control',
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
title: 'Configuring Call Options',
|
|
35
|
+
description:
|
|
36
|
+
'Pass type-safe runtime inputs to dynamically configure agent behavior.',
|
|
37
|
+
href: '/docs/agents/configuring-call-options',
|
|
38
|
+
},
|
|
39
|
+
]}
|
|
40
|
+
/>
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Overview
|
|
3
|
+
description: An overview of AI SDK Core.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# AI SDK Core
|
|
7
|
+
|
|
8
|
+
Large Language Models (LLMs) are advanced programs that can understand, create, and engage with human language on a large scale.
|
|
9
|
+
They are trained on vast amounts of written material to recognize patterns in language and predict what might come next in a given piece of text.
|
|
10
|
+
|
|
11
|
+
AI SDK Core **simplifies working with LLMs by offering a standardized way of integrating them into your app** - so you can focus on building great AI applications for your users, not waste time on technical details.
|
|
12
|
+
|
|
13
|
+
For example, here’s how you can generate text with various models using the AI SDK:
|
|
14
|
+
|
|
15
|
+
<PreviewSwitchProviders />
|
|
16
|
+
|
|
17
|
+
## AI SDK Core Functions
|
|
18
|
+
|
|
19
|
+
AI SDK Core has various functions designed for [text generation](./generating-text), [structured data generation](./generating-structured-data), and [tool usage](./tools-and-tool-calling).
|
|
20
|
+
These functions take a standardized approach to setting up [prompts](./prompts) and [settings](./settings), making it easier to work with different models.
|
|
21
|
+
|
|
22
|
+
- [`generateText`](/docs/ai-sdk-core/generating-text): Generates text and [tool calls](./tools-and-tool-calling).
|
|
23
|
+
This function is ideal for non-interactive use cases such as automation tasks where you need to write text (e.g. drafting email or summarizing web pages) and for agents that use tools.
|
|
24
|
+
- [`streamText`](/docs/ai-sdk-core/generating-text): Stream text and tool calls.
|
|
25
|
+
You can use the `streamText` function for interactive use cases such as [chat bots](/docs/ai-sdk-ui/chatbot) and [content streaming](/docs/ai-sdk-ui/completion).
|
|
26
|
+
- [`generateObject`](/docs/ai-sdk-core/generating-structured-data): Generates a typed, structured object that matches a [Zod](https://zod.dev/) schema.
|
|
27
|
+
You can use this function to force the language model to return structured data, e.g. for information extraction, synthetic data generation, or classification tasks.
|
|
28
|
+
- [`streamObject`](/docs/ai-sdk-core/generating-structured-data): Stream a structured object that matches a Zod schema.
|
|
29
|
+
You can use this function to [stream generated UIs](/docs/ai-sdk-ui/object-generation).
|
|
30
|
+
|
|
31
|
+
## API Reference
|
|
32
|
+
|
|
33
|
+
Please check out the [AI SDK Core API Reference](/docs/reference/ai-sdk-core) for more details on each function.
|