Communitygithub.com

David-Li0406/skill-openai-api-complet

Utilisez les API stateless d'OpenAI - Chat Completions (GPT-5, GPT-4o), Embeddings, Images (DALL-E 3), Audio (Whisper + TTS), et Moderation. Comprend le SDK Node.js et les approches fetch pour Cloudflare Workers.

Qu'est-ce que skill-openai-api-complet ?

Ce skill fournit un guide complet et prêt pour la production pour l'API OpenAI, couvrant l'ensemble des API stateless : Chat Completions (GPT-5, GPT-4o, GPT-4 Turbo), Embeddings (text-embedding-3-small/large), Images (DALL-E 3, GPT-Image-1), Audio (Whisper, TTS avec 11 voix) et Moderation (11 catégories de sécurité). Il détaille le streaming avec SSE, l'appel de fonctions, les sorties structurées avec JSON Schema, et la vision avec GPT-4o. Le guide montre comment implémenter les appels API avec le SDK Node.js officiel ([email protected]) et avec `fetch` pour des environnements comme Cloudflare Workers, garantissant une flexibilité maximale. Il inclut des sections essentielles sur la gestion des erreurs (codes 401, 429), les limites de débit et les meilleures pratiques de production, avec des exemples de code détaillés pour chaque fonctionnalité. Idéal pour les développeurs intégrant des modèles d'IA générative dans leurs applications, que ce soit pour des agents conversationnels, de la recherche sémantique avec RAG ou la génération de contenu multimédia.

Compatible avec~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

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

API OpenAI - Guide Complet

Version : Prête pour la production ✅ Package : [email protected] Dernière mise à jour : 2026-02-27


Statut

✅ Prêt pour la production :

  • ✅ API Chat Completions (GPT-5, GPT-4o, GPT-4 Turbo)
  • ✅ API Embeddings (text-embedding-3-small, text-embedding-3-large)
  • ✅ API Images (Génération DALL-E 3 + édition GPT-Image-1)
  • ✅ API Audio (Transcription Whisper + TTS avec 11 voix)
  • ✅ API Moderation (11 catégories de sécurité)
  • ✅ Modèles de streaming (SSE)
  • ✅ Appel de fonctions / Outils
  • ✅ Sorties structurées (schémas JSON)
  • ✅ Vision (GPT-4o)
  • ✅ Approches SDK Node.js et fetch

Table des Matières

  1. Démarrage Rapide
  2. API Chat Completions
  3. Modèles de la Série GPT-5
  4. Modèles de Streaming
  5. Appel de Fonctions
  6. Sorties Structurées
  7. Vision (GPT-4o)
  8. API Embeddings
  9. API Images
  10. API Audio
  11. API Moderation
  12. Gestion des Erreurs
  13. Limites de Débit
  14. Bonnes Pratiques de Production
  15. Relation avec openai-responses

Démarrage Rapide

Installation

npm install [email protected]

Configuration de l'Environnement

export OPENAI_API_KEY="sk-..."

Ou créez un fichier .env :

OPENAI_API_KEY=sk-...

Première Chat Completion (SDK 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: 'Quelles sont les trois lois de la robotique ?' }
  ],
});

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

Première 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: 'Quelles sont les trois lois de la robotique ?' }
    ],
  }),
});

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

API Chat Completions

Point de terminaison : POST /v1/chat/completions

L'API Chat Completions est l'interface principale pour interagir avec les modèles de langage d'OpenAI. Elle prend en charge l'IA conversationnelle, la génération de texte, l'appel de fonctions, les sorties structurées et les capacités de vision.

Modèles Pris en Charge

Série GPT-5 (Sortie août 2025)

  • gpt-5 : Modèle de raisonnement complet avec des capacités avancées
  • gpt-5-mini : Alternative rentable avec de bonnes performances
  • gpt-5-nano : Variante la plus petite/rapide pour les tâches simples

Série GPT-4o

  • gpt-4o : Modèle multimodal avec capacités de vision
  • gpt-4-turbo : Variante rapide de GPT-4

Série GPT-4

  • gpt-4 : Modèle GPT-4 original

Structure de Requête de Base

{
  model: string,              // Modèle à utiliser (ex. "gpt-5")
  messages: Message[],        // Historique de la conversation
  reasoning_effort?: string,  // GPT-5 uniquement : "minimal" | "low" | "medium" | "high"
  verbosity?: string,         // GPT-5 uniquement : "low" | "medium" | "high"
  temperature?: number,       // NON supporté par GPT-5
  max_tokens?: number,        // Nombre maximum de tokens à générer
  stream?: boolean,           // Activer le streaming
  tools?: Tool[],             // Outils d'appel de fonctions
}

Structure de Réponse

{
  id: string,                 // ID de completion unique
  object: "chat.completion",
  created: number,            // Timestamp Unix
  model: string,              // Modèle utilisé
  choices: [{
    index: number,
    message: {
      role: "assistant",
      content: string,        // Texte généré
      tool_calls?: ToolCall[] // Si appel de fonction
    },
    finish_reason: string     // "stop" | "length" | "tool_calls"
  }],
  usage: {
    prompt_tokens: number,
    completion_tokens: number,
    total_tokens: number
  }
}

Rôles des Messages et Conversations Multi-tours

Trois rôles : system (comportement), user (entrée), assistant (réponses du modèle).

Important : L'API est sans état - envoyez l'historique complet de la conversation à chaque requête. Pour les conversations avec état, utilisez le skill openai-responses.


Modèles de la Série GPT-5

Les modèles GPT-5 (sortie août 2025) introduisent des contrôles de raisonnement et de verbosité :

GPT-5.1 (Sortie le 13 novembre 2025)

Dernier modèle avec des améliorations majeures :

  • gpt-5.1 : Raisonnement adaptatif qui fait varier dynamiquement le temps de réflexion
  • Mise en cache étendue des prompts sur 24 heures : Requêtes de suivi plus rapides à moindre coût
  • Nouveaux outils développeur : apply_patch (édition de code), shell (exécution de commandes)

CHANGEMENT IMPORTANT : GPT-5.1 utilise par défaut reasoning_effort: 'none' (contrairement à GPT-5 qui utilise 'medium'). Mettez à jour votre code lors de la migration !

Paramètre reasoning_effort

Contrôle la profondeur de réflexion (disponible sur GPT-5 et GPT-5.1) :

  • "none" : Aucun raisonnement (le plus rapide, latence la plus faible) - Valeur par défaut de GPT-5.1
  • "minimal" : Réponses rapides, réflexion minimale
  • "low" : Raisonnement de base
  • "medium" : Raisonnement équilibré - Valeur par défaut de GPT-5
  • "high" : Raisonnement profond pour les problèmes complexes
// GPT-5.1 sans raisonnement (rapide)
const completion = await openai.chat.completions.create({
  model: 'gpt-5.1',
  messages: [{ role: 'user', content: 'Requête simple' }],
  // reasoning_effort: 'none' est la valeur implicite par défaut pour GPT-5.1
});

// GPT-5.1 avec raisonnement élevé (tâches complexes)
const completion = await openai.chat.completions.create({
  model: 'gpt-5.1',
  messages: [{ role: 'user', content: 'Résolvez ce problème mathématique complexe...' }],
  reasoning_effort: 'high',
});

Paramètre verbosity

Contrôle le niveau de détail de la sortie (GPT-5/GPT-5.1) :

  • "low" : Concis
  • "medium" : Équilibré (par défaut)
  • "high" : Verbeux

Limitations de GPT-5

NON Supporté :

  • ❌ Paramètres temperature, top_p, logprobs
  • ❌ Chaîne de pensée avec état entre les tours

Alternatives : Utilisez GPT-4o pour temperature/top_p, ou le skill openai-responses pour le raisonnement avec état


Modèles de Streaming

Activez avec stream: true pour une livraison token par token.

SDK Node.js

const stream = await openai.chat.completions.create({
  model: 'gpt-5.1',
  messages: [{ role: 'user', content: 'Écris un poème' }],
  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: 'Écris un poème' }],
    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) {
        // Ignorer les JSON invalides
      }
    }
  }
}

Format Server-Sent Events (SSE) :

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

Points Clés**: Gérez les chunks incomplets, le signal [DONE] et les JSON invalides avec élégance.


Appel de Fonctions

Définissez des outils avec un schéma JSON, le modèle les invoque en fonction du contexte.

Définition de l'Outil et Requête

const tools = [{
  type: 'function',
  function: {
    name: 'get_weather',
    description: 'Obtenir la météo actuelle pour un lieu',
    parameters: {
      type: 'object',
      properties: {
        location: { type: 'string', description: 'Nom de la ville' },
        unit: { type: 'string', enum: ['celsius', 'fahrenheit'] }
      },
      required: ['location']
    }
  }
}];

const completion = await openai.chat.completions.create({
  model: 'gpt-5.1',
  messages: [{ role: 'user', content: 'Quel temps fait-il à SF ?' }],
  tools: tools,
});

Gérer les Appels d'Outils

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);

    // Envoyer le résultat au modèle
    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,
    });
  }
}

Modèle de boucle**: Continuez à appeler l'API jusqu'à ce qu'il n'y ait plus de tool_calls dans la réponse.


Sorties Structurées

Les sorties structurées vous permettent d'appliquer une validation de schéma JSON sur les réponses du modèle.

Utilisation d'un Schéma JSON

const completion = await openai.chat.completions.create({
  model: 'gpt-4o', // Remarque : Les sorties structurées sont mieux supportées sur GPT-4o
  messages: [
    { role: 'user', content: 'Génère un profil de personne' }
  ],
  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: "Alice", age: 28, skills: ["TypeScript", "React"] }

Mode JSON (Simple)

Pour les cas d'utilisation plus simples sans validation stricte du schéma :

const completion = await openai.chat.completions.create({
  model: 'gpt-5',
  messages: [
    { role: 'user', content: 'Liste 3 langages de programmation au format JSON' }
  ],
  response_format: { type: 'json_object' }
});

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

Important : Lorsque vous utilisez response_format, incluez "JSON" dans votre prompt pour guider le modèle.


Vision (GPT-4o)

GPT-4o prend en charge la compréhension d'images en plus du texte.

Image via URL

const completion = await openai.chat.completions.create({
  model: 'gpt-4o',
  messages: [
    {
      role: 'user',
      content: [
        { type: 'text', text: 'Qu'y a-t-il dans cette image ?' },
        {
          type: 'image_url',
          image_url: {
            url: 'https://example.com/image.jpg'
          }
        }
      ]
    }
  ]
});

Image via 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: 'Décris cette image en détail' },
        {
          type: 'image_url',
          image_url: {
            url: `data:image/jpeg;base64,${base64Image}`
          }
        }
      ]
    }
  ]
});

Images Multiples

const completion = await openai.chat.completions.create({
  model: 'gpt-4o',
  messages: [
    {
      role: 'user',
      content: [
        { type: 'text', text: 'Compare ces deux images' },
        { type: 'image_url', image_url: { url: 'https://example.com/image1.jpg' } },
        { type: 'image_url', image_url: { url: 'https://example.com/image2.jpg' } }
      ]
    }
  ]
});

API Embeddings

Point de terminaison : POST /v1/embeddings

Convertissez du texte en vecteurs pour la recherche sémantique et le RAG.

Modèles

  • text-embedding-3-large : 3072 dimensions (personnalisables : 256-3072), la plus haute qualité
  • text-embedding-3-small : 1536 dimensions (personnalisables : 256-1536), rentable, recommandé

Requête de Base

const embedding = await openai.embeddings.create({
  model: 'text-embedding-3-small',
  input: 'La nourriture était délicieuse.',
});
// Retourne : { data: [{ embedding: [0.002, -0.009, ...] }] }

Dimensions Personnalisées (Spécifique à OpenAI)

const embedding = await openai.embeddings.create({
  model: 'text-embedding-3-small',
  input: 'Texte d\'exemple',
  dimensions: 256, // Réduit de la valeur par défaut 1536
});

Avantages : Réduction de stockage de 4 à 12 fois, recherche plus rapide, perte de qualité minimale.

Traitement par Lots

const embeddings = await openai.embeddings.create({
  model: 'text-embedding-3-small',
  input: ['Premier doc', 'Deuxième doc', 'Troisième doc'],
});

Limites : 8192 tokens/entrée, 300k tokens au total sur le lot, 2048 taille de tableau maximum.

Points Clés : Utilisez des dimensions personnalisées pour l'efficacité, traitez par lots jusqu'à 2048 documents, mettez en cache les embeddings (déterministes).


API Images

Génération d'Images (DALL-E 3)

Point de terminaison : POST /v1/images/generations

const image = await openai.images.generate({
  model: 'dall-e-3',
  prompt: 'Un chat siamois blanc aux yeux bleus frappants',
  size: '1024x1024', // Aussi : 1024x1536, 1536x1024, 1024x1792, 1792x1024
  quality: 'standard', // ou 'hd'
  style: 'vivid', // ou 'natural'
});

console.log(image.data[0].url);
console.log(image.data[0].revised_prompt); // DALL-E 3 peut réviser pour des raisons de sécurité

Spécificités de DALL-E 3 :

  • Supporte uniquement n: 1 (une image par requête)
  • Peut réviser les prompts pour des raisons de sécurité/qualité (vérifiez revised_prompt)
  • Les URL expirent en 1 heure (utilisez response_format: 'b64_json' pour obtenir les données brutes)

Édition d'Images (GPT-Image-1)

const edit = await openai.images.edit({
  model: 'gpt-image-1',
  image: fs.createReadStream('./cat.png'),
  prompt: 'Ajoute un chapeau de fête au chat',
  mask: fs.createReadStream('./mask.png'), // Zone à éditer (optionnel)
});

Modèles : gpt-image-1

Points Clés : 1 image par requête, visionnage ou masque partiel, préférez la sortie b64_json pour la persistance.


API Audio

Transcription (Whisper)

Point de terminaison : POST /v1/audio/transcriptions

import fs from 'fs';

const transcription = await openai.audio.transcriptions.create({
  model: 'whisper-1',
  file: fs.createReadStream('./audio.mp3'),
  language: 'fr', // Optionnel (code ISO 639-1)
  response_format: 'text', // 'text', 'srt', 'vtt', 'json'
  timestamp_granularities: ['segment'], // Pour horodatage
});
console.log(transcription);

Formats supportés : flac, mp3, mp4, mpeg, mpga, m4a, ogg, wav, webm

Limites : Taille de fichier jusqu'à 25 Mo

Prix : 0,006 $/minute (Whisper)

Synthèse Vocale (TTS)

Point de terminaison : POST /v1/audio/speech

const speech = await openai.audio.speech.create({
  model: 'tts-1', // ou 'tts-1-hd' (qualité supérieure)
  voice: 'alloy', // alloy, echo, fable, onyx, nova, shimmer, ash, ballad, coral, sage, verse
  input: 'Bonjour, comment puis-je vous aider aujourd\'hui ?',
  speed: 1.0, // 0.25 à 4.0
  response_format: 'mp3', // mp3, opus, aac, flac, pcm, wav
});

const buffer = Buffer.from(await speech.arrayBuffer());
fs.writeFileSync('./speech.mp3', buffer);

8 Voix : alloy, echo, fable, onyx, nova, shimmer

3 Voix Supplémentaires (octobre 2025) : ash, ballad, coral, sage, verse

Prix : 0,015 $/1 000 caractères (tts-1), 0,030 $/1 000 caractères (tts-1-hd)


API Moderation

Point de terminaison : POST /v1/moderations

Vérifiez le contenu par rapport à 11 catégories de sécurité.

Requête de Base

const moderation = await openai.moderations.create({
  model: 'omni-moderation-latest', // Recommandé
  input: 'Je veux faire du mal à quelqu\'un',
});

console.log(moderation.results[0].flagged); // true
console.log(moderation.results[0].categories);
// {
//   harassment: true,
//   harassment/threatening: true,
//   violence: true,
//   violence/graphic: false,
//   ... etc
// }

11 Catégories de Sécurité

CatégorieDescription
harassmentContenu harcelant
harassment/threateningHarcèlement menaçant
hateDiscours haineux
hate/threateningDiscours haineux menaçant
illicitContenu illicite
illicit/violentContenu illicite violent
self-harmAutomutilation
self-harm/instructionsInstructions d'automutilation
sexualContenu sexuel
sexual/minorsContenu sexuel impliquant des mineurs
violenceViolence
violence/graphicViolence graphique

Traitement par Lots

const moderation = await openai.moderations.create({
  input: ['Contenu A', 'Contenu B'],
});

for (const result of moderation.results) {
  console.log(result.flagged);
}

Points Clés : Utilisez comme outil de sécurité/filtrage, traitez par lots pour l'efficacité, incluez dans les flux de modération de contenu.


Gestion des Erreurs

Erreurs Courantes et Solutions

CodeErreurCauseSolution
401Invalid AuthenticationClé API manquante/invalideVérifiez OPENAI_API_KEY
429Rate Limit ReachedTrop de requêtesImplémentez backoff exponentiel
500Server ErrorProblème serveur OpenAIRéessayez après délai
400Bad RequestCorps de requête invalideValidez la structure JSON
404Not FoundPoint de terminaison/modèle inexistantVérifiez l'URL/nom du modèle
413Request Too LargePayload trop volumineuxRéduisez la taille d'entrée
422Unprocessable EntityParamètres incompatiblesEx. temperature avec GPT-5

Modèle de Backoff Exponentiel

async function withRetry<T>(
  fn: () => Promise<T>,
  maxRetries = 3
): Promise<T> {
  for (let i = 0; i < maxRetries; i++) {
    try {
      return await fn();
    } catch (error) {
      if (error instanceof OpenAI.APIError) {
        if (error.status === 429 || error.status >= 500) {
          if (i === maxRetries - 1) throw error;
          const delay = Math.pow(2, i) * 1000;
          console.log(`Nouvelle tentative après ${delay}ms...`);
          await new Promise(resolve => setTimeout(resolve, delay));
          continue;
        }
      }
      throw error;
    }
  }
  throw new Error('Échec après tentatives');
}

Pièges Courants par Catégorie d'API

Pour chaque catégorie d'API, voici les pièges les plus fréquents, regroupez-les par fonctionnalité de base :

Chat Completions

  • tools mal formaté (structure incorrecte)
  • response_format manquant lors de l'utilisation de sorties structurées
  • Inclure un message système lors de l'utilisation de json_object

Embeddings

  • Mélanger les modèles d'embedding (vecteurs de dimensions différentes)
  • Division incorrecte des documents (perte de contexte)
  • Oublier de valider la longueur du texte d'entrée

Audio & Images

  • Fichiers audio trop volumineux (>25 Mo) → Divisez
  • Oublier de spécifier response_format lors de l'exportation
  • Req uêter avec plusieurs images simultanément (non pris en charge)

Limites de Débit

Seuils Actuels (à partir de 2026)

  • GPT-4o : 10 000 000 TPM (tokens par minute) / 5 000 000 RPM (requêtes par minute)
  • GPT-5/GPT-5.1 : Varie selon le niveau, vérifiez la console OpenAI
  • text-embedding-3-small : 5 000 000 TPM / 10 000 RPM
  • text-embedding-3-large : 5 000 000 TPM / 10 000 RPM (identique)
  • DALL-E 3 : 5 images/heure (Tier 1) à 60 images/heure (grille tarifaire payante)
  • Whisper : 50 Mo/min (basé sur la taille du fichier)
  • TTS : 15 000 RPM (requêtes par minute)
  • Moderation : 30 000 RPM (requêtes par minute)

Points Clés : TPM ≠ RPM, limite de modèle partagée avec tous les points de terminaison, les comptes multiclé n'augmentent pas les limites, demandez une augmentation manuellement via la console OpenAI. Surveillez via les en-têtes de réponse : x-ratelimit-limit-requests, x-ratelimit-remaining-tokens.


Bonnes Pratiques de Production

Optimisations Clés

  1. Mise en cache des Embeddings : Les embeddings sont déterministes, mettez-les en cache pour éviter les appels redondants.
  2. Traitement par Lots : Traitez les embeddings par lots jusqu'à 2 048 entrées maximum par appel.
  3. Dimensions Personnalisées : Utilisez des dimensions d'embedding réduites (par exemple, 256 au lieu de 1536) pour des vitesses de recherche plus rapides et un stockage plus faible.
  4. Réessais : Implémentez un backoff exponentiel avec gigue pour la gestion des limites de débit et des erreurs serveur.
  5. Surveillance : Suivez l'utilisation des tokens, les taux d'erreur et la latence via la console OpenAI ou un outil externe.
  6. Securité : Ne partagez jamais les clés API, faites toujours référence via des variables d'environnement.
  7. File d'Attente : Utilisez une file d'attente ou un pool de promesses pour des limites d'API élevées.

Pièges Courants

  • Consommation de Tokens Vérifiée : Vérifiez l'utilisation des tokens via response.usage.total_tokens pour éviter les dépassements de coûts.
  • Délais d'Attente : Définissez des délais d'attente (par exemple, 30 s) pour les appels API longs.
  • Version des Modèles : Utilisez des modèles spécifiques (ex. gpt-5.1) pour éviter les mises à jour .

Relation avec openai-responses

openai-responses est un skill distinct qui implémente l'API responses d'OpenAI — une abstraction de plus haut niveau gérant automatiquement l'historique des conversations (avec état), les suivis et les appels de fonctions de manière persistante. Il construit sur l'API Chat Completions présentée ici, mais ajoute une couche de gestion de session.

Quand utiliser ce skill (stateless) vs openai-responses (stateful) :

  • Utilisez ce skill (API Chat Completions) lorsque vous avez besoin d'un contrôle total sur les messages envoyés, la configuration du modèle, et que vous gérez vous-même l'état.
  • Utilisez openai-responses lorsque vous voulez une abstraction "agent-like" avec gestion automatique de l'historique, des rappels, et des capacités de recherche.

Les deux peuvent coexister dans un projet : utilisez openai-responses pour le chat avec état et ce skill pour les appels directs à l'API Embeddings, Images, Audio et Moderation.


Ce guide est régulièrement mis à jour pour refléter les dernières modifications de l'API OpenAI.

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 associés