1min-relay - это сервер-посредник (прокси), реализующий API, совместимый с OpenAI API, для работы с различными AI-моделями через сервис 1min.ai. Он позволяет использовать клиентские приложения, поддерживающие OpenAI API, с моделями различных провайдеров через единый интерфейс.
- Полностью совместим с OpenAI API, включая chat/completions, images, audio и files
- Поддерживает большое количество моделей от различных провайдеров: OpenAI, Claude, Mistral, Google и других
- Работает с различными типами запросов: текстовыми, изображениями, аудио и файлами
- Реализует потоковую передачу данных (streaming)
- Имеет функцию ограничения запросов (rate limiting) с использованием Memcached
- Позволяет задать подмножество разрешенных моделей через переменные окружения
- Оптимизированная модульная структура с минимальным дублированием кода
Проект имеет модульную структуру для облегчения разработки и поддержки:
1min-relay/
├── app.py # Основной файл приложения - инициализация сервера и настройки
├── utils/ # Общие утилиты и модули
│ ├── __init__.py # Инициализация пакета
│ ├── common.py # Общие вспомогательные функции
│ ├── constants.py # Константы и конфигурационные переменные
│ ├── imports.py # Централизованные импорты
│ ├── logger.py # Настройка логирования
│ └── memcached.py # Функции для работы с Memcached
├── routes/ # Маршруты API
│ ├── __init__.py # Инициализация модуля маршрутов
│ ├── text.py # Маршруты для текстовых запросов
│ ├── images.py # Маршруты для работы с изображениями
│ ├── audio.py # Маршруты для аудио запросов
│ ├── files.py # Маршруты для работы с файлами
│ └── functions/ # Вспомогательные функции для различных типов запросов
│ ├── __init__.py # Инициализация пакета функций
│ ├── shared_func.py# Общие вспомогательные функции для всех типов запросов
│ ├── txt_func.py # Вспомогательные функции для текстовых моделей
│ ├── img_func.py # Вспомогательные функции для работы с изображениями
│ ├── audio_func.py # Вспомогательные функции для работы с аудио
│ └── file_func.py # Вспомогательные функции для работы с файлами
├── requirements.txt # Зависимости проекта
├── INSTALL.sh # Скрипт локальной установки (venv)
├── RUN.sh # Скрипт локального запуска (venv)
├── UPDATE.sh # Скрипт обновления Docker-контейнера
├── Dockerfile # Инструкции для сборки Docker-образа
├── CODE_STRUCTURE.md # Подробная информация о структуре кода
└── README.md # Документация проекта
-
app.py: Основной файл приложения, который инициализирует сервер, настраивает параметры и создает Flask-приложение.
-
utils/: Содержит основные утилитные модули, обеспечивающие базовую функциональность:
- common.py: Общие вспомогательные функции, используемые во всем приложении
- constants.py: Определяет все константы, конфигурационные переменные и списки моделей
- imports.py: Централизует импорты для избежания циклических зависимостей
- logger.py: Настраивает логирование для приложения
- memcached.py: Обеспечивает функциональность ограничения запросов
-
routes/: Содержит основные API-эндпоинты, реализующие совместимость с OpenAI API:
- text.py: Реализует эндпоинты chat/completions
- images.py: Реализует эндпоинты для генерации и обработки изображений
- audio.py: Реализует эндпоинты для преобразования речи в текст и текста в речь
- files.py: Реализует эндпоинты для управления файлами
-
routes/functions/: Содержит вспомогательные функции, поддерживающие основные обработчики маршрутов:
- shared_func.py: Общие вспомогательные функции для всех типов запросов
- txt_func.py: Вспомогательные функции для текстовых моделей
- img_func.py: Вспомогательные функции для работы с изображениями
- audio_func.py: Вспомогательные функции для работы с аудио
- file_func.py: Вспомогательные функции для работы с файлами
- Python 3.7+
- Flask и связанные библиотеки
- Memcached (опционально для rate limiting)
- API ключ сервиса 1min.ai
sudo apt update
sudo apt install python3 python3-venv python3-pip -ypython3 -m venv venv
source venv/bin/activate
pip install --upgrade pip
pip install -r requirements.txtСоздайте файл .env в корневой директории проекта:
PORT=5001
SUBSET_OF_ONE_MIN_PERMITTED_MODELS=gpt-4o-mini,mistral-nemo,claude-3-haiku-20240307,gemini-1.5-flash
PERMIT_MODELS_FROM_SUBSET_ONLY=false
sudo apt install memcached libmemcached-tools -y
sudo systemctl enable memcached
sudo systemctl start memcachedsource venv/bin/activate
python app.pyПосле запуска сервер будет доступен по адресу http://localhost:5001/.
Скрипты для автоматизации локальной установки (venv), локального запуска (venv), обновления (Docker-контейнер)
chmod +x *.sh
# python-venv
sudo ./INSTALL.sh
./RUN.sh
# docker (reinstall)
mv UPDATE.sh ../
cd ../
./UPDATE.shБольшинство клиентов OpenAI API могут быть настроены для использования этого сервера путем указания базового URL:
http://localhost:5001/v1
При отправке запросов к API используйте свой API ключ 1min.ai в заголовке Authorization:
Authorization: Bearer your-1min-api-key
Вы также можете запустить сервер в Docker-контейнере:
docker run -d --name 1min-relay-container --restart always --network 1min-relay-network -p 5001:5001 \
-e SUBSET_OF_ONE_MIN_PERMITTED_MODELS="mistral-nemo,gpt-4o-mini,deepseek-chat" \
-e PERMIT_MODELS_FROM_SUBSET_ONLY=False \
-e MEMCACHED_HOST=memcached \
-e MEMCACHED_PORT=11211 \
1min-relay-container:latest