Vue normale

Sora ferme - Comment sauvegarder vos vidéos IA avant la coupure

Par : Korben
25 mars 2026 à 15:22

Sora, c’est fini les amis !

Hé oui, cest chacals d'OpenAI ferment leur plateforme de vidéos IA, et franchement, ça me rend un peu triste. À vrai dire, même si c’était que de la vidéo générée à partir de prompts, moi je me marrais bien. C'était fun de regarder le produit de ses prompts mais aussi de regarder les conneries des autres. Les versions québécoises, aïe aïe aïe, c’était quelque chose quand même !

Mais bon, le plus urgent maintenant, c’est de sauvegarder vos vidéos avant que tout disparaisse. OpenAI n’a pas encore communiqué de date précise pour la coupure, juste un vague « on vous dira bientôt ». Du coup, autant ne pas traîner, parce que quand ce genre de service cloud ferme, en général c’est pas 6 mois de préavis qu’on vous file...

Depuis la fuite du modèle jusqu’à aujourd’hui, Sora aura fait parler de lui. Côté raisons, c’est Fidji Simo (la patronne de la division Applications) qui a lâché le morceau : ils éparpillent leurs efforts sur trop d’apps, d’API et de stacks serveur différents, et ça les ralentit. En gros, entre préparer une entrée en bourse pour fin 2026 et cramer du GPU H100 sur des vidéos de chats en IA, le choix est vite fait. L’équipe de recherche Sora, elle, continuera à bosser sur la simulation de mondes 3D... mais pour la robotique. Et le fameux deal à 1 milliard de dollars avec Disney pour des films et séries ? Pouf, magie magie, c'est envolé !!

Faut dire que les chiffres n’étaient pas glorieux non plus. Après un lancement en fanfare fin 2024 (et une app iOS lancée à l’automne 2025 qui avait cartonné dans les charts), les téléchargements sur l’App Store avaient plongé de 32% entre novembre et décembre 2025. La hype, ça dure qu’un temps.

Mais maintenant les gens, on passe aux choses sérieuses !

Sora Backup - le script qui sauve vos vidéos

Je n'avais absolument pas de temps aujourd'hui, mais j'ai quand même taffé pour vous développer un petit script JavaScript qui récupère TOUTES vos vidéos Sora d’un coup, avec les prompts et les métadonnées, et qui vous génère un joli ZIP prêt à archiver. Pas besoin d’installer quoi que ce soit, pas d’extension louche. Vous avez juste besoin d'être connecté à votre profil Sora et d'un navigateur.

Comment ça marche

Allez sur sora.com , connectez-vous à votre compte, puis ouvrez la console JavaScript de votre navigateur (F12 sur Chrome ou Firefox, onglet Console). Ensuite, glissez-déplacez ou collez le script ci-dessous dedans et appuyez sur Entrée.

Le script va automatiquement récupérer votre token d’authentification (pas besoin de le chercher vous-même), puis il va paginer sur votre profil Sora pour récupérer tous vos posts publiés. Pour chaque post, il extrait les vidéos attachées (MP4), les télécharge, et empaquette le tout dans un fichier ZIP directement dans votre navigateur.

Y’a même un fichier manifest.json dans le ZIP qui contient tous vos prompts, les dimensions, les durées, les permalinks, les dates de création... bref, tout ce qu’il faut pour retrouver vos petits. Le ZIP est généré en format STORE (pas compressé, parce que compresser du MP4 ça sert à rien), avec un calcul CRC32 maison et sans aucune librairie externe.

Le script complet

Voici le code à coller dans la console :

// ==========================================================
// SORA BACKUP - Sauvegarde complète vidéos + images + prompts par Korben
// ==========================================================
// Usage : Ouvrir https://sora.com, F12 > Console, coller ce script
// Les fichiers sont téléchargés via le navigateur (dossier Downloads)
// Un fichier manifest.json récapitule tout (prompts, metadata, URLs)
// ==========================================================

(async () => {
 // --- Mini ZIP builder (STORE, pas de lib externe) ---
 const crc32table = new Uint32Array(256);
 for (let i = 0; i < 256; i++) {
 let c = i;
 for (let j = 0; j < 8; j++) c = (c & 1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1);
 crc32table[i] = c;
 }
 function crc32(buf) {
 let c = 0xFFFFFFFF;
 for (let i = 0; i < buf.length; i++) c = crc32table[(c ^ buf[i]) & 0xFF] ^ (c >>> 8);
 return (c ^ 0xFFFFFFFF) >>> 0;
 }
 const zipFiles = []; // {name, data (Uint8Array), crc, size}

 const PAGE_SIZE = 50;
 const DELAY_MS = 1500;
 const manifest = [];
 let totalDownloaded = 0;
 let totalErrors = 0;

 // --- Auth : récupérer le Bearer token ---
 // OPTION 1 : Coller ton token ici (Network tab > Authorization header)
 // OPTION 2 : Laisser vide, le script tentera de le récupérer auto
 let AUTH_TOKEN = '';

 async function getAuthToken() {
 if (AUTH_TOKEN) return AUTH_TOKEN;

 // Auto-detect : endpoint session ChatGPT
 for (const path of ['/api/auth/session', '/backend-api/auth/session']) {
 try {
 const r = await fetch(path, { credentials: 'include' });
 if (r.ok) {
 const json = await r.json();
 if (json.accessToken) {
 AUTH_TOKEN = json.accessToken;
 console.log(' 🔑 Token récupéré automatiquement');
 return AUTH_TOKEN;
 }
 }
 } catch(e) {}
 }

 // Fallback : demander à l'utilisateur
 const input = prompt(
 'Token non trouvé automatiquement.\n\n' +
 'Pour le récupérer :\n' +
 '1. F12 > onglet Réseau\n' +
 '2. Rafraîchis la page\n' +
 '3. Clique sur une requête /backend/...\n' +
 '4. Copie le header Authorization\n\n' +
 'Colle le token ici (Bearer eyJ...):'
 );
 if (input) {
 AUTH_TOKEN = input.replace(/^Bearer\s+/i, '').trim();
 return AUTH_TOKEN;
 }

 console.error(' ❌ Pas de token. Annulation.');
 return null;
 }

 // --- Fetch API avec auth ---
 async function apiFetch(url) {
 const token = await getAuthToken();
 const headers = {};
 if (token) headers['Authorization'] = 'Bearer ' + token;

 // oai-device-id requis par certains endpoints
 const deviceId = localStorage.getItem('oai-did') || '';
 if (deviceId) headers['oai-device-id'] = deviceId;

 const resp = await fetch(url, {
 method: 'GET',
 credentials: 'include',
 headers
 });

 if (!resp.ok) throw new Error(`HTTP ${resp.status} for ${url}`);
 return resp.json();
 }

 // --- Pagination générique ---
 async function fetchAllPages(baseUrl, dataField = 'data', cursorParam = 'after', cursorField = 'last_id') {
 let allItems = [];
 let cursor = '';
 let page = 0;

 while (true) {
 let url = baseUrl;
 if (cursor) url += `&${cursorParam}=${cursor}`;

 console.log(` 📄 Page ${++page} (${allItems.length} items so far)...`);
 const json = await apiFetch(url);

 const items = json[dataField];
 if (!Array.isArray(items) || items.length === 0) break;

 allItems = allItems.concat(items);
 cursor = json[cursorField] || '';

 if (!json.has_more && !cursor) break;
 await sleep(DELAY_MS);
 }

 return allItems;
 }

 // Variante pour les endpoints project_y (cursor-based)
 async function fetchAllPagesCursor(baseUrl) {
 let allItems = [];
 let cursor = '';
 let page = 0;

 while (true) {
 let url = baseUrl;
 if (cursor) url += `&cursor=${cursor}`;

 console.log(` 📄 Page ${++page} (${allItems.length} items so far)...`);
 const json = await apiFetch(url);

 const items = json.items;
 if (!Array.isArray(items) || items.length === 0) break;

 allItems = allItems.concat(items);
 cursor = json.cursor || '';

 if (!cursor) break;
 await sleep(DELAY_MS);
 }

 return allItems;
 }

 function sleep(ms) { return new Promise(r => setTimeout(r, ms)); }

 // --- Extraire URL du média depuis une generation ---
 function getMediaUrl(gen) {
 return gen?.encodings?.source?.path
 || gen?.downloadable_url
 || gen?.url
 || '';
 }

 // --- Extraire le prompt (peut être dans actions, prompt, ou input_text) ---
 function getPrompt(item, gen) {
 // Prompt direct
 if (gen?.prompt) return gen.prompt;
 if (item?.prompt) return item.prompt;
 if (item?.input_text) return item.input_text;
 // Storyboard : les actions sont les descriptions des scènes
 if (item?.actions && typeof item.actions === 'object') {
 return Object.entries(item.actions)
 .sort((a,b) => Number(a[0]) - Number(b[0]))
 .map(([frame, desc]) => `[frame ${frame}] ${desc}`)
 .join(' | ');
 }
 if (gen?.actions && typeof gen.actions === 'object') {
 return Object.entries(gen.actions)
 .sort((a,b) => Number(a[0]) - Number(b[0]))
 .map(([frame, desc]) => `[frame ${frame}] ${desc}`)
 .join(' | ');
 }
 return '';
 }

 // --- Dérouler les items du profil Sora en items plats ---
 function flattenProfileItems(items) {
 const flat = [];
 for (const item of items) {
 const post = item.post || item;
 const attachments = post.attachments || [];
 if (attachments.length === 0) continue;

 for (const att of attachments) {
 const url = att.encodings?.source?.path || att.downloadable_url || att.url || '';
 if (!url) continue;

 flat.push({
 id: post.id || att.generation_id || '',
 generation_id: att.generation_id || '',
 task_id: att.task_id || '',
 title: att.title || post.discovery_phrase || '',
 prompt: post.text || '',
 emoji: post.emoji || '',
 type: att.generation_type || att.kind || '',
 width: att.width || 0,
 height: att.height || 0,
 duration_s: att.duration_s || 0,
 is_public: !!post.posted_to_public,
 created_at: post.posted_at ? new Date(post.posted_at * 1000).toISOString() : '',
 url: url,
 permalink: post.permalink || '',
 username: item.profile?.username || '',
 });
 }
 }
 return flat;
 }

 // --- Sanitize filename ---
 function sanitize(name) {
 return name.replace(/[<>:"\/\\|?*\x00-\x1f]/g, '_').substring(0, 100);
 }

 // --- Ajouter un fichier au ZIP ---
 async function addToZip(url, filename) {
 try {
 const resp = await fetch(url);
 if (!resp.ok) throw new Error(`HTTP ${resp.status}`);
 const buf = await resp.arrayBuffer();
 const data = new Uint8Array(buf);
 zipFiles.push({ name: filename, data, crc: crc32(data), size: data.length });
 totalDownloaded++;
 return true;
 } catch(e) {
 console.warn(` ⚠️ Erreur ${filename}:`, e.message);
 totalErrors++;
 return false;
 }
 }

 // --- Déduire l'extension ---
 function getExt(url, type) {
 if (!url) return type === 'video' ? '.mp4' : '.png';
 const m = url.match(/\.(mp4|webm|mov|png|jpg|jpeg|webp|gif)/i);
 return m ? '.' + m[1].toLowerCase() : (type === 'video' ? '.mp4' : '.png');
 }

 // ==========================================================
 // MAIN
 // ==========================================================
 const origin = window.location.origin;
 console.log('🎬 SORA BACKUP - Démarrage');
 console.log('='.repeat(50));

 // 1. Mes posts Sora (profil)
 console.log('\n📦 1/2 - Récupération de mes posts Sora...');
 let myPosts = [];
 try {
 myPosts = await fetchAllPagesCursor(
 `${origin}/backend/project_y/profile_feed/me?limit=${PAGE_SIZE}&cut=nf2`
 );
 console.log(`  ${myPosts.length} posts de profil`);
 // Debug premier item
 if (myPosts.length > 0) {
 const first = myPosts[0];
 console.log(' 🔍 Premier item - clés:', Object.keys(first).join(', '));
 console.log(' 🔍 URL:', first.url?.substring(0, 80) || 'none');
 console.log(' 🔍 DL:', first.downloadable_url?.substring(0, 80) || 'none');
 console.log(' 🔍 ENC:', first.encodings?.source?.path?.substring(0, 80) || 'none');
 console.log(' 🔍 GENS:', first.generations?.length || 'none');
 console.log(' 🔍 TITLE:', first.title || 'none');
 }
 } catch(e) {
 console.warn(' ⚠️ profil failed:', e.message);
 }

 // 2. Mes likes sur Sora
 console.log('\n📦 2/2 - Récupération de mes likes Sora...');
 let myLikes = [];
 try {
 myLikes = await fetchAllPagesCursor(
 `${origin}/backend/project_y/profile_feed/me?limit=${PAGE_SIZE}&cut=appearances`
 );
 if (myCameos.length) console.log(`  ${myCameos.length} cameos trouvés`);
 } catch(e) {}

 // --- Dérouler les generations et dédupliquer ---
 console.log('\n🔄 Extraction des vidéos...');
 const rawAll = [...myPosts, ...myLikes];
 const flatItems = flattenProfileItems(rawAll);

 const seen = new Set();
 const allItems = [];
 for (const item of flatItems) {
 if (item.id && seen.has(item.id)) continue;
 // Filtrer : vidéos uniquement
 const isVideo = item.type === 'video_gen' || item.url.includes('/videos/') || item.url.includes('.mp4');
 if (!isVideo) continue;
 if (item.id) seen.add(item.id);
 allItems.push(item);
 }

 console.log(`📊 Total unique: ${allItems.length} vidéos à télécharger`);
 console.log('='.repeat(50));

 // --- Construire le manifest et télécharger ---
 console.log('\n⬇️ Téléchargement en cours...');
 console.log('(Les fichiers arrivent dans ton dossier Downloads)');

 for (let i = 0; i < allItems.length; i++) {
 const meta = allItems[i];
 const url = meta.url;

 if (!url) {
 console.log(` ⏭️ [${i+1}/${allItems.length}] ${meta.id} - pas d'URL, skip`);
 meta.downloaded = false;
 manifest.push(meta);
 continue;
 }

 const type = (meta.task_type === 'image_gen' || url.match(/\.(png|jpg|jpeg|webp|gif)/i)) ? 'image' : 'video';
 const ext = getExt(url, type);
 const nameBase = meta.title
 ? sanitize(meta.title)
 : (meta.prompt ? sanitize(meta.prompt.substring(0, 60)) : meta.id);
 const filename = `sora_${String(i+1).padStart(4,'0')}_${nameBase}${ext}`;

 console.log(` ⬇️ [${i+1}/${allItems.length}] ${filename}`);
 meta.filename = filename;
 meta.downloaded = await addToZip(url, filename);
 manifest.push(meta);

 // Pause entre downloads pour pas surcharger
 if (i < allItems.length - 1) await sleep(800);
 }

 // --- Ajouter le manifest au ZIP ---
 console.log('\n📝 Ajout du manifest au ZIP...');
 const manifestData = new TextEncoder().encode(JSON.stringify(manifest, null, 2));
 zipFiles.push({ name: 'manifest.json', data: manifestData, crc: crc32(manifestData), size: manifestData.length });

 // --- Générer le ZIP (format STORE, pas de compression) ---
 console.log('\n📦 Génération du ZIP...');
 const enc = new TextEncoder();
 const blobParts = [];
 const centralParts = [];
 let offset = 0;

 for (const f of zipFiles) {
 const nameBytes = enc.encode(f.name);
 // Local file header (30 bytes + name)
 const lh = new ArrayBuffer(30);
 const lv = new DataView(lh);
 lv.setUint32(0, 0x04034b50, true);
 lv.setUint16(4, 20, true);
 lv.setUint16(8, 0, true); // STORE
 lv.setUint32(14, f.crc, true);
 lv.setUint32(18, f.size, true);
 lv.setUint32(22, f.size, true);
 lv.setUint16(26, nameBytes.length, true);
 blobParts.push(new Uint8Array(lh), nameBytes, f.data);

 // Central directory entry (46 bytes + name)
 const ch = new ArrayBuffer(46);
 const cv = new DataView(ch);
 cv.setUint32(0, 0x02014b50, true);
 cv.setUint16(4, 20, true);
 cv.setUint16(6, 20, true);
 cv.setUint16(10, 0, true); // STORE
 cv.setUint32(16, f.crc, true);
 cv.setUint32(20, f.size, true);
 cv.setUint32(24, f.size, true);
 cv.setUint16(28, nameBytes.length, true);
 cv.setUint32(42, offset, true);
 centralParts.push(new Uint8Array(ch), nameBytes);

 offset += 30 + nameBytes.length + f.size;
 }

 const centralSize = centralParts.reduce((s, p) => s + p.length, 0);
 const eocd = new ArrayBuffer(22);
 const ev = new DataView(eocd);
 ev.setUint32(0, 0x06054b50, true);
 ev.setUint16(8, zipFiles.length, true);
 ev.setUint16(10, zipFiles.length, true);
 ev.setUint32(12, centralSize, true);
 ev.setUint32(16, offset, true);

 const zipBlob = new Blob([...blobParts, ...centralParts, new Uint8Array(eocd)], { type: 'application/zip' });

 const zipName = `sora_backup_${new Date().toISOString().split('T')[0]}.zip`;
 const a = document.createElement('a');
 a.href = URL.createObjectURL(zipBlob);
 a.download = zipName;
 document.body.appendChild(a);
 a.click();
 document.body.removeChild(a);
 URL.revokeObjectURL(a.href);

 // --- Résumé ---
 const sizeMB = (zipBlob.size / 1024 / 1024).toFixed(1);
 console.log('\n' + '='.repeat(50));
 console.log('🎬 SORA BACKUP TERMINÉ');
 console.log(`  Vidéos dans le ZIP : ${totalDownloaded}`);
 console.log(`  Erreurs : ${totalErrors}`);
 console.log(` 📦 Fichier : ${zipName} (${sizeMB} MB)`);
 console.log(` 📝 manifest.json inclus dans le ZIP`);
 console.log('='.repeat(50));
})();

Quelques précisions

Si le token n’est pas récupéré automatiquement (ça peut arriver selon votre config), le script vous demandera de le coller manuellement. Pour le trouver, c’est simple : F12 > onglet Réseau > rafraîchissez la page > cliquez sur n’importe quelle requête vers /backend/... > copiez le header Authorization.

D’ailleurs, si la vidéo IA vous branche toujours, Higgsfield propose des séries entièrement générées par IA. C’est pas la même approche que Sora, mais c’est un signe que la vidéo IA ne meurt pas avec la fermeture d’un seul service.

Bon, bref, c’est la fin d’un truc sympa. Moi je préférais largement scroller sur Sora sur d'aller sur TikTok ou Instagram parce qu'au moins c'était drôle !

Merci à mes Patreons qui me permettent de prendre le temps de développer ce genre de petits outils pour vous. Sans eux, j’aurais jamais pu me poser une après-midi pour coder ça.

Source

ChatGPT : L’onglet Librairie qui transforme l’IA en véritable espace de travail

C’est une petite évolution en apparence, mais elle corrige l’une des frictions les plus agaçantes de ChatGPT au quotidien. OpenAI déploie désormais deux nouvelles briques de gestion documentaire : un menu Fichiers récents dans la barre de pièces jointes, et un onglet Librairie sur le Web. L’objectif est clair : sortir les fichiers de l’enfermement conversationnel qui […]

L’article ChatGPT : L’onglet Librairie qui transforme l’IA en véritable espace de travail est apparu en premier sur BlogNT : le Blog des Nouvelles Technologies.

ChatGPT Shopping : OpenAI abandonne le paiement direct pour la découverte

OpenAI voulait faire de ChatGPT bien plus qu’un assistant conversationnel : une nouvelle porte d’entrée vers le shopping en ligne. Mais, la promesse d’un achat directement intégré au chatbot, encore mise en avant il y a quelques mois, semble déjà perdre de son élan. Cette semaine, l’entreprise a officialisé un changement de cap : plutôt que de […]

L’article ChatGPT Shopping : OpenAI abandonne le paiement direct pour la découverte est apparu en premier sur BlogNT : le Blog des Nouvelles Technologies.

💾

Shopping in ChatGPT just got an upgrade. Now, you can browse products visually, compare options side-by-side, and get detailed, up-to-date information—all in...

ChatGPT abandonne ses ambitions d’Amazon : OpenAI revoit sa copie sur le commerce en ligne

25 mars 2026 à 14:00

OpenAI avait nourri une ambition claire : transformer ChatGPT en plateforme d’achat directe, rivalisant avec les géants du e-commerce. Le résultat n’est pas à la hauteur des espérances. La société vient d’annoncer officiellement le recadrage de sa stratégie commerciale, en renonçant à développer davantage sa fonctionnalité de paiement intégrée. Un aveu d’échec relatif, mais aussi ... Lire plus

L'article ChatGPT abandonne ses ambitions d’Amazon : OpenAI revoit sa copie sur le commerce en ligne est apparu en premier sur Fredzone.

Arm Holdings franchit le Rubicon : après 35 ans de licences, le géant des semi-conducteurs produit son propre processeur

25 mars 2026 à 11:00

Pendant près de quatre décennies, Arm Holdings a bâti sa fortune en concédant ses architectures à des tiers — Apple, Nvidia, Qualcomm parmi tant d’autres. Jamais la société britannique n’avait fabriqué de puce sous son propre nom. Ce modèle vient de basculer. Lors d’un événement organisé mardi à San Francisco, Arm a dévoilé l’Arm AGI ... Lire plus

L'article Arm Holdings franchit le Rubicon : après 35 ans de licences, le géant des semi-conducteurs produit son propre processeur est apparu en premier sur Fredzone.

OpenAI abandonne la génération de vidéos (Sora) et perd son deal avec Disney : comment expliquer un tel échec ?

25 mars 2026 à 10:25

Un peu plus d'un an après avoir lancé Sora, son modèle pour générer des vidéos intégré à une application dédiée, OpenAI annonce renoncer à la technologie, qui va même perdre son API. L'entreprise semble vouloir se reconcentrer sur ChatGPT et réduire ses coûts d'exploitation.

OpenAI abandonne Sora : que prépare vraiment l’entreprise pour la vidéo générative ?

25 mars 2026 à 09:54
Sora 2

En un peu plus d'un an d'existence, Sora aura coûté une fortune à OpenAI, mais lui aura rapporté des miettes. L'entreprise a donc décidé de tourner la page : l'application de génération de vidéos disparaît.

OpenAI ferme Sora, son app de vidéo IA, six mois après son lancement

25 mars 2026 à 00:07
Six mois et puis s'en va — OpenAI vient d'annoncer ce mardi 24 mars la fermeture de son application de génération de vidéos par IA Sora, qui se voulait le TikTok de la vidéo IA. Lancée le 30 septembre 2025, l'app aura donc tenu à peine six mois avant de tirer sa révérence. Le TikTok […]

OpenAI arrête Sora, son application qui génère des vidéos IA

24 mars 2026 à 22:31

OpenAI annonce déjà la fin pour Sora, son application qui génère des vidéos par intelligence artificielle, seulement six mois après son lancement. La société n’a pas encore donné une date de fermeture exacte, mais elle promet de préciser rapidement le calendrier de l’application et de l’API, ainsi que …

Lire la suite

Aimez KultureGeek sur Facebook, et suivez-nous sur Twitter

N'oubliez pas de télécharger notre Application gratuite iAddict pour iPhone et iPad (lien App Store)


L’article OpenAI arrête Sora, son application qui génère des vidéos IA est apparu en premier sur KultureGeek.

OpenAI va acheter 5 GW d’électricité nucléaire : on vous explique tout

24 mars 2026 à 12:00
Openai Nucleaire

Les géants de l'IA ont soif d'énergie, et ils sont prêts à parier sur des technologies que l’on ne maîtrise pas encore. OpenAI serait ainsi en négociations avancées pour acheter de l'électricité auprès d'Helion Energy, une startup spécialisée dans la fusion nucléaire. Une ambition portée par des chiffres qui donnent le tournis.

Tokens IA en guise de salaire : tendance prometteuse ou piège bien déguisé pour les ingénieurs ?

23 mars 2026 à 15:00

Une nouvelle pratique de rémunération agite la Silicon Valley depuis quelques semaines. Des entreprises technologiques envisagent désormais d’intégrer des budgets de tokens d’intelligence artificielle dans les packages salariaux de leurs ingénieurs, aux côtés du salaire fixe, des actions et des bonus traditionnels. Ce que certains présentent comme une révolution dans la manière de valoriser les ... Lire plus

L'article Tokens IA en guise de salaire : tendance prometteuse ou piège bien déguisé pour les ingénieurs ? est apparu en premier sur Fredzone.

OpenAI, Anthropic et Perplexity livrent bataille sur la santé

23 mars 2026 à 17:23

OpenAI en janvier, et désormais Perplexity : b.well a fait coup double.

L’un et l’autre ont effectivement fait appel à cet éditeur américain dont la plate-forme centralise les données de santé. En toile de fond, les lancements successifs de ChatGPT Health et Perplexity Health.

Entre-temps, Anthropic a ouvert Claude for Healthcare. Il ne s’appuie pas sur b.well, mais sur un concurrent : HealthEx, que Microsoft a aussi choisi pour Copilot Health.

Des déploiements à (très) petit périmètre

Tous ces services portent la même promesse : contextualiser les conversations dans le domaine de la santé en permettant aux utilisateurs d’intégrer leurs informations personnelles. Parmi elles, les dossiers médicaux électroniques, via b.well et HealthEx… mais uniquement aux États-Unis.

Claude for Healthcare n’est encore officiellement disponible que sur place, en bêta, pour les abonnés aux forfaits Pro et Max. Même périmètre pour Perplexity Health, sur les abonnements du même nom, avec une liste d’attente pour les autres utilisateurs.
ChatGPT Health est plus ouvert sur le papier : tous les forfaits individuels sont concernés, sur l’ensemble des territoires où le chatbot est disponible… sauf dans l’Espace économique européen (+ Suisse et Royaume-Uni).

Outre les dossiers médicaux, il est possible de connecter des applications santé/bien-être.
Perplexity mentionne Fitbit, Google, Clue, Ultrahuman, Withings. Il entend y ajouter ŌURA et Function. La connexion se fait dans tous les cas via Terra API. Une jonction est également établie avec Apple Santé sur iPhone.
Anthropic cite Function, Apple Santé et Santé Connect sur Android.
OpenAI évoque lui aussi Apple Santé, ainsi qu’Alltrails, Function, Instacart, MyFitnessPal, Peloton, Weight Watchers.

La santé, une bataille également B2B

Claude for Healthcare est aussi le nom d’une déclinaison de Claude Enterprise certifiée HIPAA. Lancée parallèlement à la version « grand public », elle s’inscrit dans la lignée de Claude for Life Sciences, qui avait émergé quelques mois plus tôt.

Claude for Life Sciences exploite des connecteurs spécifiques vers des bases de données scientifiques (Benching, BioRender, PubMed, Synapse.org…) ainsi que des skills dédiées (contrôle qualité du séquençage de cellule unique, par exemple).
Claude for Healthcare en reprend le principe, avec des bases de connaissances globales pour certaines (Classification internationale des maladies), américaines pour beaucoup (registre national des prestataires de santé, centres de services Medicare et Medicaid…), et des skills telles que le développement d’interfaces FHIR et l’évaluation de couverture assurantielle.

OpenAI a aussi sa déclinaison de ChatGPT Enterprise « spécial santé » : ChatGPT Healthcare. Le principe est le même que chez Anthropic : une certification HIPAA et des bases de connaissances spécifiques.

Perplexity Enterprise n’a pas de « version santé », mais Perplexity en présente un cas d’usage dans ce domaine, à base d’espaces de travail adaptés.

Garder les médecins dans la boucle

Dans tous les cas, même avertissement : pas de diagnostics ou de recommandation de traitements (ni d’aide médicale d’urgence, précise Perplexity). Il s’agit de « répondre aux questions du quotiden » et d’aider l’utilisateur à « comprendre les tendances », explique OpenAI. Anthropic parle quant à lui de rendre « plus productives » les conversations avec les professionnels de santé. Tandis que Perplexity affirme que son service « ne remplace pas un avis médical professionnel ».

OpenAI déclare que ChatGPT Health est le fruit de « plus de 2 ans de travail » avec quelque 260 médecins dans 60 pays et couvrant « des dizaines de spécialités ».

Du côté de Perplexity, on dit avoir mis en place un conseil consultatif qui « mettra à l’épreuve [les] futures décisions produit ». Il comprend pour le moment 4 membres :

  • Eric Topol, cardiologue et généticien, fondateur et directeur du Scripps Translational Science Institute
  • Devin Mann, professeur de santé des populations et de médecineà la NYU Grossman School of Medicine
  • Wendy Chung, généticienne et physicienne, cheffe du département de pédiatrie au Boston Children’s Hospital
  • Tim Dybvig, fondateur et dirigeant dans le domaine des technologies de la santé (Calibrater Health, Maribel Health)

« Isolé », « cloisonné », « renforcé »… Le sujet sensible de la data

Les garanties techniques qu’avancent Anthropic, OpenAI et Perplexity se ressemblent. Au-delà de s’abstenir d’entraîner des modèles avec les données de santé, tous prônent une forme d’isolation vis-à-vis des autres conversations.

Perplexity parle, entre autres, d’un dépôt distinct pour stocker les documents de santé que l’utilisateur téléverse. Il souligne par ailleurs que si des « souvenirs » (memories) peuvent être créés, il ne sont exploités qu’en réponse aux questions qui s’y prêtent – et peuvent être supprimés à tout moment. Quand aux informations des dossiers médicaux, elles demeurent sur des serveurs externes.

Concernant les applications externes, Anthropic précise que Claude ne peut pas y écrire de données. Il ajoute cadrer les « souvenirs » afin, là aussi, que le chatbot ne les réutilise qu’à bon escient.

OpenAI promet également un espace cloisonné (« Si vous démarrez une conversation liée à la santé dans ChatGPT, nous vous proposerons de passer dans [cet espace] pour bénéficier [des] protections »). Il ajoute qu’il est possible d’ajouter des instructions personnalisées. Et d’exploiter des « souvenirs » à partir du compte principal, mais pas dans le sens inverse.

Illustration générée par IA

The post OpenAI, Anthropic et Perplexity livrent bataille sur la santé appeared first on Silicon.fr.

OpenAI recrute un ancien dirigeant de Meta pour accélérer dans la publicité

23 mars 2026 à 17:04

OpenAI vient de recruter Dave Dugan au poste de vice-président des solutions publicitaires mondiales selon les informations du Wall Street Journal.

Ce vétéran de la publicité numérique occupait jusqu’à récemment le poste de vice-président chargé des clients et agences mondiaux chez Meta. Il y avait passé plus de dix ans. Auparavant, il avait travaillé au sein de plusieurs agences appartenant à des groupes comme Publicis. Il avait annoncé début mars qu’il quittait Meta.

Chez OpenAI, Dave Dugan sera directement rattaché à Brad Lightcap, le directeur des opérations (COO). Un rattachement hiérarchique qui souligne l’importance stratégique accordée à cette nouvelle fonction.

Un besoin urgent de diversifier les revenus

Ce recrutement illustre la pression croissante qui pèse sur OpenAI pour diversifier ses revenus. En effet, ses besoins en financement restent considérables pour soutenir ses projets et son infrastructure de calcul. En janvier, OpenAI a commencé à tester la publicité sur ChatGPT.

Ce virage publicitaire contraste pourtant avec les positions passées de Sam Altman, le PDG d’OpenAI. Il y a deux ans, lors d’une conférence à Harvard, il déclarait : « La publicité combinée à l’IA m’inquiète profondément. » Il considérait alors la publicité comme « un dernier recours » pour le modèle économique de l’entreprise.

Sa principale crainte est que les utilisateurs pourraient perdre confiance dans le chatbot s’ils soupçonnaient les annonceurs d’influencer ses réponses. Depuis, OpenAI a précisé que la publicité n’affecterait pas les réponses du chatbot et que les conversations des utilisateurs ne seraient pas revendues à des annonceurs.

Chicanerie au Super Bowl

Début février, ce sujet a donné lieu à une attaque d’Anthropic lors du Super Bowl. L’inventeur de Claude a diffusé un spot de 60 secondes très commenté, dénonçant avec ironie l’intégration croissante de contenus sponsorisés dans ChatGPT.

Intitulé « Keep the Signal Clear », ce spot illustrait un utilisateur s’adressant à une IA dont les réponses devenaient progressivement parasitées par des messages commerciaux. La voix off concluait ainsi : « Une IA devrait vous écouter, pas vous vendre. »

Des profils issus de l’écosystème Meta

Ce n’est pas la première fois qu’OpenAI recrute des talents issus de Meta. Fidji Simo, qui dirige aujourd’hui les équipes produit et commerciales d’OpenAI en tant que CEO des applications, a elle aussi passé environ une décennie chez Facebook/Meta.

Le choix de Dave Dugan n’est d’ailleurs pas anodin. Certes, le secteur publicitaire reste largement automatisé et algorithmique. Néanmoins, les relations personnelles avec les grands annonceurs demeurent un facteur déterminant dans les décisions d’allocation des budgets. Son carnet d’adresses auprès des principales agences et marques mondiales constitue donc un atout précieux pour OpenAI.

The post OpenAI recrute un ancien dirigeant de Meta pour accélérer dans la publicité appeared first on Silicon.fr.

Un agent IA a mené 700 expériences en deux jours pour améliorer un modèle de langage

Par : Korben
23 mars 2026 à 11:57

Andrej Karpathy, ancien chercheur chez OpenAI et ex-responsable de l'IA chez Tesla, a laissé tourner un agent IA pendant 48 heures sur un petit modèle de langage. Résultat : 700 expériences, 20 optimisations retenues et un gain de 11 % sur le temps d'entraînement.

Le principe d'autoresearch

Mais c'est quoi ce concept d'autoresearch ? Et bien le fonctionnement est assez direct : un agent IA reçoit un script d'entraînement de 630 lignes en Python et un budget de calcul fixe de 5 minutes par expérience sur un seul GPU. Et c'est là que l'agent se met en mouvement pour lire le code, formuler une hypothèse, modifier le script, lancer l'entraînement, évaluer le résultat, et surtout décider, ou non, de conserver une modification.

Si le modèle s'améliore, le changement devient la nouvelle base. Sinon, il revient en arrière et essaie autre chose. En deux jours de boucle continue, l'agent a conduit environ 700 itérations et identifié 20 améliorations cumulables qui ont réduit le temps nécessaire pour atteindre le niveau GPT-2 de 2,02 heures à 1,80 heure.

Tobias Lütke, le patron de Shopify, a d'ailleurs testé le système sur des données internes : après une nuit, 37 expériences et un gain de 19 % sur les performances de son modèle.

La question de l'auto-amélioration

Là où le projet fait pas mal parler, c'est l'idée que cette IA s'améliore elle-même en boucle, dans un scénario que certains chercheurs en sécurité aiment appeler "exploser d'intelligence" (c'est aussi comme ça que j'appelle chaque moment que je passe à regarder l'ami Korben me parler de ses projets en cours).

Karpathy tempère : son agent n'optimise pas son propre code, il ajuste l'entraînement d'un modèle bien plus petit et bien moins complexe.

Par contre, il assume que tous les grands labos d'IA vont adopter cette méthode et que ça va accélérer la recherche. Il imagine à terme des essaims d'agents qui collaborent en parallèle, testent des pistes différentes et remontent les meilleures idées à des échelles de plus en plus grandes. Son objectif : ne pas reproduire le travail d'un doctorant, mais celui d'une communauté entière de chercheurs.

Bon maintenant il faut quand même relever que certains critiquent quand même l'idée, car elle ressemble en partie à AutoML, une technique qui est déjà utilisée chez Microsoft et Google.

Karpathy a répondu que la comparaison ne tient pas : AutoML fonctionne avec des variations aléatoires ou des algorithmes évolutifs, alors qu'autoresearch utilise un vrai modèle de langage qui écrit du code, apprend de ses expériences précédentes et a accès à internet. Bref, tout ceci est fascinant.

Source : The News Hack

GPT-5.4 mini et nano : une IA plus rapide et moins gourmande chez OpenAI

Par : Olivier
22 mars 2026 à 11:01
Chatgpt Images

OpenAI enchaîne les nouvelles versions de ses modèles IA. Après GPT-5.4 Thinking, place à deux déclinaisons plus légères, GPT-5.4 mini et nano. Moins coûteux, plus rapides, ils sont taillés pour des usages très concrets sans trop sacrifier les performances.

Data centers IA : OpenAI promet de payer la facture énergétique à la place des citoyens

Pendant que l’IA s’invite partout — du smartphone aux outils de travail — son infrastructure, elle, s’installe quelque part de façon concrète : près de chez vous. Et c’est précisément là que la tension monte. Face à la contestation grandissante autour des méga–data centers (factures d’électricité, pression sur les réseaux, consommation d’eau), OpenAI avance désormais […]

L’article Data centers IA : OpenAI promet de payer la facture énergétique à la place des citoyens est apparu en premier sur BlogNT : le Blog des Nouvelles Technologies.

Droit d’auteur : Britannica et Merriam-Webster attaquent OpenAI en justice

Le conflit entre éditeurs et entreprises d’IA entre dans une nouvelle phase. Après les actions engagées par plusieurs groupes de presse et ayants droit, Encyclopaedia Britannica et sa filiale Merriam-Webster ont à leur tour déposé plainte contre OpenAI, l’accusant d’avoir utilisé sans autorisation une vaste quantité de contenus protégés pour entraîner ses modèles. La plainte […]

L’article Droit d’auteur : Britannica et Merriam-Webster attaquent OpenAI en justice est apparu en premier sur BlogNT : le Blog des Nouvelles Technologies.

ChatGPT, Atlas, Codex : OpenAI veut tout regrouper dans une seule app

Par : Olivier
21 mars 2026 à 11:00
Photo de Matheus Bertelli- pexels - ordinateur chatgpt

Après une période très chargée en nouveautés, OpenAI décide de remettre de l’ordre dans ses produits. L’entreprise prépare une application unique qui regroupera ChatGPT, Codex et son navigateur Atlas, avec en ligne de mire des fonctions d’IA capables d’agir seules pour l’utilisateur.

OpenAI rachète Astral : Le créateur de ChatGPT s’empare des outils Python uv et Ruff

L’IA générative n’en est plus à « écrire du code » : elle veut faire tourner le workflow. Avec l’acquisition annoncée d’Astral, l’équipe derrière uv, Ruff et ty, OpenAI assume un virage très concret : s’ancrer dans les outils Python que les développeurs utilisent déjà, à grande échelle, et faire de Codex un compagnon capable d’agir, vérifier et maintenir […]

L’article OpenAI rachète Astral : Le créateur de ChatGPT s’empare des outils Python uv et Ruff est apparu en premier sur BlogNT : le Blog des Nouvelles Technologies.

❌