Communitygithub.com

David-Li0406/meta-skill-evloving

Construye con las APIs sin estado de OpenAI: Chat Completions (GPT-5, GPT-4o), Embeddings, Imágenes (DALL-E 3), Audio (Whisper + TTS) y Moderación. Incluye SDK de Node.js y enfoques basados en fetch para Cloudflare Workers.

¿Qué es meta-skill-evloving?

Este skill proporciona una guía completa y lista para producción para trabajar con las APIs sin estado de OpenAI. Cubre las principales APIs, incluyendo Chat Completions con modelos GPT-5 y GPT-4o, Embeddings para RAG, generación y edición de imágenes con DALL-E 3, transcripción y síntesis de audio con Whisper y TTS, y moderación de contenido. El skill detalla patrones de streaming SSE, llamadas a funciones, salidas estructuradas con esquemas JSON y capacidades de visión. Proporciona ejemplos de código tanto para el SDK de Node.js como para el enfoque fetch, lo que lo hace adecuado para entornos como Cloudflare Workers. Además, incluye secciones sobre manejo de errores, límites de velocidad y mejores prácticas de producción para ayudar a los desarrolladores a construir aplicaciones robustas con las APIs de OpenAI.

Compatible con~Claude Code✓Codex CLI~Cursor✓Antigravity
npx skills add https://github.com/David-Li0406/meta-skill-evloving/tree/HEAD/AgentSkillOS/data/skill_seeds/openai-api

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

API de OpenAI - Guía Completa

Versión: Listo para producción ✅ Paquete: [email protected] Última actualización: 2025-11-26


Estado

✅ Listo para producción:

  • ✅ API de Chat Completions (GPT-5, GPT-4o, GPT-4 Turbo)
  • ✅ API de Embeddings (text-embedding-3-small, text-embedding-3-large)
  • ✅ API de Imágenes (generación DALL-E 3 + edición GPT-Image-1)
  • ✅ API de Audio (transcripción Whisper + TTS con 11 voces)
  • ✅ API de Moderación (11 categorías de seguridad)
  • ✅ Patrones de streaming (SSE)
  • ✅ Llamadas a funciones / Herramientas
  • ✅ Salidas estructuradas (esquemas JSON)
  • ✅ Visión (GPT-4o)
  • ✅ Enfoques con SDK de Node.js y fetch

Tabla de Contenidos

  1. Inicio Rápido
  2. API de Chat Completions
  3. Modelos de la Serie GPT-5
  4. Patrones de Streaming
  5. Llamadas a Funciones
  6. Salidas Estructuradas
  7. Visión (GPT-4o)
  8. API de Embeddings
  9. API de Imágenes
  10. API de Audio
  11. API de Moderación
  12. Manejo de Errores
  13. Límites de Velocidad
  14. Mejores Prácticas de Producción
  15. Relación con openai-responses

Inicio Rápido

Instalación

npm install [email protected]

Configuración del Entorno

export OPENAI_API_KEY="sk-..."

O crea un archivo .env:

OPENAI_API_KEY=sk-...

Primer Chat Completion (SDK de Node.js)

import OpenAI from 'openai';

const openai = new OpenAI({
  apiKey: process.env.OPENAI_API_KEY,
});

const completion = await openai.chat.completions.create({
  model: 'gpt-5',
  messages: [
    { role: 'user', content: '¿Cuáles son las tres leyes de la robótica?' }
  ],
});

console.log(completion.choices[0].message.content);

Primer Chat Completion (Fetch - Cloudflare Workers)

const response = await fetch('https://api.openai.com/v1/chat/completions', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${env.OPENAI_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    model: 'gpt-5',
    messages: [
      { role: 'user', content: '¿Cuáles son las tres leyes de la robótica?' }
    ],
  }),
});

const data = await response.json();
console.log(data.choices[0].message.content);

API de Chat Completions

Endpoint: POST /v1/chat/completions

La API de Chat Completions es la interfaz principal para interactuar con los modelos de lenguaje de OpenAI. Admite IA conversacional, generación de texto, llamadas a funciones, salidas estructuradas y capacidades de visión.

Modelos Compatibles

Serie GPT-5 (Lanzada en agosto de 2025)

  • gpt-5: Modelo de razonamiento con todas las funciones y capacidades avanzadas
  • gpt-5-mini: Alternativa rentable con buen rendimiento
  • gpt-5-nano: Variante más pequeña/rápida para tareas simples

Serie GPT-4o

  • gpt-4o: Modelo multimodal con capacidades de visión
  • gpt-4-turbo: Variante rápida de GPT-4

Serie GPT-4

  • gpt-4: Modelo GPT-4 original

Estructura Básica de la Solicitud

{
  model: string,              // Modelo a usar (ej., "gpt-5")
  messages: Message[],        // Historial de la conversación
  reasoning_effort?: string,  // Solo GPT-5: "minimal" | "low" | "medium" | "high"
  verbosity?: string,         // Solo GPT-5: "low" | "medium" | "high"
  temperature?: number,       // NO compatible con GPT-5
  max_tokens?: number,        // Máximo de tokens a generar
  stream?: boolean,           // Habilitar streaming
  tools?: Tool[],             // Herramientas de llamada a funciones
}

Estructura de la Respuesta

{
  id: string,                 // ID único de finalización
  object: "chat.completion",
  created: number,            // Marca de tiempo Unix
  model: string,              // Modelo utilizado
  choices: [{
    index: number,
    message: {
      role: "assistant",
      content: string,        // Texto generado
      tool_calls?: ToolCall[] // Si se llama a funciones
    },
    finish_reason: string     // "stop" | "length" | "tool_calls"
  }],
  usage: {
    prompt_tokens: number,
    completion_tokens: number,
    total_tokens: number
  }
}

Roles de Mensaje y Conversaciones Multiturno

Tres roles: system (comportamiento), user (entrada), assistant (respuestas del modelo).

Importante: La API es sin estado: envía el historial completo de la conversación en cada solicitud. Para conversaciones con estado, usa el skill openai-responses.


Modelos de la Serie GPT-5

Los modelos GPT-5 (lanzados en agosto de 2025) introducen controles de razonamiento y verbosidad:

GPT-5.1 (Lanzado el 13 de noviembre de 2025)

Modelo más reciente con mejoras importantes:

  • gpt-5.1: Razonamiento adaptativo que varía dinámicamente el tiempo de pensamiento
  • Caching de prompts extendido de 24 horas: Consultas de seguimiento más rápidas a menor costo
  • Nuevas herramientas para desarrolladores: apply_patch (edición de código), shell (ejecución de comandos)

CAMBIO IMPORTANTE: GPT-5.1 tiene como valor predeterminado reasoning_effort: 'none' (mientras que GPT-5 tiene como valor predeterminado 'medium'). ¡Actualiza tu código al migrar!

Parámetro reasoning_effort

Controla la profundidad del pensamiento (disponible en GPT-5 y GPT-5.1):

  • "none": Sin razonamiento (más rápido, menor latencia) - valor predeterminado de GPT-5.1
  • "minimal": Respuestas rápidas, pensamiento mínimo
  • "low": Razonamiento básico
  • "medium": Razonamiento equilibrado - valor predeterminado de GPT-5
  • "high": Razonamiento profundo para problemas complejos
// GPT-5.1 sin razonamiento (rápido)
const completion = await openai.chat.completions.create({
  model: 'gpt-5.1',
  messages: [{ role: 'user', content: 'Consulta simple' }],
  // reasoning_effort: 'none' es el valor implícito para GPT-5.1
});

// GPT-5.1 con razonamiento alto (tareas complejas)
const completion = await openai.chat.completions.create({
  model: 'gpt-5.1',
  messages: [{ role: 'user', content: 'Resuelve este problema matemático complejo...' }],
  reasoning_effort: 'high',
});

Parámetro verbosity

Controla el detalle de la salida (GPT-5/GPT-5.1):

  • "low": Conciso
  • "medium": Equilibrado (predeterminado)
  • "high": Detallado

Limitaciones de GPT-5

NO Compatible:

  • ❌ Parámetros temperature, top_p, logprobs
  • ❌ Cadena de pensamiento con estado entre turnos

Alternativas: Usa GPT-4o para temperature/top_p, o el skill openai-responses para razonamiento con estado


Patrones de Streaming

Habilita con stream: true para la entrega token por token.

SDK de Node.js

const stream = await openai.chat.completions.create({
  model: 'gpt-5.1',
  messages: [{ role: 'user', content: 'Escribe un poema' }],
  stream: true,
});

for await (const chunk of stream) {
  const content = chunk.choices[0]?.delta?.content || '';
  process.stdout.write(content);
}

Fetch (Cloudflare Workers)

const response = await fetch('https://api.openai.com/v1/chat/completions', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${env.OPENAI_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    model: 'gpt-5.1',
    messages: [{ role: 'user', content: 'Escribe un poema' }],
    stream: true,
  }),
});

const reader = response.body?.getReader();
const decoder = new TextDecoder();

while (true) {
  const { done, value } = await reader!.read();
  if (done) break;

  const chunk = decoder.decode(value);
  const lines = chunk.split('\n').filter(line => line.trim() !== '');

  for (const line of lines) {
    if (line.startsWith('data: ')) {
      const data = line.slice(6);
      if (data === '[DONE]') break;

      try {
        const json = JSON.parse(data);
        const content = json.choices[0]?.delta?.content || '';
        console.log(content);
      } catch (e) {
        // Ignorar JSON no válido
      }
    }
  }
}

Formato de eventos enviados por el servidor (SSE):

data: {"id":"chatcmpl-xyz","choices":[{"delta":{"content":"Hola"}}]}
data: [DONE]

Puntos Clave: Maneja fragmentos incompletos, la señal [DONE] y JSON no válido de forma elegante.


Llamadas a Funciones

Define herramientas con esquema JSON, el modelo las invoca según el contexto.

Definición y Solicitud de Herramientas

const tools = [{
  type: 'function',
  function: {
    name: 'get_weather',
    description: 'Obtener el clima actual de una ubicación',
    parameters: {
      type: 'object',
      properties: {
        location: { type: 'string', description: 'Nombre de la ciudad' },
        unit: { type: 'string', enum: ['celsius', 'fahrenheit'] }
      },
      required: ['location']
    }
  }
}];

const completion = await openai.chat.completions.create({
  model: 'gpt-5.1',
  messages: [{ role: 'user', content: '¿Cómo está el clima en SF?' }],
  tools: tools,
});

Manejar Llamadas a Herramientas

const message = completion.choices[0].message;

if (message.tool_calls) {
  for (const toolCall of message.tool_calls) {
    const args = JSON.parse(toolCall.function.arguments);
    const result = await executeFunction(toolCall.function.name, args);

    // Enviar resultado de vuelta al modelo
    await openai.chat.completions.create({
      model: 'gpt-5.1',
      messages: [
        ...messages,
        message,
        {
          role: 'tool',
          tool_call_id: toolCall.id,
          content: JSON.stringify(result)
        }
      ],
      tools: tools,
    });
  }
}

Patrón de bucle: Continúa llamando a la API hasta que no haya tool_calls en la respuesta.


Salidas Estructuradas

Las salidas estructuradas te permiten aplicar la validación de esquemas JSON en las respuestas del modelo.

Usando Esquema JSON

const completion = await openai.chat.completions.create({
  model: 'gpt-4o', // Nota: Las salidas estructuradas son mejor compatibles con GPT-4o
  messages: [
    { role: 'user', content: 'Genera un perfil de persona' }
  ],
  response_format: {
    type: 'json_schema',
    json_schema: {
      name: 'person_profile',
      strict: true,
      schema: {
        type: 'object',
        properties: {
          name: { type: 'string' },
          age: { type: 'number' },
          skills: {
            type: 'array',
            items: { type: 'string' }
          }
        },
        required: ['name', 'age', 'skills'],
        additionalProperties: false
      }
    }
  }
});

const person = JSON.parse(completion.choices[0].message.content);
// { name: "Alicia", age: 28, skills: ["TypeScript", "React"] }

Modo JSON (Simple)

Para casos de uso más simples sin validación estricta de esquemas:

const completion = await openai.chat.completions.create({
  model: 'gpt-5',
  messages: [
    { role: 'user', content: 'Enumera 3 lenguajes de programación como JSON' }
  ],
  response_format: { type: 'json_object' }
});

const data = JSON.parse(completion.choices[0].message.content);

Importante: Al usar response_format, incluye "JSON" en tu prompt para guiar al modelo.


Visión (GPT-4o)

GPT-4o admite la comprensión de imágenes junto con texto.

Imagen a través de URL

const completion = await openai.chat.completions.create({
  model: 'gpt-4o',
  messages: [
    {
      role: 'user',
      content: [
        { type: 'text', text: '¿Qué hay en esta imagen?' },
        {
          type: 'image_url',
          image_url: {
            url: 'https://example.com/image.jpg'
          }
        }
      ]
    }
  ]
});

Imagen a través de Base64

import fs from 'fs';

const imageBuffer = fs.readFileSync('./image.jpg');
const base64Image = imageBuffer.toString('base64');

const completion = await openai.chat.completions.create({
  model: 'gpt-4o',
  messages: [
    {
      role: 'user',
      content: [
        { type: 'text', text: 'Describe esta imagen en detalle' },
        {
          type: 'image_url',
          image_url: {
            url: `data:image/jpeg;base64,${base64Image}`
          }
        }
      ]
    }
  ]
});

Múltiples Imágenes

const completion = await openai.chat.completions.create({
  model: 'gpt-4o',
  messages: [
    {
      role: 'user',
      content: [
        { type: 'text', text: 'Compara estas dos imágenes' },
        { type: 'image_url', image_url: { url: 'https://example.com/image1.jpg' } },
        { type: 'image_url', image_url: { url: 'https://example.com/image2.jpg' } }
      ]
    }
  ]
});

API de Embeddings

Endpoint: POST /v1/embeddings

Convierte texto en vectores para búsqueda semántica y RAG.

Modelos

  • text-embedding-3-large: 3072 dims (personalizable: 256-3072), máxima calidad
  • text-embedding-3-small: 1536 dims (personalizable: 256-1536), rentable, recomendado

Solicitud Básica

const embedding = await openai.embeddings.create({
  model: 'text-embedding-3-small',
  input: 'La comida estaba deliciosa.',
});
// Devuelve: { data: [{ embedding: [0.002, -0.009, ...] }] }

Dimensiones Personalizadas (Específico de OpenAI)

const embedding = await openai.embeddings.create({
  model: 'text-embedding-3-small',
  input: 'Texto de ejemplo',
  dimensions: 256, // Reducido de 1536 predeterminado
});

Beneficios: Reducción de almacenamiento de 4x a 12x, búsqueda más rápida, pérdida mínima de calidad.

Procesamiento por Lotes

const embeddings = await openai.embeddings.create({
  model: 'text-embedding-3-small',
  input: ['Primer doc', 'Segundo doc', 'Tercer doc'],
});

Límites: 8192 tokens/entrada, 300k tokens totales por lote, tamaño máximo de matriz 2048.

Puntos Clave: Usa dimensiones personalizadas para eficiencia, procesa por lotes hasta 2048 documentos, almacena en caché los embeddings (deterministas).


API de Imágenes

Generación de Imágenes (DALL-E 3)

Endpoint: POST /v1/images/generations

const image = await openai.images.generate({
  model: 'dall-e-3',
  prompt: 'Un gato siamés blanco con ojos azules impactantes',
  size: '1024x1024', // También: 1024x1536, 1536x1024, 1024x1792, 1792x1024
  quality: 'standard', // o 'hd'
  style: 'vivid', // o 'natural'
});

console.log(image.data[0].url);
console.log(image.data[0].revised_prompt); // DALL-E 3 puede revisar el prompt por seguridad

Especificidades de DALL-E 3:

  • Solo admite n: 1 (una imagen por solicitud)
  • Puede revisar prompts por seguridad/calidad (verifica revised_prompt)
  • Las URL caducan en 1 hora (usa response_format: 'b64_json' para persistencia)

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

David-Li0406/meta-skill-evloving

Browser automation with persistent page state. Use when users ask to navigate websites, fill forms, take screenshots, extract web data, test web apps, or automate browser workflows. Trigger phrases include "go to [url]", "click on", "fill out the form", "take a screenshot", "scrape", "automate", "test the website", "log into", or any browser interaction request.

David-Li0406/meta-skill-evloving

Create technical diagrams using Mermaid syntax for architecture, sequences, ERDs, flowcharts, and state machines. Use for visualizing system design, data flows, and processes. Triggers: diagram, mermaid, architecture diagram, sequence diagram, flowchart, ERD, entity relationship, state diagram, C4 model, component diagram, visualize, draw.

David-Li0406/meta-skill-evloving

Comprehensive document creation, editing, and analysis with support for tracked changes, comments, formatting preservation, and text extraction. When Claude needs to work with professional documents (.docx files) for: (1) Creating new documents, (2) Modifying or editing content, (3) Working with tracked changes, (4) Adding comments, or any other document tasks

David-Li0406/meta-skill-evloving

Complete color manipulation and green screen effects system. PROACTIVELY activate for: (1) Green screen/chromakey removal, (2) Color grading with LUTs, (3) Color correction (levels, curves, white balance), (4) Colorkey/color removal effects, (5) Hue/saturation manipulation, (6) Color space conversions (BT.709, BT.2020, HDR), (7) Color isolation effects, (8) Teal and orange look, (9) Vintage/film looks, (10) Color keying for transparency. Provides: chromakey and colorkey filters, LUT application (lut3d), curves and levels adjustment, color balance, selective color manipulation, color space handling, HDR tone mapping, professional color grading chains.

David-Li0406/meta-skill-evloving

Convert files and office documents to Markdown. Supports PDF, DOCX, PPTX, XLSX, images (with OCR), audio (with transcription), HTML, CSV, JSON, XML, ZIP, YouTube URLs, EPubs and more.

David-Li0406/meta-skill-evloving

Guide for creating high-quality MCP (Model Context Protocol) servers that enable LLMs to interact with external services through well-designed tools. Use when building MCP servers to integrate external APIs or services, whether in Python (FastMCP) or Node/TypeScript (MCP SDK).

David-Li0406/meta-skill-evloving

Comprehensive PDF manipulation toolkit for extracting text and tables, creating new PDFs, merging/splitting documents, and handling forms. When Claude needs to fill in a PDF form or programmatically process, generate, or analyze PDF documents at scale.

David-Li0406/meta-skill-evloving

Presentation creation, editing, and analysis. When Claude needs to work with presentations (.pptx files) for: (1) Creating new presentations, (2) Modifying or editing content, (3) Working with layouts, (4) Adding comments or speaker notes, or any other presentation tasks

David-Li0406/meta-skill-evloving

Comprehensive spreadsheet creation, editing, and analysis with support for formulas, formatting, data analysis, and visualization. When Claude needs to work with spreadsheets (.xlsx, .xlsm, .csv, .tsv, etc) for: (1) Creating new spreadsheets with formulas and formatting, (2) Reading or analyzing data, (3) Modify existing spreadsheets while preserving formulas, (4) Data analysis and visualization in spreadsheets, or (5) Recalculating formulas

David-Li0406/meta-skill-evloving

Download YouTube videos with customizable quality and format options. Use this skill when the user asks to download, save, or grab YouTube videos. Supports various quality settings (best, 1080p, 720p, 480p, 360p), multiple formats (mp4, webm, mkv), and audio-only downloads as MP3.

David-Li0406/meta-skill-evloving

Best practices for Remotion - Video creation in React

David-Li0406/meta-skill-evloving

Provides bidirectional translation (Chinese/English), grammar checking, and sentence polishing. Supports specific tense constraints, context-aware tone adjustment, and natural expression optimization. Outputs direct text without formatting.

David-Li0406/meta-skill-evloving

指导如何通过自定义注解(如@Unicom)标识Dubbo接口,利用BeanDefinitionRegistryPostProcessor在启动时扫描并动态注册ReferenceBean,实现RPC调用的封装。

David-Li0406/meta-skill-evloving

生成Python脚本,利用FFmpeg将图片序列按3x3布局合并,或将合并图拆分。要求使用subprocess模块执行命令,并支持用户交互式输入路径。

David-Li0406/meta-skill-evloving

SOP for extracting and analyzing promotional activity details, handling time formatting, location mapping, payment logic, and step-by-step process validation.

David-Li0406/meta-skill-evloving

Specializes in creating TikTok short video scripts using an anthropomorphic 'Chef' perspective to explain wildlife food chains and survival environments, utilizing real field footage.

David-Li0406/meta-skill-evloving

针对TikTok平台,以拟人化视角(如动物作为厨师)创作系列短视频脚本。重点介绍野生动物、食物链及生态环境,要求使用野外实拍素材,风格幽默且具有教育意义。

David-Li0406/meta-skill-evloving

Generates KWL (Know, Want to know, Learned) charts for educational videos, specifically BrainPOP, using simple 7th-grade language and short, concise bullet points.

David-Li0406/meta-skill-evloving

Develops DAX measures to calculate promo and regular volumes and generates a calculated table of dates excluding continuous promo date ranges, handling multiple periods and nulls.

David-Li0406/meta-skill-evloving

Tracks complex, multi-session work using the Beads issue tracker and dependency graphs, and provides persistent memory that survives conversation compaction. Use when work spans multiple sessions, has complex dependencies, or needs persistent context across compaction cycles. Trigger with phrases like "create task for", "what's ready to work on", "show task", "track this work", "what's blocking", or "update status".

Skills relacionados