📝 : update README.md

This commit is contained in:
2025-11-06 11:09:50 +01:00
parent 0956f4045d
commit c65f12489c
2 changed files with 100 additions and 48 deletions
+17 -48
View File
@@ -12,7 +12,7 @@
},
{
"cell_type": "code",
"execution_count": 2,
"execution_count": null,
"id": "4696d130",
"metadata": {},
"outputs": [
@@ -38,21 +38,15 @@
"from ctransformers import AutoModelForCausalLM\n",
"from huggingface_hub import hf_hub_download\n",
"\n",
"# Définition du modèle à utiliser\n",
"# On choisit un modèle Mistral 7B Instruct, quantifié en 4-bit (Q4_K_M)\n",
"# C'est un bon équilibre performance / taille pour une utilisation CPU\n",
"model_repo = \"TheBloke/Mistral-7B-Instruct-v0.1-GGUF\"\n",
"model_file = \"mistral-7b-instruct-v0.1.Q4_K_M.gguf\"\n",
"\n",
"# Télécharger le modèle (si pas déjà présent)\n",
"print(f\"Téléchargement du modèle: {model_file}...\")\n",
"model_path = hf_hub_download(repo_id=model_repo, filename=model_file)\n",
"print(f\"Modèle téléchargé dans: {model_path}\")"
"model_path = hf_hub_download(repo_id=model_repo, filename=model_file)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"execution_count": null,
"id": "6da8586d",
"metadata": {},
"outputs": [
@@ -66,52 +60,35 @@
}
],
"source": [
"# Configuration et chargement du modèle\n",
"print(\"Chargement du modèle sur le CPU (cela peut prendre un moment)...\")\n",
"\n",
"# Configuration pour CTransformers\n",
"# gpu_layers=0 signifie qu'aucune couche n'est déchargée sur le GPU (utilisation CPU pure)\n",
"llm = AutoModelForCausalLM.from_pretrained(\n",
" model_path,\n",
" model_type=\"mistral\",\n",
" context_length=4096, # Longueur de contexte max (texte + réponse)\n",
" gpu_layers=0 # <-- TRÈS IMPORTANT: Force l'utilisation du CPU\n",
")\n",
"\n",
"print(\"Modèle chargé avec succès.\")"
" context_length=4096,\n",
" gpu_layers=0 # Force l'utilisation du CPU\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 4,
"execution_count": null,
"id": "f8b27196",
"metadata": {},
"outputs": [],
"source": [
"def traduire_style_epoque(texte_original: str, epoque_originale: str, epoque_cible: str) -> str:\n",
" \"\"\"\n",
" Utilise le LLM pour réécrire un texte dans le style d'une autre époque.\n",
" \"\"\"\n",
" \n",
" # Un \"prompt\" système pour guider le modèle.\n",
" # Le format [INST]...[/INST] est spécifique à Mistral Instruct.\n",
" prompt = f\"\"\"[INST] Tu es un expert en histoire de la littérature française et un écrivain.\n",
"Ta tâche est de réécrire le texte suivant, qui a été écrit dans le style de l'époque \"{epoque_originale}\", pour qu'il corresponde parfaitement au style (vocabulaire, grammaire, syntaxe) de l'époque \"{epoque_cible}\".\n",
"Le sens, les idées et le contenu du texte original doivent être préservés au maximum. Ne fais que modifier le style.\n",
" Ta tâche est de réécrire le texte suivant, qui a été écrit dans le style de l'époque \"{epoque_originale}\", pour qu'il corresponde parfaitement au style (vocabulaire, grammaire, syntaxe) de l'époque \"{epoque_cible}\".\n",
" Le sens, les idées et le contenu du texte original doivent être préservés au maximum. Ne fais que modifier le style.\n",
"\n",
"TEXTE ORIGINAL ({epoque_originale}):\n",
"{texte_original}\n",
" TEXTE ORIGINAL ({epoque_originale}):\n",
" {texte_original}\n",
"\n",
"RÉÉCRITURE ({epoque_cible}):\n",
"[/INST]\"\"\"\n",
"\n",
" print(f\"Génération de la traduction stylistique de '{epoque_originale}' vers '{epoque_cible}'...\")\n",
" print(\"--------------------------------------------------\")\n",
" RÉÉCRITURE ({epoque_cible}):\n",
" [/INST]\"\"\"\n",
" \n",
" # Appel du modèle\n",
" # 'temperature' contrôle la créativité (0.7 est un bon équilibre)\n",
" # 'max_new_tokens' est la longueur max de la réponse. Augmentez si vos textes sont longs.\n",
" # ATTENTION: La génération sur CPU sera LENTE.\n",
" reponse = llm(\n",
" prompt, \n",
" temperature=0.7, \n",
@@ -124,7 +101,7 @@
},
{
"cell_type": "code",
"execution_count": 5,
"execution_count": null,
"id": "3120a8cc",
"metadata": {},
"outputs": [
@@ -152,7 +129,7 @@
}
],
"source": [
"# --- Exemple 1 : Moderne vers Ancien ---\n",
"# Moderne vers Ancien ---\n",
"\n",
"texte_moderne = \"\"\"\n",
"Salut les gars,\n",
@@ -163,19 +140,15 @@
"epoque_source_1 = \"2024\"\n",
"epoque_cible_1 = \"1670 (style Molière ou La Fontaine)\"\n",
"\n",
"# Lancement de la génération\n",
"texte_traduit_1 = traduire_style_epoque(texte_moderne, epoque_source_1, epoque_cible_1)\n",
"\n",
"# Affichage\n",
"print(\"\\n--- TEXTE ORIGINAL (\" + epoque_source_1 + \") ---\")\n",
"print(texte_moderne)\n",
"print(\"\\n--- TEXTE TRADUIT (\" + epoque_cible_1 + \") ---\")\n",
"print(texte_traduit_1)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"execution_count": null,
"id": "a745126d",
"metadata": {},
"outputs": [
@@ -214,7 +187,7 @@
}
],
"source": [
"# --- Exemple 2 : Ancien vers Moderne ---\n",
"# Ancien vers Moderne ---\n",
"\n",
"texte_ancien = \"\"\"\n",
"Monseigneur,\n",
@@ -226,12 +199,8 @@
"epoque_source_2 = \"1720\"\n",
"epoque_cible_2 = \"2024 (style email professionnel)\"\n",
"\n",
"# Lancement de la génération\n",
"texte_traduit_2 = traduire_style_epoque(texte_ancien, epoque_source_2, epoque_cible_2)\n",
"\n",
"# Affichage\n",
"print(\"\\n--- TEXTE ORIGINAL (\" + epoque_source_2 + \") ---\")\n",
"print(texte_ancien)\n",
"print(\"\\n--- TEXTE TRADUIT (\" + epoque_cible_2 + \") ---\")\n",
"print(texte_traduit_2)"
]