Tools definieren
Überblick
Abschnitt betitelt „Überblick“Tools erweitern ein LLM um Faehigkeiten, die es allein nicht hat — Datenbank-Abfragen, API-Calls, Berechnungen. Im AI SDK definierst Du ein Tool mit der tool()-Funktion, die drei Properties erwartet: description (was das Tool tut), parameters (welche Parameter es akzeptiert) und execute (was es ausfuehrt).
Das LLM sieht die description und die parameters, entscheidet ob es das Tool aufrufen will und generiert passende Argumente. Die execute-Funktion laeuft dann auf Deinem Server — das LLM fuehrt nie selbst Code aus.
Es gibt drei Tool-Varianten: Custom Tools (Du definierst alles selbst), Provider-Defined Tools (der Provider liefert das Schema, Du die Ausfuehrung) und Provider-Executed Tools (laufen komplett auf Provider-Servern, z.B. Web Search bei OpenAI).
Code-Beispiel
Abschnitt betitelt „Code-Beispiel“import { tool } from 'ai';import { z } from 'zod';
const weatherTool = tool({ description: 'Get the weather in a location', parameters: z.object({ location: z.string().describe('The city name'), unit: z .enum(['celsius', 'fahrenheit']) .optional() .describe('Temperature unit'), }), execute: async ({ location, unit }) => ({ location, temperature: 22, unit: unit ?? 'celsius', }),});
// Tools an generateText/streamText uebergebenimport { generateText } from 'ai';import { anthropic } from '@ai-sdk/anthropic';
const result = await generateText({ model: anthropic('claude-sonnet-4-5-20250514'), prompt: 'Wie ist das Wetter in Berlin?', tools: { weather: weatherTool },});| Property | Typ | Beschreibung |
|---|---|---|
description | string | Erklärung für das LLM, wann und wofuer das Tool genutzt werden soll |
parameters | ZodSchema | JSONSchema | Schema der Eingabeparameter — Zod empfohlen für Typsicherheit |
execute | async (args, options) => Promise<T> | Async Funktion, die mit den validierten Argumenten aufgerufen wird |
Weitere wichtige Properties
Abschnitt betitelt „Weitere wichtige Properties“| Property | Typ | Beschreibung |
|---|---|---|
experimental_toToolResultContent | (result) => Content[] | Wandelt das Tool-Ergebnis in Content um, den das LLM verarbeiten kann — z.B. für Bilder oder Screenshots bei Multi-Modal-Modellen |
Die execute-Funktion erhaelt neben den Argumenten ein Options-Objekt mit:
toolCallId— eindeutige ID des Tool-Calls (z.B. für Stream-Data)messages— die Messages, die den Tool-Call ausgeloest habenabortSignal— Signal zum Abbrechen der Operation
Zod-Tipps
Abschnitt betitelt „Zod-Tipps“| Methode | Zweck |
|---|---|
.describe('...') | Hilft dem LLM, den Parameter zu verstehen |
.optional() | Macht den Parameter optional |
.default(value) | Setzt einen Standardwert |
z.enum([...]) | Beschraenkt auf erlaubte Werte |
Siehe auch
Abschnitt betitelt „Siehe auch“- Challenge 3.1: Tool Calling — Erstes Tool definieren und aufrufen
- Challenge 3.4: Tool Loop Agent — Multi-Step Tool-Ausfuehrung mit maxSteps