SimrusDenuvo commited on
Commit
5dee7eb
·
verified ·
1 Parent(s): 57645e8

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +52 -33
app.py CHANGED
@@ -1,36 +1,55 @@
1
- from transformers import AutoTokenizer, AutoModelForCausalLM
2
- import torch
3
  import gradio as gr
4
 
5
- model_name = "ai-forever/rugpt3large_based_on_gpt2"
6
-
7
- tokenizer = AutoTokenizer.from_pretrained(model_name)
8
- model = AutoModelForCausalLM.from_pretrained(model_name)
9
-
10
- def generate_response(user_query):
11
- prompt = f"Клиент: {user_query}\nБанк:"
12
- input_ids = tokenizer.encode(prompt, return_tensors="pt")
13
-
14
- with torch.no_grad():
15
- output_ids = model.generate(
16
- input_ids,
17
- max_new_tokens=100,
18
- do_sample=True,
19
- temperature=0.7,
20
- top_k=50,
21
- top_p=0.95,
22
- pad_token_id=tokenizer.eos_token_id
23
- )
24
-
25
- generated_text = tokenizer.decode(output_ids[0], skip_special_tokens=True)
26
- response = generated_text[len(prompt):].strip()
27
- return response
28
-
29
- gr.Interface(
30
- fn=generate_response,
31
- inputs=gr.Textbox(lines=3, label="Введите банковский запрос"),
32
- outputs=gr.Textbox(lines=5, label="Ответ модели"),
33
- title="🤖 Русский банковский помощник",
34
- description="Генерация ответа на русском языке с использованием модели RuGPT-3 от AI-Forever."
35
- ).launch(share=True)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
36
 
 
1
+ import os
2
+ import requests
3
  import gradio as gr
4
 
5
+ # Токен берётся из Secrets Hugging Face
6
+ HF_TOKEN = os.environ.get("HF_TOKEN")
7
+ if not HF_TOKEN:
8
+ raise ValueError("❌ Токен не найден. Добавьте HF_TOKEN в Secrets!")
9
+
10
+ # Настройки модели (используем облегчённую версию для стабильности)
11
+ MODEL_NAME = "IlyaGusev/saiga_mistral_7b-lora" # Альтернатива: "IlyaGusev/saiga_mistral_7b"
12
+ API_URL = f"https://api-inference.huggingface.co/models/{MODEL_NAME}"
13
+ headers = {"Authorization": f"Bearer {HF_TOKEN}"}
14
+
15
+ def generate_response(prompt, history):
16
+ """Генерация ответа с учётом истории диалога"""
17
+ try:
18
+ # Форматируем историю для модели (если нужно)
19
+ formatted_prompt = f"Диалог:\n{history}\nПользователь: {prompt}\nАссистент:"
20
+
21
+ payload = {
22
+ "inputs": formatted_prompt,
23
+ "parameters": {
24
+ "max_new_tokens": 500,
25
+ "temperature": 0.7,
26
+ "do_sample": True,
27
+ }
28
+ }
29
+
30
+ response = requests.post(API_URL, headers=headers, json=payload)
31
+
32
+ if response.status_code == 200:
33
+ return response.json()[0]["generated_text"]
34
+ else:
35
+ return f"⚠️ Ошибка API: {response.text}"
36
+ except Exception as e:
37
+ return f"❌ Ошибка: {str(e)}"
38
+
39
+ # Интерфейс Gradio (аналог ChatGPT)
40
+ with gr.Blocks(title="🇷🇺 Russian Saiga Chat") as demo:
41
+ gr.Markdown("## 💬 Чат с Saiga Mistral 7B (через HF API)")
42
+ chatbot = gr.Chatbot(label="Диалог")
43
+ msg = gr.Textbox(label="Сообщение", placeholder="Напишите что-то...")
44
+ clear = gr.Button("Очистить")
45
+
46
+ def respond(message, chat_history):
47
+ bot_message = generate_response(message, chat_history)
48
+ chat_history.append((message, bot_message))
49
+ return "", chat_history
50
+
51
+ msg.submit(respond, [msg, chatbot], [msg, chatbot])
52
+ clear.click(lambda: None, None, chatbot, queue=False)
53
+
54
+ demo.launch(debug=True)
55