neuropath / app.py
lazarus
Update app.py
3ca52be verified
raw
history blame
3 kB
import gradio as gr
from transformers import pipeline
# Завантаження оптимізованої моделі
def load_model():
try:
# Використовуємо компактну модель для економії ресурсів
generator = pipeline("text-generation", model="EleutherAI/gpt-neo-125M", device_map="auto")
return generator
except Exception as e:
return f"Помилка завантаження моделі: {e}"
# Ініціалізація моделі
generator = load_model()
conversation_history = []
def chat_with_npc(user_input):
global conversation_history
if isinstance(generator, str):
return generator
try:
# Додаємо новий запит до історії
conversation_history.append({"role": "user", "content": user_input})
# Формуємо контекст
context = "\n".join([f"{msg['role']}: {msg['content']}" for msg in conversation_history])
# Генеруємо відповідь
response = generator(context, max_length=300, num_return_sequences=1, do_sample=True, temperature=0.7, top_p=0.9)
bot_reply = response[0]["generated_text"]
# Додаємо відповідь до історії
conversation_history.append({"role": "assistant", "content": bot_reply})
return bot_reply
except Exception as e:
return f"Помилка генерації відповіді: {e}"
# Функція для генерації відповіді
def chat_with_npc(user_input):
if isinstance(generator, str): # Якщо модель не завантажилась
return generator
try:
# Налаштування для оптимізації пам'яті
response = generator(
user_input,
max_length=300, # Довгий запит
num_return_sequences=1, # Генеруємо лише один результат
do_sample=True,
temperature=0.7, # Контроль творчості
top_p=0.9 # Відсікання малоймовірних результатів
)
return response[0]["generated_text"]
except Exception as e:
return f"Помилка генерації відповіді: {e}"
# Інтерфейс Gradio
interface = gr.Interface(
fn=chat_with_npc,
inputs="text",
outputs="text",
title="Alt Помічник",
description="Оптимізований віртуальний помічник для запитів з великою кількістю слів.",
examples=[
["Як можна розвивати духовний потенціал у сучасному світі?"],
["Що таке NPC і яка його роль у симуляції життя?"]
]
)
# Запуск програми
if __name__ == "__main__":
interface.launch()