
Develop Ai Functions Example
- 65 installs
- 25.8k repo stars
- Updated July 28, 2026
- vercel-labs/ai
This is a copy of develop-ai-functions-example by vercel - installs and ranking accrue to the original listing.
Maintain and extend AI SDK provider examples under examples/ai-functions when you need reproducible scripts for generateText, streamText, agents, and embeddings.
About
Develop AI Functions Example is an internal Vercel AI SDK skill for working inside examples/ai-functions. Solo builders who fork or contribute to the SDK—or who run the official example matrix against their chosen providers—use it when creating, running, or changing scripts under examples/ai-functions/src. Each subdirectory mirrors a public API: generateText and streamText, generateObject and streamObject, ToolLoopAgent workflows, embed and embedMany, plus generateImage, generateSpeech, transcribe, and rerank. The workflow keeps provider validation and feature demos consistent instead of one-off scratch files. It is not a consumer-facing app builder; it is procedural knowledge for the example harness. Pair with broader AI SDK documentation when wiring those patterns into your own agent or API product.
- 10 example category folders under examples/ai-functions/src (generate-text, stream-text, generate-object, stream-object,
- Run and modify scripts to validate provider support and demonstrate features
- Creates test fixtures aligned with each AI SDK function
- Marked internal in metadata—intended for SDK contributors and advanced integrators
- Organized by function: non-streaming vs streaming text, structured objects, agents, embeddings, image, speech, transcrip
Develop Ai Functions Example by the numbers
- 65 all-time installs (skills.sh)
- +1 installs in the week ending Jul 27, 2026 (Skillselion tracking)
- Security screen: LOW risk (skills.sh audit)
- Data as of Jul 28, 2026 (Skillselion catalog sync)
npx skills add https://github.com/vercel-labs/ai --skill develop-ai-functions-exampleAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 65 |
|---|---|
| repo stars | ★ 25.8k |
| Security audit | 3 / 3 scanners passed |
| Last updated | July 28, 2026 |
| Repository | vercel-labs/ai ↗ |
What it does
Maintain and extend AI SDK provider examples under examples/ai-functions when you need reproducible scripts for generateText, streamText, agents, and embeddings.
Files
AI Functions Examples
The examples/ai-functions/ directory contains scripts for validating, testing, and iterating on AI SDK functions across providers.
Example Categories
Examples are organized by AI SDK function in examples/ai-functions/src/:
| Directory | Purpose |
|---|---|
generate-text/ | Non-streaming text generation with generateText() |
stream-text/ | Streaming text generation with streamText() |
generate-object/ | Structured output generation with generateObject() |
stream-object/ | Streaming structured output with streamObject() |
agent/ | ToolLoopAgent examples for agentic workflows |
embed/ | Single embedding generation with embed() |
embed-many/ | Batch embedding generation with embedMany() |
generate-image/ | Image generation with generateImage() |
generate-speech/ | Text-to-speech with generateSpeech() |
transcribe/ | Audio transcription with transcribe() |
rerank/ | Document reranking with rerank() |
middleware/ | Custom middleware implementations |
registry/ | Provider registry setup and usage |
telemetry/ | OpenTelemetry integration |
complex/ | Multi-component examples (agents, routers) |
lib/ | Shared utilities (not examples) |
tools/ | Reusable tool definitions |
File Naming Convention
Examples follow the pattern: {provider}-{feature}.ts
| Pattern | Example | Description |
|---|---|---|
{provider}.ts | openai.ts | Basic provider usage |
{provider}-{feature}.ts | openai-tool-call.ts | Specific feature |
{provider}-{sub-provider}.ts | amazon-bedrock-anthropic.ts | Provider with sub-provider |
{provider}-{sub-provider}-{feature}.ts | google-vertex-anthropic-cache-control.ts | Sub-provider with feature |
Example Structure
All examples use the run() wrapper from lib/run.ts which:
- Loads environment variables from
.env - Provides error handling with detailed API error logging
Basic Template
import { providerName } from '@ai-sdk/provider-name';
import { generateText } from 'ai';
import { run } from '../lib/run';
run(async () => {
const result = await generateText({
model: providerName('model-id'),
prompt: 'Your prompt here.',
});
console.log(result.text);
console.log('Token usage:', result.usage);
console.log('Finish reason:', result.finishReason);
});Streaming Template
import { providerName } from '@ai-sdk/provider-name';
import { streamText } from 'ai';
import { printFullStream } from '../lib/print-full-stream';
import { run } from '../lib/run';
run(async () => {
const result = streamText({
model: providerName('model-id'),
prompt: 'Your prompt here.',
});
await printFullStream({ result });
});Tool Calling Template
import { providerName } from '@ai-sdk/provider-name';
import { generateText, tool } from 'ai';
import { z } from 'zod';
import { run } from '../lib/run';
run(async () => {
const result = await generateText({
model: providerName('model-id'),
tools: {
myTool: tool({
description: 'Tool description',
inputSchema: z.object({
param: z.string().describe('Parameter description'),
}),
execute: async ({ param }) => {
return { result: `Processed: ${param}` };
},
}),
},
prompt: 'Use the tool to...',
});
console.log(JSON.stringify(result, null, 2));
});Structured Output Template
import { providerName } from '@ai-sdk/provider-name';
import { generateObject } from 'ai';
import { z } from 'zod';
import { run } from '../lib/run';
run(async () => {
const result = await generateObject({
model: providerName('model-id'),
schema: z.object({
name: z.string(),
items: z.array(z.string()),
}),
prompt: 'Generate a...',
});
console.log(JSON.stringify(result.object, null, 2));
console.log('Token usage:', result.usage);
});Running Examples
From the examples/ai-functions directory:
pnpm tsx src/generate-text/openai.ts
pnpm tsx src/stream-text/openai-tool-call.ts
pnpm tsx src/agent/openai-generate.tsWhen to Write Examples
Write examples when:
1. Adding a new provider: Create basic examples for each supported API (generateText, streamText, generateObject, etc.)
2. Implementing a new feature: Demonstrate the feature with at least one provider example
3. Reproducing a bug: Create an example that shows the issue for debugging
4. Adding provider-specific options: Show how to use providerOptions for provider-specific settings
5. Creating test fixtures: Use examples to generate API response fixtures (see capture-api-response-test-fixture skill)
Utility Helpers
The lib/ directory contains shared utilities:
| File | Purpose |
|---|---|
run.ts | Error-handling wrapper with .env loading |
print.ts | Clean object printing (removes undefined values) |
print-full-stream.ts | Colored streaming output for tool calls, reasoning, text |
save-raw-chunks.ts | Save streaming chunks for test fixtures |
present-image.ts | Display images in terminal |
save-audio.ts | Save audio files to disk |
Using print utilities
import { print } from '../lib/print';
// Pretty print objects without undefined values
print('Result:', result);
print('Usage:', result.usage, { depth: 2 });Using printFullStream
import { printFullStream } from '../lib/print-full-stream';
const result = streamText({ ... });
await printFullStream({ result }); // Colored output for text, tool calls, reasoningReusable Tools
The tools/ directory contains reusable tool definitions:
import { weatherTool } from '../tools/weather-tool';
const result = await generateText({
model: openai('gpt-4o'),
tools: { weather: weatherTool },
prompt: 'What is the weather in San Francisco?',
});Best Practices
1. Keep examples focused: Each example should demonstrate one feature or use case
2. Use descriptive prompts: Make it clear what the example is testing
3. Handle errors gracefully: The run() wrapper handles this automatically
4. Use realistic model IDs: Use actual model IDs that work with the provider
5. Add comments for complex logic: Explain non-obvious code patterns
6. Reuse tools when appropriate: Use weatherTool or create new reusable tools in tools/
Related skills
FAQ
Is Develop Ai Functions Example safe to install?
skills.sh reports 3 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.