🚀 Codex est le nouvel outil CLI open source d'OpenAI pour les agents locaux. Cinq jours seulement après sa sortie, je me suis lancé pour explorer comment l'améliorer. Dans cet article, je vous explique comment j'ai connecté Codex à Uniflow pour automatiser la compréhension et la synthèse du code.
✨ Qu'est-ce que Codex ?
Codex vous permet de poser des questions sur votre code via le terminal. Installez-le avec :
npm install -g openai/codex
Ensuite, vous pouvez exécuter des invites telles que :
codex -q --json "explain utils.ts"
Cet exemple est l'un des cas d'utilisation officiels publiés par OpenAI sur leur dépôt GitHub.
⚖️ Pourquoi l'automatiser avec Uniflow ?
Je ne voulais pas simplement exécuter des commandes manuellement. Je voulais industrialiser l'interaction et faire de Codex un outil appelable dans Uniflow. Cela permet à ChatGPT de déléguer l'exécution à Codex et de renvoyer des informations lisibles par l'utilisateur.
🌍 Création du workflow
Dans Uniflow, j'ai créé un nouveau projet appelé « AskCodex ». À l'aide du client Node d'Uniflow, j'ai structuré le workflow comme suit :
-
Définir « OPENAI_API_KEY » comme variable d'environnement
-
Définir une invite personnalisée, telle que : « Utiliser Codex pour expliquer utils.ts »
-
Enregistrer « runCodex » comme outil dans la requête ChatGPT
-
Demander à ChatGPT d'appeler « runCodex » avec l'invite
-
Exécuter l'outil CLI via le pont batch d'Uniflow
-
Résumer la sortie de Codex avec un deuxième appel à ChatGPT
🦄 Exemple de sortie
Lors de mon test, Codex a lu et expliqué « utils.ts » avec succès. Il a identifié des fonctions d'assistance telles que :
-
sleep() – crée un délai
-
isNil() – renvoie true pour null ou undefined
-
saveAsJSON() – gère la persistance des objets
Après l'exécution de l'outil, ChatGPT fournit un résumé clair du fichier.
🌧 Limitations et perspectives
❌ Actuellement, Codex ne conserve pas le contexte entre les appels. Il serait formidable de disposer d'un mode API interactif persistant permettant au modèle de poser des questions de clarification.
🧠 En attendant, nous simulons l'interactivité avec Uniflow en fournissant à nouveau des informations supplémentaires à GPT.
🏫 Exécutez-le vous-même
Si vous souhaitez tester localement :
npm install -g openai/codex export OPENAI_API_KEY=your_key codex -q "explain utils.ts" --json
🔥 Essayez l'automatisation complète
Pour reproduire ce que j'ai fait dans cette vidéo, exécutez votre propre flux dans Uniflow à l'aide de son client Node. Mon exemple utilise l'interface CLI + l'API Docker et se connecte à Uniflow localement sur le port 9016.
Voici les ressources utilisées :
Flux :
-
Objet Variable : env = { openai_api_key: sk-proj-YXoiO9CU-*** }
-
Texte Variable : codex_prompt = Utilisez l'outil Codex et demandez-lui d'expliquer utils.ts
-
Fonction Code :
// Tool function to run Codex CLI function runCodex(prompt) { console.log(`?️ Running Codex with prompt:\n${prompt}`); try { const sanitizedPrompt = prompt.replace(/"/g, '\\"'); const command = `OPENAI_API_KEY=${env.openai_api_key} codex -q "${sanitizedPrompt}" --json`; const output = Bash.exec(command, { encoding: 'utf-8' }); return output; } catch (error) { return 'Codex error: ' + (error.stderr || error.message); } } // Function to call ChatGPT with fetch function askChatGPT(prompt) { console.log(`? Asking ChatGPT:\n${prompt}`); return 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-4', tools: [ { type: 'function', function: { name: 'runCodex', description: 'Executes Codex CLI with a given prompt', parameters: { type: 'object', properties: { prompt: { type: 'string', description: 'Prompt to send to Codex CLI' } }, required: ['prompt'] } } } ], messages: [ { role: 'system', content: 'You are an automation assistant that can call a custom CLI tool named "codex".' }, { role: 'user', content: prompt } ] }) }); } // Full flow execution askChatGPT(codex_prompt) .then(res => res.json()) .then(data => { const toolCalls = data.choices?.[0]?.message?.tool_calls || []; if (toolCalls.length === 0) { console.log('ℹ️ No tool calls detected in the response.'); return Promise.resolve('No output from Codex.'); } const executions = toolCalls.map(call => { if (call.function?.name === 'runCodex') { const args = JSON.parse(call.function.arguments); return runCodex(args.prompt); } return Promise.resolve(null); }); return Promise.all(executions); }) .then(outputs => { const content = outputs.join('\n'); console.log('? Codex Output:\n', content); // Summarize Codex result with ChatGPT return askChatGPT(`Summarize this content:\n\n${content}`); }) .then(res => res.json()) .then(result => { const summary = result.choices?.[0]?.message?.content || '❌ No summary generated.'; console.log('? Final Summary:\n', summary); }) .catch(error => { console.error('❌ Flow error:', error.message); });
📌 Exécuter le flux
Accéder à library/uniflow-client-node
Générer dist/node.js
npm run build:dev
Exécuter le flux avec le client Uniflow Node
node dist/node.js --env=dev --api-key=zxtl1facmgbapyvjg581oip28sinzyr4 ask-codex
👏 Conclusion
Nous avons vu comment Codex peut gagner en puissance lorsqu'il est connecté à un orchestrateur comme Uniflow. Cette combinaison transforme les sorties CLI brutes en résumés automatisés et précis. Idéal pour les pipelines DevOps, d'intégration ou de revue de code.
🚀 Envie de créer vos propres workflows ?i
DJ Matyo Live repost track

Darkwood v1.0.1 release

Transforme ta voix en article de blog avec GPT et Meteor

Darkwood 1.0.0 is Here

Coder comme un DJ, mixer comme un dev

Créer un interpréteur Lambda en PHP

Youtube timestamp looker

Attention is all you need

Création d’un Projet Symfony avec IA : Utilisation de DTO, Flow et RapidAPI

Automatise la création de Vignette Youtube

Wave function collapse

Introduction à Flow

J’ai comparé 38 outils d’automatisation : voici ce que tu dois savoir

Scrape les sites de manière efficace

Automatiser la Création de Screenshots de Code avec Carbon.now

Chunk Computing en PHP

Y-Combinator en PHP

Les Monades et leur utilisation en PHP

Railway Flow Based Programming en PHP

Hello
