File size: 3,040 Bytes
c3dfc09
dfa1a47
c3dfc09
dfa1a47
 
 
 
c3dfc09
 
 
 
 
 
 
 
 
dfa1a47
c3dfc09
dfa1a47
c3dfc09
 
 
 
 
dfa1a47
 
c3dfc09
 
dfa1a47
 
8d3c493
dfa1a47
 
 
 
 
 
 
8d3c493
 
dfa1a47
 
 
 
 
143ddd8
dfa1a47
143ddd8
 
dfa1a47
e1f2405
dfa1a47
 
 
 
e0e9880
dfa1a47
dc0ecdd
c3dfc09
 
 
 
 
dc0ecdd
c3dfc09
 
a5420d7
c3dfc09
 
 
1ee4bc1
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
import gradio as gr
from transformers import AutoModelForCausalLM, AutoTokenizer

# Подключаем модель и токенизатор
model_name = "distilgpt2"  # Используем distilgpt2 как более легкую модель
model = AutoModelForCausalLM.from_pretrained(model_name)
tokenizer = AutoTokenizer.from_pretrained(model_name)

def respond(
    message,
    history: list[tuple[str, str]],
    system_message,
    max_tokens,
    temperature,
    top_p,
):
    # Создаем входные данные
    messages = [{"role": "system", "content": system_message}]
    
    for val in history:
        if val[0]:
            messages.append({"role": "user", "content": val[0]})
        if val[1]:
            messages.append({"role": "assistant", "content": val[1]})
    
    # Добавляем последнее сообщение пользователя
    messages.append({"role": "user", "content": message})

    # Объединяем все сообщения в один текст
    input_text = "\n".join([msg["content"] for msg in messages])

    # Токенизация текста
    inputs = tokenizer(input_text, return_tensors="pt", truncation=True, padding=True)

    # Генерация ответа моделью
    outputs = model.generate(
        inputs["input_ids"],
        max_length=max_tokens,
        temperature=temperature,
        top_p=top_p,
        do_sample=True,
    )

    # Декодируем результат в строку
    response = tokenizer.decode(outputs[0], skip_special_tokens=True)

    # Добавляем подпись
    response += "\nСделано больницей EMS штата Alta!"

    return response

# Запускаем Gradio интерфейс
demo = gr.Interface(
    fn=respond,
    inputs=[
        gr.Textbox(value="Здравствуйте. Отвечай кратко(не пиши вступление, умозаключения итп) и сразу пиши начинай с этого ответ: Предварительный диагноз:(диагноз), Операция: (Если требуется, только название, не надо писать хирургическое вмешательство или подобное, а четкое медицинское название операции), Лечение: (Кратко, очень). Не пиши воду. Только по факту на 3 пункта отвечай. Не отходи от этого шаблона", label="System message"),
        gr.Slider(minimum=1, maximum=2048, value=512, step=1, label="Max Tokens"),
        gr.Slider(minimum=0.1, maximum=4.0, value=0.7, step=0.1, label="Temperature"),
        gr.Slider(
            minimum=0.1,
            maximum=1.0,
            value=0.95,
            step=0.05,
            label="Top-p (nucleus sampling)",
        ),
    ],
    css="styles.css",  # Ссылка на внешний CSS файл
)

if __name__ == "__main__":
    demo.launch()