File size: 2,933 Bytes
650ba4d
5862173
1048d32
650ba4d
f50936d
 
 
 
 
f2a416f
f50936d
 
 
3a3a439
f50936d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5f012b1
f50936d
 
650ba4d
 
 
 
 
f2a416f
f50936d
 
650ba4d
 
 
 
 
 
 
 
 
 
 
 
f50936d
650ba4d
 
 
 
 
 
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
import gradio as gr
import docx
import numpy as np

def process_input(uploaded_file, input_text, function):
    if uploaded_file is not None:
        try:
            # Получаем путь к загруженному файлу
            file_path = uploaded_file.name

            # Читаем содержимое файла
            with open(file_path, "rb") as file:
                file_content = file.read()

            # Определяем тип файла по расширению
            if file_path.endswith('.txt'):
                # Если файл текстовый, декодируем содержимое
                content = file_content.decode("utf-8")
            elif file_path.endswith('.docx'):
                # Если файл Word, используем библиотеку python-docx
                doc = docx.Document(file_path)
                content = '\n'.join([para.text for para in doc.paragraphs])
            else:
                return "Неподдерживаемый тип файла"
        except Exception as e:
            return f"Ошибка при обработке файла: {str(e)}"
    elif input_text:
        content = input_text
    else:
        return "Пожалуйста, загрузите файл или введите текст"

    # Тут можно добавить логику обработки текста
    return f"Результат для функции '{function}': {content[:100]}... (показаны первые 100 символов)"

def main():
    with gr.Blocks() as demo:
        gr.Markdown("### AI Research Assistant")
        with gr.Row():
            file_input = gr.File(label="Загрузите файл", file_types=["text", "docx"])
            text_input = gr.Textbox(label="Или введите текст", lines=5)
        with gr.Row():
            function_select = gr.Dropdown(choices=[
                "Суммаризатор", "Поиск новых статей", "Учитель", "Критик", "Тестировщик",
                "Визуализатор связей", "Советник", "Соавтор", "Переводчик", "Аннотатор",
                "Факт-чекер", "Аналитик данных", "Стилистический редактор", "Рецензент",
                "Презентатор", "Грант-райтер", "Научный сторителлер", "Библиограф"
            ], label="Выберите функцию")
        with gr.Row():
            submit_button = gr.Button("Обработать")
            output_text = gr.Textbox(label="Результат")
        
        submit_button.click(
            fn=process_input,
            inputs=[file_input, text_input, function_select],
            outputs=output_text
        )
    demo.launch()

if __name__ == "__main__":
    main()