ASD

Develop Ai Functions Example

Desarrolla ejemplos para las funciones del AI SDK. Úsalo al crear, ejecutar o modificar ejemplos en examples/ai-functions/src para validar soporte de proveedores o crear fixtures de prueba.

Oficial
Estrellas
26.2k

en todo el repo

Actividad
27

0–100, la ruta de este skill

Actualizado
hace 6 meses

último commit aquí

Commits
0

últimos 90 días

Contexto
2k tok

49 tok en reposo

Paquete
1 archivo

8 KB

Instalar

Funciona con cualquier agente que lea SKILL.md

npx -y skills add vercel/ai --skill develop-ai-functions-example --agent claude-code

Se instala solo en este repositorio.

Qué hace

  • Guía la creación y ejecución de scripts de ejemplo en examples/ai-functions/src para las funciones del AI SDK
  • Aplica plantillas estándar para generateText, streamText, generateObject, tool calling y salida estructurada
  • Indica cómo nombrar archivos con el patrón {provider}-{feature}.ts
  • Explica el uso de utilidades compartidas como run(), print() y printFullStream()

Úsalo cuando

  • Se añade un nuevo proveedor y hay que crear ejemplos básicos para cada API soportada
  • Se implementa una nueva funcionalidad y hay que demostrarla con al menos un ejemplo de proveedor
  • Se reproduce un bug y se necesita un ejemplo que muestre el problema para depuración
  • Se crean fixtures de prueba a partir de respuestas de API

No lo uses cuando

    Qué lo activa

    Di cualquiera de estas frases y el agente debería cargar este skill.

    • Crea un ejemplo de streamText para el nuevo proveedor en examples/ai-functions
    • Añade un ejemplo de tool calling con openai en generate-text/
    • Necesito un fixture de prueba para la respuesta de este proveedor

    SKILL.md

    En inglés

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

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

    Reproducido de vercel/ai bajo licencia NOASSERTION. Leer esta página en markdown.

    Archivos

    1 archivo en el paquete. Solo se lee SKILL.md al activarse — las referencias se cargan si el skill decide que las necesita.

    Antes de instalar

    Requiere pnpm y variables de entorno cargadas vía .env para las credenciales de los proveedores.

    Necesita en el PATH:pnpm

    Detalles

    Creador
    vercel
    Licencia
    NOASSERTION
    Recursos incluidos
    Solo SKILL.md
    Repositorio
    vercel/ai
    Código fuente
    Ver SKILL.md

    Etiquetas

    Más de vercel/ai

    Este repo incluye 13 skills. Si instalas uno, normalmente ya tienes los demás.

    Actualiza las dependencias SDK principales de los paquetes harness. Úsalo cuando te pidan actualizar los SDKs de harness o sus dependencias adaptadoras.

    Costo de contexto al activarse
    951 tok
    Tamaño del paquete
    1 archivo
    Última actualización
    hace 6 días
    Oficialherramientas desarrollo

    Guía para añadir nuevos paquetes harness de AI SDK. Úsala al crear un paquete @ai-sdk/harness-<name> que adapte un runtime de coding-agent a HarnessV1.

    Costo de contexto al activarse
    3.1k tok
    Tamaño del paquete
    1 archivo
    Última actualización
    el mes pasado
    Oficialherramientas desarrollo

    Ai Sdk

    26.2k

    Responde preguntas sobre la AI SDK y ayuda a construir funciones con IA: agentes, chatbots, RAG, streaming, tool calling, salida estructurada, embeddings y hooks como useChat.

    Costo de contexto al activarse
    1.4k tok
    Tamaño del paquete
    1 archivo
    Última actualización
    el mes pasado
    Oficialdesarrollo apis

    Añade nuevos IDs de modelo o elimina IDs obsoletos en los proveedores existentes del AI SDK, incluyendo tipos, docs, ejemplos y tests.

    Costo de contexto al activarse
    2.4k tok
    Tamaño del paquete
    1 archivo
    Última actualización
    el mes pasado
    Oficialherramientas desarrollo

    Guía para añadir nuevos paquetes de proveedores de IA al AI SDK. Úsala al crear un paquete @ai-sdk/<provider> para integrar un servicio de IA en el SDK.

    Costo de contexto al activarse
    2.7k tok
    Tamaño del paquete
    1 archivo
    Última actualización
    el mes pasado
    Oficialherramientas desarrollo

    Migra aplicaciones de AI SDK 6.x a AI SDK 7.0; útil al actualizar paquetes de Vercel AI SDK o corregir errores de migración a v7.

    Costo de contexto al activarse
    2.1k tok
    Tamaño del paquete
    1 archivo
    Última actualización
    el mes pasado
    Oficialherramientas desarrollo

    Skills relacionados

    Ai Sdk

    26.2k

    Responde preguntas sobre la AI SDK y ayuda a construir funciones con IA: agentes, chatbots, RAG, streaming, tool calling, salida estructurada, embeddings y hooks como useChat.

    Costo de contexto al activarse
    1.4k tok
    Tamaño del paquete
    1 archivo
    Última actualización
    el mes pasado
    Oficialdesarrollo apis

    Domina el sistema de tipos avanzado de TypeScript: generics, tipos condicionales, mapped types, template literals y utility types para aplicaciones type-safe.

    Costo de contexto al activarse
    2k tok
    Tamaño del paquete
    2 archivos
    Última actualización
    hace 2 meses
    herramientas desarrollo

    Patrones de resiliencia en Python: reintentos automáticos, backoff exponencial, timeouts y decoradores tolerantes a fallos para servicios.

    Costo de contexto al activarse
    1.5k tok
    Tamaño del paquete
    2 archivos
    Última actualización
    hace 2 meses
    herramientas desarrollo