User: Привет! Как тебя зовут?
Assistant: Привет! Я - Лаура, я бот. Я могу ответить на вопросы и помочь с различными задачами. Как меня зовут не так важно, но я рада, что вы обратились ко мне за помощью. Как я могу вам помочь?
User: Напиши код приложения для чтения книг с AI помощником, который будет создавать короткие тесты по тексту. Для графического интерфейса используй библиотеку flask, flet, или PyQT6. Текст берется из PDF файлов, которые загружаются пользователем в систему.
Assistant: Создание приложения для чтения книг с AI помощником, который будет генерировать тесты по тексту, может быть довольно сложной задачей. Ниже представлен пример кода, который использует библиотеку Flask для создания веб-приложения, а также библиотеку PyMuPDF (fitz) для извлечения текста из PDF-файлов. Для генерации тестов мы можем использовать простую логику на основе извлеченного текста.

### Установка необходимых библиотек

Для начала, убедитесь, что у вас установлены необходимые библиотеки. Вы можете установить их с помощью pip:

```bash
pip install Flask PyMuPDF nltk
```

### Основной код приложения

```python
from flask import Flask, request, render_template
import fitz  # PyMuPDF
import nltk
import random

nltk.download('punkt')

app = Flask(__name__)

def extract_text_from_pdf(pdf_path):
    text = ""
    with fitz.open(pdf_path) as doc:
        for page in doc:
            text += page.get_text()
    return text

def generate_quiz(text):
    sentences = nltk.sent_tokenize(text)
    quiz_questions = []
    
    for sentence in sentences:
        words = sentence.split()
        if len(words) > 5:
            # Убираем случайное слово для создания вопроса
            word_to_remove = random.choice(words)
            question = sentence.replace(word_to_remove, "_____")
            quiz_questions.append((question, word_to_remove))
    
    return quiz_questions[:5]  # Возвращаем первые 5 вопросов

@app.route('/', methods=['GET', 'POST'])
def upload_file():
    if request.method == 'POST':
        if 'file' not in request.files:
            return 'Нет файла'
        
        file = request.files['file']
        if file.filename == '':
            return 'Нет выбранного файла'
        
        if file and file.filename.endswith('.pdf'):
            pdf_path = f"./uploads/{file.filename}"
            file.save(pdf_path)
            text = extract_text_from_pdf(pdf_path)
            quiz = generate_quiz(text)
            return render_template('quiz.html', quiz=quiz)
    
    return render_template('upload.html')

if __name__ == '__main__':
    app.run(debug=True)
```

### HTML-шаблоны

Создайте папку `templates` в том же каталоге, где находится ваш скрипт, и добавьте следующие HTML-шаблоны.

#### upload.html

```html
<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Загрузка PDF</title>
</head>
<body>
    <h1>Загрузите PDF файл</h1>
    <form method="post" enctype="multipart/form-data">
        <input type="file" name="file" accept=".pdf">
        <input type="submit" value="Загрузить">
    </form>
</body>
</html>
```

#### quiz.html

```html
<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Тест</title>
</head>
<body>
    <h1>Тест по тексту</h1>
    <form method="post" action="/submit">
        {% for question, answer in quiz %}
            <p>{{ question }}</p>
            <input type="text" name="answers" placeholder="Ваш ответ">
        {% endfor %}
        <input type="submit" value="Отправить">
    </form>
</body>
</html>
```

### Запуск приложения

1. Сохраните код в файл, например, `app.py`.
2. Создайте папку `uploads` в том же каталоге, где находится ваш скрипт.
3. Запустите приложение:

```bash
python app.py
```

4. Откройте браузер и перейдите по адресу `http://127.0.0.1:5000/`.

Теперь у вас есть простое приложение для загрузки PDF-файлов и генерации тестов на основе текста из этих файлов. Вы можете расширить функциональность, добавив обработку ответов и подсчет баллов.
User: Если что, приложение еще должно позволять пользователю читать текст загруженной PDF книги.
Assistant: