mirror of
https://github.com/ijaric/voice_assistant.git
synced 2025-12-18 13:26:18 +00:00
feat: [#45] llm_agent
This commit is contained in:
114
README.md
114
README.md
@@ -1,40 +1,92 @@
|
||||
# Python Contrib
|
||||
# Голосовой Ассистент на Langchain (OpenAI)
|
||||
|
||||
Python packages mono-repository
|
||||
## Описание проекта
|
||||
|
||||
## Development
|
||||
Этот проект представляет собой голосового ассистента, разработанного в рамках дипломного проекта для Яндекс.Практикума.
|
||||
Ассистент основан на технологиях OpenAI и предназначен для поиска информации о фильмах в нашем сервисе кинотеатра.
|
||||
|
||||
### Global dependencies
|
||||
## Что удалось реализовать?
|
||||
|
||||
- node
|
||||
- poetry
|
||||
###
|
||||
- Организация кодовой базы по [шаблону DDD](https://github.com/yp-middle-python-24/python-service-example/)
|
||||
- Speech To Text на базе [Whisper](https://openai.com/research/whisper) от OpenAI
|
||||
- LLM:
|
||||
- Получение embeddings для фильмов в векторную базу данных pgvector
|
||||
- Поиск фильмов по embeddings
|
||||
- Получение информации о конкретном фильме по embeddings
|
||||
- Сохранение истории диалогов с ассистентом
|
||||
- Text to speech на базе [Yanex SpeechKit](https://cloud.yandex.ru/services/speechkit) и [ElevenLabs](https://elevenlabs.io/)
|
||||
- Клиент для работы с сервисом на базе Telegram-бота
|
||||
|
||||
### Makefile commands
|
||||
## Команда:
|
||||
|
||||
#### Root commands
|
||||
- [Артем](https://github.com/ijaric/python-monorepo/commits?author=ijaric)
|
||||
- [Александр](https://github.com/ksieuk)
|
||||
- [Алексей](https://github.com/grucshetskyaleksei)
|
||||
|
||||
- `make init` - Initialize repository
|
||||
- `make lint` - Lint repository
|
||||
- `make lint-fix` - Auto-fix repository
|
||||
- `make test` - Test repository
|
||||
- `make clean` - Clean up repository
|
||||
- `make all-init` - Init all packages
|
||||
- `make all-lint` - Lint all packages
|
||||
- `make all-lint-fix` - Auto-fix all packages
|
||||
- `make all-test` - Test all packages
|
||||
- `make all-clean` - Clean all packages
|
||||
- `make all-dependencies-update` - Update dependencies in all packages
|
||||
- `make ci-init` - CI-specific version of init command
|
||||
## Как запустить проект?
|
||||
1. Скачать [файл базы данных](https://disk.yandex.ru/d/ZAKDDg8lP9DHBQ) с `embeddings` и поместить её по пути `src/assistant/data/dump.sql`.
|
||||
|
||||
#### Common package commands
|
||||
2. В директории `src/assistant` файл `.env.example` переименовать в `.env` и заполнить переменные окружения.
|
||||
Пример заполнения переменных окружения:
|
||||
```
|
||||
POSTGRES_DRIVER=postgresql+asyncpg # Драйвер для работы с базой данных
|
||||
POSTGRES_HOST=db # Хост базы данных
|
||||
POSTGRES_PORT=5432 # Порт базы данных
|
||||
POSTGRES_USER=app # Пользователь базы данных
|
||||
POSTGRES_PASSWORD=123qwe # Пароль пользователя базы данных
|
||||
POSTGRES_DB_NAME=movies_database # Название базы данных
|
||||
|
||||
- `make init` - Initialize package
|
||||
- `make lint` - Lint package
|
||||
- `make lint-fix` - Auto-fix package
|
||||
- `make test` - Test package
|
||||
- `make clean` - Clean up package folder
|
||||
- `make dependencies-update` - Update not restricted dependencies
|
||||
- `PYPI_WRITER_PASSWORD=... make ci-login-pypi-publish` - Login to personal pypi with publish rights
|
||||
- `make ci-test` - Test package in CI
|
||||
- `make ci-package-build` - Builds package in CI
|
||||
- `make ci-package-publish` - Publishes package in CI
|
||||
NGINX_PORT=80 # Порт nginx
|
||||
API_HOST=0.0.0.0 # Хост API
|
||||
API_PORT=8000 # Порт API
|
||||
|
||||
JWT_SECRET_KEY=secret # Секретный ключ для JWT
|
||||
JWT_ALGORITHM=HS256 # Алгоритм шифрования JWT
|
||||
|
||||
APP_RELOAD=True # Автоматическая перезагрузка приложения
|
||||
|
||||
VOICE_AVAILABLE_FORMATS=mp3,ogg,wav,oga # Доступные форматы аудиофайлов
|
||||
VOICE_MAX_INPUT_SIZE=5120 # Максимальный размер входного аудиофайла в килобайтах
|
||||
VOICE_MAX_INPUT_SECONDS=30 # Максимальная длительность входного аудиофайла в секундах
|
||||
|
||||
OPENAI_API_KEY=sk-1234567890 # API-ключ OpenAI
|
||||
OPENAI_STT_MODEL=whisper-1 # Модель для распознавания речи
|
||||
|
||||
PROXY_HOST=123.123.123.123 # Хост прокси
|
||||
PROXY_PORT=1234 # Порт прокси
|
||||
PROXY_USER=proxy_user # Пользователь прокси
|
||||
PROXY_PASSWORD=proxy_password # Пароль прокси
|
||||
PROXY_ENABLE=True # Включить прокси
|
||||
|
||||
TTS_YANDEX_API_KEY=1234567890 # API-ключ Yandex SpeechKit
|
||||
TTS_YANDEX_AUDIO_FORMAT=oggopus # Формат аудиофайла
|
||||
TTS_YANDEX_SAMPLE_RATE_HERTZ=48000 # Частота дискретизации аудиофайла
|
||||
|
||||
TTS_ELEVEN_LABS_API_KEY=1234567890 # API-ключ ElevenLabs
|
||||
TTS_ELEVEN_LABS_DEFAULT_VOICE_ID=EXAVITQu4vr4xnSDxMaL # ID голоса по умолчанию
|
||||
```
|
||||
|
||||
3. В директории `src/bot_aiogram` файл `.env.example` переименовать в `.env` и заполнить переменные окружения.
|
||||
Пример заполнения переменных окружения:
|
||||
|
||||
```
|
||||
BOT_CONTAINER_NAME=bot_container_name # Название контейнера
|
||||
BOT_IMAGE_NAME=botimage_name # Название образа
|
||||
BOT_NAME=mybotname # Название бота
|
||||
BOT_TOKEN=1234567890:ABCdefghIJKlmnopQRStuVWXYz # Токен бота
|
||||
BOT_ADMINS=1234567890,9876543210 # ID администраторов бота через запятую
|
||||
|
||||
API_PROTOCOL=http # Протокол API
|
||||
API_URL=api# URL API
|
||||
API_PORT=8000 # Порт API
|
||||
|
||||
REDIS_HOST=redis # Хост Redis
|
||||
REDIS_PORT=6379 # Порт Redis
|
||||
```
|
||||
|
||||
3. Запустить проект командой `docker-compose up -d`
|
||||
|
||||
### Важно!
|
||||
Для работы с Telegram-ботом необходимо предварительно начать с ним диалог и отключить в параметрах конфиденциальности
|
||||
вашего аккаунта запрет на голосовые сообщения.
|
||||
|
||||
Reference in New Issue
Block a user