The Vercel AI SDK provides powerful functions for text generation and streaming. Below are details and examples for implementing these functions.
Text Generation
Use generateText() for standard, non-streaming responses.
import { generateText } from 'ai';
import { openai, MODEL } from './client';
async function generateGreeting() {
const response = await generateText({
model: openai(MODEL),
prompt: 'Explain quantum computing in one sentence.',
});
console.log(response.text);
}
Streaming Responses
Use streamText() to stream tokens as they are generated.
import { streamText } from 'ai';
import { openai, MODEL } from './client';
async function streamResponse() {
const result = await streamText({
model: openai(MODEL),
prompt: 'Write a poem about a software engineer.',
});
for await (const chunk of result.textStream) {
process.stdout.write(chunk);
}
}
Streaming improves perceived latency and is recommended for chat interfaces.
System Prompts & Parameters
You can customize model behavior using a system prompt and generation parameters.
Supported Parameters
The model instance to use for generation.
The text prompt to generate a response for. Either prompt or messages is required.
System instructions to guide the model’s behavior.
Controls randomness. Lower values produce more deterministic responses.
Maximum number of tokens generated.
Nucleus sampling probability.
Limits sampling to the top K probable tokens.
Encourages introducing new topics.
Reduces repeated words or phrases.
Produces deterministic outputs when supported.
Stops generation when one of the specified sequences is encountered.
Error Handling
Wrap SDK calls in a try...catch block to handle API errors, validation failures, and authentication issues.
import { generateText } from 'ai';
import { openai, MODEL } from './client';
async function safeGenerate() {
try {
const response = await generateText({
model: openai(MODEL),
prompt: 'Hello!',
temperature: -1,
});
console.log(response.text);
} catch (error: any) {
console.error('Error:', error.name);
console.error(error.message);
}
}
Common errors include:
- Invalid API key
- Incorrect endpoint URL
- Unsupported model
- Invalid request parameters
- Rate limits