Перейти к основному содержимому

Генерация изображений

Создавайте один или несколько результатов UIImage по текстовому запросу. Лимиты поставщика и выбор стиля — необязательные возможности, которые не должны блокировать запуск генерации.

Интерактивная схема

Жизненный цикл генерации изображения

Подготовьте запрос, используйте лимиты и стили поставщика при наличии, а иначе примените стандартную конфигурацию задачи.

Приложение

Подготовить запрос

Убедиться, что описание создаваемых изображений не пусто.

AI-сервис

Получить необязательный лимит

Использовать положительный максимум поставщика, иначе запросить одно изображение.

AI-сервис → приложение

Загрузить необязательные стили

Использовать возвращённый styleCode при наличии стилей, иначе оставить стиль пустым.

Приложение

Настроить задачу

Задать выбранное количество и стиль, а при необходимости размер и язык.

AI-сервис

Создать задачу

Запустить генерацию и сохранить ID задачи из onTaskCreated.

задача создана
Итоговый результат

Получить изображения

Обработать success, изображения, ID задачи и ошибку из completion callback.

Отсутствие необязательных метаданных не должно блокировать генерацию: запросите одно изображение без явно заданного стиля.

Предварительные условия

  • Инициализируйте AIBudsAISDK, выберите поставщика и при необходимости завершите его авторизацию.
  • Убедитесь, что выбранный поставщик реализует AIGCServiceAPI.
  • Определите политику приложения для отображения, хранения и передачи созданных изображений.

Реализация с помощью AI

Разработка с AI

Реализуйте этот сценарий с AI

Используйте официальный навык «Генерация изображений с AIBuds AI» и адаптируйте сценарий к приложению.

Прочитайте и выполните инструкции https://docs-aibuds.github.io/ru/skills/generate-aibuds-ai-images. Используйте этот навык, чтобы реализовать «Генерация изображений с AIBuds AI» в данном iOS-проекте и проверить результат.
Открыть официальный навык

API Reference

Framework

AIBudsAI.xcframework

Declaration

Swift
/// The available styles cached by the selected image-generation provider.
static var aigcStyles: [AIGCStyleModel]? { get }

/// The maximum number of images accepted in one task. A positive value can be
/// used to constrain the requested image count.
static var aigcMaxGenerateCount: Int { get }

/// Fetches styles supported by the selected provider.
public static func fetchAigcStyles(completion: ((_ styles: [AIGCStyleModel]?, _ error: NSError?) -> Void)? = nil)

/// Generates images from a text prompt and configuration.
/// - Parameters:
///   - prompt: The text prompt for image generation.
///   - config: Task configuration. Defaults to `.default`.
///   - onTaskCreated: Called with the provider task identifier.
///   - completion: Returns the task identifier, success flag, generated images,
///     and failure information.
public static func generateAIPhoto(prompt: String,
                                   config: AIGCTaskConfig = .default,
                            onTaskCreated: ((_ taskId: String) -> Void)? = nil,
                               completion: ((
                                   _ taskId: String?,
                                   _ success: Bool,
                                   _ images: [UIImage]?,
                                   _ error: NSError?
                               ) -> Void)? = nil)

См. generateAIPhoto, fetchAigcStyles и AIGCTaskConfig.

Конфигурация задачи

СвойствоНазначение
styleКод стиля поставщика из AIGCStyleModel.styleCode. Оставьте nil, если стили недоступны или приложение не предлагает их выбор.
imageCountЗапрашиваемое количество. Используйте стандартное значение 1, если положительный aigcMaxGenerateCount недоступен; иначе не превышайте полученный лимит.
imageSizeНеобязательные положительные ширина и высота; nil использует значение поставщика по умолчанию.
languageЯзык запроса, например en-US; nil использует локализацию приложения, а пустая строка включает автоопределение, если оно поддерживается.

Примеры использования

Генерация с необязательными возможностями поставщика

Если приложение не предлагает выбор стиля, пропустите fetchAigcStyles и вызовите вспомогательный метод генерации с nil. В примере ниже стили загружаются по возможности, но запрос всё равно отправляется при пустом списке или ошибке загрузки.

Swift
let prompt = "A lightweight wearable assistant on a clean studio background"

func generate(styleCode: String?) {
    let maximum = AIBudsAISDK.aigcMaxGenerateCount
    let config = AIGCTaskConfig()
    config.style = styleCode
    config.imageCount = maximum > 0 ? min(2, maximum) : 1
    config.language = "en-US"

    AIBudsAISDK.generateAIPhoto(
        prompt: prompt,
        config: config,
        onTaskCreated: { taskID in
            DispatchQueue.main.async { showTask(id: taskID) }
        },
        completion: { taskID, success, images, error in
            DispatchQueue.main.async {
                guard success, let images, !images.isEmpty else {
                    if let error {
                        show(error)
                    } else {
                        print("The provider returned no images")
                    }
                    return
                }
                show(images: images, taskID: taskID)
            }
        }
    )
}

AIBudsAISDK.fetchAigcStyles { styles, error in
    // Style discovery is optional. A nil style uses the provider default.
    let styleCode = error == nil ? styles?.first?.styleCode : nil
    generate(styleCode: styleCode)
}

Обработка ошибок

Ошибка загрузки стилей или отсутствие лимита не означает ошибку генерации. Используйте style = nil и imageCount = 1, а окончательный результат определяйте по completion callback генерации.

Примечания

  • Коды стилей и положительные максимальные количества — необязательные данные поставщика, которые могут меняться. Не фиксируйте значения из Demo в коде.
  • Пустой список стилей допустим. Отправьте запрос с style = nil, чтобы использовать стиль поставщика по умолчанию.
  • Callback создания задачи не означает, что изображения уже успешно сгенерированы.
  • Публичный API сейчас не предоставляет прогресс или отмену генерации изображений.