メインコンテンツまでスキップ

画像生成

テキストプロンプトから 1 枚以上の UIImage を生成します。プロバイダーが提供する生成数の上限やスタイル選択は任意機能であり、生成タスクを送信するための必須条件ではありません。

処理フロー

画像生成タスクのライフサイクル

プロンプトを用意し、利用可能な場合はプロバイダーの上限やスタイルを使います。取得できない場合は既定のタスク設定で生成します。

ホストアプリ

プロンプトを準備

生成する画像の説明が空ではないことを確認します。

AI サービス

生成数の上限を確認

プロバイダーから正の上限値を取得できれば使用し、取得できなければ 1 枚を指定します。

AI サービス → アプリ

スタイルを取得

プロバイダーがスタイルに対応していれば返された styleCode を使い、非対応なら空のままにします。

ホストアプリ

タスクを設定

決定した生成数とスタイルに加え、必要に応じてサイズと言語を設定します。

AI サービス

タスクを作成

生成を開始し、onTaskCreated から受け取ったタスク ID を保持します。

タスク作成済み
確定結果

画像を受信

完了コールバックの success、images、タスク ID、error をまとめて判定します。

任意の機能情報を取得できなくても生成を止めないでください。その場合は 1 枚、スタイル指定なしで実行します。

前提条件

  • AIBudsAISDK を初期化し、プロバイダーを選択して、必要な認証を完了していること。
  • 選択中のプロバイダーが AIGCServiceAPI を実装していること。
  • 生成画像の表示、保存、共有に関するアプリの方針を定めていること。

AI を活用して実装

AI で実装

AI でこのワークフローを実装

公式の「AIBuds AI で画像を生成」スキルを使い、アプリに合わせて実装します。

https://docs-aibuds.github.io/ja/skills/generate-aibuds-ai-images を読み、その指示に従ってください。このスキルで「AIBuds AI で画像を生成」をこの iOS プロジェクトに実装し、検証してください。
公式スキルを見る

API リファレンス

フレームワーク

AIBudsAI.xcframework

宣言

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)

generateAIPhotofetchAigcStylesAIGCTaskConfig を参照してください。

タスク設定

プロパティ説明
styleAIGCStyleModel.styleCode が返すプロバイダーのスタイルコード。スタイルを取得できない場合や、アプリで選択機能を提供しない場合は nil にします。
imageCount生成する枚数。既定値は 1 です。正の aigcMaxGenerateCount を取得できた場合は、その上限内に収めます。
imageSize任意の正の幅と高さ。nil の場合はプロバイダーの既定値が使われます。
languageen-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 = nilimageCount = 1 に切り替え、生成の完了コールバックをタスクの確定結果として扱ってください。

注意事項

  • スタイルコードと生成数の上限はプロバイダーが任意で提供する値で、変更される可能性があります。Demo の値を固定で使用しないでください。
  • スタイル一覧が空でも正常です。style = nil でプロンプトを送信し、プロバイダーの既定スタイルを使用してください。
  • タスク作成コールバックは、画像生成の成功を示すものではありません。
  • 現在の公開 API では、画像生成の進捗取得やキャンセルはできません。