UNPKG

ai

Version:

AI SDK by Vercel - build apps like ChatGPT, Claude, Gemini, and more with a single interface for any model using the Vercel AI Gateway or go direct to OpenAI, Anthropic, Google, or any other model provider.

49 lines (38 loc) 1.59 kB
--- title: Tool calling with structured outputs description: Troubleshooting tool calling when combined with structured output generation --- # Tool calling with structured outputs ## Issue You may want to combine tool calling with structured output generation. ## Background To use tool calling with structured outputs, use `generateText` or `streamText` with the `output` option. **Important**: When using `output` with tool calling, the structured output generation counts as an additional step in the execution flow. ## Solution When using `output` with tool calling, adjust your `stopWhen` condition to account for the additional step required for structured output generation: ```tsx const result = await generateText({ model: __MODEL__, output: Output.object({ schema: z.object({ summary: z.string(), sentiment: z.enum(['positive', 'neutral', 'negative']), }), }), tools: { analyze: tool({ description: 'Analyze data', inputSchema: z.object({ data: z.string(), }), execute: async ({ data }) => { return { result: 'analyzed' }; }), }, }, // Add at least 1 to your intended step count to account for structured output stopWhen: stepCountIs(3), // Now accounts for: tool call + tool result + structured output prompt: 'Analyze the data and provide a summary', }); ``` For more information about using structured outputs with `generateText` and `streamText` see [Generating Structured Data](/docs/ai-sdk-core/generating-structured-data#structured-outputs-with-generatetext-and-streamtext).