Mistral AI
2025
Déploiement Automatisé de LibreChat sur AWS EC2 : Une Solution DevOps Innovante et Accessible
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.
माइज़ा अपडेट: AWS EC2 पर स्वचालित परिनियोजन के साथ LibreChat संस्करण v0.7.6
मैं खुश हूं यह घोषणा करते हुए कि AWS EC2 पर LibreChat के स्वचालित परिनियोजन के मेरे प्रोजेक्ट को हाल ही में LibreChat को स्थापित करने के तरीके में आए हाल के बदलावों से संबंधित समस्याओं को ठीक करने के लिए अपडेट किया गया है, और अब संस्करण v0.7.6 का समर्थन करता है। इस अपडेट में ऑन-डिमांड और स्पॉट इंस्टेंस के बीच चयन करने की क्षमता भी शामिल है, साथ ही उपयोग को सरल बनाने के लिए सुधार भी हैं, यहां तक कि शुरुआती लोगों के लिए भी।
تحديث: إصدار LibreChat v0.7.6 مع نشر تلقائي على AWS EC2
أنا سعيد بالإعلان عن أن مشروعي للنشر التلقائي لـ LibreChat على AWS EC2 قد تم تحديثه لتصحيح مشاكل تتعلق بالتغييرات الأخيرة في طريقة تثبيت LibreChat، مع دعم الإصدار v0.7.6 الآن. يتضمن هذا التحديث أيضًا إمكانية الاختيار بين مثيلات On-Demand و Spot، بالإضافة إلى تحسينات لتبسيط الاستخدام، حتى للمبتدئين.
Uppdatering: LibreChat version v0.7.6 med automatiserad distribution på AWS EC2
Jag är glad att kunna meddela att mitt projekt för automatiserad distribution av LibreChat på AWS EC2 har uppdaterats för att åtgärda problem relaterade till de senaste ändringarna i hur man installerar LibreChat, samtidigt som det nu stöder version v0.7.6. Denna uppdatering inkluderar också möjligheten att välja mellan On-Demand- och Spot-instanser, samt förbättringar för att förenkla användningen, även för nybörjare.
Update: LibreChat version v0.7.6 with automated deployment on AWS EC2
I am pleased to announce that my project for automated deployment of LibreChat on AWS EC2 has been updated to fix issues related to recent changes in how LibreChat is installed, while now supporting version v0.7.6. This update also includes the ability to choose between On-Demand and Spot instances, as well as improvements to simplify usage, even for beginners.
Update: LibreChat versie v0.7.6 met geautomatiseerde implementatie op AWS EC2
Ik ben verheugd aan te kondigen dat mijn project voor geautomatiseerde implementatie van LibreChat op AWS EC2 is bijgewerkt om problemen op te lossen die verband houden met recente wijzigingen in de manier waarop LibreChat wordt geïnstalleerd, en het ondersteunt nu versie v0.7.6. Deze update omvat ook de mogelijkheid om te kiezen tussen On-Demand en Spot-instances, evenals verbeteringen om het gebruik te vereenvoudigen, zelfs voor beginners.
Mise à jour : LibreChat version v0.7.6 avec déploiement automatisé sur AWS EC2
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.
Atualização: LibreChat versão v0.7.6 com implantação automatizada no AWS EC2
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.
Aktualizacja: LibreChat wersja v0.7.6 z automatycznym wdrożeniem na AWS EC2
Z przyjemnością informuję, że mój projekt automatycznego wdrożenia LibreChat na AWS EC2 został zaktualizowany w celu naprawy problemów związanych z niedawnymi zmianami w sposobie instalacji LibreChat, jednocześnie wspierając teraz wersję v0.7.6. Ta aktualizacja obejmuje również możliwość wyboru między instancjami On-Demand a Spot, a także ulepszenia mające na celu uproszczenie użytkowania, nawet dla początkujących.
Aktualisierung: LibreChat Version v0.7.6 mit automatisierter Bereitstellung auf AWS EC2
Ich freue mich, bekannt zu geben, dass mein Projekt zur automatisierten Bereitstellung von LibreChat auf AWS EC2 aktualisiert wurde, um Probleme im Zusammenhang mit den jüngsten Änderungen bei der Installation von LibreChat zu beheben und nun die Version v0.7.6 unterstützt. Dieses Update beinhaltet auch die Möglichkeit, zwischen On-Demand- und Spot-Instanzen zu wählen, sowie Verbesserungen, um die Nutzung auch für Anfänger zu vereinfachen.
Aggiornamento: LibreChat versione v0.7.6 con deployment automatizzato su AWS EC2
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.
Actualizare: LibreChat versiunea v0.7.6 cu implementare automată pe AWS EC2
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.
Actualización: LibreChat versión v0.7.6 con despliegue automatizado en AWS EC2
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.
2024
स्वचालित अनुवाद स्क्रिप्ट का अद्यतन: संस्करण 1.5
मुझे यह घोषणा करते हुए खुशी हो रही है कि मेरे स्क्रिप्ट AI-Powered Markdown Translator का संस्करण 1.5 जारी किया गया है। इस अद्यतन में कई महत्वपूर्ण सुधार शामिल हैं, जिनमें प्रमुख मॉडल का अद्यतन, अनुवाद प्रॉम्प्ट का अनुकूलन, कोड का पुनर्गठन और आउटपुट फ़ाइलों की बेहतर प्रबंधन शामिल हैं।
Uppdatering av det automatiska översättningsscriptet: Version 1.5
Jag är glad att kunna tillkännage lanseringen av version 1.5 av mitt script AI-Powered Markdown Translator. Denna uppdatering medför flera betydande förbättringar, inklusive uppdatering av standardmodeller, optimering av översättningsprompter, omstrukturering av koden och bättre hantering av utdatafiler.
Update van het Automatische Vertalingsscript: Versie 1.5
Ik ben verheugd de release van versie 1.5 van mijn script AI-Powered Markdown Translator aan te kondigen. Deze update brengt verschillende significante verbeteringen, waaronder de update van de standaardmodellen, optimalisatie van vertaalprompts, coderefactorisatie en betere beheer van uitvoerbestanden.
Update des automatischen Übersetzungsskripts: Version 1.5
Ich freue mich, die Veröffentlichung der Version 1.5 meines Skripts AI-Powered Markdown Translator ankündigen zu können. Dieses Update bringt mehrere bedeutende Verbesserungen, darunter die Aktualisierung der Standardmodelle, die Optimierung der Übersetzungsprompts, eine Refaktorisierung des Codes und eine verbesserte Verwaltung der Ausgabedateien.
Mise à Jour du Script de Traduction Automatique : Version 1.5
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.
Automatic Translation Script Update: Version 1.5
I am pleased to announce the release of version 1.5 of my script AI-Powered Markdown Translator. This update brings several significant improvements, including updates to default models, optimization of translation prompts, code refactoring, and better output file management.
Atualização do Script de Tradução Automática: Versão 1.5
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.
Aktualizacja Skryptu do Automatycznego Tłumaczenia: Wersja 1.5
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.
Aggiornamento dello Script di Traduzione Automatica: Versione 1.5
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.
Actualizare a Scriptului de Traducere Automată: Versiunea 1.5
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.
Actualización del Script de Traducción Automática: Versión 1.5
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.
النشر الآلي لـ LibreChat على EC2 AWS
يقدم هذا المقال مشروع POC (دليل إثبات المفهوم) للنشر الآلي لـ LibreChat على AWS EC2، باستخدام Terraform لتنسيق البنية التحتية وفقًا لمبدأ البنية التحتية كرمز، وبرنامج User-Data Bash لتثبيت المكونات على EC2، وAWS Systems Manager لإدارة مركزية لمفاتيح API وتتبع النشر. يتم التركيز على الأتمتة وتحسين التكاليف من خلال استخدام حالات Spot.
Zautomatyzowane wdrażanie LibreChat na EC2 AWS
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.
Geautomatiseerde implementatie van LibreChat op EC2 AWS
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.
Distribuzione automatizzata di LibreChat su EC2 AWS
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.
Despliegue automatizado de LibreChat en EC2 AWS
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.
Desdobramento automatizado do LibreChat na EC2 AWS
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.
Déploiement automatisé de LibreChat sur EC2 AWS
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.
Deplasare automatizată a LibreChat pe EC2 AWS
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.
Automatiserad distribution av LibreChat på EC2 AWS
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.
Automatische Bereitstellung von LibreChat auf AWS EC2
Dieser Artikel stellt ein POC-Projekt (Proof of Concept) für die automatische Bereitstellung von LibreChat auf AWS EC2 vor, das Terraform zur Orchestrierung der Infrastruktur nach dem Prinzip Infrastructure as Code, ein User-Data-Bash-Skript zur Installation der Komponenten auf EC2 und AWS Systems Manager zur zentralen Verwaltung von API-Schlüsseln und zur Überwachung der Bereitstellung verwendet. Der Schwerpunkt liegt auf der Automatisierung und Kostenoptimierung durch die Nutzung von Spot-Instanzen.
Automated Deployment of LibreChat on AWS EC2
This article presents a POC (Proof of Concept) project for the automated deployment of LibreChat on AWS EC2, using Terraform to orchestrate the infrastructure according to the Infrastructure as Code principle, a Bash User-Data script to install components on EC2, and AWS Systems Manager for centralized API key management and deployment tracking. The focus is on automation and cost optimization through the use of Spot instances.
स्वचालित अनुवाद स्क्रिप्ट का विकास : Anthropic के Claude का एकीकरण
स्वचालित अनुवाद स्क्रिप्ट, जो पहले से ही OpenAI और Mistral AI की क्षमताओं से मजबूत है, अब एक नई नवाचार को अपना रही है : Anthropic द्वारा डिजाइन किए गए नवीनतम पीढ़ी के आर्टिफिशियल इंटेलिजेंस मॉडल Claude का एकीकरण। सभी भाषाओं में परिणाम देखने के लिए, मैं आपको इस पृष्ठ पर जाने के लिए आमंत्रित करता हूं : Anthropic के साथ अनुवाद।
Utveckling av Automatisk Översättningsskript: Integration av Claude från Anthropic
Det automatiska översättningsskript, som redan är förstärkt genom kapaciteterna hos OpenAI och Mistral AI, välkomnar en ny innovation: integrationen av Claude, den senaste generationens AI-modell designad av Anthropic. För att upptäcka resultaten på alla språk, besök denna sida: Översättningar med Anthropic.
Ewolucja skryptu tłumaczenia automatycznego: integracja Claude'a od Anthropic
Skrypt tłumaczenia automatycznego, już wzmocniony możliwościami OpenAI i Mistrala AI, wita nową innowację: integrację Claude’a, najnowszego modelu sztucznej inteligencji zaprojektowanego przez Anthropic. Aby odkryć wyniki we wszystkich językach, zapraszam do odwiedzenia tej strony: Tłumaczenia z Anthropic.
Evoluzione dello Script di Traduzione Automatica: Integrazione di Claude di Anthropic
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.
Evolution of the Automatic Translation Script: Integration of Anthropic's Claude
The automatic translation script, already strengthened by the capabilities of OpenAI and Mistral AI, welcomes a new innovation: the integration of Claude, the latest generation artificial intelligence model designed by Anthropic. To discover the results in all languages, I invite you to visit this page: Translations with Anthropic.
Evolution of the Automatic Translation Script: Integration of Anthropic's Claude
The automatic translation script, already enhanced by the capabilities of OpenAI and Mistral AI, welcomes a new innovation: the integration of Claude, the latest generation artificial intelligence model designed by Anthropic. To discover the results in all languages, I invite you to visit this page: Translations with Anthropic.
Évolution du Script de Traduction Automatique : Intégration de Claude d'Anthropic
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.
Evolutie van het Automatische Script voor Vertaling: Integratie van Claude van Anthropic
Het automatische vertalingsscript, al versterkt door de mogelijkheden van OpenAI en Mistral AI, verwelkomt een nieuwe innovatie: de integratie van Claude, het nieuwste generatie kunstmatige intelligentiemodel ontworpen door Anthropic. Om de resultaten in alle talen te ontdekken, nodig ik u uit om deze pagina te bezoeken: Vertalingen met Anthropic.
Evoluția Scriptului de Traducere Automată: Integrarea Claude de la Anthropic
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.
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, les invito a visitar esta página: Traducciones con Anthropic.
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.
Evolução do Script de Tradução Automática: Integração de Claude da Anthropic
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.
Entwicklung des automatisch übersetzenden Scripts: Integration von Claude von Anthropic
Das automatische Übersetzungsskript, das bereits durch die Fähigkeiten von OpenAI und Mistral AI verstärkt wurde, begrüßt eine neue Innovation: die Integration von Claude, dem neuesten KI-Modell von Anthropic. Um die Ergebnisse in allen Sprachen zu entdecken, lade ich Sie ein, diese Seite zu besuchen: Übersetzungen mit Anthropic.
博客翻译脚本的演进:整合 Mistral AI
在本文中,我将与您分享使用人工智能的博客翻译脚本的演进,并整合了 Mistral AI 技术。要在所有语言中查看结果,请访问此页面:使用 Mistral AI 进行翻译。
为什么要这个脚本?
我的翻译脚本的目标是使我的博客文章能够在多种语言中获得,通过自动化其翻译。想象一下一个智能翻译器,能够阅读法语文章并忠实地将其还原为英语、西班牙语或其他语言,同时保留原始格式。这就是我的脚本所做的,它利用了最新的人工智能进步。
初始脚本的主要功能
- 自动翻译:使用 OpenAI 或 Mistral AI API 进行精确翻译。
- 保留格式:脚本保留了原始格式,包括代码块和链接。
- 多语言:能够翻译成多种语言。
- 支持 Markdown:适用于常用于博客中的 Markdown 文件。
- 自动化:通过单个命令翻译多篇文章。
整合 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()
请继续关注更多关于人工智能有趣世界的更新和创新!
मेरे ब्लॉग अनुवाद स्क्रिप्ट का विकास: मिस्त्रल एआई का एकीकरण
इस लेख में, मैं कृत्रिम बुद्धिमत्ता का उपयोग करके अपने ब्लॉग अनुवाद स्क्रिप्ट के विकास के बारे में बात करूंगा, जिसमें मिस्त्रल एआई तकनीक का एकीकरण शामिल है। सभी भाषाओं में परिणाम देखने के लिए, कृपया इस पृष्ठ पर जाएं: मिस्त्रल एआई के साथ अनुवाद।
Utveckling av mitt Bloggöversättningsscript: Integrering av Mistral AI
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.
Ewolucja mojego Skryptu Tłumaczenia Bloga: Integracja z Mistral AI
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.
Evoluzione del mio Script di Traduzione del Blog: Integrazione di Mistral AI
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.
Evolution of my Blog Translation Script: Integration of Mistral AI
In this article, I will talk to you 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.
Why this Script?
The goal of my translation script is to make my blog articles accessible in several languages, by automating their translation. Imagine an intelligent translator capable of reading an article in French and restoring it faithfully in English, Spanish or other languages, while preserving the original format. That’s what my script does, by leveraging the latest advances in AI.
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 see results in all languages, I invite you to visit this page: Translations with Mistral AI.
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.
Évolution de mon Script de Traduction de Blog : Intégration de Mistral AI
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.
Evolutie van mijn Blog Vertalingsscript: Integratie van Mistral AI
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.
Evoluția Scriptului meu de Traducere a Blogului: Integrarea Mistral AI
Î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.
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.
Evolución de mi Script de Traducción de Blog: Integración de Mistral AI
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.
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.
Evolução do Meu Script de Tradução de Blog: Integração do Mistral AI
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.
Entwicklung meines Blog-Übersetzungsskripts: Integration von Mistral AI
In diesem Artikel werde ich über die Entwicklung meines Blog-Übersetzungsskripts unter Verwendung künstlicher Intelligenz sprechen, mit der Integration der Technologie von Mistral AI. Um die Ergebnisse in allen Sprachen zu sehen, lade ich Sie ein, diese Seite zu besuchen: Übersetzungen mit Mistral AI.