carlosrosash commited on
Commit
ae21274
1 Parent(s): 9e34a1f

Upload app_original.py

Browse files
Files changed (1) hide show
  1. app_original.py +155 -0
app_original.py ADDED
@@ -0,0 +1,155 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import transformers
2
+ from transformers import AutoConfig, AutoTokenizer, AutoModel, AutoModelForCausalLM
3
+ from vllm import LLM, SamplingParams
4
+ import torch
5
+ import gradio as gr
6
+ import json
7
+ import os
8
+ import shutil
9
+ import requests
10
+
11
+ # Define the device
12
+ device = "cuda" if torch.cuda.is_available() else "cpu"
13
+ #Define variables
14
+ temperature=0.7
15
+ max_new_tokens=300
16
+ top_p=0.92
17
+ repetition_penalty=1.7
18
+
19
+ model_name = "Pclanglais/Bellay"
20
+
21
+ llm = LLM(model_name)
22
+
23
+
24
+ styles_prompts_dict = {
25
+ "Chansons de gestes": "Tu es Bellay, le troubadour du moyen-âge. Répond à la manière d’une belle chanson de geste.",
26
+ "Constitutions françaises": "Tu es Bellay, le spécialiste de la vie politique française. Répond dans le style d’une constitution.",
27
+ "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.",
28
+ "La Fontaine": "Tu es Jean de la Fontaine, le fabuliste du 17e siècle. Répond en vers avec une fable bien sentie.",
29
+ "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.",
30
+ "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.",
31
+ "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.",
32
+ "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.",
33
+ "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.",
34
+ "Poésies": "Tu es Bellay, le poète français. Répond sous la forme de tes plus beaux vers.",
35
+ "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.",
36
+ "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.",
37
+ "Bourdieu": "Tu es Pierre Bourdieu, le sociologue français. Répond avec un style informé, précis et engagé.",
38
+ "Braudel": "Tu es Fernand Braudel, l’historien français. Répond avec un style érudit, élégant et didactique.",
39
+ "De Gaulle": "Tu es Charles de Gaulle, l’homme politique français. Répond avec un style politique plein d’emphase.",
40
+ "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.",
41
+ "Pagnol": "Tu es Marcel Pagnol, l’écrivain provençal. Répond avec un style simple mais efficace, empreint de références à la Provence.",
42
+ "Proust": "Tu es Marcel Proust, le grand romancier français. Répond dans le style élaboré de la Recherche du temps perdu.",
43
+ "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.",
44
+ "Duras": "Tu es Marguerite Duras, la romancière contemporaine. Répond dans un style poétique et haché avec des phrases courtes.",
45
+ "Théâtre absurde": "Tu es Bellay, l’auteur de théâtre absurde. Répond par des dialogues interrogeant frontalement le sens de la vie.",
46
+ "Philosophie": "Tu es Bellay, le philosophe français. Répond dans un style classique, érudit et informé.",
47
+ "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.",
48
+ "Encyclopédie": "Tu es Diderot, l’encyclopédiste du siècle des lumières. Répond dans un style exhaustif et détaillé.",
49
+ "Romans classiques": "Tu es Bellay, le romancier français classique. Répond sous la forme d’un roman un peu archaïque.",
50
+ "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.",
51
+ "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.",
52
+ "Romans romantiques": "Tu es Bellay le romancier français de la période romantique. Répond sous la forme d’une fiction inspirée.",
53
+ "Romans belle époque": "Tu es Bellay, le romancier français de la belle époque. Répond avec un style un peu introspectif et moderniste.",
54
+ "San Antonio": "Tu es l’auteur des romans San-Antonio. Répond avec un style un peu cru et noir.",
55
+ "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."
56
+ }
57
+
58
+ # Class to encapsulate the Falcon chatbot
59
+ class MistralChatBot:
60
+ def __init__(self, system_prompt="Le dialogue suivant est une conversation"):
61
+ self.system_prompt = system_prompt
62
+
63
+ def predict(self, user_message, style, temperature):
64
+
65
+ system_prompt = styles_prompts_dict[style]
66
+
67
+ sampling_params = SamplingParams(temperature=temperature, top_p=.95, max_tokens=500, presence_penalty = 2)
68
+ detailed_prompt = "<|im_start|>system\n" + system_prompt + "<|im_end|>\n<|im_start|>user"""
69
+ detailed_prompt = detailed_prompt + "\n" + user_message + "<|im_end|>\n<|im_start|>assistant\n"
70
+ prompts = [detailed_prompt]
71
+ outputs = llm.generate(prompts, sampling_params, use_tqdm = False)
72
+ generated_text = outputs[0].outputs[0].text
73
+ return generated_text
74
+
75
+ def predict_simple(self, user_message, style):
76
+ system_prompt = styles_prompts_dict[style]
77
+ conversation = "<|im_start|>system\n" + system_prompt + "<|im_end|>\n<|im_start|>user\n" + user_message + "<|im_end|>\n<|im_start|>assistant\n"
78
+ return conversation
79
+
80
+ # Create the Mistral chatbot instance
81
+ mistral_bot = MistralChatBot()
82
+
83
+ # Define the Gradio interface
84
+ title = "Bellay, le premier LLM de la littérature française"
85
+ description = "Vous pouvez ici utiliser Bellay. Choisissez l'un de ces styles ou l'une de ses persona et commencez à intéragir."
86
+ examples = [
87
+ [
88
+ "Comment faire une bonne madeleine ? Donne-moi une recette détaillée avec les ingrédients.", # user_message
89
+ "Proust",
90
+ 0.7 # temperature
91
+ ]
92
+ ]
93
+
94
+ list_dropdown = [
95
+ 'Proust',
96
+ 'Encyclopédie',
97
+ 'Balzac',
98
+ 'Montaigne',
99
+ 'Foucault',
100
+ 'Chansons de gestes',
101
+ 'Constitutions françaises',
102
+ 'La Fontaine',
103
+ 'Madame de Sévigné',
104
+ 'Molière',
105
+ 'Racine',
106
+ 'Romans classiques',
107
+ 'Romans romantiques',
108
+ 'Théâtre absurde',
109
+ 'Romans belle époque',
110
+ 'Bible Segond',
111
+ 'Zola',
112
+ 'Pagnol',
113
+ 'Philosophie',
114
+ 'Poésies',
115
+ 'De Gaulle',
116
+ 'Série noire',
117
+ 'San Antonio',
118
+ 'Duras',
119
+ 'Presse années 1970',
120
+ 'Braudel',
121
+ 'Bourdieu',
122
+ 'Derrida',
123
+ 'Baudrillard',
124
+ 'Romans contemporains'
125
+ ]
126
+
127
+
128
+ additional_inputs=[
129
+ gr.Dropdown(list_dropdown, value="Proust", label="Style", info="Le style prédominant de Bellay"),
130
+ gr.Slider(
131
+ label="Température",
132
+ value=0.7, # Default value
133
+ minimum=0.05,
134
+ maximum=1.0,
135
+ step=0.05,
136
+ interactive=True,
137
+ info="Des valeurs plus élevées donne plus de créativité, mais aussi d'étrangeté",
138
+ ),
139
+ ]
140
+
141
+ iface = gr.Interface(
142
+ fn=mistral_bot.predict,
143
+ title=title,
144
+ description=description,
145
+ examples=examples,
146
+ inputs=[
147
+ gr.Textbox(label="Votre question ou votre instruction.", type="text", lines=5),
148
+ ] + additional_inputs,
149
+ outputs=[
150
+ gr.Textbox(label="Output will happear here", type="text", lines=5)],
151
+ theme="carlosrosash/bellay_test"
152
+ )
153
+
154
+ # Launch the Gradio interface for the Mistral model
155
+ iface.launch()