Felguk commited on
Commit
ecc62d7
·
verified ·
1 Parent(s): c63744a

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +39 -1
app.py CHANGED
@@ -5,6 +5,7 @@ from PIL import Image
5
  import cv2
6
  import numpy as np
7
  from pydub import AudioSegment
 
8
 
9
  # Инициализация клиента для модели HuggingFaceH4/zephyr-7b-beta
10
  client = InferenceClient("HuggingFaceH4/zephyr-7b-beta")
@@ -35,6 +36,13 @@ def process_audio(file):
35
  audio = AudioSegment.from_file(file)
36
  return f"Аудио: длительность {len(audio) / 1000:.2f} секунд, частота {audio.frame_rate} Гц"
37
 
 
 
 
 
 
 
 
38
  # Функция для обработки сообщений, истории и файлов
39
  def respond(
40
  message,
@@ -44,6 +52,7 @@ def respond(
44
  temperature,
45
  top_p,
46
  file=None,
 
47
  ):
48
  # Если загружен файл, обрабатываем его
49
  if file is not None:
@@ -60,6 +69,26 @@ def respond(
60
  file_info = "Неизвестный тип файла"
61
  message += f"\n[Пользователь загрузил файл: {file.name}]\n{file_info}"
62
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
63
  # Добавляем системное сообщение
64
  messages = [{"role": "system", "content": system_message}]
65
 
@@ -93,12 +122,20 @@ def reset_chat():
93
  # Создание интерфейса с использованием ChatInterface
94
  with gr.Blocks() as demo:
95
  gr.Markdown("# Felguk v0")
96
- gr.Markdown("Чат-бот на основе модели felguk v0. Задавайте вопросы и загружайте файлы (PDF, изображения, видео, аудио)!")
97
 
98
  # Кнопка "Новый чат"
99
  with gr.Row():
100
  new_chat_button = gr.Button("Новый чат", variant="secondary")
101
 
 
 
 
 
 
 
 
 
102
  # Интерфейс чата
103
  chat_interface = gr.ChatInterface(
104
  respond,
@@ -114,6 +151,7 @@ with gr.Blocks() as demo:
114
  label="Top-p (nucleus sampling)",
115
  ),
116
  gr.File(label="Загрузите файл (опционально)"), # Поле для загрузки файлов
 
117
  ],
118
  )
119
 
 
5
  import cv2
6
  import numpy as np
7
  from pydub import AudioSegment
8
+ from langdetect import detect
9
 
10
  # Инициализация клиента для модели HuggingFaceH4/zephyr-7b-beta
11
  client = InferenceClient("HuggingFaceH4/zephyr-7b-beta")
 
36
  audio = AudioSegment.from_file(file)
37
  return f"Аудио: длительность {len(audio) / 1000:.2f} секунд, частота {audio.frame_rate} Гц"
38
 
39
+ # Функция для определения языка текста
40
+ def detect_language(text):
41
+ try:
42
+ return detect(text)
43
+ except:
44
+ return "en" # По умолчанию английский
45
+
46
  # Функция для обработки сообщений, истории и файлов
47
  def respond(
48
  message,
 
52
  temperature,
53
  top_p,
54
  file=None,
55
+ language="auto",
56
  ):
57
  # Если загружен файл, обрабатываем его
58
  if file is not None:
 
69
  file_info = "Неизвестный тип файла"
70
  message += f"\n[Пользователь загрузил файл: {file.name}]\n{file_info}"
71
 
72
+ # Определяем язык сообщения
73
+ if language == "auto":
74
+ language = detect_language(message)
75
+ else:
76
+ language = language
77
+
78
+ # Добавляем системное сообщение с учетом языка
79
+ if language == "ru":
80
+ system_message = "Вы дружелюбный чат-бот, который понимает русский язык."
81
+ elif language == "en":
82
+ system_message = "You are a friendly chatbot that understands English."
83
+ elif language == "es":
84
+ system_message = "Eres un chatbot amigable que entiende español."
85
+ elif language == "fr":
86
+ system_message = "Vous êtes un chatbot sympathique qui comprend le français."
87
+ elif language == "de":
88
+ system_message = "Sie sind ein freundlicher Chatbot, der Deutsch versteht."
89
+ else:
90
+ system_message = "You are a friendly chatbot."
91
+
92
  # Добавляем системное сообщение
93
  messages = [{"role": "system", "content": system_message}]
94
 
 
122
  # Создание интерфейса с использованием ChatInterface
123
  with gr.Blocks() as demo:
124
  gr.Markdown("# Felguk v0")
125
+ gr.Markdown("Чат-бот Felguk v0. Поддерживает несколько языков. Задавайте вопросы и загружайте файлы (PDF, изображения, видео, аудио)!")
126
 
127
  # Кнопка "Новый чат"
128
  with gr.Row():
129
  new_chat_button = gr.Button("Новый чат", variant="secondary")
130
 
131
+ # Выбор языка
132
+ with gr.Row():
133
+ language_dropdown = gr.Dropdown(
134
+ choices=["auto", "en", "ru", "es", "fr", "de"],
135
+ value="auto",
136
+ label="Выберите язык (или оставьте 'auto' для автоматического определения)",
137
+ )
138
+
139
  # Интерфейс чата
140
  chat_interface = gr.ChatInterface(
141
  respond,
 
151
  label="Top-p (nucleus sampling)",
152
  ),
153
  gr.File(label="Загрузите файл (опционально)"), # Поле для загрузки файлов
154
+ language_dropdown, # Выбор языка
155
  ],
156
  )
157