Веб-приложение с интерфейсом в стиле OpenAI для работы с OpenRouter API. Flask бэкенд + React фронтенд с темным дизайном.
- 🎨 Современный темный дизайн в стиле ChatGPT
- 🤖 Поддержка множества моделей через OpenRouter
- 💬 Чат без сохранения истории (каждое сообщение независимо)
- 🚀 Готово к деплою на Amvera
- Backend: Flask (Python)
- Frontend: React + Vite
- API: OpenRouter
- Python 3.11+
- Node.js 18+
- npm или yarn
pip install -r requirements.txtcd frontend
npm installВАЖНО: Для локальной разработки необходимо настроить API ключ.
- Создайте файл
.envв корне проекта (скопируйте из.env.example):
# Windows PowerShell
Copy-Item .env.example .env
# Linux/Mac
cp .env.example .env- Откройте файл
.envи укажите ваш API ключ:
OPENROUTER_API_KEY=your_api_key_here
HTTP_REFERER=http://localhost:5000Где взять API ключ: https://openrouter.ai/keys
# Windows PowerShell
$env:OPENROUTER_API_KEY="your_api_key_here"
$env:HTTP_REFERER="http://localhost:5000"
# Linux/Mac
export OPENROUTER_API_KEY="your_api_key_here"
export HTTP_REFERER="http://localhost:5000"Примечание: Приложение автоматически загружает переменные из .env файла благодаря python-dotenv.
cd frontend
npm run buildЭто создаст собранные файлы в app/static/
# Из корня проекта
python -m app.main
# Или с Flask CLI
export FLASK_APP=app.main
flask runПриложение будет доступно по адресу: http://localhost:5000
Для разработки с hot-reload:
cd frontend
npm run devFrontend будет доступен на http://localhost:5173 и автоматически проксирует запросы /api/* на backend (порт 5000).
export FLASK_APP=app.main
export FLASK_ENV=development
flask runДля ускорения разработки доступны скрипты в scripts/:
.\scripts\dev-start.ps1— запуск backend и frontend одной командой.\scripts\dev-check.ps1— анализ: что требует пересборки/перезапуска.\scripts\dev-deploy.ps1— интерактивный пайплайн деплоя.\scripts\quick-push.ps1 -m "сообщение"— быстрый коммит и push
Подробнее: docs/DEV_AUTOMATION.md
- Аккаунт на Amvera.ru
- Репозиторий на GitHub (или другом Git-сервисе)
- API ключ OpenRouter
- Убедитесь, что
amvera.yamlсоздан в корне проекта - Соберите frontend:
cd frontend && npm run build - Проверьте, что файлы появились в
app/static/
- Войдите в панель управления Amvera
- Нажмите "Создать проект"
- Выберите тип проекта: "Из Git-репозитория"
- Подключите ваш репозиторий
В разделе "Настройки" → "Переменные окружения" добавьте:
OPENROUTER_API_KEY- ваш API ключ OpenRouterHTTP_REFERER- URL вашего сайта (опционально)
Для автоматического деплоя при каждом push:
- В панели Amvera перейдите на вкладку "Репозиторий"
- Скопируйте URL вебхука
- В GitHub: Settings → Webhooks → Add webhook
- Вставьте URL вебхука, выберите
Just the push event
git add .
git commit -m "Initial deploy"
git push origin mainAmvera автоматически установит зависимости и запустит приложение.
AISigma/
├── app/
│ ├── api/
│ │ └── routes.py # API endpoints
│ ├── static/ # Собранные файлы React
│ ├── templates/
│ │ └── index.html # HTML шаблон
│ └── main.py # Flask приложение
├── frontend/
│ ├── src/
│ │ ├── App.jsx # Главный компонент
│ │ ├── Chat.jsx # Компонент чата
│ │ ├── Message.jsx # Компонент сообщения
│ │ ├── ModelSelector.jsx # Выбор модели
│ │ └── styles/
│ │ └── App.css # Стили
│ ├── package.json
│ └── vite.config.js
├── amvera.yaml # Конфигурация Amvera
├── requirements.txt # Python зависимости
└── README.md
Отправляет запрос к OpenRouter API.
Request:
{
"message": "Привет!",
"model": "openai/gpt-3.5-turbo"
}Response:
{
"content": "Привет! Как дела?",
"model": "openai/gpt-3.5-turbo"
}openai/gpt-4- GPT-4openai/gpt-3.5-turbo- GPT-3.5 Turboanthropic/claude-3-opus- Claude 3 Opusanthropic/claude-3-sonnet- Claude 3 Sonnetanthropic/claude-3-haiku- Claude 3 Haikugoogle/gemini-pro- Gemini Prometa-llama/llama-3-70b-instruct- Llama 3 70Bmistralai/mistral-large- Mistral Large
Полный список моделей доступен на OpenRouter Models
Убедитесь, что переменная окружения OPENROUTER_API_KEY установлена:
- Локально: проверьте
.envили экспортированные переменные - На Amvera: проверьте настройки в панели управления
cd frontend
rm -rf node_modules
npm install
npm run buildПроверьте, что все зависимости установлены:
pip install -r requirements.txtПроверьте, что порт 5000 свободен или измените порт в app/main.py
MIT