File size: 2,211 Bytes
5dee7eb
 
57645e8
bd826f0
5dee7eb
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
0cc54f4
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
import os
import requests
import gradio as gr

# Токен берётся из Secrets Hugging Face
HF_TOKEN = os.environ.get("HF_TOKEN")
if not HF_TOKEN:
    raise ValueError("❌ Токен не найден. Добавьте HF_TOKEN в Secrets!")

# Настройки модели (используем облегчённую версию для стабильности)
MODEL_NAME = "IlyaGusev/saiga_mistral_7b-lora"  # Альтернатива: "IlyaGusev/saiga_mistral_7b"
API_URL = f"https://api-inference.huggingface.co/models/{MODEL_NAME}"
headers = {"Authorization": f"Bearer {HF_TOKEN}"}

def generate_response(prompt, history):
    """Генерация ответа с учётом истории диалога"""
    try:
        # Форматируем историю для модели (если нужно)
        formatted_prompt = f"Диалог:\n{history}\nПользователь: {prompt}\nАссистент:"
        
        payload = {
            "inputs": formatted_prompt,
            "parameters": {
                "max_new_tokens": 500,
                "temperature": 0.7,
                "do_sample": True,
            }
        }
        
        response = requests.post(API_URL, headers=headers, json=payload)
        
        if response.status_code == 200:
            return response.json()[0]["generated_text"]
        else:
            return f"⚠️ Ошибка API: {response.text}"
    except Exception as e:
        return f"❌ Ошибка: {str(e)}"

# Интерфейс Gradio (аналог ChatGPT)
with gr.Blocks(title="🇷🇺 Russian Saiga Chat") as demo:
    gr.Markdown("## 💬 Чат с Saiga Mistral 7B (через HF API)")
    chatbot = gr.Chatbot(label="Диалог")
    msg = gr.Textbox(label="Сообщение", placeholder="Напишите что-то...")
    clear = gr.Button("Очистить")

    def respond(message, chat_history):
        bot_message = generate_response(message, chat_history)
        chat_history.append((message, bot_message))
        return "", chat_history

    msg.submit(respond, [msg, chatbot], [msg, chatbot])
    clear.click(lambda: None, None, chatbot, queue=False)

demo.launch(debug=True)