GGsher commited on
Commit
3073994
·
verified ·
1 Parent(s): 699ff69

Create App.py

Browse files
Files changed (1) hide show
  1. App.py +102 -0
App.py ADDED
@@ -0,0 +1,102 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ from duckduckgo_search import DDGS
3
+ from transformers import pipeline
4
+ import torch
5
+
6
+ # 1. Загрузка сверхбыстрого движка для tinislm
7
+ # Используем LaMini-77M как базу за её невероятную скорость
8
+ model_name = "MBZUAI/LaMini-Flan-T5-77M"
9
+ pipe = pipeline("text2text-generation", model=model_name)
10
+
11
+ def tinislm_ai_logic(question):
12
+ if not question:
13
+ return "Введите вопрос, чтобы я мог начать поиск."
14
+
15
+ # Поиск по доверенным источникам
16
+ search_query = f"{question} site:wikipedia.org OR site:habr.com OR site:nplus1.ru"
17
+
18
+ results_text = ""
19
+ try:
20
+ with DDGS() as ddgs:
21
+ # Берем 2 самых свежих и релевантных результата
22
+ search_results = [r for r in ddgs.text(search_query, max_results=2)]
23
+ for r in search_results:
24
+ results_text += r['body'] + " "
25
+ except Exception as e:
26
+ return f"Ошибка связи с интернетом: {e}"
27
+
28
+ if not results_text:
29
+ return "К сожалению, в доверенных источниках ничего не найдено."
30
+
31
+ # Системный промпт, чтобы модель знала, кто она
32
+ prompt = (
33
+ f"System: You are tinislm-v1.0-mn, a lightning-fast SLM developed by GGsher. "
34
+ f"Answer the question briefly based on the context provided.\n"
35
+ f"Context: {results_text}\n"
36
+ f"Question: {question}\n"
37
+ f"Answer:"
38
+ )
39
+
40
+ # Генерация ответа
41
+ response = pipe(prompt, max_length=128, do_sample=False)[0]['generated_text']
42
+ return response
43
+
44
+ # --- СОЗДАНИЕ ИНТЕРФЕЙСА (UI) ---
45
+
46
+ # Выбираем современную тему "Soft"
47
+ with gr.Blocks(theme=gr.themes.Soft(primary_hue="blue", secondary_hue="slate")) as demo:
48
+
49
+ with gr.Column(elem_id="container"):
50
+ # Заголовок и брендинг
51
+ gr.Markdown(
52
+ """
53
+ # 🚀 tinislm-v1.0-mn
54
+ ### [ Small Language Model | Mobile-Native ]
55
+
56
+ **Разработчик:** GGsher
57
+ **Цель:** Мгновенный ответ по фактам из интернета.
58
+ ---
59
+ """
60
+ )
61
+
62
+ with gr.Row():
63
+ input_text = gr.Textbox(
64
+ label="Ваш вопрос",
65
+ placeholder="Например: Кто такой Стив Джобс?",
66
+ lines=1
67
+ )
68
+
69
+ with gr.Row():
70
+ submit_btn = gr.Button("Найти факт", variant="primary")
71
+ clear_btn = gr.Button("Очистить", variant="secondary")
72
+
73
+ output_text = gr.Textbox(
74
+ label="Ответ tinislm",
75
+ interactive=False,
76
+ lines=4
77
+ )
78
+
79
+ # Примеры для быстрого теста
80
+ gr.Examples(
81
+ examples=[
82
+ ["В каком году запустили первый спутник?"],
83
+ ["Кто создал язык Python?"],
84
+ ["Что такое квантовый компьютер простыми словами?"]
85
+ ],
86
+ inputs=input_text
87
+ )
88
+
89
+ gr.Markdown(
90
+ """
91
+ ---
92
+ *Примечание: tinislm-v1.0-mn оптимизирована для скорости. Ответ занимает около 1-2 секунд в зависимости от скорости интернета.*
93
+ """
94
+ )
95
+
96
+ # Логика кнопок
97
+ submit_btn.click(fn=tinislm_ai_logic, inputs=input_text, outputs=output_text)
98
+ clear_btn.click(lambda: "", None, input_text)
99
+ clear_btn.click(lambda: "", None, output_text)
100
+
101
+ # Запуск приложения
102
+ demo.launch()