Skills Agentes

Develop Ai Functions Example

Desarrolla ejemplos para las funciones del AI SDK; úsalo al crear, ejecutar o modificar ejemplos bajo examples/ai-functions/src para validar soporte de providers o demostrar features.

Oficial
Estrellas
26.9k

en todo el repo

Actividad
59

0–100, la ruta de este skill

Actualizado
el mes pasado

último commit aquí

Commits
1

ú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

  • Define convenciones de nomenclatura y estructura de carpetas para ejemplos en examples/ai-functions/src
  • Provee plantillas para generateText, streamText, tool calling y generateObject usando el wrapper run() de lib/run.ts
  • Documenta utilidades compartidas como print.ts, print-full-stream.ts, save-raw-chunks.ts y save-audio.ts
  • Explica cuándo crear ejemplos: nuevo provider, nueva feature, reproducir bug o generar fixtures de test

Úsalo cuando

  • Al crear, ejecutar o modificar ejemplos bajo examples/ai-functions/src
  • Al validar soporte de un provider
  • Al demostrar una feature del AI SDK
  • Al crear fixtures de test para 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 generateText para el provider openai”
    • “Añade un ejemplo de streaming con tool calls en stream-text”
    • “Genera un fixture de test capturando la respuesta de la API de Anthropic”
    • “Crea un ejemplo de generateObject con un schema de zod”

    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

    Group examples by function and provider. Name the entry example basic.ts and use descriptive kebab-case.ts names for additional examples:

    Pattern Example Description
    <function>/<provider>/basic.ts generate-text/openai/basic.ts Basic provider usage
    <function>/<provider>/<feature>.ts stream-text/openai/tool-call.ts Specific feature
    <function>/<provider>/<sub-provider>.ts stream-text/amazon-bedrock/anthropic.ts Provider with sub-provider
    <function>/<provider>/<sub-provider>-<feature>.ts stream-text/google/vertex-anthropic-cache-control.ts Sub-provider with feature

    Do not create flat provider files such as generate-text/openai.ts.

    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/basic.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 tsx, y variables de entorno cargadas desde .env para las llamadas a los providers.

    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. Ver el pack ai entero y su comando de instalación

    Actualiza las dependencias del SDK principal de los paquetes harness. Úsalo cuando se solicite actualizar los SDKs de harness o las dependencias del adaptador harness.

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

    Guía para añadir paquetes de proveedores de IA de primera parte al AI SDK. Úsala al crear un paquete de proveedor bajo packages/ para integrar un servicio de IA externo.

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

    Captura fixtures de test con las respuestas reales de las APIs de los proveedores.

    Costo de contexto al activarse
    541 tok
    Tamaño del paquete
    1 archivo
    Última actualización
    el mes pasado
    Oficialtesting qa

    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
    hace 2 meses
    Oficialherramientas desarrollo

    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
    hace 2 meses
    Oficialherramientas desarrollo

    Ai Sdk

    26.9k

    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
    hace 2 meses
    Oficialdesarrollo apis

    Skills relacionados

    Guía para añadir nuevos ejemplos de funciones de IA, usados para probar características específicas contra las APIs reales de los proveedores.

    Costo de contexto al activarse
    234 tok
    Tamaño del paquete
    1 archivo
    Última actualización
    hace 5 meses
    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
    hace 2 meses
    Oficialherramientas desarrollo

    Guía para añadir paquetes de proveedores de IA de primera parte al AI SDK. Úsala al crear un paquete de proveedor bajo packages/ para integrar un servicio de IA externo.

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