Skip to content

Latest commit

 

History

History
318 lines (228 loc) · 35.6 KB

File metadata and controls

318 lines (228 loc) · 35.6 KB

Exameow — AI-генератор экзаменационных вопросов: загружайте учебные материалы и получайте готовые тесты за секунды

GitHub release Лицензия: Apache-2.0 Платформы: Windows, macOS, Linux, Android, Web Загрузки Docker

简体中文 · 繁體中文 · English · 日本語 · 한국어 · Español · Français · Deutsch · Русский · العربية

Интерактивное демо · Скачать · Docker Hub

Что такое Exameow?

Exameow (过了喵) — это генератор экзаменационных вопросов на базе ИИ с открытым исходным кодом, который превращает ваши учебные материалы в полноценные экзаменационные тесты за считанные секунды. Загружайте файлы PDF, Word, презентации PowerPoint, изображения или текст — ИИ автоматически анализирует контент и создает вопросы с одиночным выбором, множественным выбором, верные/неверные утверждения, задания на заполнение пропусков и краткие ответы.

В отличие от других ИИ-сервисов для создания тестов, требующих регистрации, платной подписки или отправки данных в облако, Exameow ориентирован на принцип локальности и абсолютную конфиденциальность (local-first). Ваши базы вопросов, история ответов и статистика ошибок хранятся исключительно на вашем устройстве. Десктопные и мобильные приложения работают полностью автономно (оффлайн) при наличии вашего собственного API-ключа (OpenAI, DeepSeek, Qwen, GLM или любой другой самописной/локальной модели).

Для преподавателей и тренеров Exameow предлагает встроенную систему онлайн-экзаменов — публикуйте тесты из локальных баз вопросов, делитесь 6-значным кодом, и студенты смогут пройти экзамен через любой браузер. Автоматическая проверка, панель преподавателя и защита от злоупотреблений уже включены. Развертывание всей системы выполняется одной командой Docker.

Интерфейс десктопного и мобильного приложения Exameow

Интерактивное демо

Попробуйте онлайн: exam.superagentparty.com

Демо-версия работает на базе Cloudflare Workers с использованием бесплатного тарифа Workers AI:

  • Ежедневный лимит ограничен — бесплатный лимит ИИ от Cloudflare обновляется раз в сутки
  • 📄 Ограничение контекстного окна — слишком большие документы будут автоматически обрезаны для соответствия размеру контекстного окна модели

Для использования без ограничений разверните проект через Docker или используйте десктопные/мобильные приложения со своим API-ключом.

Возможности

✨ ИИ-генерация вопросов — Загружайте файлы, получайте готовые тесты

Exameow распознает учебные материалы в 10+ форматах — PDF, DOCX, XLSX, PPTX, EPUB, ODT, TXT, CSV, HTML, а также изображения (PNG/JPG/WEBP/GIF/BMP). Поддерживается загрузка одного или нескольких файлов перетаскиванием (Drag-and-Drop). ИИ генерирует вопросы 5 типов: одиночный выбор, множественный выбор, верно/неверно, заполнение пропусков и краткий ответ. Можно гибко настраивать количество вопросов каждого типа, уровень сложности (легкий/средний/сложный), язык генерации и фильтрацию по темам/главам. Большие документы автоматически разбиваются на части с последующей генерацией и удалением дубликатов. Работает с любым OpenAI-совместимым API — OpenAI, DeepSeek, Qwen, GLM и др., а также с бесплатным встроенным Cloudflare AI в демо-версии. Результаты можно экспортировать в XLSX или CSV.

  • Множество входных форматов — PDF, DOCX, XLSX, PPTX, EPUB, ODT, TXT, CSV, HTML, изображения (PNG/JPG/WEBP/GIF/BMP) и любые текстовые файлы/исходный код; загрузка нескольких файлов методом drag & drop
  • 5 типов вопросов — Одиночный выбор, множественный выбор, верно/неверно, заполнение пропусков, краткий ответ с возможностью индивидуальной настройки количества вопросов каждого типа
  • Гибкая настройка — Сложность (легкий/средний/сложный), язык вывода и фильтрация по темам/главам
  • Умная пакетная обработка — Большие документы автоматически разделяются на части и обрабатываются пакетами с исключением дубликатов
  • Любой OpenAI-совместимый API — OpenAI, DeepSeek, Qwen, GLM и т.д.; либо бесплатный встроенный Cloudflare AI на демо-сайте
  • Экспорт — Скачивание результатов в форматах XLSX или CSV

📚 Режимы практики — Учитесь умнее, а не сложнее

Превращайте сгенерированные вопросы в интерактивные обучающие сессии. Практикуйтесь по порядку, перемешивайте вопросы и варианты ответов случайным образом или проходите пробный экзамен с автогенерацией билетов по времени. Неправильные ответы автоматически фиксируются для повторного изучения — при нескольких правильных ответах подряд вопрос удаляется из списка ошибок. Переключайтесь между режимом тестирования (ответы скрыты) и режимом карточек (ответы видны). Ответы на вопросы с кратким ответом проверяются ИИ относительно эталонных ответов с выводом комментариев; доступна ручная перепроверка. Импорт и экспорт баз вопросов в форматах XLSX/CSV с умной сопоставимостью колонок.

  • Последовательная практика — Прохождение вопросов из базы по порядку
  • Случайная практика — Перемешивание вопросов и вариантов ответов для исключения запоминания позиций
  • Пробный экзамен — Автоматическая генерация случайного билета из любой базы с настройкой количества вопросов каждого типа
  • Работа над ошибками — Отслеживание ошибок, повторение только неверных ответов и их автоматическое исключение при успешном прохождении
  • Режимы Экзамен / Карточки — Ответы вслепую или просмотр вопросов с сразу видимыми ответами
  • ИИ-оценивание — Проверка кратких ответов ИИ по эталонным ответам с текстовой обратной связью и поддержкой ручного изменения оценки
  • Управление базами вопросов — Импорт баз из XLSX/CSV с интеллектуальным сопоставлением колонок; экспорт в любое время

📝 Онлайн-экзамены — Публикация и приглашение студентов

Формируйте экзамены из нескольких локальных баз вопросов с индивидуальной настройкой количества вопросов и баллов для каждого типа. Задавайте название, время начала и длительность экзамена. Поделитесь 6-значным кодом или ссылкой — студенты смогут присоединиться с любого устройства через браузер без установки приложений. Таймер обратного отсчета с автосдачей обеспечивает честные условия, а прогресс сохраняется даже при перезагрузке страницы. Вопросы с объективным выбором оцениваются на стороне сервера сразу при сдаче работы с мгновенным показом ответов и разборов. Панель преподавателя отображает результаты, отсортированные по баллам, с детализацией по каждому вопросу. Данные экзамена автоматически удаляются через 7 дней для обеспечения конфиденциальности. Защита от злоупотреблений: не более 20 публикаций с одного IP в день, а при 3 жалобах с разных IP экзамен автоматически приостанавливается. Docker-образ полностью автономен — онлайн-модуль экзаменов работает на SQLite без зависимости от демо-сайта.

  • Запуск экзаменов из баз — Составление экзамена из нескольких локальных баз с настройкой количества и баллов по типам вопросов; установкой названия, времени начала и длительности
  • 6-значный код и ссылка — Студенты подключаются с любого устройства и браузера, без необходимости установки приложений
  • Ограничение по времени — Локальный обратный отсчет с автоматической отправкой; сохранение прогресса при перезагрузке страницы
  • Мгновенный расчет баллов — Серверная проверка объективных вопросов с показом ответов и пояснений; сохранение результатов локально для последующего просмотра
  • Панель преподавателя — Сортировка результатов по баллам с раскрытием деталей по каждому вопросу; результаты кэшируются локально (запрашиваются с сервера лишь единожды после завершения), преподаватель может в любой момент удалить экзамен (доступ для студентов мгновенно блокируется, результаты удаляются)
  • Конфиденциальный ретранслятор — Данные экзамена хранятся в Cloudflare D1 не более 7 дней и затем удаляются; правильные ответы не передаются студентам до сдачи работы
  • Защита от злоупотреблений — До 20 публикаций с одного IP в день; функция жалобы для студентов в один клик с автоматической блокировкой при 3 жалобах с разных IP; администратор может просматривать, восстанавливать или удалять экзамены на странице #/admin
  • Полная автономность (Self-Hosted) — Docker-образ содержит встроенный модуль экзаменов (SQLite) и работает независимо от демо-сайта; используйте ADMIN_TOKEN для защиты админ-панели (по умолчанию pass, требует обязательной смены при первом входе на #/admin)

🔍 Режимы поиска — Быстрый поиск ответов

Ищите вопросы в локальных базах путем ввода или вставки текста с опциональной генерацией ответа ИИ. Поиск по фото использует встроенную OCR-систему прямо в браузере для распознавания текста вопросов с камеры или загруженных фото (обработка происходит полностью локально, без отправки на сервер). Поиск с камеры в реальном времени наводит камеру на экран или бумагу, а ИИ отслеживает и находит совпадения на лету. Поиск по записи экрана позволяет выделить область на экране любого окна — ИИ отслеживает ее и выводит ответы в плавающем окне (поддерживается на Windows/macOS/Linux/Android; недоступно на iOS из-за системных ограничений).

  • Текстовый поиск — Введите или вставьте вопрос для поиска в локальных базах, с возможностью получить решение от ИИ
  • Поиск по фото — Сделайте снимок или загрузите фото; локальное распознавание OCR прямо в браузере без загрузки на сервер
  • Живой поиск с камеры — Наведите камеру на экран или лист бумаги; ИИ отслеживает и сопоставляет вопросы в реальном времени
  • Поиск с захватом экрана — Выделите область экрана поверх любого окна; ИИ распознает вопросы в реальном времени и отображает ответы в плавающем виджете (Windows / macOS / Linux / Android; недоступно на iOS)

🌐 Кроссплатформенность и конфиденциальность — Ваши данные принадлежат вам

Exameow работает на Windows, macOS, Linux, Android и в Web (для iOS требуется самостоятельная сборка). Веб-версия разворачивается одной Docker-командой. Все базы вопросов, история практики и ошибочные ответы хранятся локально — ничего не передается на серверы без вашего прямого участия (например, при онлайн-экзаменах). API-ключи шифруются по стандарту AES-256-GCM на ПК. Интерфейс автоматически определяет язык системы (китайский/английский) с поддержкой ручного переключения.

  • Десктоп и мобильные устройства — Windows, macOS, Linux, Android (iOS — самостоятельная сборка)
  • Самостоятельный веб-сервер — Развертывание одной командой Docker
  • Локальное хранение — Базы вопросов, записи практики и ошибочные ответы остаются на вашем устройстве; API-ключи зашифрованы алгоритмом AES-256-GCM
  • Двуязычный интерфейс — Автоопределение языка системы (китайский / английский) и переключение в один клик

Установка

Готовые бинарные сборки для всех платформ доступны на странице GitHub Releases.

Поддержка платформ

Платформа Статус Формат скачивания
Windows ✅ Поддерживается Установщик .msi / портативный .zip
macOS (Apple Silicon) ✅ Поддерживается .dmg (см. примечание к релизу для снятия карантина)
Linux (x86_64 / ARM64) ✅ Поддерживается .AppImage / .deb
Android (ARM64) ✅ Поддерживается .apk
iOS ⚠️ Требуется самостоятельная сборка См. примечание ниже
Web / Docker (Self-hosted) ✅ Поддерживается Docker-образ

Относительно iOS: Лицензия разработчика Apple стоит $99/год, поэтому готовые сборки для iOS пока не предоставляются — вам потребуется собрать приложение самостоятельно с помощью Xcode (pnpm tauri ios build). Если будущие пожертвования покроют стоимость лицензии, официально подписанная сборка для iOS будет опубликована в GitHub Releases.

Docker (Самостоятельное развертывание)

git clone https://github.com/heshengtao/exameow.git
cd exameow

# Сборка фронтенда
cd frontend && pnpm install && pnpm build && cd ..

# Настройка ИИ-провайдера
export AI_ENDPOINT=https://api.openai.com/v1
export AI_API_KEY=sk-your-key-here
export AI_MODEL=gpt-4o

# Сборка и запуск
docker compose up -d --build

Откройте http://localhost:3000.

🔐 Токен администратора (требуется для управления онлайн-экзаменами): страница администратора по адресу http://localhost:3000/#/admin защищена ADMIN_TOKEN. Если он не задан, по умолчанию используется pass, и при первом входе вас принудительно попросят сменить его. Чтобы пропустить это, задайте его при запуске:

ADMIN_TOKEN=ваш-надежный-токен docker compose up -d --build

Измененный токен сохраняется в томе exameow-data (/app/data/admin_token.txt) и сохраняется при перезапусках контейнера. Данные экзаменов (SQLite) хранятся в том же томе.

Docker (Готовый образ)

docker pull ailm32442/exameow:latest
docker run -d -p 3000:3000 \
  -e AI_ENDPOINT=https://api.openai.com/v1 \
  -e AI_API_KEY=sk-your-key-here \
  -e AI_MODEL=gpt-4o \
  -e ADMIN_TOKEN=ваш-надежный-токен \
  -v exameow-data:/app/data \
  ailm32442/exameow:latest

Если ADMIN_TOKEN не задан, по умолчанию используется pass и его нужно будет сменить при первом посещении /#/admin.

Переменные окружения

Переменная По умолчанию Описание
AI_ENDPOINT https://api.openai.com/v1 Эндпоинт OpenAI-совместимого API
AI_API_KEY Ваш API-ключ ИИ
AI_MODEL gpt-4o Модель по умолчанию
PORT 3000 Порт сервера
STATIC_DIR /app/static Директория статических файлов
ADMIN_TOKEN pass Токен страницы администратора; pass заставляет сменить его при первом входе на /#/admin
EXAM_DB_PATH /app/data/exameow.db Путь к базе данных SQLite для онлайн-экзаменов
ADMIN_TOKEN_FILE /app/data/admin_token.txt Файл сохранения измененного токена админа
RUST_LOG info Уровень логирования

Эндпоинты API

Метод Путь Описание
GET /api/models Получить список доступных моделей ИИ
POST /api/generate Загрузить файл + сгенерировать экзаменационные вопросы
GET /api/export Экспортировать вопросы в формат CSV
POST /api/export/xlsx Экспортировать вопросы в формат XLSX
POST /api/config/save Сохранить конфигурацию ИИ
GET /api/config/load Загрузить сохраненную конфигурацию ИИ

Пример генерации экзамена

curl -X POST http://localhost:3000/api/generate \
  -F "file=@study-material.pdf" \
  -F 'params={"question_types":["single_choice","multi_choice"],"count":10,"difficulty":"medium","language":"Chinese"}'

Архитектура

Exameow использует архитектуру с тремя бэкендами, работающими с единым Vue 3 фронтендом. Одно SPA в процессе выполнения автоматически определяет платформу и направляет запросы на соответствующий бэкенд:

  • Tauri (десктоп/мобильные): Команды Rust в src-tauri/ вызывают ядро библиотеки Rust напрямую
  • Cloudflare Workers: Код TypeScript в workers/ использует Cloudflare AI + D1 для проведения онлайн-экзаменов
  • Axum (self-hosted/Docker): HTTP-сервер на Rust в packages/server/ с SQLite для проведения экзаменов

Основная логика (парсинг файлов, ИИ-клиент, генерация тестов, экспорт) находится в общей библиотеке Rust packages/core/, продублированной на TypeScript для Cloudflare Workers.

FAQ

Как сгенерировать экзаменационные вопросы из PDF?

Загрузите файл PDF перетаскиванием на демо-сайте или в десктопном приложении. Выберите типы вопросов (одиночный выбор, множественный выбор, верно/неверно, заполнение пропусков, краткий ответ), укажите количество вопросов и сложность, затем нажмите "Сгенерировать". ИИ проанализирует ваш документ и создаст вопросы за несколько секунд. Результаты можно экспортировать в формате XLSX или CSV.

Exameow действительно бесплатен?

Да. Exameow имеет открытый исходный код под лицензией Apache 2.0 и является на 100% бесплатным. Никаких платных тарифов, корпоративных версий или искусственных ограничений. Демо-сайт предоставляет бесплатную генерацию тестов (с ежедневными лимитами бесплатного тарифа Cloudflare). Для десктопных и мобильных приложений требуется ваш собственный API-ключ ИИ, оплата за который идет напрямую вашему провайдеру ИИ — Exameow не взимает с вас денег.

Можно ли использовать Exameow в автономном режиме (оффлайн)?

Да. Десктопное и мобильное приложения полностью функциональны без подключения к интернету. Базы вопросов, история тренировок и записи ошибок хранятся локально. Соединение с сетью требуется только при вызове API ИИ для генерации новых вопросов.

Какие модели ИИ поддерживает Exameow?

Поддерживается любой API, совместимый с OpenAI: OpenAI (GPT-4o, GPT-4, GPT-3.5), DeepSeek, Qwen, GLM, а также локальные модели, запущенные через Ollama или аналогичные инструменты. Вы также можете использовать встроенный бесплатный Cloudflare AI на демо-сайте.

Как работает функция онлайн-экзаменов?

Преподаватель публикует экзамен из локальной базы вопросов и получает 6-значный код. Студенты подключаются с любого браузера, используя этот код или прямую ссылку. На экзамене действует таймер с автоматической отправкой. Вопросы с выбором вариантов оцениваются мгновенно. Данные экзамена автоматически удаляются через 7 дней. В Docker-версии доступен аналогичный функционал.

Безопасны ли мои данные?

Да. По умолчанию все данные (базы вопросов, история занятий, API-ключи) остаются исключительно на вашем устройстве. API-ключи шифруются по стандарту AES-256-GCM. Единственным исключением являются данные онлайн-экзаменов, которые временно сохраняются в Cloudflare D1 (автоудаление через 7 дней) или в вашей локальной базе SQLite.

Разработка

# Сервер на Rust
cargo run -p exameow-server

# Сервер разработки фронтенда
cd frontend && pnpm dev

# Десктопное приложение Tauri
pnpm tauri dev

Структура проекта

exameow/
├── frontend/          # SPA на Vue 3
├── packages/
│   ├── core/          # Общая библиотека Rust (ИИ, парсер, экспорт, конфиг)
│   ├── server/        # HTTP-сервер Axum
│   └── shared/        # Общие типы TypeScript
├── src-tauri/         # Приложение Tauri для десктопа и мобильных
├── workers/           # Cloudflare Workers (Hono)
├── scripts/           # Скрипты сборки и деплоя
├── Dockerfile
└── docker-compose.yml

Отказ от ответственности

  • Данный проект является образовательным инструментом с открытым исходным кодом и предназначен исключительно для личного обучения, преподавания и внутреннего повышения квалификации.
  • Точность контента, сгенерированного ИИ, не гарантируется. Вопросы и пояснения могут содержать ошибки — проверяйте их перед использованием. Авторы не несут ответственности за любые последствия, возникшие в результате использования сгенерированных материалов.
  • Пользовательский контент (UGC) находится в зоне ответственности создателя. Запрещено использовать онлайн-экзамены для хранения или распространения незаконных, нарушающих авторские права или конфиденциальных материалов. Администрация оставляет за собой право удалять нарушающие правила материалы без предварительного уведомления. Каналы для жалоб: ① Встроенная кнопка "Пожаловаться" на странице экзамена — если 3 или более пользователей с разных IP отправят жалобу на один и тот же экзамен, ссылка на него автоматически блокируется до рассмотрения администратором; ② GitHub Issues. Подтвержденные нарушения удаляются, а ошибочно заблокированные экзамены могут быть восстановлены администратором.
  • Демо-сайт (exam.superagentparty.com) является бесплатным публичным сервисом без гарантий доступности или сохранности данных (данные экзаменов хранятся не более 7 дней). Регулярно создавайте резервные копии важных данных.
  • Используя этот проект, вы принимаете все сопутствующие риски и соглашаетесь соблюдать законодательство вашей страны/региона.

Поддержка

Поставьте нам Star!

⭐ Ваша поддержка — главный стимул для нашего развития!

Поддержать проект

ko-fi 爱发电

Подписывайтесь на нас

Присоединяйтесь к сообществу

Если у вас возникли вопросы или трудности с проектом, вы можете вступить в наше сообщество:

  1. Группа QQ: 931057213 (Заполнена) / 902882342 (Группа 2)

  2. Discord: Ссылка на Discord

Участники проекта

Участники heshengtao/exameow

Лицензия

Apache-2.0

Лицензии сторонних библиотек

Этот проект использует стороннее программное обеспечение с открытым исходным кодом. Полный список зависимостей, их лицензий и URL-адресов лицензий можно найти в файле THIRD_PARTY_LICENSES.csv.