Clemylia commited on
Commit
a1e1932
·
verified ·
1 Parent(s): f1f2193

Update README.md

Browse files
Files changed (1) hide show
  1. README.md +116 -0
README.md CHANGED
@@ -88,6 +88,122 @@ print("\n--- Réponse de Sala ---")
88
  print(generated_text)
89
  ```
90
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
91
  ### 💡 Conseils d'Utilisation :
92
 
93
  * **Prompting** : Plus votre prompt est clair et précis, meilleure sera la réponse de Sala.
 
88
  print(generated_text)
89
  ```
90
 
91
+ exemple de code pour converser avec sala :
92
+
93
+ ```
94
+ import torch
95
+ from transformers import AutoTokenizer, AutoModelForCausalLM
96
+ import time
97
+ import os
98
+ import json
99
+
100
+ # --- CONFIGURATION GLOBALE ---
101
+ # REMPLACE par ton nom d'utilisateur et le nom de ton modèle
102
+ REPO_ID = "Clemylia/Sala"
103
+ # ------------------------------
104
+
105
+ print(f"--- 🧠 Chargement de Sala depuis Hugging Face : {REPO_ID} ---")
106
+
107
+ try:
108
+ # 1. Charger le Tokenizer et le Modèle directement depuis ton dépôt
109
+ tokenizer = AutoTokenizer.from_pretrained(REPO_ID)
110
+ model = AutoModelForCausalLM.from_pretrained(REPO_ID)
111
+
112
+ # 2. Configuration pour le GPU/CPU
113
+ device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
114
+ model.to(device)
115
+
116
+ if tokenizer.pad_token is None:
117
+ tokenizer.pad_token = tokenizer.eos_token
118
+
119
+ print(f"✅ Modèle '{REPO_ID}' chargé avec succès sur : {device}")
120
+
121
+ # --- INITIALISATION DE LA CONVERSATION ---
122
+
123
+ # Utilisation d'un bloc de texte multiligne propre
124
+ conversation_history = """### SYSTEM_PROMPT ###
125
+ You are Sala, a conversational AI model created by Clemylia in 2025.
126
+ You are always positive, friendly, and enthusiastic. Your goal is to help.
127
+ User: Hello, who are you?
128
+ Sala: Hi! I'm Sala, a language model created by the brilliant Clemylia in 2025. Nice to talk to you!
129
+ User: Who is Clemylia?
130
+ Sala: Clemylia is my creator! It is thanks to her that I can communicate with you. She's amazing.
131
+ """
132
+ # NOTE: Nous extrayons le SYSTEM_PROMPT de cette histoire pour la réinitialisation
133
+ system_prompt_part = conversation_history.split("User:")[0].strip()
134
+
135
+ max_new_tokens = 80 # Une taille de réponse raisonnable
136
+
137
+ print("\n" + "="*60)
138
+ print("DEMARRAGE DU CHAT AVEC SALA (Tape 'quitter' pour arrêter)")
139
+ print("="*60)
140
+
141
+ # 3. Boucle de Conversation (Chatbot)
142
+ while True:
143
+ # 3.1. Demander l'entrée de l'utilisateur
144
+ # NOTE: On utilise l'anglais 'User:' pour la cohérence du prompt, mais on peut laisser l'affichage en français si tu préfères
145
+ user_input = input("👉 User: ")
146
+
147
+ # 3.2. Condition d'arrêt
148
+ if user_input.lower() in ["quitter", "exit", "stop"]:
149
+ print("\n👋 Goodbye! See you soon for more development!")
150
+ break
151
+
152
+ # 3.3. Créer le prompt complet pour cette étape
153
+ current_prompt = f"{conversation_history}\nUser: {user_input}\nSala:"
154
+
155
+ # 3.4. Tokenisation et Génération
156
+ inputs = tokenizer(current_prompt, return_tensors="pt").to(device)
157
+
158
+ # Vérification si l'historique est trop long (limite de GPT-2)
159
+ if inputs['input_ids'].shape[1] > model.config.max_position_embeddings:
160
+ print("🚨 Sala: Oops! My memory is full. I need to reset the conversation...")
161
+ # Réinitialiser à seulement le SYSTEM_PROMPT pour continuer
162
+ conversation_history = system_prompt_part
163
+ continue
164
+
165
+ output_sequences = model.generate(
166
+ input_ids=inputs['input_ids'],
167
+ attention_mask=inputs['attention_mask'],
168
+ max_new_tokens=max_new_tokens,
169
+ pad_token_id=tokenizer.eos_token_id,
170
+ do_sample=True,
171
+ top_k=50,
172
+ top_p=0.95
173
+ )
174
+
175
+ # 3.5. Décodage et Nettoyage
176
+ generated_text = tokenizer.decode(output_sequences[0], skip_special_tokens=True)
177
+
178
+ # Extraire uniquement la réponse de Sala (le texte après le dernier "Sala:")
179
+ try:
180
+ # On cherche l'index du dernier marqueur Sala:
181
+ response_start_index = generated_text.rindex("Sala:") + len("Sala:")
182
+
183
+ # Le texte généré brut
184
+ raw_response = generated_text[response_start_index:].strip()
185
+
186
+ # Nettoyage supplémentaire: on enlève les marqueurs de rôle que le modèle a pu générer par erreur
187
+ # et on prend le contenu jusqu'à la première ligne vide ou la fin.
188
+ response_display = raw_response.split('User:')[0].split('Sala:')[0].split('\n')[0].strip()
189
+
190
+ # 3.6. Mettre à jour l'historique
191
+ # C'est l'étape la plus importante pour la mémoire !
192
+ conversation_history += f"\nUser: {user_input}\nSala: {response_display}"
193
+
194
+ # 3.7. Afficher la réponse
195
+ print(f"🤖 Sala: {response_display}")
196
+
197
+ except ValueError:
198
+ # Si le marqueur "Sala:" n'est pas trouvé (génération totalement erronée)
199
+ print("🤖 Sala: [Generation error. I couldn't form a clear response.]")
200
+ # Ne pas ajouter à l'historique si la réponse est mauvaise.
201
+
202
+ except Exception as e:
203
+ print(f"\n❌ An error occurred during loading or chat: {e}")
204
+ print("Check that the REPO_ID is correct and that you have installed the necessary libraries.")
205
+ ```
206
+
207
  ### 💡 Conseils d'Utilisation :
208
 
209
  * **Prompting** : Plus votre prompt est clair et précis, meilleure sera la réponse de Sala.