HaveAI commited on
Commit
c4a849b
·
verified ·
1 Parent(s): d646eab

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +43 -30
app.py CHANGED
@@ -2,47 +2,60 @@ import gradio as gr
2
  from huggingface_hub import InferenceClient
3
  import os
4
 
5
- # Используем Llama 3.2 3B - она ЛУЧШАЯ по стабильности для бесплатных Space
6
  token = os.getenv("HF_TOKEN")
7
  client = InferenceClient("meta-llama/Llama-3.2-3B-Instruct", token=token)
8
 
9
- def respond(message, history):
10
- # Системная инструкция
11
- messages = [{"role": "system", "content": "Ты — профессиональный ИИ-ассистент Flare. Пиши грамотно на русском языке."}]
12
-
13
- # Добавляем только последние 3 сообщения, чтобы точно не вылетала ошибка лимита
14
- for user_msg, assistant_msg in history[-3:]:
15
- if user_msg and assistant_msg:
16
- messages.append({"role": "user", "content": str(user_msg)})
17
- messages.append({"role": "assistant", "content": str(assistant_msg)})
18
-
19
- # Текущее сообщение
20
- messages.append({"role": "user", "content": str(message)})
21
-
22
  response = ""
23
  try:
24
- # Уменьшаем число токенов в ответе для скорости
25
- for message_chunk in client.chat_completion(
26
  messages=messages,
27
  max_tokens=500,
28
  stream=True,
29
- temperature=0.7,
30
  ):
31
- if message_chunk.choices and len(message_chunk.choices) > 0:
32
- token_text = message_chunk.choices[0].delta.content
33
- if token_text:
34
- response += token_text
35
- yield response
36
  except Exception as e:
37
- # Если всё же упало, выводим причину
38
- yield f"Flare столкнулся с ошибкой. Попробуй еще раз через 5 секунд. (Текст ошибки: {str(e)})"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
39
 
40
- # Создаем интерфейс без лишних наворотов
41
- demo = gr.ChatInterface(
42
- fn=respond,
43
- title="Flare AI",
44
- description="Стабильная версия ассистента"
45
- )
46
 
47
  if __name__ == "__main__":
48
  demo.launch()
 
2
  from huggingface_hub import InferenceClient
3
  import os
4
 
5
+ # Используем максимально надежный токен и модель
6
  token = os.getenv("HF_TOKEN")
7
  client = InferenceClient("meta-llama/Llama-3.2-3B-Instruct", token=token)
8
 
9
+ def chat_fn(message, history):
10
+ # Flare всегда представляется и помнит инструкцию
11
+ messages = [{"role": "system", "content": "Ты — профессиональный ИИ-ассистент Flare. Пиши грамотно на русском."}]
12
+
13
+ # Добавляем историю (ограничим 5 последними сообщениями)
14
+ for user_msg, assistant_msg in history[-5:]:
15
+ messages.append({"role": "user", "content": user_msg})
16
+ messages.append({"role": "assistant", "content": assistant_msg})
17
+
18
+ # Добавляем текущий вопрос
19
+ messages.append({"role": "user", "content": message})
20
+
 
21
  response = ""
22
  try:
23
+ # Запрашиваем ответ
24
+ for msg in client.chat_completion(
25
  messages=messages,
26
  max_tokens=500,
27
  stream=True,
28
+ temperature=0.7
29
  ):
30
+ token_text = msg.choices[0].delta.content
31
+ if token_text:
32
+ response += token_text
33
+ yield response
 
34
  except Exception as e:
35
+ yield f"Flare: Ошибка сервера ({str(e)}). Попробуй отправить еще раз."
36
+
37
+ # Создаем интерфейс вручную
38
+ with gr.Blocks() as demo:
39
+ gr.Markdown("# Flare AI Assistant")
40
+ chatbot = gr.Chatbot(label="Чат с Flare")
41
+ msg = gr.Textbox(label="Ваш вопрос", placeholder="Напишите здесь...")
42
+ clear = gr.Button("Очистить чат")
43
+
44
+ # Логика отправки
45
+ def user_input(user_message, history):
46
+ return "", history + [[user_message, None]]
47
+
48
+ def bot_output(history):
49
+ user_message = history[-1][0]
50
+ history[-1][1] = ""
51
+ for chunk in chat_fn(user_message, history[:-1]):
52
+ history[-1][1] = chunk
53
+ yield history
54
 
55
+ msg.submit(user_input, [msg, chatbot], [msg, chatbot], queue=False).then(
56
+ bot_output, chatbot, chatbot
57
+ )
58
+ clear.click(lambda: None, None, chatbot, queue=False)
 
 
59
 
60
  if __name__ == "__main__":
61
  demo.launch()