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()
|