YAML Metadata Warning:empty or missing yaml metadata in repo card
Check out the documentation for more information.
Faiq AI MVP
Локальный MVP с двумя независимыми компонентами: Faiq для текста и Danish для речи. Компоненты не объединяются и не скачиваются приложением: они должны уже находиться в ./core и ./danish.
Запуск
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
python run.py
API:
uvicorn app.main:app --host 0.0.0.0 --port 8000
Компоненты загружаются лениво при первом запросе. На Apple Silicon Faiq автоматически использует локальный 4-битный runtime из runtime_models/faiq-4bit; он производно создан из ./core, не скачивает и не изменяет исходные файлы. На CUDA/CPU используется Transformers. Danish использует PyTorch с автоматическим MPS/CUDA/CPU.
Если Faiq runtime отсутствует, создать его из локальных файлов можно так:
python -m mlx_lm convert --hf-path ./core --mlx-path ./runtime_models/faiq-4bit --quantize --q-bits 4
API
GET /health— состояние приложения и флаги загрузки.GET /v1/models— публичные runtime-имена и происхождение моделей.POST /v1/audio/transcriptions— multipartfileи необязательныйlanguage; только расшифровка.POST /v1/chat/completions— chat-compatible API, толькоstream=false.POST /v1/chat— простой внутренний chat endpoint.
Голосовой сценарий всегда показывает расшифровку и ждёт подтверждения или полного редактирования перед отправкой в Faiq.
Проверки
pytest -q
Тесты API не загружают веса. Реальное распознавание и генерация требуют установленного ML-стека и значительного объёма памяти.
Telegram
Создайте бота через
@BotFatherи скопируйте токен в локальный.env:TELEGRAM_BOT_TOKEN=123456:replace-with-your-token TELEGRAM_ALLOWED_USER_IDS=123456789TELEGRAM_ALLOWED_USER_IDSнеобязателен, но рекомендован для личного MVP. Узнать свой числовой ID можно у@userinfobot.Запустите long polling:
python run.py --telegram
Бот принимает текст, голосовые и аудиофайлы. Голос никогда автоматически не отправляется в Faiq: Telegram показывает расшифровку и предлагает «Отправить», «Редактировать», «Распознать снова» или «Отменить».