File size: 2,408 Bytes
c3dfc09 4d87bab 2edf1f0 e143294 c3dfc09 e143294 ded136a 2edf1f0 e143294 4d87bab ded136a 4d87bab ded136a e143294 23be90a 4d87bab e143294 2edf1f0 e143294 2edf1f0 c3dfc09 6e9275a ded136a 2f225f8 e143294 4d87bab 6e9275a 4d87bab 92bf9aa 6e9275a ded136a 2edf1f0 e143294 85dd489 999bf4d 6e9275a 85dd489 ded136a 85dd489 c3dfc09 133324c 999bf4d |
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 |
import gradio as gr
from transformers import pipeline
import torch
import logging
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
model_name = "microsoft/Phi-3-mini-4k-instruct"
try:
logger.info(f"Попытка загрузки модели {model_name}...")
generator = pipeline(
"text-generation",
model=model_name,
device=-1,
framework="pt",
max_length=150,
truncation=True,
model_kwargs={"torch_dtype": torch.float32}
)
logger.info("Модель успешно загружена.")
except Exception as e:
logger.error(f"Ошибка загрузки модели: {e}")
exit(1)
def respond(message, max_tokens=150, temperature=0.5, top_p=0.8):
prompt = f"You are a medical chatbot. User says: '{message}'. Provide diagnosis and treatment in English."
try:
logger.info(f"Генерация ответа для: {message}")
outputs = generator(
prompt,
max_length=max_tokens,
temperature=temperature,
top_p=top_p,
do_sample=True,
num_return_sequences=1
)
response = outputs[0]["generated_text"].replace(prompt, "").strip()
# Простой перевод (для примера)
if "Diagnosis" in response:
diagnosis = response.split("Diagnosis:")[1].split("Treatment:")[0].strip()
treatment = response.split("Treatment:")[1].strip()
response = f"Диагноз: {diagnosis}\nЛечение: {treatment}"
except Exception as e:
logger.error(f"Ошибка генерации ответа: {e}")
return f"Ошибка генерации: {e}"
return response
demo = gr.Interface(
fn=respond,
inputs=[
gr.Textbox(label="Ваше сообщение", placeholder="Опишите симптомы (например, 'Болит горло')..."),
gr.Slider(minimum=50, maximum=300, value=150, step=10, label="Макс. токенов"),
gr.Slider(minimum=0.1, maximum=1.0, value=0.5, label="Температура"),
gr.Slider(minimum=0.1, maximum=1.0, value=0.8, label="Top-p")
],
outputs="text",
title="Медицинский чат-бот на базе Phi-3-mini-4k-instruct",
theme=gr.themes.Soft()
)
if __name__ == "__main__":
demo.launch() |