HiDream-I1画像生成をAPIでテストする方法

中村 拓也

中村 拓也

22 4月 2025

HiDream-I1画像生成をAPIでテストする方法

毎週、驚くべきビジュアルを生成できる新しいAI画像生成モデルが登場しています。その中の一つがHiDream-I1-Fullです。これらのモデルをローカルで実行することはリソース集約型ですが、APIを活用することで、この技術をアプリケーションやワークフローに便利でスケーラブルな形で統合することができます。

このチュートリアルでは以下のことを説明します:

  1. HiDream-I1-Fullの理解: それが何であり、その能力。
  2. APIオプション: HiDream-I1-FullをAPI経由で提供している人気のある2つのプラットフォーム、ReplicateとFal.aiを探る。
  3. Apidogによるテスト: Apidogツールを使用して、これらのAPIとインタラクションし、テストする方法をステップバイステップで案内します。
💡
美しいAPIドキュメントを生成する優れたAPIテストツールを望んでいますか?

最大の生産性で開発チームが協力できる統合型のオールインワンプラットフォームを望んでいますか?

Apidogはすべての要求を満たし、Postmanをより手頃な価格で代替します
ボタン

対象読者: 開発者、デザイナー、AI愛好者、そして複雑なローカルセットアップなしで高度なAI画像生成を使用したい人々。

前提条件:

HiDream-I1-Fullとは何ですか?

HiDream AI:AI画像生成の新しい王者?

HiDream-I1-Fullは、HiDream AIによって開発された先進的なテキストから画像への拡散モデルです。これは、テキスト説明(プロンプト)に基づいて高品質で一貫性のある、視覚的に魅力的な画像を生成するために設計されたモデルのファミリーに属します。

モデル詳細: 公式のモデルカードや技術情報はHugging Faceで確認できます:https://huggingface.co/HiDream-ai/HiDream-I1-Full

主な機能(このクラスのモデルに一般的):

HiDream AIのベンチマークをGOT-4o、Recraft V3、Google Image 3、Ideogram 3.0およびFLUXと比較(出典:ArtificialAnalysis)

APIを使用する理由は何ですか?

HiDream-I1-Fullのような大規模AIモデルをローカルで実行するには、かなりの計算リソース(強力なGPU、十分なRAM、ストレージ)と技術的な設定(依存関係、モデルウェイト、環境設定の管理)が必要です。APIを使用することで、いくつかの利点があります:

HiDream-I1-FullをAPI経由で使用する方法

いくつかのプラットフォームがAIモデルをホストし、APIへのアクセスを提供しています。ここでは、HiDream-I1-Fullのための2つの人気の選択肢に焦点を当てます:

オプション1:ReplicateのHiDream APIを使用する

Replicateは、インフラを管理することなくシンプルなAPIを介して機械学習モデルを実行するのを容易にするプラットフォームです。彼らはコミュニティで公開されたモデルの膨大なライブラリをホストしています。

Replicateの仕組み:

  1. 認証: Replicate APIトークンが必要で、これはアカウント設定内で見つけることができます。このトークンはAuthorizationヘッダーに渡されます。
  2. 予測の開始: Replicate APIエンドポイントにPOSTリクエストを送り、リクエストボディには、モデルバージョンと入力パラメータ(promptnegative_promptseedなど)が含まれます。
  3. 非同期操作: Replicateは通常非同期で動作します。最初のPOSTリクエストは直ちに予測IDとステータス確認用のURLを返します。
  4. 結果を取得: ステータスURL(最初の応答で提供されたもの)を使用して、ステータスがsucceeded(またはfailed)になるまでGETリクエストでポーリングが必要です。最終的な成功応答には生成された画像のURLが含まれます。

概念的なPython例(requestsを使用):

import requests
import time
import os

REPLICATE_API_TOKEN = "YOUR_REPLICATE_API_TOKEN" # 本番環境では環境変数を使用
MODEL_VERSION = "TARGET_MODEL_VERSION_FROM_REPLICATE_PAGE" # 例:"9a0b4534..."

# 1. 予測を開始
headers = {
    "Authorization": f"Token {REPLICATE_API_TOKEN}",
    "Content-Type": "application/json"
}
payload = {
    "version": MODEL_VERSION,
    "input": {
        "prompt": "A majestic cyberpunk cityscape at sunset, neon lights reflecting on wet streets, detailed illustration",
        "negative_prompt": "ugly, deformed, blurry, low quality, text, watermark",
        "width": 1024,
        "height": 1024,
        "seed": 12345
        # Replicateモデルページに基づいて必要な他のパラメータを追加
    }
}

start_response = requests.post("<https://api.replicate.com/v1/predictions>", json=payload, headers=headers)
start_response_json = start_response.json()

if start_response.status_code != 201:
    print(f"予測の開始中にエラーが発生しました: {start_response_json.get('detail')}")
    exit()

prediction_id = start_response_json.get('id')
status_url = start_response_json.get('urls', {}).get('get')

print(f"予測はID: {prediction_id}で開始されました")
print(f"ステータスURL: {status_url}")

# 2. 結果をポーリング
output_image_url = None
while True:
    print("ステータスを確認中...")
    status_response = requests.get(status_url, headers=headers)
    status_response_json = status_response.json()

    status = status_response_json.get('status')
    if status == 'succeeded':
        output_image_url = status_response_json.get('output') # 通常はURLのリスト
        print("予測に成功しました!")
        print(f"出力: {output_image_url}")
        break
    elif status == 'failed' or status == 'canceled':
        print(f"予測に失敗しましたまたはキャンセルされました: {status_response_json.get('error')}")
        break
    elif status in ['starting', 'processing']:
        # 再度ポーリングする前に待機
        time.sleep(5) # 必要に応じてポーリング間隔を調整
    else:
        print(f"不明なステータス: {status}")
        print(status_response_json)
        break

# 出力画像URLを使用することができます

価格設定: Replicateは、彼らのハードウェア上でのモデルの実行時間に基づいて課金します。詳細については、彼らの価格ページを確認してください。

オプション2:Fal.ai

Fal.aiは、APIを介してAIモデルの高速でスケーラブルかつコスト効果の高い推論を提供することに特化した別のプラットフォームです。彼らはしばしばリアルタイム性能を強調します。

Fal.aiの仕組み:

  1. 認証: Fal API資格情報(キーIDとキーシークレット)が必要で、通常はKeyID:KeySecretとして組み合わされて渡されます。これはAuthorizationヘッダーで渡されます。
  2. APIエンドポイント: Fal.aiは特定のモデル機能に対する直接エンドポイントURLを提供します。
  3. リクエストフォーマット: モデルのエンドポイントURLにPOSTリクエストを送ります。リクエストボディは通常、モデルが要求する入力パラメータ(Replicateと同様のpromptなど)を含むJSONです。
  4. 同期 vs 非同期: Fal.aiは両方を提供することができます。画像生成のような長時間実行される可能性のあるタスクに対しては、以下が使用されることがあります:

概念的なPython例(requestsを使用 - 非同期キューと仮定):

import requests
import time
import os

FAL_API_KEY = "YOUR_FAL_KEY_ID:YOUR_FAL_KEY_SECRET" # 環境変数を使用
MODEL_ENDPOINT_URL = "<https://fal.run/fal-ai/hidream-i1-full>" # Fal.aiでの正確なURLを確認

# 1. キューにリクエストを送信(例 - 正確な構造はFalのドキュメントを確認)
headers = {
    "Authorization": f"Key {FAL_API_KEY}",
    "Content-Type": "application/json"
}
payload = {
    # Fal.aiのサーバーレス関数のためにパラメーターがペイロードに直接含まれることが多いです
    # またはセットアップに応じて‘input’オブジェクト内にある場合があります。ドキュメントを確認してください!
    "prompt": "A hyperrealistic portrait of an astronaut floating in space, Earth reflecting in the helmet visor",
    "negative_prompt": "cartoon, drawing, illustration, sketch, text, letters",
    "seed": 98765
    # Fal.ai実装によってサポートされている他のパラメータを追加
}

# Fal.aiは非同期用に'/queue'や特定のクエリパラメータを追加する必要があります
# 例:POST <https://fal.run/fal-ai/hidream-i1-full/queue>
# 彼らのドキュメントを確認してください! ステータスURLを返すエンドポイントを仮定:

submit_response = requests.post(f"{MODEL_ENDPOINT_URL}", json=payload, headers=headers, params={"fal_webhook": "OPTIONAL_WEBHOOK_URL"}) # クエリパラメータのドキュメントを確認

if submit_response.status_code >= 300:
    print(f"リクエストの送信中にエラーが発生しました: {submit_response.status_code}")
    print(submit_response.text)
    exit()

submit_response_json = submit_response.json()

# Fal.aiの非同期応答は異なる場合があります - リクエストIDや直接のステータスURLを返すことがあります
# この概念的な例では、Replicateに似たステータスURLを返すと仮定
status_url = submit_response_json.get('status_url') # またはリクエストIDから構築する、ドキュメントを確認
request_id = submit_response_json.get('request_id') # 代替識別子

if not status_url and request_id:
     # ステータスURLを構築する必要があるかもしれません(例:<https://fal.run/fal-ai/hidream-i1-full/requests/{request_id}/status>)
     # または一般的なステータスエンドポイントをクエリします:<https://fal.run/requests/{request_id}/status>
     print("ステータスURLを構築する必要がありますまたはrequest_idを使用、Fal.aiのドキュメントを確認してください。")
     exit() # Falのドキュメントに基づく具体的な実装が必要

print(f"リクエストが送信されました。ステータスURL: {status_url}")

# 2. 結果をポーリング(非同期の場合)
output_data = None
while status_url: # ステータスURLがある場合のみポーリング
    print("ステータスを確認中...")
    # ポーリングには認証が必要な場合があります
    status_response = requests.get(status_url, headers=headers)
    status_response_json = status_response.json()

    status = status_response_json.get('status') # Fal.aiドキュメントでステータスキーを確認('COMPLETED', 'FAILED'など)

    if status == 'COMPLETED': # 例のステータス
        output_data = status_response_json.get('response') # または'result', 'output'、ドキュメントを確認
        print("リクエストが完了しました!")
        print(f"出力: {output_data}") # 出力構造はFal.aiのモデルに依存します
        break
    elif status == 'FAILED': # 例のステータス
        print(f"リクエストに失敗しました: {status_response_json.get('error')}") # エラーフィールドを確認
        break
    elif status in ['IN_PROGRESS', 'IN_QUEUE']: # 例のステータス
        # 再度ポーリングする前に待機
        time.sleep(3) # ポーリング間隔を調整
    else:
        print(f"不明なステータス: {status}")
        print(status_response_json)
        break

# 出力データを使用します(これには画像のURLや他の情報が含まれている可能性があります)

価格設定: Fal.aiは通常、実行時間に基づいて料金を請求し、しばしば秒単位の請求があります。特定のモデルと計算リソースの価格詳細を確認してください。

ApidogでHiDream APIをテスト

Apidogは強力なAPI設計、開発、およびテストツールです。HTTPリクエストを送り、レスポンスを検査し、API詳細を管理するためのユーザーフレンドリーなインターフェースを提供し、ReplicateおよびFal.ai APIを統合する前のテストに最適です。

ボタン

Apidogを使用したHiDream-I1-Full APIをテストする手順:

ステップ1. Apidogをインストールして開く: Apidogをダウンロードしてインストールするか、ウェブ版を使用します。必要に応じてアカウントを作成します。

ステップ2. 新しいリクエストを作成:

ステップ3. HTTPメソッドとURLを設定:

ステップ4. ヘッダーを設定:

Content-Typeヘッダーを追加:

Authorizationヘッダーを追加:

Replicateの場合:

Fal.aiの場合:

ステップ5. リクエストボディを設定:

Bodyタブに移動します。

rawフォーマットを選択し、ドロップダウンからJSONを選びます。

プラットフォームの要件に応じてJSONペイロードを貼り付けます。

Replicateの例JSONボディ:

{
  "version": "PASTE_MODEL_VERSION_FROM_REPLICATE_PAGE_HERE",
  "input": {
    "prompt": "A watercolor painting of a cozy library corner with a sleeping cat",
    "negative_prompt": "photorealistic, 3d render, bad art, deformed",
    "width": 1024,
    "height": 1024,
    "seed": 55555
  }
}

Fal.aiの例JSONボディ:

{
  "prompt": "A watercolor painting of a cozy library corner with a sleeping cat",
  "negative_prompt": "photorealistic, 3d render, bad art, deformed",
  "width": 1024,
  "height": 1024,
  "seed": 55555
  // Fal.aiのセットアップに応じて'model_name'のような他のパラメータが必要かもしれません
}

重要: 使用しているHiDream-I1-Fullモデルの正確に必要なおよびオプションのパラメータについては、ReplicateまたはFal.aiページの具体的なドキュメントを参照してください。guidance_scalenum_inference_stepsなどのパラメータが利用可能かもしれません。

ステップ6. リクエストを送信:

結果をポーリング(非同期API用):

画像を表示: 最終的な成功応答から画像のURLをコピーし、ウェブブラウザに貼り付けて生成された画像を表示します。

💡
美しいAPIドキュメントを生成する優れたAPIテストツールを望んでいますか?

最大の生産性で開発チームが協力できる統合型のオールインワンプラットフォームを望んでいますか?

Apidogはすべての要求を満たし、Postmanをより手頃な価格で代替します
ボタン

結論

HiDream-I1-Fullは強力な画像生成能力を提供し、ReplicateやFal.aiのようなプラットフォームからAPIを使用することで、この技術を複雑なインフラを管理することなく利用可能にします。APIワークフロー(リクエスト、ポーリングの可能性、レスポンス)を理解し、Apidogのようなツールをテストに活用することで、最先端のAI画像生成をプロジェクトに簡単に取り入れることができます。

ReplicateやFal.aiの特定のドキュメントを常に確認して、最新のエンドポイントURL、必要なパラメータ、認証方法、価格詳細を確認してください。これらは時間とともに変更される可能性があります。生成を楽しんでください!

ApidogでAPIデザイン中心のアプローチを取る

APIの開発と利用をよりシンプルなことにする方法を発見できる