0x7o commited on
Commit
933ec2b
1 Parent(s): d57f720

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +44 -42
app.py CHANGED
@@ -1,58 +1,60 @@
1
  import gradio as gr
2
- from huggingface_hub import InferenceClient
 
3
 
4
- # Инициализация клиента для модели Aeonium
5
- client = InferenceClient("aeonium/Aeonium-v1.1-Chat-4B")
6
 
7
- def respond(
8
- message,
9
- history: list[tuple[str, str]],
10
- system_message,
11
- max_tokens,
12
- temperature,
13
- top_p,
14
- ):
15
- # Формирование сообщений для чата
16
- messages = [{"role": "system", "content": system_message}]
 
 
17
 
18
- for user_msg, assistant_msg in history:
19
- if user_msg:
20
- messages.append({"role": "user", "content": user_msg})
21
- if assistant_msg:
22
- messages.append({"role": "assistant", "content": assistant_msg})
23
 
24
- messages.append({"role": "user", "content": message})
25
-
26
- response = ""
27
-
28
- # Генерация ответа с использованием Inference API
29
- for chunk in client.text_generation(
30
- prompt=client.tokenizer.apply_chat_template(messages, tokenize=False),
31
- max_new_tokens=max_tokens,
32
- stream=True,
33
- temperature=temperature,
34
- top_p=top_p,
35
- ):
36
- response += chunk.token.text
37
- yield response
 
 
38
 
39
  # Настройка интерфейса Gradio
40
- demo = gr.ChatInterface(
41
- respond,
42
- additional_inputs=[
43
- gr.Textbox(value="Ты дружелюбный ассистент, созданный компанией Aeonium.", label="Системное сообщение"),
44
- gr.Slider(minimum=1, maximum=2048, value=512, step=1, label="Максимальное количество новых токенов"),
45
- gr.Slider(minimum=0.1, maximum=2.0, value=0.7, step=0.1, label="Температура"),
46
- gr.Slider(minimum=0.1, maximum=1.0, value=0.95, step=0.05, label="Top-p (nucleus sampling)"),
47
- ],
48
  title="Чат с Aeonium v1.1",
49
  description="Это чат-интерфейс для модели Aeonium v1.1 Chat 4B. Задавайте вопросы и получайте ответы!",
 
50
  examples=[
51
  "Привет! Как дела?",
52
  "Расскажи мне о квантовой физике",
53
  "Какие интересные книги ты можешь порекомендовать?",
54
  ],
 
 
 
 
55
  )
56
 
57
- if __name__ == "__main__":
58
- demo.launch()
 
1
  import gradio as gr
2
+ from transformers import AutoTokenizer, AutoModelForCausalLM
3
+ import torch
4
 
5
+ model_id = "aeonium/Aeonium-v1.1-Chat-4B"
 
6
 
7
+ # Загрузка токенизатора и модели
8
+ tokenizer = AutoTokenizer.from_pretrained(model_id)
9
+ model = AutoModelForCausalLM.from_pretrained(
10
+ model_id,
11
+ device_map="auto",
12
+ torch_dtype=torch.bfloat16,
13
+ )
14
+
15
+ def predict(message, history):
16
+ # Формирование чата из истории и нового сообщения
17
+ chat = [{"role": "user" if i % 2 == 0 else "assistant", "content": m}
18
+ for i, (m, _) in enumerate(history)] + [{"role": "user", "content": message}]
19
 
20
+ # Применение шаблона чата
21
+ prompt = tokenizer.apply_chat_template(chat, tokenize=False, add_generation_prompt=True)
 
 
 
22
 
23
+ # Кодирование входных данных
24
+ inputs = tokenizer.encode(prompt, add_special_tokens=False, return_tensors="pt").to(model.device)
25
+
26
+ # Генерация ответа
27
+ outputs = model.generate(
28
+ input_ids=inputs,
29
+ max_new_tokens=256, # Увеличено для более длинных ответов
30
+ do_sample=True,
31
+ temperature=0.7,
32
+ top_p=0.95,
33
+ )
34
+
35
+ # Декодирование результата
36
+ response = tokenizer.decode(outputs[0][len(inputs[0]):], skip_special_tokens=True)
37
+
38
+ return response.strip()
39
 
40
  # Настройка интерфейса Gradio
41
+ iface = gr.ChatInterface(
42
+ predict,
43
+ chatbot=gr.Chatbot(height=600),
44
+ textbox=gr.Textbox(placeholder="Введите ваше сообщение здесь...", container=False, scale=7),
 
 
 
 
45
  title="Чат с Aeonium v1.1",
46
  description="Это чат-интерфейс для модели Aeonium v1.1 Chat 4B. Задавайте вопросы и получайте ответы!",
47
+ theme="soft",
48
  examples=[
49
  "Привет! Как дела?",
50
  "Расскажи мне о квантовой физике",
51
  "Какие интересные книги ты можешь порекомендовать?",
52
  ],
53
+ cache_examples=True,
54
+ retry_btn="Повторить",
55
+ undo_btn="Отменить последнее",
56
+ clear_btn="Очистить",
57
  )
58
 
59
+ # Запуск интерфейса
60
+ iface.launch()