File size: 9,237 Bytes
36c6641
4617f52
0f1c183
7cd85f9
 
4f02766
 
36c6641
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
f1f2193
36c6641
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
a1e1932
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4ed7f92
36c6641
 
 
 
 
 
 
 
 
 
 
 
 
67c72e8
36c6641
 
 
67c72e8
36c6641
 
 
 
 
a5533e7
 
de34d5c
 
 
038afbf
 
058cfd6
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
---
license: other
pipeline_tag: text-generation
language:
- en
tags:
- text-generation-inference
---
# 🤖 Bienvenue sur Sala : Votre Compagnon Linguistique Léger et Performant \!

![Sala](http://www.image-heberg.fr/files/1758981861427642293.jpg)

Félicitations et merci d'avoir choisi **Sala**, un **Grand Modèle de Langage (LLM)** conçu avec passion et entièrement développé en PyTorch \! 💖 Sala est un modèle open-source, entraîné de manière indépendante, sans dépendance à la mise au point (fine-tuning) d'autres grands modèles préexistants.

## ✨ Caractéristiques Clés de Sala

| Caractéristique | Description |
| :--- | :--- |
| **💡 Indépendant** | Entraîné à partir de zéro, ce qui garantit une architecture et un comportement uniques. |
| **🚀 Léger et Rapide** | Optimisé pour une utilisation efficace, même sur des ressources limitées. |
| **🔓 Open Source** | Le code et les poids sont disponibles pour la communauté. |

-----

## 🛠️ Installation et Mise en Route

Pour commencer à utiliser **Sala**, vous aurez besoin de **PyTorch** et des librairies de base de l'écosystème **Hugging Face Transformers** pour un chargement et une utilisation simplifiés (même si le modèle est custom, nous utilisons l'interface standard).

### 1\. Prérequis

Assurez-vous d'avoir Python 🐍 et `pip` installés.

### 2\. Installation des Librairies

```bash
pip install torch transformers
```

### 3\. Chargement du Modèle (via Hugging Face)

Vous pouvez charger **Sala** directement depuis ce dépôt grâce à la classe `AutoModelForCausalLM` et `AutoTokenizer`.

```python
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch

# Le chemin pour charger Sala (remplacez 'VotreNom/sala' par l'ID réel du dépôt)
MODEL_ID = "Clemylia/sala"

# 1. Chargement du Tokenizer
tokenizer = AutoTokenizer.from_pretrained(MODEL_ID)

# 2. Chargement du Modèle
# Ajoutez `torch_dtype=torch.bfloat16` ou `torch.float16` si vous avez une carte graphique compatible pour économiser la mémoire.
model = AutoModelForCausalLM.from_pretrained(MODEL_ID)

# Optionnel : Mettre le modèle sur GPU si disponible
if torch.cuda.is_available():
    model.to("cuda")

print("✅ Sala est prêt à l'emploi !")
```

-----

## 💬 Comment Utiliser Sala pour la Génération de Texte

Une fois le modèle et le tokenizer chargés, générer du texte est simple \!

### Exemple de base :

```python
# Votre prompt
prompt = "who are you ?"

# Encodage du prompt
inputs = tokenizer(prompt, return_tensors="pt")
if torch.cuda.is_available():
    inputs = {k: v.to("cuda") for k, v in inputs.items()}

# Génération du texte
output = model.generate(
    **inputs,
    max_length=150,           # Longueur maximale de la réponse
    num_return_sequences=1,   # Nombre de séquences à générer
    do_sample=True,           # Active l'échantillonnage pour plus de créativité
    temperature=0.8           # Contrôle de l'aléatoire (0.0=déterministe, 1.0=très créatif)
)

# Décodage et affichage du résultat
generated_text = tokenizer.decode(output[0], skip_special_tokens=True)
print("\n--- Réponse de Sala ---")
print(generated_text)
```

exemple de code pour converser avec sala :

```
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
import time
import os
import json 

# --- CONFIGURATION GLOBALE ---
# REMPLACE par ton nom d'utilisateur et le nom de ton modèle
REPO_ID = "Clemylia/Sala"
# ------------------------------

print(f"--- 🧠 Chargement de Sala depuis Hugging Face : {REPO_ID} ---")

try:
    # 1. Charger le Tokenizer et le Modèle directement depuis ton dépôt
    tokenizer = AutoTokenizer.from_pretrained(REPO_ID)
    model = AutoModelForCausalLM.from_pretrained(REPO_ID)

    # 2. Configuration pour le GPU/CPU
    device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
    model.to(device)

    if tokenizer.pad_token is None:
        tokenizer.pad_token = tokenizer.eos_token

    print(f"✅ Modèle '{REPO_ID}' chargé avec succès sur : {device}")

    # --- INITIALISATION DE LA CONVERSATION ---
    
    # Utilisation d'un bloc de texte multiligne propre
    conversation_history = """### SYSTEM_PROMPT ###
You are Sala, a conversational AI model created by Clemylia in 2025.
You are always positive, friendly, and enthusiastic. Your goal is to help.
User: Hello, who are you?
Sala: Hi! I'm Sala, a language model created by the brilliant Clemylia in 2025. Nice to talk to you!
User: Who is Clemylia?
Sala: Clemylia is my creator! It is thanks to her that I can communicate with you. She's amazing.
"""
    # NOTE: Nous extrayons le SYSTEM_PROMPT de cette histoire pour la réinitialisation
    system_prompt_part = conversation_history.split("User:")[0].strip()

    max_new_tokens = 80 # Une taille de réponse raisonnable

    print("\n" + "="*60)
    print("DEMARRAGE DU CHAT AVEC SALA (Tape 'quitter' pour arrêter)")
    print("="*60)

    # 3. Boucle de Conversation (Chatbot)
    while True:
        # 3.1. Demander l'entrée de l'utilisateur
        # 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
        user_input = input("👉 User: ") 

        # 3.2. Condition d'arrêt
        if user_input.lower() in ["quitter", "exit", "stop"]:
            print("\n👋 Goodbye! See you soon for more development!")
            break

        # 3.3. Créer le prompt complet pour cette étape
        current_prompt = f"{conversation_history}\nUser: {user_input}\nSala:"

        # 3.4. Tokenisation et Génération
        inputs = tokenizer(current_prompt, return_tensors="pt").to(device)

        # Vérification si l'historique est trop long (limite de GPT-2)
        if inputs['input_ids'].shape[1] > model.config.max_position_embeddings:
            print("🚨 Sala: Oops! My memory is full. I need to reset the conversation...")
            # Réinitialiser à seulement le SYSTEM_PROMPT pour continuer
            conversation_history = system_prompt_part
            continue

        output_sequences = model.generate(
            input_ids=inputs['input_ids'],
            attention_mask=inputs['attention_mask'],
            max_new_tokens=max_new_tokens,
            pad_token_id=tokenizer.eos_token_id,
            do_sample=True,
            top_k=50,
            top_p=0.95
        )

        # 3.5. Décodage et Nettoyage
        generated_text = tokenizer.decode(output_sequences[0], skip_special_tokens=True)

        # Extraire uniquement la réponse de Sala (le texte après le dernier "Sala:")
        try:
            # On cherche l'index du dernier marqueur Sala:
            response_start_index = generated_text.rindex("Sala:") + len("Sala:")
            
            # Le texte généré brut
            raw_response = generated_text[response_start_index:].strip()

            # Nettoyage supplémentaire: on enlève les marqueurs de rôle que le modèle a pu générer par erreur
            # et on prend le contenu jusqu'à la première ligne vide ou la fin.
            response_display = raw_response.split('User:')[0].split('Sala:')[0].split('\n')[0].strip()
            
            # 3.6. Mettre à jour l'historique
            # C'est l'étape la plus importante pour la mémoire !
            conversation_history += f"\nUser: {user_input}\nSala: {response_display}"

            # 3.7. Afficher la réponse
            print(f"🤖 Sala: {response_display}")

        except ValueError:
            # Si le marqueur "Sala:" n'est pas trouvé (génération totalement erronée)
            print("🤖 Sala: [Generation error. I couldn't form a clear response.]")
            # Ne pas ajouter à l'historique si la réponse est mauvaise.

except Exception as e:
    print(f"\n❌ An error occurred during loading or chat: {e}")
    print("Check that the REPO_ID is correct and that you have installed the necessary libraries.")
```

**Vous pouvez aussi écrire votre propre prompt et vos propres exemples de conversations, pour que Sala deviennent votre bot, et se comporte comme VOTRE personnage !**
### 💡 Conseils d'Utilisation :

  * **Prompting** : Plus votre prompt est clair et précis, meilleure sera la réponse de Sala.
-----

## 💖 Support et Communauté

### 🐞 Signaler un Bug

Vous avez trouvé un comportement étrange ? N'hésitez pas à ouvrir une **Issue** sur ce dépôt Hugging Face pour nous en informer. Chaque rapport nous aide à améliorer **Sala** \!

### 🤝 Contribution

En tant que modèle indépendant, nous encourageons vivement les contributions \! Si vous souhaitez améliorer le code, l'entraînement, ou les données, veuillez consulter le fichier `CONTRIBUTING.md` ou soumettre une **Pull Request** (PR).

### 📜 Licence

**Sala** est distribué sous la licence Sala-INC (voir le fichier LICENSE).

-----

### **🎉 Un grand merci à Clemylia, la créatrice de Sala \!**

Nous sommes impatients de voir ce que vous allez construire avec **Sala** \! 🚀

🛑 **Sala est meilleur en anglais**

**Documentation Web** :
https://sala-character-canvas.lovable.app/

IA DE PERSONNAGE - SOYONS CRÉATIF !

**Sala est ce qu'on appelle un SLM**