IA

2025

Babel Fish AI : Une Extension Chrome Portée par l’IA et une Vision Globale

Logo

Je suis ravi de vous présenter Babel Fish AI, une extension Chrome open source que j’ai développée sans écrire une seule ligne de code moi-même. Grâce à Roo Code, un agent IA autonome, j’ai créé une solution de transcription et traduction vocale performante, tout en explorant des technologies comme Heygen, FFmpeg, et DALL-E pour enrichir le projet. Ce n’est pas qu’un outil technique : c’est une aventure d’apprentissage, de veille technologique, et un effort pour offrir une expérience utilisateur de qualité à une audience internationale. Voici comment tout cela a pris forme.

Lire la suite →

Déploiement Automatisé de LibreChat sur AWS EC2 : Une Solution DevOps Innovante et Accessible

Logo

Je suis ravi de vous présenter mon dernier projet : le déploiement entièrement automatisé de LibreChat sur AWS EC2, une solution open-source disponible sur GitLab. Ce projet illustre mon savoir-faire en DevOps et cloud engineering, en s’appuyant sur Terraform pour une infrastructure as code (IaC), un script User-Data en Bash, une pipeline GitLab CI/CD, et une gestion centralisée via AWS Systems Manager (SSM). Résultat : une instance LibreChat opérationnelle en moins de 6 minutes, avec des coûts optimisés, une sécurité renforcée et une accessibilité maximale.

Ce projet va au-delà d’un simple déploiement technique : il incarne une vision d’automatisation avancée, pensée pour les experts comme pour les débutants. Voici comment j’ai conçu cette solution.

Lire la suite →

Automatisation Multilingue : Mon Script AI-Powered Markdown Translator

Logo

Je suis ravi de vous présenter mon projet AI-Powered Markdown Translator, un script Python open-source qui révolutionne la traduction automatique de tous les fichiers Markdown de mon blog et de mes dépôts GitLab. En intégrant des modèles d’intelligence artificielle de pointe comme OpenAI, Mistral AI, Anthropic (Claude), et Google Gemini, cet outil traduit mes articles, README, et documentations techniques dans de nombreuses langues (anglais, espagnol, chinois, etc.), tout en conservant leur structure et leur formatage. Ce projet met en lumière mes compétences en automatisation, intégration d’IA, et développement Python, ainsi que ma passion pour rendre le contenu technique accessible à tous. Ce n’est pas juste un script : c’est une preuve de mon expertise et de ma vision pour un monde numérique plus inclusif.

Lire la suite →

Mise à jour : LibreChat version v0.7.6 avec déploiement automatisé sur AWS EC2

Logo

Je suis heureux d’annoncer que mon projet de déploiement automatisé de LibreChat sur AWS EC2 a été mis à jour pour corriger des problèmes liés aux changements récents dans la manière d’installer LibreChat, tout en supportant désormais la version v0.7.6. Cette mise à jour inclut également la possibilité de choisir entre les instances On-Demand et Spot, ainsi que des améliorations pour simplifier l’utilisation, même pour les débutants.

Lire la suite →

Atualização: LibreChat versão v0.7.6 com implantação automatizada no AWS EC2

Logo

Estou feliz em anunciar que meu projeto de implantação automatizada do LibreChat no AWS EC2 foi atualizado para corrigir problemas relacionados às mudanças recentes na forma de instalar o LibreChat, além de agora suportar a versão v0.7.6. Esta atualização também inclui a possibilidade de escolher entre instâncias On-Demand e Spot, bem como melhorias para simplificar o uso, mesmo para iniciantes.

Lire la suite →

Aggiornamento: LibreChat versione v0.7.6 con deployment automatizzato su AWS EC2

Logo

Sono lieto di annunciare che il mio progetto di deployment automatizzato di LibreChat su AWS EC2 è stato aggiornato per correggere problemi legati ai recenti cambiamenti nel modo di installare LibreChat, supportando ora la versione v0.7.6. Questo aggiornamento include anche la possibilità di scegliere tra istanze On-Demand e Spot, oltre a miglioramenti per semplificarne l’utilizzo, anche per i principianti.

Lire la suite →

Actualizare: LibreChat versiunea v0.7.6 cu implementare automată pe AWS EC2

Logo

Sunt bucuros să anunț că proiectul meu de implementare automată a LibreChat pe AWS EC2 a fost actualizat pentru a rezolva problemele legate de schimbările recente în modul de instalare a LibreChat, suportând acum versiunea v0.7.6. Această actualizare include, de asemenea, posibilitatea de a alege între instanțe On-Demand și Spot, precum și îmbunătățiri pentru a simplifica utilizarea, chiar și pentru începători.

Lire la suite →

Actualización: LibreChat versión v0.7.6 con despliegue automatizado en AWS EC2

Logo

Estoy feliz de anunciar que mi proyecto de despliegue automatizado de LibreChat en AWS EC2 ha sido actualizado para corregir problemas relacionados con los cambios recientes en la forma de instalar LibreChat, y ahora soporta la versión v0.7.6. Esta actualización incluye también la posibilidad de elegir entre instancias On-Demand y Spot, así como mejoras para simplificar su uso, incluso para principiantes.

Lire la suite →

2024

博客推出更多新的GPT-4o自动翻译!

Logo

我很高兴地宣布,我的博客增添了八种新语言以便于对文章进行自动翻译!新语言包括:

Lire la suite →

ブログにGPT-4oによる新しいAI翻訳が続々登場!

Logo

私のブログがさらに多くの言語に対応して、世界中の読者に届けられるようになったことをお知らせできることを大変嬉しく思います!この度、自動翻訳に対応した8つの新しい言語が追加されました。新たに利用可能な言語は以下の通りです:

Lire la suite →

المزيد من الترجمات الجديدة بواسطة الذكاء الاصطناعي مع GPT-4o متاحة الآن على المدونة!

Logo

يسعدني أن أعلن أن مدونتي أصبحت تنفتح أكثر على العالم مع إضافة ثمان لغات جديدة لترجمات المقالات التلقائية! اللغات الجديدة المتاحة هي:

Lire la suite →

Nog meer nieuwe AI-vertalingen met GPT-4o beschikbaar op de blog!

Logo

Ik ben verheugd u aan te kondigen dat mijn blog zich nog meer opent voor de wereld met de toevoeging van acht nieuwe talen voor automatische vertalingen van mijn artikelen! De nieuwe beschikbare talen zijn:

Lire la suite →

Mais novas traduções de IA com GPT-4o disponíveis no blog!

Logo

Estou feliz em anunciar que meu blog está se abrindo ainda mais para o mundo com a adição de oito novos idiomas para traduções automáticas dos meus artigos! Os novos idiomas disponíveis são:

Lire la suite →

Încă mai multe traduceri IA cu GPT-4o disponibile pe blog!

Logo

Sunt încântat să vă anunț că blogul meu se deschide și mai mult spre lume cu adăugarea a opt noi limbi pentru traducerile automate ale articolelor mele! Limbile noi disponibile sunt:

Lire la suite →

GPT-4o를 사용한 더 많은 새로운 AI 번역이 블로그에서 제공됩니다!

Logo

내 블로그가 기사 자동 번역을 위한 여덟 개의 새로운 언어 추가와 함께 더 많은 세계로 열리게 되어 기쁩니다! 사용할 수 있는 새로운 언어는 다음과 같습니다:

Lire la suite →

Encore de nouvelles traductions IA avec GPT-4o disponibles sur le blog !

Logo

Je suis ravi de vous annoncer que mon blog s’ouvre encore plus au monde avec l’ajout de huit nouvelles langues pour les traductions automatiques de mes articles ! Les nouvelles langues disponibles sont :

Lire la suite →

Ancora nuove traduzioni AI con GPT-4o disponibili sul blog!

Logo

Sono lieto di annunciare che il mio blog si apre ancora di più al mondo con l’aggiunta di otto nuove lingue per le traduzioni automatiche dei miei articoli! Le nuove lingue disponibili sono:

Lire la suite →

¡Más traducciones de IA con GPT-4o disponibles en el blog!

Logo

Me complace anunciar que mi blog se abre aún más al mundo con la adición de ocho nuevos idiomas para las traducciones automáticas de mis artículos! Los nuevos idiomas disponibles son:

Lire la suite →

使用GPT-4o的最新AI翻译现已在博客上可用!

Logo

我很高兴地宣布,我的博客文章现在通过人工智能翻译功能可以使用多种语言了!

原始文章,以法语撰写,现在自动翻译为:

Lire la suite →

الترجمات الجديدة بواسطة الذكاء الاصطناعي باستخدام GPT-4o متوفرة الآن على المدونة!

Logo

يسعدني أن أعلن أن مقالات مدونتي أصبحت متاحة الآن بعدة لغات بفضل قدرات الترجمة بواسطة الذكاء الاصطناعي!

المقالات الأصلية، المكتوبة بالفرنسية، تُرجمت تلقائيًا الآن إلى:

Lire la suite →

Traduceri IA noi cu GPT-4o disponibile pe blog!

Logo

Sunt fericit să vă anunț că postările de pe blogul meu sunt acum disponibile în mai multe limbi datorită capacităților de traducere ale inteligenței artificiale!

Articolele originale, scrise în franceză, sunt acum traduse automat în:

Lire la suite →

Nuove traduzioni IA con GPT-4o disponibili sul blog!

Logo

Sono felice di annunciare che i post del mio blog sono ora disponibili in diverse lingue grazie alle capacità di traduzione dell’intelligenza artificiale!

Gli articoli originali, scritti in francese, sono ora automaticamente tradotti in:

Lire la suite →

Nuevas traducciones IA con GPT-4o disponibles en el blog!

Logo

¡Me complace anunciar que las publicaciones de mi blog ahora están disponibles en varios idiomas gracias a las capacidades de traducción de la inteligencia artificial!

Los artículos originales, escritos en francés, ahora se traducen automáticamente en:

Lire la suite →

Nowe tłumaczenia AI z GPT-4o dostępne na blogu!

Logo

Cieszę się, mogąc ogłosić, że wpisy na moim blogu są teraz dostępne w kilku językach dzięki możliwościom tłumaczenia sztucznej inteligencji!

Oryginalne artykuły, napisane po francusku, są teraz automatycznie tłumaczone na:

Lire la suite →

Novas traduções IA com GPT-4o disponíveis no blog!

Logo

Estou feliz em anunciar que as postagens do meu blog agora estão disponíveis em vários idiomas graças às capacidades de tradução da inteligência artificial!

Os artigos originais, escritos em francês, agora são automaticamente traduzidos para:

Lire la suite →

Nouvelles traductions IA avec GPT-4o disponibles sur le blog !

Logo

Je suis heureux de vous annoncer que les billets de mon blog sont désormais disponibles en plusieurs langues grâce aux capacités de traduction de l’intelligence artificielle !

Les articles originaux, écrits en français, sont maintenant automatiquement traduits en :

Lire la suite →

GPT-4o를 사용한 새로운 AI 번역이 블로그에 제공됩니다!

Logo

인공지능 번역 기술 덕분에 이제 블로그 게시물이 여러 언어로 제공된다는 소식을 여러분께 전하게 되어 기쁩니다!

프랑스어로 작성된 원본 기사는 이제 자동으로 다음 언어로 번역됩니다:

Lire la suite →

GPT-4o を使用した新しい AI 翻訳がブログで利用可能になりました!

Logo

人工知能の翻訳機能を活用して、ブログ記事が複数の言語で利用できるようになったことをお知らせいたします!

元のフランス語で書かれた記事は、次の言語に自動的に翻訳されます:

Lire la suite →

GPT-4o के साथ नई AI अनुवाद ब्लॉग पर उपलब्ध!

Logo

मैं आपको यह बताते हुए खुशी हो रही है कि मेरे ब्लॉग की पोस्ट अब कई भाषाओं में उपलब्ध हैं, जो कृत्रिम बुद्धिमत्ता की अनुवाद क्षमताओं के लिए धन्यवाद है!

मूल लेख, जो फ्रेंच में लिखे गए थे, अब स्वचालित रूप से अनूदित किए गए हैं:

Lire la suite →

Mise à Jour du Script de Traduction Automatique : Version 1.5

Logo

Je suis heureux d’annoncer la sortie de la version 1.5 de mon script AI-Powered Markdown Translator. Cette mise à jour apporte plusieurs améliorations significatives, notamment la mise à jour des modèles par défaut, l’optimisation des prompts de traduction, une refactorisation du code et une meilleure gestion des fichiers de sortie.

Lire la suite →

Atualização do Script de Tradução Automática: Versão 1.5

Logo

Estou feliz em anunciar o lançamento da versão 1.5 do meu script AI-Powered Markdown Translator. Esta atualização traz várias melhorias significativas, incluindo a atualização dos modelos padrão, a otimização dos prompts de tradução, uma refatoração do código e uma melhor gestão dos arquivos de saída.

Lire la suite →

Aktualizacja Skryptu do Automatycznego Tłumaczenia: Wersja 1.5

Logo

Z przyjemnością ogłaszam wydanie wersji 1.5 mojego skryptu AI-Powered Markdown Translator. Ta aktualizacja przynosi kilka znaczących usprawnień, w tym aktualizację domyślnych modeli, optymalizację promptów tłumaczeniowych, refaktoryzację kodu i lepsze zarządzanie plikami wyjściowymi.

Lire la suite →

Aggiornamento dello Script di Traduzione Automatica: Versione 1.5

Logo

Sono felice di annunciare il rilascio della versione 1.5 del mio script AI-Powered Markdown Translator. Questo aggiornamento apporta diverse migliorie significative, tra cui l’aggiornamento dei modelli predefiniti, l’ottimizzazione dei prompt di traduzione, una rifattorizzazione del codice e una migliore gestione dei file di output.

Lire la suite →

Actualizare a Scriptului de Traducere Automată: Versiunea 1.5

Logo

Sunt fericit să anunț lansarea versiunii 1.5 a scriptului meu AI-Powered Markdown Translator. Această actualizare aduce mai multe îmbunătățiri semnificative, inclusiv actualizarea modelelor implicite, optimizarea prompturilor de traducere, refactorizarea codului și o mai bună gestionare a fișierelor de ieșire.

Lire la suite →

Actualización del Script de Traducción Automática: Versión 1.5

Logo

Me complace anunciar el lanzamiento de la versión 1.5 de mi script AI-Powered Markdown Translator. Esta actualización trae varias mejoras significativas, incluyendo la actualización de los modelos predeterminados, la optimización de los prompts de traducción, una refactorización del código y una mejor gestión de los archivos de salida.

Lire la suite →

Zautomatyzowane wdrażanie LibreChat na EC2 AWS

Logo

Ten artykuł przedstawia projekt POC (Proof of Concept) dla zautomatyzowanego wdrażania LibreChat na AWS EC2, używając Terraform do orkiestracji infrastruktury zgodnie z zasadą Infrastructure as Code, skryptu User-Data Bash do instalacji komponentów na EC2 i AWS Systems Manager do centralnego zarządzania kluczami API i monitorowania wdrożenia. Skupiono się na automatyzacji i optymalizacji kosztów poprzez wykorzystanie instancji Spot.

Lire la suite →

Geautomatiseerde implementatie van LibreChat op EC2 AWS

Logo

Dit artikel presenteert een project POC (Proof of Concept) voor de geautomatiseerde implementatie van LibreChat op AWS EC2, met behulp van Terraform om de infrastructuur te orkestreren volgens het principe van Infrastructure as Code, een User-Data Bash-script om de componenten op EC2 te installeren en AWS Systems Manager om centraal API-sleutels te beheren en de implementatie te volgen. De nadruk ligt op automatisering en kostenoptimalisatie door gebruik te maken van Spot-instances.

Lire la suite →

EC2 AWS에 LibreChat 자동 배포

Logo

이 기사는 프로젝트 POC (Proof of Concept)을 EC2에서 LibreChat을 Terraform을 사용하여 인프라를 코드로서 오케스트레이션하고, User-Data Bash 스크립트를 사용하여 EC2에 컴포넌트를 설치하며, AWS Systems Manager를 사용하여 중앙 집중적으로 API 키를 관리하고 배포 진행 상황을 추적하는 방법을 소개합니다. 비용 최적화를 위해 Spot 인스턴스 사용에도 중점을 둡니다.

Lire la suite →

Distribuzione automatizzata di LibreChat su EC2 AWS

Logo

Questo articolo presenta un progetto POC (Proof of Concept) per la distribuzione automatizzata di LibreChat su AWS EC2, utilizzando Terraform per orchestrare l’infrastruttura secondo il principio di Infrastructure as Code, uno script User-Data Bash per installare i componenti su EC2, e AWS Systems Manager per una gestione centralizzata delle chiavi API e il monitoraggio della distribuzione. L’accento è posto sull’automazione e l’ottimizzazione dei costi tramite l’uso delle istanze Spot.

Lire la suite →

Despliegue automatizado de LibreChat en EC2 AWS

Logo

Este artículo presenta un proyecto POC (Proof of Concept) para el despliegue automatizado de LibreChat en AWS EC2, utilizando Terraform para orquestar la infraestructura según el principio de Infraestructura como Código, un script de User-Data en Bash para instalar los componentes en EC2, y AWS Systems Manager para una gestión centralizada de las claves API y el seguimiento del despliegue. El enfoque está en la automatización y la optimización de costos a través del uso de instancias Spot.

Lire la suite →

Desdobramento automatizado do LibreChat na EC2 AWS

Logo

Este artigo apresenta um projeto POC (Proof of Concept) para o desdobramento automatizado do LibreChat na AWS EC2, usando Terraform para orquestrar a infraestrutura de acordo com o princípio de Infraestrutura como Código, um script de Bash User-Data para instalar os componentes na EC2, e AWS Systems Manager para gerenciamento centralizado das chaves de API e acompanhamento do desdobramento. A ênfase está na automação e otimização de custos através do uso de instâncias Spot.

Lire la suite →

Déploiement automatisé de LibreChat sur EC2 AWS

Logo

Cet article présente un projet POC (Proof of Concept) pour le déploiement automatisé de LibreChat sur AWS EC2, utilisant Terraform pour orchestrer l’infrastructure selon le principe d’Infrastructure as Code, un script User-Data Bash pour installer les composants sur EC2, et AWS Systems Manager pour une gestion centralisée des clés API et le suivi du déploiement. L’accent est mis sur l’automatisation et l’optimisation des coûts via l’utilisation des instances Spot.

Lire la suite →

Deplasare automatizată a LibreChat pe EC2 AWS

Logo

Acest articol prezintă un proiect POC (Proof of Concept) pentru deplasarea automatizată a LibreChat pe AWS EC2, utilizând Terraform pentru orchestrarea infrastructurii conform principiului Infrastructure as Code, un script User-Data Bash pentru a instala componentele pe EC2, și AWS Systems Manager pentru o gestionare centralizată a cheilor API și urmărirea desfășurării. Se pune accent pe automatizare și optimizarea costurilor prin utilizarea instanțelor Spot.

Lire la suite →

AWS EC2におけるLibreChatの自動デプロイ

Logo

この記事は、インフラストラクチャをコードとして定義するTerraformを利用し、EC2上にLibreChatを自動デプロイするためのPOCプロジェクトを紹介します。EC2にコンポーネントをインストールするためのBashスクリプトUser-Dataを使用し、APIキーの集中管理およびデプロイの追跡にはAWS Systems Managerを使用しています。スポットインスタンスの使用を通じて、自動化とコストの最適化に重点を置いています。

Lire la suite →

Automatiserad distribution av LibreChat på EC2 AWS

Logo

Denna artikel presenterar ett projekt POC (Proof of Concept) för den automatiserade distributionen av LibreChat på AWS EC2, med Terraform för att orkestrera infrastrukturen enligt principen Infrastructure as Code, ett User-Data Bash-skript för att installera komponenter på EC2, och AWS Systems Manager för centraliserad hantering av API-nycklar och uppföljning av distributionen. Fokus ligger på automatisering och kostnadsoptimering genom användning av Spot-instanser.

Lire la suite →

Evoluzione dello Script di Traduzione Automatica: Integrazione di Claude di Anthropic

Logo

Lo script di traduzione automatica, già potenziato dalle capacità di OpenAI e Mistral AI, accoglie una nuova innovazione: l’integrazione di Claude, il modello di intelligenza artificiale di ultima generazione progettato da Anthropic. Per scoprire i risultati in tutte le lingue, vi invito a visitare questa pagina: Traductions avec Anthropic.

Lire la suite →

Évolution du Script de Traduction Automatique : Intégration de Claude d'Anthropic

Logo

Le script de traduction automatique, déjà renforcé par les capacités d’OpenAI et de Mistral AI, accueille une nouvelle innovation : l’intégration de Claude, le modèle d’intelligence artificielle de dernière génération conçu par Anthropic. Pour découvrir les résultats dans toutes les langues, je vous invite à visiter cette page : Traductions avec Anthropic.

Lire la suite →

Evoluția Scriptului de Traducere Automată: Integrarea Claude de la Anthropic

Logo

Scriptul de traducere automată, deja întărit de capacitățile OpenAI și Mistral AI, primește o nouă inovație: integrarea Claude, modelul de inteligență artificială de ultimă generație conceput de Anthropic. Pentru a descoperi rezultatele în toate limbile, vă invit să vizitați această pagină: Traduceri cu Anthropic.

Lire la suite →

Evolución del Script de Traducción Automática: Integración de Claude de Anthropic

Logo

El script de traducción automática, ya reforzado por las capacidades de OpenAI y de Mistral AI, acoge una nueva innovación: la integración de Claude, el modelo de inteligencia artificial de última generación diseñado por Anthropic. Para descubrir los resultados en todos los idiomas, les invito a visitar esta página: Traducciones con Anthropic.

Lire la suite →

Evolución del Script de Traducción Automática: Integración de Claude de Anthropic

El script de traducción automática, ya reforzado por las capacidades de OpenAI y de Mistral AI, acoge una nueva innovación: la integración de Claude, el modelo de inteligencia artificial de última generación diseñado por Anthropic. Para descubrir los resultados en todos los idiomas, lo invito a visitar esta página: Traducciones con Anthropic.

Lire la suite →

Evolução do Script de Tradução Automática: Integração de Claude da Anthropic

Logo

O script de tradução automática, já reforçado pelas capacidades da OpenAI e da Mistral AI, acolhe uma nova inovação: a integração de Claude, o modelo de inteligência artificial de última geração concebido pela Anthropic. Para descobrir os resultados em todas as línguas, convido você a visitar esta página: Traduções com Anthropic.

Lire la suite →

我的博客翻译脚本的演变:集成Mistral AI

在这篇文章中,我将与您分享我的博客翻译脚本的演变,该脚本使用人工智能,并集成了Mistral AI技术。要查看所有语言的结果,请访问此页面:Mistral AI翻译

Lire la suite →

博客翻译脚本的演进:整合 Mistral AI

在本文中,我将与您分享使用人工智能的博客翻译脚本的演进,并整合了 Mistral AI 技术。要在所有语言中查看结果,请访问此页面:使用 Mistral AI 进行翻译

为什么要这个脚本?

我的翻译脚本的目标是使我的博客文章能够在多种语言中获得,通过自动化其翻译。想象一下一个智能翻译器,能够阅读法语文章并忠实地将其还原为英语、西班牙语或其他语言,同时保留原始格式。这就是我的脚本所做的,它利用了最新的人工智能进步。

初始脚本的主要功能

  1. 自动翻译:使用 OpenAI 或 Mistral AI API 进行精确翻译。
  2. 保留格式:脚本保留了原始格式,包括代码块和链接。
  3. 多语言:能够翻译成多种语言。
  4. 支持 Markdown:适用于常用于博客中的 Markdown 文件。
  5. 自动化:通过单个命令翻译多篇文章。

整合 Mistral AI 的新功能

Mistral AI 整合

Mistral AI 是一个提供自然语言处理服务的先进人工智能平台。通过整合 Mistral AI,我可以扩大我的脚本的翻译和自动化能力,充分利用另一个强大的人工智能资源。此外,Mistral AI 是一家法国公司!

智能文本分段

脚本现在可以将长文本分段,以便更好地适应 AI 模型的令牌限制,从而更有效地管理大量文本的翻译。

添加翻译说明

新功能可以在翻译后的文档末尾添加翻译说明,告知读者翻译过程。

选择 OpenAI 和 Mistral AI

脚本现在提供了选择 OpenAI 和 Mistral AI 进行翻译的灵活性,根据用户的具体需求和首选项。

文件和目录管理

改进了文件和目录的管理,允许在必要时排除某些部分的翻译过程。

脚本代码

更新后的脚本可以在 我的 GitLab 上查找。

您还可以在此处找到它的当前版本:

#!/usr/bin/env python3

import os
import argparse
import time
from openai import OpenAI
import re
from mistralai.client import MistralClient
from mistralai.models.chat_completion import ChatMessage

EXCLUDE_PATTERNS = ["traductions_"]

# Initialisation de la configuration avec les valeurs par défaut
DEFAULT_OPENAI_API_KEY = "votre-clé-api-openai-par-défaut"
DEFAULT_MISTRAL_API_KEY = "votre-clé-api-mistral-par-défaut"
DEFAULT_MODEL_OPENAI = "gpt-4-1106-preview"
DEFAULT_MODEL_MISTRAL = "mistral-medium"
DEFAULT_SOURCE_LANG = "fr"
DEFAULT_TARGET_LANG = "en"
DEFAULT_SOURCE_DIR = "content/posts"
DEFAULT_TARGET_DIR = "traductions_en"
MODEL_TOKEN_LIMITS = {
    "gpt-4-1106-preview": 4096,
    "gpt-4-vision-preview": 4096,
    "gpt-4": 8192,
    "gpt-4-32k": 32768,
    "gpt-4-0613": 8192,
    "gpt-4-32k-0613": 32768,
}


def segment_text(text, max_length):
    """
    Divise un texte Markdown en segments ne dépassant pas la longueur maximale spécifiée,
    en essayant de conserver des points de coupure naturels.

    Args:
        text (str): Texte Markdown à diviser.
        max_length (int): Longueur maximale de chaque segment.

    Returns:
        list[str]: Liste des segments de texte Markdown.
    """
    segments = []
    while text:
        if len(text) <= max_length:
            segments.append(text)
            break
        segment = text[:max_length]
        next_index = max_length

        # Recherche de points de coupure naturels (fin de phrase, fin de paragraphe, fin de titre)
        last_good_break = max(
            segment.rfind(". "), segment.rfind("\n\n"), segment.rfind("\n#")
        )
        if last_good_break != -1:
            next_index = last_good_break + 1

        segments.append(text[:next_index])
        text = text[next_index:]

    return segments


def translate(text, client, args, use_mistral=False, is_translation_note=False):
    """
    Traduit un texte en utilisant les services de traduction d'OpenAI ou Mistral AI.
    Cette fonction segmente d'abord le texte pour s'assurer qu'il respecte la limite de tokens du modèle.
    Elle utilise un argument optionnel 'is_translation_note' pour gérer différemment les notes de traduction.

    Args:
        text (str): Texte à traduire.
        client: Client de l'API de traduction (OpenAI ou Mistral AI).
        args: Arguments contenant les informations de configuration.
        use_mistral (bool): Indique si l'API Mistral AI doit être utilisée (True) ou l'API OpenAI (False).
        is_translation_note (bool): Indique si le texte est une note de traduction, ce qui nécessite un traitement spécial.

    Returns:
        str: Texte traduit.
    """
    model_limit = MODEL_TOKEN_LIMITS.get(args.model, 4096)

    segments = segment_text(text, model_limit)
    translated_segments = []

    for segment in segments:
        try:
            prompt_message = ""
            if is_translation_note:
                prompt_message = f"Translate this exact sentence to {args.target_lang}, without any additions or explanations: '{segment}'"
            else:
                prompt_message = f"Please translate this text from {args.source_lang} to {args.target_lang}, and do not translate or change URLs, image paths, and code blocks (delimited by ```) : {segment}"

            if use_mistral:
                messages = [ChatMessage(role="user", content=prompt_message)]
                response = client.chat(model=args.model, messages=messages)
            else:
                messages = [
                    {"role": "system", "content": prompt_message},
                    {"role": "user", "content": segment},
                ]
                response = client.chat.completions.create(
                    model=args.model, messages=messages
                )
            translated_text = response.choices[0].message.content.strip()
        except Exception as e:
            raise RuntimeError(f"Erreur lors de la traduction : {e}")

        translated_segments.append(translated_text)

    return " ".join(translated_segments)


def add_translation_note(client, args, use_mistral):
    """
    Génère et traduit une note de traduction.

    Args:
        client: Objet client de traduction.
        args: Arguments contenant les informations de langue source et cible, et le modèle utilisé.
        use_mistral (bool): Indique si l'API Mistral AI doit être utilisée pour la traduction.

    Returns:
        str: Note de traduction traduite.
    """
    translation_note_src = f"Ce document a été traduit de la version {args.source_lang} par le modèle {args.model}."
    try:
        # Utiliser un prompt très spécifique pour Mistral AI
        if use_mistral:
            prompt_message = f"Translate this exact sentence to {args.target_lang}, without any additions or explanations: '{translation_note_src}'"
            messages = [ChatMessage(role="user", content=prompt_message)]
            response = client.chat(model=args.model, messages=messages)
            translated_note = response.choices[0].message.content.strip()
        else:
            # Pour OpenAI
            messages = [
                {
                    "role": "system",
                    "content": f"Translate this exact sentence to {args.target_lang}, without any additions or explanations: '{translation_note_src}'",
                },
                {"role": "user", "content": translation_note_src},
            ]
            response = client.chat.completions.create(
                model=args.model, messages=messages
            )
            translated_note = response.choices[0].essage.content.strip()

        return f"\n\n**{translated_note}**\n\n"
    except Exception as e:
        raise RuntimeError(f"Erreur lors de l'ajout de la note de traduction : {e}")


def translate_markdown_file(
    file_path, output_path, client, args, use_mistral, add_translation_note=False
):
    """
    Traduit un fichier Markdown en utilisant les modèles de traitement du langage naturel de OpenAI ou Mistral AI.

    Args:
        file_path (str): Chemin complet vers le fichier d'entrée.
        output_path (str): Chemin complet vers le fichier de sortie.
        client: Objet client de traduction.
        args: Arguments supplémentaires pour la traduction.
        use_mistral (bool): Indique si l'API Mistral AI doit être utilisée pour la traduction.
        add_translation_note (bool): Indique si une note de traduction doit être ajoutée.

    Returns:
        None
    """
    try:
        # Calcul des chemins relatifs pour un affichage plus lisible
        relative_file_path = os.path.join(
            args.source_dir, os.path.relpath(file_path, start=args.source_dir)
        )
        relative_output_path = os.path.join(
            args.target_dir, os.path.relpath(output_path, start=args.target_dir)
        )

        print(f"Traitement du fichier : {relative_file_path}")
        start_time = time.time()

        # Lecture du contenu du fichier
        with open(file_path, "r", encoding="utf-8") as f:
            content = f.read()

        # Extraction et remplacement temporaire des blocs de code pour éviter leur traduction
        code_blocks = re.findall(
            r"(^```[a-zA-Z]*\n.*?\n^```)", content, flags=re.MULTILINE | re.DOTALL
        )
        placeholders = [f"#CODEBLOCK{index}#" for index, _ in enumerate(code_blocks)]
        for placeholder, code_block in zip(placeholders, code_blocks):
            content = content.replace(code_block, placeholder)

        # Traduction du contenu
        translated_content = translate(content, client, args, use_mistral)

        # Restauration des blocs de code dans le contenu traduit
        for placeholder, code_block in zip(placeholders, code_blocks):
            translated_content = translated_content.replace(placeholder, code_block)

        # Ajout de la note de traduction si nécessaire
        if add_translation_note:
            translation_note = translate(
                "Ce document a été traduit de la version "
                + args.source_lang
                + " par le modèle "
                + args.model
                + ".",
                client,
                args,
                use_mistral,
                True,
            )
            translated_content += "\n\n**" + translation_note + "**\n\n"

        # Écriture du contenu traduit dans le fichier de sortie
        clean_output_path = os.path.normpath(output_path)
        with open(clean_output_path, "w", encoding="utf-8") as f:
            f.write(translated_content)

        end_time = time.time()
        print(
            f"Fichier '{relative_file_path}' traduit en {end_time - start_time:.2f} secondes et enregistré sous : {relative_output_path}"
        )
    except IOError as e:
        print(f"Erreur lors du traitement du fichier '{relative_file_path}': {e}")
    except Exception as e:
        print(
            f"Une erreur inattendue est survenue lors de la traduction du fichier '{relative_file_path}': {e}"
        )


def is_excluded(path):
    """
    Vérifie si le chemin donné correspond à l'un des motifs d'exclusion.

    Cette fonction parcourt la liste des motifs d'exclusion définis dans EXCLUDE_PATTERNS.
    Si l'un de ces motifs est trouvé dans le chemin fourni, la fonction renvoie True,
    indiquant que le chemin doit être exclu du processus de traduction.

    Args:
        path (str): Le chemin du fichier ou du répertoire à vérifier.

    Returns:
        bool: True si le chemin correspond à l'un des motifs d'exclusion, False sinon.
    """
    for pattern in EXCLUDE_PATTERNS:
        if pattern in path:
            return True
    return False


def translate_directory(
    input_dir, output_dir, client, args, use_mistral, add_translation_note
):
    """
    Traduit tous les fichiers markdown dans le répertoire d'entrée et ses sous-répertoires.

    Args:
        input_dir (str): Chemin vers le répertoire d'entrée.
        output_dir (str): Chemin vers le répertoire de sortie.
        client: Objet client de traduction.
        args: Arguments supplémentaires pour la traduction.
        use_mistral (bool): Indique si l'API Mistral AI doit être utilisée pour la traduction.
        add_translation_note (bool): Indique si une note de traduction doit être ajoutée.

    Returns:
        None
    """
    input_dir = os.path.abspath(input_dir)
    output_dir = os.path.abspath(output_dir)

    if not os.path.exists(output_dir):
        os.makedirs(output_dir)

    output_base_dir = os.path.basename(output_dir)

    for root, dirs, files in os.walk(input_dir, topdown=True):
        if is_excluded(root) or root.startswith(output_dir):
            continue

        if (
            os.path.basename(root) == output_base_dir
            and os.path.abspath(os.path.join(root, "..")) == input_dir
        ):
            continue

        for file in files:
            if file.endswith(".md") and not is_excluded(file):
                file_path = os.path.join(root, file)
                base, _ = os.path.splitext(file)
                output_file = f"{base}-{args.model}-{args.target_lang}.md"
                relative_path = os.path.relpath(root, input_dir)
                output_path = os.path.join(output_dir, relative_path, output_file)

                os.makedirs(os.path.dirname(output_path), exist_ok=True)

                if not os.path.exists(output_path):
                    translate_markdown_file(
                        file_path,
                        output_path,
                        client,
                        args,
                        use_mistral,
                        add_translation_note,
                    )
                    print(f"Fichier '{file}' traité.")


def main():
    """
    Point d'entrée principal du script de traduction de fichiers Markdown.

    Ce script traduit des fichiers Markdown d'une langue source à une langue cible en utilisant
    les services de traduction de l'API OpenAI ou Mistral AI. Il prend en charge la segmentation
    des textes longs et peut également ajouter une note de traduction en fin de document.

    Arguments du script:
    --source_dir: Répertoire contenant les fichiers Markdown à traduire.
    --target_dir: Répertoire de destination pour les fichiers traduits.
    --model: Modèle de traduction GPT à utiliser.
    --target_lang: Langue cible pour la traduction.
    --source_lang: Langue source des documents.
    --use_mistral: Indicateur pour utiliser l'API Mistral AI pour la traduction.
    --add_translation_note: Indicateur pour ajouter une note de traduction au contenu traduit.
    """
    parser = argparse.ArgumentParser(description="Traduit les fichiers Markdown.")
    parser.add_argument(
        "--source_dir",
        type=str,
        default=DEFAULT_SOURCE_DIR,
        help="Répertoire source contenant les fichiers Markdown",
    )
    parser.add_argument(
        "--target_dir",
        type=str,
        default=DEFAULT_TARGET_DIR,
        help="Répertoire cible pour sauvegarder les traductions",
    )
    parser.add_argument(
        "--model", type=str, help="Modèle GPT à utiliser pour la traduction"
    )
    parser.add_argument(
        "--target_lang",
        type=str,
        default=DEFAULT_TARGET_LANG,
        help="Langue cible pour la traduction",
    )
    parser.add_argument(
        "--source_lang",
        type=str,
        default=DEFAULT_SOURCE_LANG,
        help="Langue source pour la traduction",
    )
    parser.add_argument(
        "--use_mistral",
        action="store_true",
        help="Utiliser l'API Mistral AI pour la traduction",
    )
    parser.add_argument(
        "--add_translation_note",
        action="store_true",
        help="Ajouter une note de traduction au contenu traduit",
    )

    args = parser.parse_args()

    if not os.path.isdir(args.source_dir):
        raise ValueError(
            f"Le répertoire source spécifié n'existe pas : {args.source_dir}"
        )
    if not os.path.exists(args.target_dir):
        os.makedirs(args.target_dir)

    if args.use_mistral:
        args.model = args.model if args.model else DEFAULT_MODEL_MISTRAL
        api_key = os.getenv("MISTRAL_API_KEY", DEFAULT_MISTRAL_API_KEY)
        if not api_key:
            raise ValueError("Clé API Mistral non spécifiée.")
        client = MistralClient(api_key=api_key)
    else:
        args.model = args.model if args.model else DEFAULT_MODEL_OPENAI
        openai_api_key = os.getenv("OPENAI_API_KEY", DEFAULT_OPENAI_API_KEY)
        if not openai_api_key:
            raise ValueError("Clé API OpenAI non spécifiée.")
        client = OpenAI(api_key=openai_api_key)

    translate_directory(
        args.source_dir,
        args.target_dir,
        client,
        args,
        args.use_mistral,
        args.add_translation_note,
    )

    if args.use_mistral:
        try:
            del client
        except TypeError:
            pass


if __name__ == "__main__":
    main()

请继续关注更多关于人工智能有趣世界的更新和创新!

Lire la suite →

ブログ翻訳スクリプトの進化:Mistral AIの統合

Logo

この記事では、人工知能を利用したブログ翻訳スクリプトの進化について、Mistral AI技術の統合を交えてお話しします。すべての言語での結果を確認するには、こちらのページをご覧ください:Mistral AIによる翻訳

Lire la suite →

블로그 번역 스크립트의 진화: Mistral AI 통합

Logo

이 글에서는 인공지능을 사용한 블로그 번역 스크립트의 진화와 Mistral AI 기술 통합에 대해 이야기하겠습니다. 모든 언어로 된 결과를 보려면 이 페이지를 방문해 주세요: Mistral AI 번역.

Lire la suite →

मेरे ब्लॉग अनुवाद स्क्रिप्ट का विकास: मिस्त्रल एआई का एकीकरण

Logo

इस लेख में, मैं कृत्रिम बुद्धिमत्ता का उपयोग करके अपने ब्लॉग अनुवाद स्क्रिप्ट के विकास के बारे में बात करूंगा, जिसमें मिस्त्रल एआई तकनीक का एकीकरण शामिल है। सभी भाषाओं में परिणाम देखने के लिए, कृपया इस पृष्ठ पर जाएं: मिस्त्रल एआई के साथ अनुवाद

Lire la suite →

Utveckling av mitt Bloggöversättningsscript: Integrering av Mistral AI

Logo

I den här artikeln kommer jag att prata om utvecklingen av mitt bloggöversättningsscript som använder artificiell intelligens, med integrering av Mistral AI-teknologi. För att upptäcka resultaten på alla språk, besök denna sida: Översättningar med Mistral AI.

Lire la suite →

Ewolucja mojego Skryptu Tłumaczenia Bloga: Integracja z Mistral AI

Logo

W tym artykule opowiem o ewolucji mojego skryptu tłumaczenia bloga z wykorzystaniem sztucznej inteligencji, integrując technologię Mistral AI. Aby odkryć wyniki we wszystkich językach, zapraszam na tę stronę: Tłumaczenia z Mistral AI.

Lire la suite →

Evoluzione del mio Script di Traduzione del Blog: Integrazione di Mistral AI

Logo

In questo articolo, parlerò dell’evoluzione del mio script di traduzione del blog utilizzando l’intelligenza artificiale, con l’integrazione della tecnologia Mistral AI. Per scoprire i risultati in tutte le lingue, vi invito a visitare questa pagina: Traduzioni con Mistral AI.

Lire la suite →

Evolution of my Blog Translation Script: Integration of Mistral AI

In this article, I will talk about the evolution of my blog translation script using artificial intelligence, with the integration of Mistral AI technology. To discover the results in all languages, I invite you to visit this page: Translations with Mistral AI.

Lire la suite →

Évolution de mon Script de Traduction de Blog : Intégration de Mistral AI

Logo

Dans cet article, je vais vous parler de l’évolution de mon script de traduction de blog utilisant l’intelligence artificielle, avec l’intégration de la technologie Mistral AI. Pour découvrir les résultats dans toutes les langues, je vous invite à visiter cette page : Traductions avec Mistral AI.

Lire la suite →

Evolutie van mijn Blog Vertalingsscript: Integratie van Mistral AI

Logo

In dit artikel zal ik het hebben over de evolutie van mijn blogvertaalscript dat gebruikmaakt van kunstmatige intelligentie, met de integratie van de Mistral AI-technologie. Om de resultaten in alle talen te ontdekken, nodig ik je uit om deze pagina te bezoeken: Vertalingen met Mistral AI.

Lire la suite →

Evoluția Scriptului meu de Traducere a Blogului: Integrarea Mistral AI

Logo

În acest articol, vă voi vorbi despre evoluția scriptului meu de traducere a blogului utilizând inteligența artificială, cu integrarea tehnologiei Mistral AI. Pentru a descoperi rezultatele în toate limbile, vă invit să vizitați această pagină: Traduceri cu Mistral AI.

Lire la suite →

Evolución de mi Script de Traducción de Blog: Integración de Mistral AI

En este artículo, te hablaré sobre la evolución de mi script de traducción de blog utilizando la inteligencia artificial, con la integración de la tecnología Mistral AI. Para descubrir los resultados en todos los idiomas, te invito a visitar esta página: Traducciones con Mistral AI.

Por qué este Script?

El objetivo de mi script de traducción es hacer que mis artículos de blog sean accesibles en varios idiomas, automatizando su traducción. Imagina un traductor inteligente capaz de leer un artículo en francés y devolverlo fielmente en inglés, español u otros idiomas, manteniendo el formato original. Eso es lo que hace mi script, aprovechando los últimos avances de la IA.

Lire la suite →

Evolución de mi Script de Traducción de Blog: Integración de Mistral AI

Logo

En este artículo, voy a hablarles sobre la evolución de mi script de traducción de blog que utiliza la inteligencia artificial, con la integración de la tecnología Mistral AI. Para descubrir los resultados en todos los idiomas, les invito a visitar esta página: Traducciones con Mistral AI.

Lire la suite →

Evolución de mi Script de Traducción de Blog: Integración de Mistral AI

En este artículo, les hablaré sobre la evolución de mi script de traducción de blog utilizando la inteligencia artificial, con la integración de la tecnología Mistral AI. Para descubrir los resultados en todos los idiomas, los invito a visitar esta página: Traducciones con Mistral AI.

Lire la suite →

Evolução do Meu Script de Tradução de Blog: Integração do Mistral AI

Logo

Neste artigo, vou falar sobre a evolução do meu script de tradução de blog utilizando a inteligência artificial, com a integração da tecnologia Mistral AI. Para descobrir os resultados em todas as línguas, eu convido você a visitar esta página: Traduções com Mistral AI.

Lire la suite →

用IA革新博客文章翻译

在这篇文章中,我分享了一个作为概念证明(POC)开发的Python脚本,用于自动化翻译我的博客文章,使用OpenAI的GPT-4语言模型。这个脚本专门设计用于处理Hugo博客的Markdown文件结构,便于管理多语言文章。它们可以在英文西班牙文中文中获得。

Lire la suite →

用AI彻底改变博客文章翻译

在这篇文章中,我分享了一个Python脚本,作为一个概念验证(POC),使用OpenAI的GPT-4语言模型自动翻译我的博客文章。这个脚本专门设计用于处理我的Hugo博客结构中的Markdown文件,方便管理我文章的多语言版本。它们有英文西班牙文中文版本。

Lire la suite →

ブログ記事の翻訳をAIで革命する

Logo

この記事では、OpenAI の GPT-4 言語モデルを使用してブログの投稿を自動翻訳するために作成された Proof of Concept (POC) 用の Python スクリプトを共有します。このスクリプトは、Hugo ブログ構造内の Markdown ファイルを処理するために特別に設計されており、記事の多言語管理を容易にします。これらの記事は 英語スペイン語中国語 で利用可能です。

Lire la suite →

블로그 게시물 번역의 혁신: AI와 함께하는 변화

Logo

이 기사에서는 OpenAI의 GPT-4 언어 모델을 사용하여 블로그 게시물의 번역을 자동화하기 위해 개발된 Proof of Concept (POC) Python 스크립트를 공유합니다. 이 스크립트는 특히 제 Hugo 블로그 구조에서 Markdown 파일을 처리하도록 설계되어 다국어 관리가 용이합니다. 이들은 영어, 스페인어, 중국어로 제공됩니다.

Lire la suite →

एआई के साथ ब्लॉग लेखों के अनुवाद में क्रांति

Logo

इस लेख में, मैं एक पीओसी (प्रूफ़ ऑफ़ कॉन्सेप्ट) के रूप में एक पाइथन स्क्रिप्ट साझा कर रहा हूँ, जो ओपनएआई के GPT-4 भाषा मॉडल का उपयोग करके मेरे ब्लॉग पोस्टों के अनुवाद को स्वचालित करने के लिए विकसित की गई है। यह स्क्रिप्ट विशेष रूप से मेरे ह्यूगो ब्लॉग की संरचना में मार्कडाउन फाइलों को प्रोसेस करने के लिए डिज़ाइन की गई है, जिससे मेरे लेखों की बहुभाषी प्रबंधन में सुविधा हो। वे अंग्रेजी, स्पेनिश और चीनी में उपलब्ध हैं।

Lire la suite →

Rivoluzionare le Traduzioni degli Articoli del Blog con l'IA

Logo

In questo articolo, condivido uno script Python sviluppato come Proof of Concept (POC) per automatizzare la traduzione dei post del mio blog, utilizzando il modello di linguaggio GPT-4 di OpenAI. Questo script è specificamente progettato per trattare file Markdown nella struttura del mio blog Hugo, facilitando la gestione multilingue dei miei articoli. Sono disponibili in Inglese, Spagnolo e Cinese.

Lire la suite →

Révolutionner les Traductions d'articles de Blog avec l'IA

Logo

Dans cet article, je partage un script Python développé comme un Proof of Concept (POC) pour automatiser la traduction des posts de mon blog, en utilisant le modèle de langage GPT-4 d’OpenAI. Ce script est spécifiquement conçu pour traiter des fichiers Markdown dans la structure de mon blog Hugo, facilitant la gestion multilingue de mes articles. Ils sont disponibles en Anglais, Espagnol et Chinois.

Lire la suite →

Revoluționați Traducerile Articolelor de Blog cu IA

Logo

În acest articol, împărtășesc un script Python dezvoltat ca un Proof of Concept (POC) pentru automatizarea traducerii postărilor de pe blogul meu, folosind modelul de limbaj GPT-4 de la OpenAI. Acest script este special conceput pentru a procesa fișiere Markdown în structura blogului meu Hugo, facilitând gestionarea multilingvă a articolelor mele. Ele sunt disponibile în Engleză, Spaniolă și Chineză.

Lire la suite →

Revolucionar las Traducciones de Entradas de Blog con IA

En este artículo, comparto un script de Python desarrollado como una Prueba de Concepto (POC) para automatizar la traducción de las entradas de mi blog, utilizando el modelo de lenguaje GPT-4 de OpenAI. Este script está específicamente diseñado para procesar archivos Markdown en la estructura de mi blog Hugo, facilitando la gestión multilingüe de mis entradas. Están disponibles en Inglés, Español y Chino.

Lire la suite →

Revolucionar las Traducciones de Artículos de Blog con la IA

Logo

En este artículo, comparto un script Python desarrollado como un Proof of Concept (POC) para automatizar la traducción de posts de mi blog, utilizando el modelo de lenguaje GPT-4 de OpenAI. Este script está diseñado específicamente para tratar archivos Markdown en la estructura de mi blog Hugo, facilitando la gestión multilingüe de mis artículos. Están disponibles en Inglés, Español y Chino.

Lire la suite →

Revolucionar las Traducciones de Artículos de Blog con IA

En este artículo, comparto un script de Python desarrollado como una Prueba de Concepto (POC) para automatizar la traducción de las publicaciones de mi blog, utilizando el modelo de lenguaje GPT-4 de OpenAI. Este script está específicamente diseñado para procesar archivos Markdown en la estructura de mi blog Hugo, facilitando la gestión multilingüe de mis artículos. Están disponibles en Inglés, Español y Chino.

Lire la suite →

Revolucionando as Traduções de Artigos de Blog com IA

Logo

Neste artigo, compartilho um script Python desenvolvido como uma Prova de Conceito (POC) para automatizar a tradução dos posts do meu blog, utilizando o modelo de linguagem GPT-4 da OpenAI. Este script é especificamente projetado para tratar arquivos Markdown na estrutura do meu blog Hugo, facilitando a gestão multilíngue dos meus artigos. Eles estão disponíveis em Inglês, Espanhol e Chinês.

Lire la suite →