HaveAI commited on
Commit
f6a9f7a
·
verified ·
1 Parent(s): ace4e68

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +34 -48
app.py CHANGED
@@ -1,61 +1,47 @@
1
  import gradio as gr
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()
 
1
  import gradio as gr
2
+ import requests
3
  import os
4
 
5
+ # Настройки
6
+ API_URL = "https://api-inference.huggingface.co/models/meta-llama/Llama-3.2-3B-Instruct"
7
  token = os.getenv("HF_TOKEN")
8
+ headers = {"Authorization": f"Bearer {token}"}
9
 
10
+ def query(payload):
11
+ response = requests.post(API_URL, headers=headers, json=payload)
12
+ return response.json()
13
+
14
+ def respond(message, history):
15
+ # Flare - имя ассистента
16
+ prompt = f"System: Ты — Flare, профессиональный ИИ-ассистент. Пиши грамотно на русском.\n"
 
17
 
18
+ # Берем только последние 2 сообщения для максимальной стабильности
19
+ for user_msg, bot_msg in history[-2:]:
20
+ prompt += f"User: {user_msg}\nAssistant: {bot_msg}\n"
21
 
22
+ prompt += f"User: {message}\nAssistant:"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
23
 
24
+ payload = {
25
+ "inputs": prompt,
26
+ "parameters": {
27
+ "max_new_tokens": 500,
28
+ "temperature": 0.7,
29
+ "return_full_text": False
30
+ }
31
+ }
32
 
33
+ try:
34
+ output = query(payload)
35
+ # Если API вернул ошибку (например, модель грузится)
36
+ if "error" in output:
37
+ return f"Flare: Сейчас модель подгружается, подожди 10 секунд. (Ошибка: {output['error']})"
38
+
39
+ return output[0]['generated_text'].strip()
40
+ except Exception as e:
41
+ return f"Flare: Ошибка связи. Проверь интернет или токен. ({str(e)})"
 
42
 
43
+ # Самый простой интерфейс без стриминга (так надежнее)
44
+ demo = gr.ChatInterface(fn=respond)
 
 
45
 
46
  if __name__ == "__main__":
47
  demo.launch()