HaveAI commited on
Commit
ab6f153
·
verified ·
1 Parent(s): e451f01

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +50 -12
app.py CHANGED
@@ -1,20 +1,58 @@
1
  import gradio as gr
2
  from huggingface_hub import InferenceClient
 
3
 
4
- # Выбираем модельожно поменять на любую другую из HF)
5
- client = InferenceClient("mistralai/Mistral-7B-Instruct-v0.2")
 
 
6
 
7
- def respond(message, history):
8
- # Формируем ответ от модели
9
- response = client.chat_completion(
10
- messages=[{"role": "user", "content": message}],
11
- max_tokens=500,
12
- stream=False
13
- )
14
- return response.choices[0].message.content
15
 
16
- # Создаем интерфейс чата
17
- demo = gr.ChatInterface(respond)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
18
 
19
  if __name__ == "__main__":
20
  demo.launch()
 
1
  import gradio as gr
2
  from huggingface_hub import InferenceClient
3
+ import os
4
 
5
+ # 1. Инициализация клиента с использованием токена из секретов
6
+ # Убедись, что в Settings -> Secrets добавлен HF_TOKEN
7
+ token = os.getenv("HF_TOKEN")
8
+ client = InferenceClient("mistralai/Mistral-7B-Instruct-v0.2", token=token)
9
 
10
+ def respond(message, history: list[tuple[str, str]]):
11
+ """
12
+ Функция для обработки сообщений.
13
+ history это список пар [пользователь, бот], который Gradio ведет сам.
14
+ """
15
+
16
+ # Формируем системный промпт, чтобы задать роль боту
17
+ messages = [{"role": "system", "content": "Ты — полезный ИИ-ассистент. Отвечай кратко и по делу на русском языке."}]
18
 
19
+ # Добавляем историю переписки в контекст
20
+ for val in history:
21
+ if val[0]:
22
+ messages.append({"role": "user", "content": val[0]})
23
+ if val[1]:
24
+ messages.append({"role": "assistant", "content": val[1]})
25
+
26
+ # Добавляем текущее сообщение пользователя
27
+ messages.append({"role": "user", "content": message})
28
+
29
+ response = ""
30
+
31
+ # Запрос к модели через Inference API
32
+ try:
33
+ # Используем stream=True для эффекта печатающегося текста
34
+ for message_chunk in client.chat_completion(
35
+ messages=messages,
36
+ max_tokens=1000,
37
+ stream=True,
38
+ temperature=0.7,
39
+ top_p=0.95,
40
+ ):
41
+ token_text = message_chunk.choices[0].delta.content
42
+ if token_text:
43
+ response += token_text
44
+ yield response
45
+ except Exception as e:
46
+ yield f"Произошла ошибка: {str(e)}. Проверь, добавлен ли HF_TOKEN в Settings -> Secrets."
47
+
48
+ # 2. Создаем красивый интерфейс
49
+ demo = gr.ChatInterface(
50
+ fn=respond,
51
+ title="Мой ИИ Чат-бот",
52
+ description="Запущено в Hugging Face Spaces с использованием Mistral API",
53
+ examples=["Привет! Кто ты?", "Напиши код на Python для сортировки списка", "Расскажи шутку про программистов"],
54
+ theme="soft" # Можно выбрать: 'default', 'soft', 'monochrome'
55
+ )
56
 
57
  if __name__ == "__main__":
58
  demo.launch()