Vue normale

Il y a de nouveaux articles disponibles, cliquez pour rafraîchir la page.
Hier — 31 mars 2026Flux principal

Toutes les IA échouent à ce test d’humanité

31 mars 2026 à 11:27

Le 27 mars 2026, une nouvelle version du benchmark ARC-AGI a été rendue publique. Baptisé ARC-AGI-3, ce test évalue des systèmes d’IA dits « agentiques », capables d’agir et d’apprendre dans des environnements interactifs. Malgré leurs performances impressionnantes ailleurs, les meilleurs modèles échouent encore largement.

À partir d’avant-hierFlux principal

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 que 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

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.

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

« Alerte rouge » chez OpenAI : Sam Altman sacrifie ses projets annexes pour sauver ChatGPT

17 mars 2026 à 12:28

Tandis qu’Anthropic cartonne, OpenAI acté un revirement de stratégie clair : fini les projets annexes, la priorité passe désormais aux outils de productivité pour les entreprises, rapporte le Wall Street Journal le 16 mars 2026. Un changement de cap qui confirme, une nouvelle fois, que la course à l’IA s’accélère.

Pas de porno mais de l’érotisme : ce que l’on sait du futur « mode adulte » de ChatGPT

16 mars 2026 à 18:13

Alors que le « mode adulte » de ChatGPT est de nouveau repoussé, le Wall Street Journal a révélé, ce dimanche 15 mars 2026, de nouveaux détails sur le fonctionnement de l’outil. Entre promesses de contenus érotiques textuels et failles inquiétantes du système de vérification d'âge, la firme de Sam Altman navigue en pleine zone grise.

Il refuse de voir son chien mourir : l’incroyable récit d’un maître qui a créé son propre vaccin avec l’IA

16 mars 2026 à 15:30

Condamné par les vétérinaires à voir sa chienne mourir d’un cancer avancé, un ingénieur australien a décidé de concevoir lui-même un traitement expérimental. En s’aidant notamment de ChatGPT et d’outils d’IA, il a participé à la création d’un vaccin anticancéreux personnalisé à ARN messager pour son animal.

La Chine serre la vis face à la OpenClaw Mania

12 mars 2026 à 11:45

Le framework d'IA agentique OpenClaw est dans le viseur des autorités chinoises. Le 10 mars 2026, le CERT national a publié une liste de recommandations pour encadrer son usage, tandis que des banques publiques et administrations auraient reçu des instructions directes pour en interdire l'installation.

La Chine serre la vis face à la OpenClaw Mania

12 mars 2026 à 11:45

Le framework d'IA agentique OpenClaw est dans le viseur des autorités chinoises. Le 10 mars 2026, le CERT national a publié une liste de recommandations pour encadrer son usage, tandis que des banques publiques et administrations auraient reçu des instructions directes pour en interdire l'installation.

Vous êtes abonnés à Canal+ ? L’application va se transformer grâce à OpenAI et Google

11 mars 2026 à 10:46

En juin 2026, Canal+ déploiera un nouveau moteur de recherche dans son application Canal+ (ex-myCANAL). Un modèle de langage OpenAI sera en charge de la recherche, ce qui devrait faciliter certaines requêtes et permettre de poser des questions en langage naturel.

Deux jours après GPT-5.3, OpenAI lance GPT-5.4

5 mars 2026 à 19:52

Juste après avoir officialisé GPT-5.3 Instant pour les réponses rapides dans ChatGPT, OpenAI dévoile GPT-5.4 Thinking et GPT-5.4 Pro, ses deux nouveaux meilleurs modèles. Cette course effrénée semble avoir un seul but : rattraper Google et Anthropic.

Près de 900 employés de Google et OpenAI réclament des limites sur l'IA militaire

Par : Korben
5 mars 2026 à 16:35

Plus de 600 employés de Google et OpenAI ont signé une lettre ouverte baptisée « We Will Not Be Divided », pour demander des limites claires sur l'usage militaire de l'IA. Le nombre de signataires est monté à près de 900 en quelques jours. Il y a deux gros problèmes dans cette histoire : la surveillance de masse et les armes autonomes. Le contexte est tellement tendu que le Pentagone a même blacklisté Anthropic pour avoir refusé de coopérer.

Une lettre, deux lignes rouges

La lettre, publiée le 28 février sur le site notdivided.org, a d'abord réuni 573 employés de Google et 93 d'OpenAI. En quelques jours, le compteur est monté à près de 900 signatures, dont 800 côté Google. Les signataires posent deux lignes rouges : pas de surveillance de masse des citoyens américains, et pas de systèmes d'armes autonomes sans supervision humaine. « Les responsables gouvernementaux tentent de pousser les entreprises d'IA à abandonner certaines limites éthiques. Cette stratégie ne fonctionne que si aucun de nous ne sait où se situent les autres », peut-on lire dans la lettre.

Anthropic blacklisté par le Pentagone

Tout est parti d'un bras de fer entre Anthropic et le Pentagone. Le département de la Défense avait donné un ultimatum à Anthropic : lever ses restrictions sur Claude pour permettre son utilisation dans la surveillance domestique et les armes autonomes, ou perdre ses contrats fédéraux. Anthropic a refusé. La réponse a été immédiate : Trump a ordonné l'arrêt de toute utilisation des produits Anthropic par les agences fédérales, et le secrétaire à la Défense Pete Hegseth a désigné l'entreprise comme « risque pour la chaîne d'approvisionnement ». Le gouvernement a même menacé d'invoquer le Defense Production Act, une loi datant de la guerre de Corée, pour forcer Anthropic à coopérer. Et quelques heures après ce refus, OpenAI annonçait un accord avec le Pentagone pour déployer ses modèles sur les réseaux classifiés.

Altman tente de calmer le jeu

Sam Altman a organisé une session de questions-réponses sur X le samedi 1er mars. Il a reconnu que l'accord avait été « précipité » et que « les apparences ne sont pas bonnes ». Sa justification : vouloir « désamorcer » les tensions entre le Pentagone et Anthropic, et éviter que le gouvernement ne force les entreprises privées à coopérer. Sauf que l'accueil a été glacial. L'application Claude est montée à la deuxième place de l'App Store en téléchargements, les bureaux d'OpenAI à San Francisco ont été recouverts de graffitis, et l'un des employés d'OpenAI, Leo Gao, a qualifié les protections du contrat de « décoration de vitrine ».

Le timing d'OpenAI, qui a signé avec le Pentagone le jour même où Anthropic se faisait blacklister, est quand même difficile à avaler. Altman peut dire ce qu'il veut, ça ressemble surtout à du pur opportunisme. Le plus parlant, c'est que le grand public a spontanément pris le parti d'Anthropic, et que les propres employés d'OpenAI contestent l'accord. Perso, j'attends de voir si les lignes rouges réclamées par les salariés déboucheront sur de vraies politiques internes. Pour le moment, c'est Anthropic qui sort grandi de cette séquence, l'air de rien.

Sources : Techradar , Digital Information World

Après le Pentagone, OpenAI vise déjà l’OTAN

4 mars 2026 à 16:49

Quelques jours après avoir annoncé un contrat avec le département américain de la Défense, OpenAI évoque désormais un possible accord avec l’OTAN. L’entreprise avance en terrain miné, profitant d'une ouverture inédite de l'Alliance politico-militaire aux technologies grand public.

Clés API volées - Comment éviter une facture à 82 000 dollars

Par : Korben
4 mars 2026 à 12:04

82 314 dollars, c'est l'incroyable facture que s'est mangé un dev mexicain après 48 heures d'utilisation frauduleuse de sa clé API Gemini. Sa dépense habituelle était de 180 dollars par mois environ, j'imagine que ça lui a fait un peu mal aux fesses. Et c'est une bonne raison pour moi de vous inciter une nouvelle fois à bien sécuriser vos clés API !

Le gars bosse dans une petite startup et de ce que j'ai compris, quelqu'un a chopé ses credentials et s'est lâché sur Gemini 3 Pro pendant deux jours. La réponse de Google ? "Responsabilité partagée". En gros, eux sécurisent l'infra, et vous sécurisez vos clés. Si vous vous faites plumer, c'est votre problème !

Et c'est pas un cas isolé car les chercheurs de Truffle Security ont scanné le web et trouvé 2 863 clés Google API exposées en clair sur des sites publics. Toutes identifiables par le préfixe AIza.

Sauf que comme je vous l'expliquais dans un article précédent, ces clés, à la base, étaient conçues comme de simples identifiants de projet pour Maps et Firebase et la doc Google disait carrément qu'elles n'étaient pas secrètes ! Et quand l'API Gemini a été activée sur ces projets, hé bien ces clés sont devenues des clés d'authentification, sans que personne ne réalise ce changement de paradigme.

Mais bon, plutôt que de chialer comme des fragiles, voyons comment éviter de se retrouver dans cette situation ^^.

Scanner vos secrets existants

Avant tout, faut savoir si vous avez déjà des fuites. Deux outils open source font ça très bien.

TruffleHog scanne vos dépôts Git, vos fichiers, et même vos buckets S3 pour trouver des secrets qui traînent. L'install est simple :

brew install trufflehog
trufflehog git https://github.com/user/project --only-verified

Le flag --only-verified c'est le truc important, ça teste si les secrets trouvés sont encore ACTIFS. Parce que trouver une vieille clé révoquée, on s'en fiche. Attention, ça ne marche pas sur les repos privés sans token d'accès.

Y'a aussi Nosey Parker qui fait le même genre de boulot mais perso, je trouve TruffleHog plus complet pour les clés cloud, même si Nosey Parker est plus rapide pour les gros repos.

Après si vous bossez avec des clés Google spécifiquement, cherchez le pattern AIza dans votre code. Un simple grep suffit :

grep -r "AIza" . --include="*.js" --include="*.py" --include="*.env"

Empêcher les fuites à la source

Scanner c'est bien, mais empêcher les secrets d'atterrir dans Git, c'est mieux. Et pour cela, rien de plus simple... Suffit d'installer un pre-commit hook.

git-secrets d'AWS fait exactement ça :

brew install git-secrets
cd mon-projet
git secrets --install
git secrets --register-aws

Du coup, chaque git commit vérifie automatiquement qu'il n'y a pas de clé AWS qui traîne. Vous pouvez ajouter vos propres patterns (genre AIza pour Google) :

git secrets --add 'AIza[0-9A-Za-z_-]{35}'
git secrets --add 'sk-proj-[0-9a-zA-Z]{48}'

Le deuxième pattern, c'est pour les clés OpenAI (format sk-proj-). D'ailleurs, stockez TOUT dans des fichiers .env et vérifiez que .env est dans votre .gitignore. Ça devrait être un réflexe ! Le piège classique c'est surtout le fichier .env.example qui contient en fait de vraies clés... c'est du vu et revu sur GitHub.

Pour aller plus loin, Vault de HashiCorp gère également vos secrets de manière centralisée avec du chiffrement, de la rotation automatique et des audit logs. C'est carrément le niveau supérieur notamment pour les équipes. C'est bien plus safe que le .env .

Détecter un vol avant la catastrophe

Notre dev mexicain a découvert sa facture APRÈS 48 heures. Deux jours, c'est une éternité alors voilà comment réagir en minutes, et pas en jours.

Sur Google Cloud, allez dans Billing > Budgets & Alerts. Créez un budget avec des seuils à 50%, 90% et 100% de votre budget mensuel. Activez les notifications par email ET par Pub/Sub pour déclencher une Cloud Function qui coupe automatiquement les clés si le seuil est dépassé.

Chez OpenAI, c'est dans Settings > Billing > Usage limits. Vous pouvez définir un hard cap mensuel. Au-delà... plus rien ne passe. Même chose à peu près pour Claude d'Anthropic aussi...

Et surtout, activez la rotation automatique de vos clés. Sur Google Cloud :

gcloud services api-keys list
gcloud services api-keys create --display-name="gemini-prod-$(date +%Y%m)"
gcloud services api-keys delete ANCIENNE_CLE_ID

Les restrictions d'API c'est pas un luxe donc sur chaque clé, limitez les services autorisés (Gemini uniquement si c'est son usage), les IPs sources et le nombre de requêtes par minute. Sauf si vous aimez les surprises à 5 chiffres sur votre relevé bancaire, une clé sans restriction, c'est une carte bleue sans plafond.

Perso, je me suis mis des alertes sur tous mes comptes cloud, que ce soit AWS, GCP ou Azure. Genre, si ça dépasse 50 balles en une journée... hop, notification sur le téléphone. Finalement, c'est 5 minutes de config qui peuvent vous éviter des mois de galère.

Source

Le premier coup d’éclat de Claude Opus 4.6 vient du cyber

6 février 2026 à 11:43

Depuis son lancement le 5 février 2026, Claude Opus 4.6, occupe les gros titres de l'actualité tech. Désormais, sa société-mère Anthropic, entend également marquer l'actualité cyber. Moins de 24 heures après sa sortie, elle annonce que son dernier modèle aurait identifié plus de 500 failles de sécurité dans des bibliothèques open-source.

OpenAI se lance dans le hardware avec des écouteurs IA prévus pour fin 2026

Chris Lehane, directeur des affaires mondiales d'OpenAI, a confirmé lors du Forum économique mondial de Davos que l'entreprise préparait son premier appareil destiné au grand public. Il s'agirait d'écouteurs intelligents, dont le lancement est prévu pour le second semestre 2026, avec un objectif affiché de 40 à 50 millions d'unités écoulées la première année.

L’article OpenAI se lance dans le hardware avec des écouteurs IA prévus pour fin 2026 est apparu en premier sur Tom’s Hardware.

full

thumbnail

« Un pas en arrière par rapport à GPT-5 », comment le dernier outil d’OpenAI s’est fait pirater dès son premier jour

21 janvier 2026 à 12:33

Dans une démonstration publiée sur LinkedIn le 16 janvier 2026, des chercheurs de Tenable ont révélé une faille de sécurité dans le nouvel outil d’OpenAI, ChatGPT Translate, rappelant les premières générations de garde‑fous appliqués aux agents LLM. 

❌
❌