Flux-API-Worker - README 📘🎨🤖
October 7, 2024 · View on GitHub
English | 简体中文 | 繁體中文 | 日本語 | Español | Français | Русский | Deutsch
Введение 🌟💡
Flux-API-Worker - это сервис генерации изображений с помощью ИИ, развернутый на Cloudflare Worker. Он использует модель Flux, предоставляемую Cloudflare, для создания изображений и предлагает эффективный API-интерфейс для обработки запросов. Этот сервис можно легко интегрировать в различные приложения, предоставляя пользователям мощные возможности генерации изображений с помощью ИИ. ✨🖼️🚀
Особенности 🚀🌈
- 🎨 Поддержка пользовательских подсказок для генерации изображений
- 🌐 Опциональная функция оптимизации запросов
- 📐 Поддержка различных предустановленных размеров и соотношений сторон изображений
- 💾 Хранение сгенерированных изображений с использованием Cloudflare KV
- 🔄 Поддержка потоковых и непотоковых ответов
- 🔒 Встроенные системные сообщения для обеспечения стабильного качества вывода
- 🌍 Поддержка Cross-Origin Resource Sharing (CORS)
Быстрый старт 🏃♂️💨
Развертывание в Cloudflare Dashboard 🖥️🛠️
- Войдите в свою учетную запись Cloudflare и перейдите на страницу Workers. 👨💻👩💻
- Нажмите кнопку "Создать сервис". 🆕
- Назовите ваш Worker, например, "flux-api". ✏️
- Вставьте предоставленный код Worker в редактор. 📋
- Нажмите кнопку "Сохранить и развернуть". 🚀
Настройка переменных окружения ⚙️🔧
На странице настроек Worker найдите раздел "Переменные окружения" и добавьте следующие переменные:
Список переменных окружения 📋🔑
| Имя переменной | Описание | Тип | Пример | По умолчанию |
|---|---|---|---|---|
API_KEY | Ключ аутентификации API 🔐 | Строка | "ваш-сложный-ключ-api" | - |
CF_ACCOUNT_ID | ID аккаунта Cloudflare 🆔 | Строка | "1a2b3c4d5e6f7g8h9i0j" | - |
CF_API_TOKEN | Токен API Cloudflare 🎟️ | Строка | "ваш-токен-api-cloudflare" | - |
PROMPT_OPTIMIZATION | Включить оптимизацию запроса 🌐 | Строка | "true" или "false" | - |
EXTERNAL_API_BASE | Базовый URL внешнего API 🔗 | Строка | "https://api.external-service.com" | - |
EXTERNAL_MODEL | Название внешней модели оптимизации 🤖 | Строка | "gpt-3.5-turbo" | - |
EXTERNAL_API_KEY | Ключ доступа к внешнему API 🗝️ | Строка | "ваш-внешний-ключ-api" | - |
FLUX_NUM_STEPS | Количество шагов модели Flux 🚶 | Целое число | "4" | 4 |
IMAGE_EXPIRATION | Время хранения изображений в KV (в секундах) ⏳ | Целое число | "1800" | 1800 |
Убедитесь, что правильно настроили эти переменные в настройках переменных окружения Cloudflare Worker. Для переменных с значениями по умолчанию, если изменения не требуются, можно оставить настройки по умолчанию. 🔧✅
Примечание: Для обеспечения безопасности установите сложную строку для
API_KEY. Она будет использоваться для проверки подлинности вызовов API. 🔒🛡️
Создание пространства имен KV 🗄️📦
- В панели управления Cloudflare перейдите на страницу "Workers". 🖥️
- Нажмите на вкладку "KV". 📑
- Создайте новое пространство имен и назовите его "FLUX_CF_KV". 🆕
- В настройках Worker привяжите это пространство имен KV к переменной
FLUX_CF_KV. 🔗
Конечные точки API и функциональность 🌐🛠️
1. Страница приветствия 👋
При доступе к корневому пути Worker (https://<имя_вашего_worker>.<ваш_поддомен>.workers.dev/) будет отображаться страница приветствия, подтверждающая работу API-сервиса. ✅🏠
2. Конечная точка завершения чата 💬
Основная конечная точка для генерации изображений:
https://<имя_вашего_worker>.<ваш_поддомен>.workers.dev/v1/chat/completions
🎨✨
3. Конечная точка информации о модели ℹ️
Получение информации о доступных моделях:
https://<имя_вашего_worker>.<ваш_поддомен>.workers.dev/v1/models
Эта конечная точка возвращает информацию о текущей используемой модели Flux. 🤖📊
4. Конечная точка получения изображения 🖼️
Получение сгенерированного изображения:
https://<имя_вашего_worker>.<ваш_поддомен>.workers.dev/image/{ключ_изображения}
📥🎭
Руководство по использованию 📖🧭
Генерация изображения 🖼️🎨
Отправьте POST-запрос на конечную точку завершения чата в следующем формате:
{
"messages": [
{
"role": "user",
"content": "Милый котенок 3:2"
}
],
"stream": false
}
Заголовки запроса должны включать:
Authorization: Bearer ВАШ_КЛЮЧ_API
Content-Type: application/json
Важно: Замените
ВАШ_КЛЮЧ_APIна значениеAPI_KEY, которое вы установили в переменных окружения. 🔑🔄
Потоковый ответ 🌊📡
Если вы хотите получить потоковый ответ, установите параметр stream в значение true:
{
"messages": [
{
"role": "user",
"content": "Милый котенок 3:2"
}
],
"stream": true
}
Потоковый ответ будет возвращен в формате Server-Sent Events (SSE), что позволяет получать прогресс генерации в реальном времени. ⚡🔄
Поддерживаемые размеры изображений 📏🖼️
Flux-API-Worker поддерживает следующие предустановленные размеры и соотношения сторон изображений:
- 1:1 (1024x1024) - размер по умолчанию 🟦
- 1:2 (512x1024) 📱
- 3:2 (768x512) 🖼️
- 3:4 (768x1024) 📱
- 16:9 (1024x576) 🖥️
- 9:16 (576x1024) 📱
Чтобы указать конкретный размер, просто добавьте соответствующее соотношение сторон после подсказки, например:
"Милый котенок 16:9"
Если размер не указан, система по умолчанию сгенерирует изображение 1:1 (1024x1024). 🎛️🔧
Поддержка Cross-Origin Resource Sharing (CORS) 🌍🔓
Flux-API-Worker поддерживает CORS, что позволяет обращаться к API из веб-приложений на разных доменах. Это означает, что вы можете напрямую вызывать API из фронтенд-приложений на JavaScript без проблем с кросс-доменными запросами. 🔗🚫🚧
Использование в сторонних приложениях 🔗🔌
Flux-API-Worker можно легко интегрировать в различные приложения, такие как NextWeb, ChatBox и другие. При настройке в этих приложениях:
- Установите адрес API на URL вашего Worker (конечная точка завершения чата). 🔗
- Введите установленный вами API KEY. 🔑
- Нет необходимости учитывать настройки System Message, предоставляемые приложением, так как Flux-API-Worker использует встроенное System Message. 💬🚫
Примечание: Flux-API-Worker удалил функциональность контекста, каждый вызов будет генерировать новое уникальное изображение. 🆕🖼️
Формат ответа 📤📊
Пример непотокового ответа:
{
"id": "chatcmpl-1234567890",
"created": 1677649420,
"model": "@cf/black-forest-labs/flux-1-schnell",
"object": "chat.completion",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "🎨 Оригинальная подсказка: Милый котенок 3:2\n💬 Модель генерации подсказки: Original Prompt\n🌐 Оптимизированный запрос: Милый котенок\n📐 Спецификация изображения: 768x512\n🌟 Изображение успешно сгенерировано!\nВот результат:\n\n"
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 20,
"completion_tokens": 100,
"total_tokens": 120
}
}
Важные замечания ⚠️🚨
- Убедитесь, что все необходимые переменные окружения правильно настроены. ✅🔧
- API-ключ должен храниться в безопасности и не раскрываться в клиентском коде. 🔒🙈
- Изображения в хранилище KV имеют срок хранения (по умолчанию 30 минут), своевременно сохраняйте важные изображения. ⏳💾
- Если функция оптимизации запросов включена, убедитесь, что внешнее API настроено правильно. 🌐🔧
- При использовании потокового ответа убедитесь, что ваш клиент может правильно обрабатывать Server-Sent Events. 🌊📡
Устранение неполадок 🔧🚑
- При появлении ошибки неавторизованного доступа проверьте правильность установки и использования API-ключа. 🔑❓
- Если генерация изображения не удается, убедитесь, что токен API Cloudflare имеет правильные разрешения. 🎟️🔍
- Если оптимизация запросов не работает, убедитесь, что
PROMPT_OPTIMIZATIONустановлено на 'true' и внешнее API настроено правильно. 🌐🔧 - Если вы получаете ошибку 404, убедитесь, что обращаетесь к правильному пути конечной точки. 🔍🚷
- Для других ошибок проверьте логи Worker для получения более подробной информации об ошибке. 📋🔬
Дальнейшая настройка 🛠️🎨
Вы можете дополнительно оптимизировать функциональность API, изменив код Worker, например:
- Настроить поддерживаемые размеры и соотношения сторон изображений 📏✂️
- Изменить встроенное системное сообщение для изменения поведения генерации подсказок 💬🔄
- Добавить дополнительные механизмы обработки ошибок и ведения журнала 🚨📊
- Реализовать пользовательские ограничения скорости или другие меры безопасности 🛡️⏱️
Я надеюсь, что этот README поможет вам быстро развернуть и использовать Flux-API-Worker. Если у вас есть вопросы или нужна дополнительная помощь, не стесняйтесь обращаться ко мне. 💌👨💻👩💻
Если вы считаете, что этот репозиторий был вам полезен, пожалуйста, поставьте ему звезду. ⭐⭐⭐ Спасибо!