import gradio as gr from duckduckgo_search import DDGS from transformers import pipeline import torch # 1. Загрузка сверхбыстрого движка для tinislm # Используем LaMini-77M как базу за её невероятную скорость model_name = "MBZUAI/LaMini-Flan-T5-77M" pipe = pipeline("text2text-generation", model=model_name) def tinislm_ai_logic(question): if not question: return "Введите вопрос, чтобы я мог начать поиск." # Поиск по доверенным источникам search_query = f"{question} site:wikipedia.org OR site:habr.com OR site:nplus1.ru" results_text = "" try: with DDGS() as ddgs: # Берем 2 самых свежих и релевантных результата search_results = [r for r in ddgs.text(search_query, max_results=2)] for r in search_results: results_text += r['body'] + " " except Exception as e: return f"Ошибка связи с интернетом: {e}" if not results_text: return "К сожалению, в доверенных источниках ничего не найдено." # Системный промпт, чтобы модель знала, кто она prompt = ( f"System: You are tinislm-v1.0-mn, a lightning-fast SLM developed by GGsher. " f"Answer the question briefly based on the context provided.\n" f"Context: {results_text}\n" f"Question: {question}\n" f"Answer:" ) # Генерация ответа response = pipe(prompt, max_length=128, do_sample=False)[0]['generated_text'] return response # --- СОЗДАНИЕ ИНТЕРФЕЙСА (UI) --- # Выбираем современную тему "Soft" with gr.Blocks(theme=gr.themes.Soft(primary_hue="blue", secondary_hue="slate")) as demo: with gr.Column(elem_id="container"): # Заголовок и брендинг gr.Markdown( """ # 🚀 tinislm-v1.0-mn ### [ Small Language Model | Mobile-Native ] **Разработчик:** GGsher **Цель:** Мгновенный ответ по фактам из интернета. --- """ ) with gr.Row(): input_text = gr.Textbox( label="Ваш вопрос", placeholder="Например: Кто такой Стив Джобс?", lines=1 ) with gr.Row(): submit_btn = gr.Button("Найти факт", variant="primary") clear_btn = gr.Button("Очистить", variant="secondary") output_text = gr.Textbox( label="Ответ tinislm", interactive=False, lines=4 ) # Примеры для быстрого теста gr.Examples( examples=[ ["В каком году запустили первый спутник?"], ["Кто создал язык Python?"], ["Что такое квантовый компьютер простыми словами?"] ], inputs=input_text ) gr.Markdown( """ --- *Примечание: tinislm-v1.0-mn оптимизирована для скорости. Ответ занимает около 1-2 секунд в зависимости от скорости интернета.* """ ) # Логика кнопок submit_btn.click(fn=tinislm_ai_logic, inputs=input_text, outputs=output_text) clear_btn.click(lambda: "", None, input_text) clear_btn.click(lambda: "", None, output_text) # Запуск приложения demo.launch()