Spaces:
No application file
No application file
| 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() |