File size: 3,675 Bytes
68300d0
8cbfc7e
1275349
fe67270
0062f54
fe67270
68300d0
464f8f9
fe67270
78ac0ef
4c2e13f
78ac0ef
4c2e13f
 
 
 
 
 
 
78ac0ef
1275349
 
32f05f8
7030ad8
32f05f8
78ac0ef
1275349
4c2e13f
78ac0ef
 
 
 
 
464f8f9
fe67270
464f8f9
78ac0ef
fe67270
78ac0ef
32f05f8
f747916
32f05f8
f747916
 
32f05f8
f747916
 
32f05f8
 
 
 
 
 
0062f54
32f05f8
 
0062f54
 
 
32f05f8
464f8f9
32f05f8
 
0062f54
464f8f9
0062f54
 
 
 
fe67270
9f5efd5
fe67270
 
 
 
32f05f8
 
fe67270
 
 
 
 
78ac0ef
437bce8
fe67270
 
 
 
 
 
 
1275349
fe67270
 
 
501365f
 
0062f54
 
 
 
 
 
68300d0
 
464f8f9
68300d0
78ac0ef
 
32f05f8
78ac0ef
 
 
 
0062f54
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
import gradio as gr
from huggingface_hub import hf_hub_download
from llama_cpp import Llama

# Так надо
model = None

def load_model():
    global model
    try:
        print("Начинаем загрузку модели из Hub...")
        
        model_path = hf_hub_download(
            repo_id="AugustLight/LLight-3.2-3B-Instruct",
            filename="Llight.Q8_0.gguf",
            repo_type="model"
        )
        
        print(f"Модель загружена в: {model_path}")
        
        model = Llama(
            model_path=model_path,
            n_ctx=2048,        # Размер контекста
            n_threads=4,       # Количество потоков
            n_batch=512        # Размер батча
        )
        
        print("Модель успешно инициализирована!")
        return model
        
    except Exception as e:
        print(f"Подробная ошибка при загрузке модели: {str(e)}")
        raise e

def respond(message, history, system_message, max_new_tokens, temperature, top_p):
    try:
        global model
        if model is None:
            model = load_model()
            
        context = f"{system_message}\n\n"
        for user_msg, assistant_msg in history:
            context += f"User: {user_msg}\nAssistant: {assistant_msg}\n"
        context += f"User: {message}\nAssistant: "

        print(f"Генерируем ответ для контекста длиной {len(context)} символов")
        
        response = model(
            prompt=context,
            max_tokens=max_new_tokens,
            temperature=temperature,
            top_p=top_p,
            stop=["User:", "\n\n", "<|endoftext|>"],
            echo=False  # Не возвращать промпт в ответе
        )
        
        generated_text = response['choices'][0]['text']
        print(f"Ответ сгенерирован успешно, длина: {len(generated_text)}")
        return generated_text.strip()
        
    except Exception as e:
        error_msg = f"Произошла ошибка: {str(e)}"
        print(error_msg)
        return error_msg


demo = gr.ChatInterface(
    respond,
    additional_inputs=[
        gr.Textbox(
            value="Ты дружелюбный и полезный ассистент. Отвечай обдуманно и по делу.", 
            label="System message"
        ),
        gr.Slider(
            minimum=1, 
            maximum=2048, 
            value=512, 
            step=1, 
            label="Max new tokens"
        ),
        gr.Slider(
            minimum=0.1, 
            maximum=2.0, 
            value=0.3, 
            step=0.1, 
            label="Temperature"
        ),
        gr.Slider(
            minimum=0.1,
            maximum=1.0,
            value=0.95,
            step=0.05, 
            label="Top-p (nucleus sampling)"
        ),
    ],
    title="GGUF Chat Model",
    description="Чат с GGUF моделью (LLight-3.2-3B-Instruct)",
    examples=[
        ["Привет! Как дела?"],
        ["Расскажи мне о себе"],
        ["Что ты умеешь делать?"]
    ],
    cache_examples=False
)

# Запускаем приложение
if __name__ == "__main__":
    try:
        print("Инициализация приложения...")
        model = load_model()
        print("Модель загружена успешно при старте")
    except Exception as e:
        print(f"Ошибка при инициализации: {str(e)}")
    
    demo.launch()