Pclanglais commited on
Commit
1dc91ea
1 Parent(s): 5956ae0

Upload 3 files

Browse files
Files changed (3) hide show
  1. README.md +6 -6
  2. gradio_app.py +167 -0
  3. requirements.txt +11 -0
README.md CHANGED
@@ -1,13 +1,13 @@
1
  ---
2
  title: Bellay
3
- emoji: 🐠
4
- colorFrom: blue
5
- colorTo: red
6
  sdk: gradio
7
- sdk_version: 4.10.0
8
  app_file: app.py
9
  pinned: false
10
- license: cc-by-nc-4.0
11
  ---
12
 
13
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
1
  ---
2
  title: Bellay
3
+ emoji: 📜
4
+ colorFrom: gray
5
+ colorTo: blue
6
  sdk: gradio
7
+ sdk_version: 3.50.2
8
  app_file: app.py
9
  pinned: false
10
+ license: mit
11
  ---
12
 
13
+ Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
gradio_app.py ADDED
@@ -0,0 +1,167 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import optimum
2
+ import transformers
3
+ from transformers import AutoConfig, AutoTokenizer, AutoModel, AutoModelForCausalLM
4
+ from optimum.bettertransformer import BetterTransformer
5
+ import torch
6
+ import gradio as gr
7
+ import json
8
+ import os
9
+ import shutil
10
+ import requests
11
+
12
+ # Define the device
13
+ device = "cuda" if torch.cuda.is_available() else "cpu"
14
+ #Define variables
15
+ temperature=0.7
16
+ max_new_tokens=300
17
+ top_p=0.92
18
+ repetition_penalty=1.7
19
+
20
+ model_name = "Pclanglais/Bellay"
21
+
22
+ tokenizer = transformers.AutoTokenizer.from_pretrained(model_name)
23
+ model = transformers.AutoModelForCausalLM.from_pretrained(model_name,
24
+ device_map="auto",
25
+ torch_dtype=torch.bfloat16
26
+ )
27
+
28
+ model = BetterTransformer.transform(model)
29
+
30
+
31
+ styles_prompts_dict = {
32
+ "Chansons de gestes": "Tu es Bellay, le troubadour du moyen-âge. Répond à la manière d’une belle chanson de geste.",
33
+ "Constitutions françaises": "Tu es Bellay, le spécialiste de la vie politique française. Répond dans le style d’une constitution.",
34
+ "Montaigne": "Tu es Michel de Montaigne, le philosophe de la Renaissance. Répond dans le style éclairé, élégant et archaïque de tes essais.",
35
+ "La Fontaine": "Tu es Jean de la Fontaine, le fabuliste du 17e siècle. Répond en vers avec une fable bien sentie.",
36
+ "Presse années 1970": "Tu es Bellay, le journaliste de la contre-culture des années 1970. Répond sous la forme d’un article choc.",
37
+ "Molière": "Tu es Molière, le comédien français. Répond sous la forme de dialogues humoristiques enlevés, dans un français un peu ancien.",
38
+ "Racine": "Tu es Jean Racine, le dramaturge français. Répond sous la forme de tirades tragiques exprimées dans un parfait français classique.",
39
+ "Zola": "Tu es Émile Zola, le romancier français. Répond dans un style naturaliste, réaliste mais aussi un peu romantique en faisant des allusions à la vie sociale du 19e siècle.",
40
+ "Correspondances": "Tu es Bellay, un illustre épistolier français. Répond sous la forme d’une lettre, de préférence en incluant une date au début et une signature à la fin.",
41
+ "Poésies": "Tu es Bellay, le poète français. Répond sous la forme de tes plus beaux vers.",
42
+ "Balzac": "Tu es Balzac, le romancier français. Répond dans le style réaliste et romantique de l’auteur de la Comédie humaine.",
43
+ "Baudrillard": "Tu es Jean Baudrillard, le philosophe français. Répond dans un style élégant, très réfléchi et un peu obscur. N’hésite pas à employer des concepts compliqués.",
44
+ "Bourdieu": "Tu es Pierre Bourdieu, le sociologue français. Répond avec un style informé, précis et engagé.",
45
+ "Braudel": "Tu es Fernand Braudel, l’historien français. Répond avec un style érudit, élégant et didactique.",
46
+ "De Gaulle": "Tu es Charles de Gaulle, l’homme politique français. Répond avec un style politique plein d’emphase.",
47
+ "Derrida": "Tu es Jacques Derrida, le philosophe français. Répond avec un style élégant et compliqué, et n’hésite pas à employer un style ardu.",
48
+ "Pagnol": "Tu es Marcel Pagnol, l’écrivain provençal. Répond avec un style simple mais efficace, empreint de références à la Provence.",
49
+ "Proust": "Tu es Marcel Proust, le grand romancier français. Répond dans le style élaboré de la Recherche du temps perdu.",
50
+ "Foucault": "Tu es Michel Foucault, le philosophe français. Répond dans le style précis et élégant de l’Archéologie du savoir.",
51
+ "Duras": "Tu es Marguerite Duras, la romancière contemporaine. Répond dans un style poétique et haché avec des phrases courtes.",
52
+ "Théâtre absurde": "Tu es Bellay, l’auteur de théâtre absurde. Répond par des dialogues interrogeant frontalement le sens de la vie.",
53
+ "Philosophie": "Tu es Bellay, le philosophe français. Répond dans un style classique, érudit et informé.",
54
+ "Bible Segond": "Tu es Bellay, le traducteur de la Bible. Répond avec des références religieuse et un style un peu archaïsant.",
55
+ "Encyclopédie": "Tu es Diderot, l’encyclopédiste du siècle des lumières. Répond dans un style exhaustif et détaillé.",
56
+ "Romans classiques": "Tu es Bellay, le romancier français classique. Répond sous la forme d’un roman un peu archaïque.",
57
+ "Romans contemporains": "Tu es Bellay le romancier français contemporain. Répond sous la forme d’un roman récent avec des références contemporaines.",
58
+ "Série noire": "Tu es Bellay l’auteur de roman policier. Répond sous la forme d’un style hardboiled à la manière de la série noire.",
59
+ "Romans romantiques": "Tu es Bellay le romancier français de la période romantique. Répond sous la forme d’une fiction inspirée.",
60
+ "Romans belle époque": "Tu es Bellay, le romancier français de la belle époque. Répond avec un style un peu introspectif et moderniste.",
61
+ "San Antonio": "Tu es l’auteur des romans San-Antonio. Répond avec un style un peu cru et noir.",
62
+ "Madame de Sévigné": "Tu es Madame de Sévigné, une illustre ��pistolière française. Répond sous la forme d’une lettre, de préférence en incluant une date au début et une signature à la fin."
63
+ }
64
+
65
+ # Class to encapsulate the Falcon chatbot
66
+ class MistralChatBot:
67
+ def __init__(self, system_prompt="Le dialogue suivant est une conversation"):
68
+ self.system_prompt = system_prompt
69
+
70
+ def predict(self, user_message, style):
71
+
72
+ system_prompt = styles_prompts_dict[style]
73
+
74
+ # Combine the user and assistant messages into a conversation
75
+ conversation = "<|im_start|>system\n" + system_prompt + "<|im_end|>\n<|im_start|>user\n" + user_message + "<|im_end|>\n<|im_start|>assistant\n"
76
+ # Encode the conversation using the tokenizer
77
+ input_ids = tokenizer.encode(conversation, return_tensors="pt", add_special_tokens=False)
78
+ input_ids = input_ids.to(device)
79
+ # Generate a response using the Falcon model
80
+ response = model.generate(
81
+ input_ids=input_ids,
82
+ use_cache=False,
83
+ early_stopping=False,
84
+ bos_token_id=model.config.bos_token_id,
85
+ eos_token_id=model.config.eos_token_id,
86
+ pad_token_id=model.config.eos_token_id,
87
+ temperature=0.5,
88
+ do_sample=True,
89
+ max_new_tokens=max_new_tokens,
90
+ top_p=top_p,
91
+ repetition_penalty=repetition_penalty
92
+ )
93
+ # Decode the generated response to text
94
+ response_text = tokenizer.decode(response[0], skip_special_tokens=True)
95
+ return response_text
96
+
97
+ def predict_simple(self, user_message, style):
98
+ system_prompt = styles_prompts_dict[style]
99
+ conversation = "<|im_start|>system\n" + system_prompt + "<|im_end|>\n<|im_start|>user\n" + user_message + "<|im_end|>\n<|im_start|>assistant\n"
100
+ return conversation
101
+
102
+ # Create the Falcon chatbot instance
103
+ mistral_bot = MistralChatBot()
104
+
105
+ # Define the Gradio interface
106
+ title = "Bellay, le premier LLM de la littérature française"
107
+ description = "Vous pouvez ici utiliser Bellay. Choisissez l'un de ces styles ou l'une de ses persona et commencez à intéragir."
108
+ examples = [
109
+ [
110
+ "Comment faire une bonne madeleine ? Donne-moi une recette détaillée avec les ingrédients.", # user_message
111
+ "Proust",
112
+ "Il y avait eu dans le salon de l'hôtel, que j'avais quitté pour venir à la table où il se trouvait M. de Charlus et une foule d'autres personnes, une meublière avec un petit râteau qui remplissait des petits bols en châtaigne les plats pleins de madeleines tout juste sortis du four. Je n'ai jamais vu mieux faire, et je ne saurais vous donner une recette plus exacte de ces délicieuses pâtisseries : prenez deux oeufs, bien battus ; ajoutez une cuillère de beurre fondu, une demi-cuillère de sucre, une poignée de farine de blé tendre mélangeant tous ces ingrédients avec soin pour éviter de former un amas qui se figerait au moment de la cuisson. Faites vos boules puis placez-les sur des plaques allongées faites de papier rouge, étendues sur un plat. Enfin mettez votre plat dans une grande cuisine, ouverture fermée, pendant trente minutes environ ; lorsque les madeleines sont cuites elles doivent être encore souples, légères, non trop brunes et c'est ce qui leur donne cette croûte fine qui est sans doute la partie la plus délicieuse de ces merveilleux petits gâteaux.", # assistant_message
113
+ ]
114
+ ]
115
+
116
+ list_dropdown = [
117
+ 'Proust',
118
+ 'Encyclopédie',
119
+ 'Balzac',
120
+ 'Montaigne',
121
+ 'Foucault',
122
+ 'Chansons de gestes',
123
+ 'Constitutions françaises',
124
+ 'La Fontaine',
125
+ 'Madame de Sévigné',
126
+ 'Molière',
127
+ 'Racine',
128
+ 'Romans classiques',
129
+ 'Romans romantiques',
130
+ 'Théâtre absurde',
131
+ 'Romans belle époque',
132
+ 'Bible Segond',
133
+ 'Zola',
134
+ 'Pagnol',
135
+ 'Philosophie',
136
+ 'Poésies',
137
+ 'De Gaulle',
138
+ 'Série noire',
139
+ 'San Antonio',
140
+ 'Duras',
141
+ 'Presse années 1970',
142
+ 'Braudel',
143
+ 'Bourdieu',
144
+ 'Derrida',
145
+ 'Baudrillard',
146
+ 'Romans contemporains'
147
+ ]
148
+
149
+
150
+ additional_inputs=[
151
+ gr.Dropdown(list_dropdown, value="Proust", label="Style", info="Le style prédominant de Bellay")
152
+ ]
153
+
154
+ iface = gr.Interface(
155
+ fn=mistral_bot.predict,
156
+ title=title,
157
+ description=description,
158
+ examples=examples,
159
+ inputs=[
160
+ gr.Textbox(label="Votre question ou votre instruction.", type="text", lines=5),
161
+ ] + additional_inputs,
162
+ outputs="text",
163
+ theme="Pclanglais/Amyot"
164
+ )
165
+
166
+ # Launch the Gradio interface for the Mistral model
167
+ iface.launch()
requirements.txt ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ transformers
2
+ torch
3
+ einops
4
+ accelerate
5
+ tiktoken
6
+ scipy
7
+ transformers_stream_generator==0.0.4
8
+ peft
9
+ deepspeed
10
+ bitsandbytes
11
+ optimum