Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
vercel-labs avatar

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-example

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs65
repo stars25.8k
Security audit3 / 3 scanners passed
Last updatedJuly 28, 2026
Repositoryvercel-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

SKILL.mdMarkdownGitHub ↗

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/:

DirectoryPurpose
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

PatternExampleDescription
{provider}.tsopenai.tsBasic provider usage
{provider}-{feature}.tsopenai-tool-call.tsSpecific feature
{provider}-{sub-provider}.tsamazon-bedrock-anthropic.tsProvider with sub-provider
{provider}-{sub-provider}-{feature}.tsgoogle-vertex-anthropic-cache-control.tsSub-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.ts

When 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:

FilePurpose
run.tsError-handling wrapper with .env loading
print.tsClean object printing (removes undefined values)
print-full-stream.tsColored streaming output for tool calls, reasoning, text
save-raw-chunks.tsSave streaming chunks for test fixtures
present-image.tsDisplay images in terminal
save-audio.tsSave 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, reasoning

Reusable 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.

AI & Agent Buildingagentsllmautomation

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.