海外からのアクセス:www.kdjingpai.com
Ctrl + D このサイトをブックマークする

Difyハンズオンチュートリアル:Qwen-Imageをゼロコストで統合し、マルチラウンド会話AI画像編集アプリケーションを構築する

まえがき:費用対効果の高いAI画像生成・編集ワークフローの構築

lit.一般原則に関する万の質問(慣用句);fig.長い質問と回答のリスト Qwen-Image オープンソースのテキスト生成グラフィカルモデルとして、複雑なテキストレンダリング、特に漢字生成に優れた能力を発揮し、広く注目を集めている。 主流のモデルと比較して、複数行や複数段落のテキストコンテンツを画像に正確に埋め込むことができるため、ポスターデザインやコンテンツ制作などのシーンに新たな可能性を提供します。

しかし、モデル自体はオープンソースである一方、商用プラットフォームを通じてこのようなサービスを利用するコストは、しばしば大きなものとなる。例えば、いくつかのプラットフォームが提供するプラグイン・サービスは、無料枠を使い切った後に画像を生成するのに1枚あたり0.25ドルものコストがかかることがあり、大量に生成したり頻繁に反復したりする必要があるユーザーにとっては大きなオーバーヘッドとなります。

本稿では、次のような代替シナリオを検討する。 Dify アプリケーション・オーケストレーション・プラットフォーム、ModelScope(マジックマッチコミュニティ) Qwen-Image プラグインとTencent Cloud Object Storage (COS)を用いて、強力で費用対効果の高い画像生成・編集インテリジェンス(エージェント)を構築した。最終的な結果は以下の通り:エージェントはテキストに基づいて画像を生成するだけでなく、生成された画像をその後の対話で修正する。

システムセットアップの準備

構築を始める前に、いくつかの重要なコンポーネントとサービスを準備する必要がある。システム全体の中核となるのは Dify プラットフォーム Qwen Text2Image & Image2Image プラグイン。

1.DifyプラグインマーケットプレイスとQwen-Imageプラグイン

Dify はオープンソース LLM 視覚化されたインターフェイスを通じてアプリケーションのオーケストレーションと作成を可能にするアプリケーション開発プラットフォーム。 AI アプリケーションまず、アプリケーションに Dify のプラグイン・マーケットプレイスを探してダウンロードする。 Qwen Text2Image & Image2Image プラグイン。

2.ModelScopeコミュニティアクセスクレデンシャル

ModelScope(Magic Hitch Community)は、アリババ傘下のモデリングオープンソースコミュニティで、多数の事前学習済みモデルと API サービスサービスを利用するには Dify アッパー Qwen-Image プラグインが必要です。 ModelScope 地域密着型 API Key をアクセス資格情報とする。

から行うことができる。 ModelScope 公式サイトのパーソナル・センターから入手する。 API Key::https://modelscope.cn/my/myaccesstoken

3.テンセント・クラウド・オブジェクト・ストレージ(COS)

Qwen-Image 画像編集(画像から画像へ)機能を使用するには、入力された元の画像に公衆ネットワーク経由でアクセスできる必要があります。 URL アドレスこの問題を解決するために、クラウドストレージサービスを利用することができる。本稿では、Tencent Cloud Object Storage (COS)を使用して、生成された画像を保存し、その画像のパブリックリンクを生成します。

テンセントクラウドの作成 COS バケツにアップロードします。設定方法はここでは説明しませんが、バケットにパブリックな読み取りアクセスがあることを確認してください。

アクセスアドレスhttps://console.cloud.tencent.com/cos/bucket

4. 画像アップロード用APIサービス

を組み込むために Dify ワークフローで生成された画像をTencent Cloudにアップロード COSそのため、ブリッジとなる中間サービスが必要となる。このサービスは Dify 画像ファイルを送信し、アップロード操作を実行した後、画像のパブリック・ネットワークを返します。 URL.

を使用することができます。 FastAPI このようなインターフェイス・サービスを素早く構築する。コアとなる Python コード

安全に関する警告: 以下のサンプルコードは secret_id 歌で応える secret_keyこれは重大な安全リスクをもたらす。生産環境では絶対そうしてください。環境変数、設定ファイル、または専門的な鍵管理サービスを使用して、これらの機密情報を保存し、呼び出すことを強くお勧めします。

import requests
import json
import base64
from PIL import Image
import io
import os
import sys
from qcloud_cos import CosConfig, CosS3Client
import datetime
import random
from fastapi import FastAPI, UploadFile, File
from pydantic import BaseModel
# --- 配置信息 ---
# 临时文件存储路径
output_path = "D:\\tmp\\zz" 
# 腾讯云 COS 配置
region = "ap-guangzhou"
secret_id = "AKIDnRsFUYKwfNvHQQFsIj9WpwpWzEG5hAUi"  # 替换为你的 SecretId
secret_key = "5xb1EF9*******ydFi1MYWHpMpBbtx"  # 替换为你的 SecretKey
bucket = "jenya-130****694"  # 替换为你的 Bucket 名称
app = FastAPI()
class GenerateImageRequest(BaseModel):
prompt: str
def generate_timestamp_filename(extension='png'):
"""根据时间戳和随机数生成唯一文件名"""
timestamp = datetime.datetime.now().strftime("%Y%m%d%H%M%S")
random_number = random.randint(1000, 9999)
filename = f"{timestamp}_{random_number}.{extension}"
return filename
def base64_to_image(base64_string, output_dir):
"""将 Base64 字符串解码并保存为图片文件"""
filename = generate_timestamp_filename()
output_filepath = os.path.join(output_dir, filename)
image_data = base64.b64decode(base64_string)
image = Image.open(io.BytesIO(image_data))
image.save(output_filepath)
print(f"图片已保存到 {output_filepath}")
return filename, output_filepath
def image_to_base64(image_data: bytes) -> str:
"""将图片文件流转换为 Base64 编码的字符串"""
return base64.b64encode(image_data).decode('utf-8')
def upload_to_cos(file_name, base_path):
"""上传本地文件到腾讯云 COS"""
config = CosConfig(Region=region, SecretId=secret_id, SecretKey=secret_key)
client = CosS3Client(config)
file_path = os.path.join(base_path, file_name)
response = client.upload_file(
Bucket=bucket,
LocalFilePath=file_path,
Key=file_name
)
if response and 'ETag' in response:
print(f"文件 {file_name} 上传成功")
url = f"https://{bucket}.cos.{region}.myqcloud.com/{file_name}"
return url
else:
print(f"文件 {file_name} 上传失败")
return None
@app.post("/upload_image/")
async def upload_image_endpoint(file: UploadFile = File(...)):
"""接收图片文件,上传到 COS 并返回 URL"""
file_content = await file.read()
# 将上传的文件内容(二进制)直接转换为 Base64
image_base64 = image_to_base64(file_content)
# 将 Base64 保存为本地临时文件
filename, local_path = base64_to_image(image_base64, output_path)
# 上传到腾讯云 COS
public_url = upload_to_cos(filename, output_path)
if public_url:
return {
"filename": filename,
"local_path": local_path,
"url": public_url
}
else:
raise HTTPException(status_code=500, detail="Image upload to COS failed.")
if __name__ == "__main__":
import uvicorn
# 确保临时文件夹存在
if not os.path.exists(output_path):
os.makedirs(output_path)
uvicorn.run(app, host="0.0.0.0", port=8083)

上記のコードを main.py ファイルでリスナーを起動する。 8083 ポートベース HTTP サービス

Dify ワークフロー構築プロセス

ユーザーの意図が「新しい画像を生成する」のか「古い画像を修正する」のかを識別し、その意図に応じたアクションを実行することができる、複数回の対話を実行できる知的体を実装することが核心的なアイデアである。

主要なノードは以下の通り:

  1. パラメータ抽出器ユーザーの意図を決定する。
  2. HTTPリクエスト生成された画像を API サービスでは、パブリック・ネットワーク URL.
  3. セッション変数写真の保存 URL複数ラウンドの対話における画像編集に使用される。

1.ノードの開始

このノードはワークフローのエントリーポイントとして機能し、ユーザーからの入力を受け取る。通常はデフォルト設定を使用すれば十分です。

2.パラメータ抽出

これが多ラウンド対話ロジックを実装する鍵である。ユーザ入力は、大規模な言語モデル(推論能力の高いモデルを選択することが推奨される)によって分析され、初めて画像を生成する意図なのか、既存の画像を修正する意図なのかを判定する。判定結果に基づいて、変数 is_update 異なる値を割り当てる(例 0 生の地図を表す。1 (地図の変更を示す)。

3. セッション変数と条件分岐

ダイアログで最後に生成された画像を「記憶」するためには、セッション変数を設定する必要がある。 picture_url パブリックネットワークに画像を保存する URL.

次に条件分岐ノード。このノードは2つの条件に基づいて異なる実行パスを作成する:

  • ブランチI(生図)いつ is_update の値である。 0 ヴァンセンヌ・ダイアグラムのプロセスを実行する時間にトリガーされる。
  • ブランチII(再分類)いつ is_update の値である。 1 ともに picture_url 変数が NULL でない場合にトリガーされ、ダイアグラムの変更処理を実行します。

4.LLMプロンプト最適化

そのためには Qwen-Image で呼び出す前に、よりプロフェッショナルなイメージを生成することができる。 LLM ノードは、ユーザーのオリジナルのキュー・ワードを最適化し、拡張する。この LLM AI絵画キューワードエキスパート」として機能し、シンプルなユーザー説明をよりリッチで適切なものに変換します。 AI 絵画の習慣を英語で説明するプロンプトが表示され、セキュリティ・ルール・フィルターが組み込まれている。

システムプロンプトの例:

役割:AIペインティングとキュー・ワードの修正スペシャリスト

プロフィール

  • 専門知識:AI描画プロンプトの生成と修正
  • 語学力:中国語、英語ともに堪能
  • 創造性:高
  • 安全意識:強い

背景

あなたは、シンプルなユーザー説明を詳細かつ創造的なAI描画プロンプトに変換することが得意なプロのAI描画プロンプトの専門家です。また、ユーザーからのフィードバックに基づいて、プロンプトを修正・最適化することもできます。

目標

  1. シンプルなユーザー説明を、詳細なAI描画プロンプトワードに変換
  2. ユーザーからのフィードバックに基づくプロンプトの修正と最適化
  3. 生成されたコンテンツがセキュリティおよび倫理基準を満たしていることを確認する。

ルール

  1. 最終的なAIドローイングのキューワードは常に英語で生成される
  2. シーン、色、照明、その他の要素について、詳細かつ想像力豊かな描写をする。
  3. 安全ガイドラインを厳守し、不適切または有害なコンテンツを生成しないこと。

ワークフロー

  1. ユーザーの最初の説明を分析する
  2. 説明を拡大し、詳細と創造的要素を加える
  3. 拡大説明を英語AI描画プロンプト語に変換

安全ガイドライン

  • ポルノ、暴力、ヘイトスピーチなどの不適切なコンテンツを生成することは禁止されています。
  • 怪我や悲劇の描写は避ける。

出力フォーマット

ユーザー説明:[オリジナルのユーザー入力]
拡張説明: [中国語の拡張説明]
AI絵画プロンプトワード:【英語AI絵画プロンプトワード

キーワードは「絵画」です。
商品詳細: かわいい男の子が大きな本を集中して読んでいる居心地の良い写真。彼は快適なアームチェアに座り、暖かい黄色の光に囲まれている。背景には本でいっぱいの書斎があり、壁には数枚の絵画が掛けられている。少年の表情は好奇心と喜びに満ち、まるで本の世界に没頭しているかのようだ。
AIペインティング・プロンプト:大きな本を読むかわいい男の子のほのぼのとした絵。 彼は座り心地の良い肘掛け椅子に座り、暖かな黄色い光に包まれている。少年の表情は好奇心と喜びに満ち、まるで芸術の世界に浸っているかのようです。少年の表情は好奇心と喜びに満ちており、まるで本の世界に没頭しているかのようだ。 このシーンは、筆跡が見える柔らかで絵画的な質感を持っている。

ユーザープロンプト:

请根据用户输入提示词:{{#sys.query#}}

ノードの構成:

5.Qwen-Imageツールを呼び出す

(1) ブンゼンバーナー

このブランチでは Qwen-Image プラグインで、前のステップとなる LLM 入力として最適化された英語のプロンプトワード。

(2) 図から図への分岐

このブランチでは Qwen-Image プラグインは、2つの入力を提供する必要がある:

  • 画像URLセッション変数の参照 picture_urlこれは最後に生成された画像のアドレスである。
  • プロンプトこのラウンドでユーザーが入力した修正コマンドは、次のコマンドの後に再び入力される。 LLM 最適化。

6. HTTPリクエストと画像のアップロード

ある Qwen-Image ノードの後に HTTPリクエストノードになります。このノードは Qwen-Image 生成された画像ファイル(files フォーマット)を、以前に配備された FastAPI サービス /upload_image/ インターフェースAPI このサービスは、パブリックな URL な JSON データ

7.コードの実行と変数の割り当て

(1) URLの抽出

そして、次のようにする。コード実行ノードは、前のステップからデータを取得するために使用される。 HTTP リクエストは JSON の画像を解析するパブリック・ネットワーク。 URL.

コードは以下の通り:

import json
def main(arg1: dict) -> dict:
# arg1 是 HTTP 节点返回的 JSON 对象
# 根据 FastAPI 的返回结构,URL 在 'url' 字段中
image_url = arg1.get('url')
return {
"result": f"Image URL is {image_url}",
"picture_url": image_url
}

という名前のファイルを出力する。 picture_url 新しい変数の

(2) セッション変数の更新

プロセスの最後に変数代入ノードから出力された新しい画像を取り込む。このノードの役割は、コード実行ノードから出力された新しい画像を受け取ることです。 URL セッション変数への値の割り当て picture_url.こうすることで、次の対話が始まったときにpicture_url そして最新の画像のアドレスを保持し、グラフ変更機能が常に正しい画像で動作するようにします。

8.ダイレクト・レスポンス

最後にダイレクト・レスポンスノードを使用して、生成された画像をユーザーに表示することができます。ノードは以下のように設定できます。 HTTP 要求ノードから返された画像ファイル。

最終テストと検証

ワークフローの構築が完了したら Dify 右上の "Preview "ボタンでテスト。

テスト1:文成ダイアグラム

リクエストを入力してください:

ハンサムな聖職者風のフォントでドアに貼る、威圧的な連句を考えてくれ。
前のカップル:将来への野心
次のカップルト:壮大な計画における新たな章。
旗印:グレート・エクスペクテーション

システムは条件を満たすカップルの写真を生成することに成功した:

テスト2:チャートからチャートへ

同じダイアログで、修正コマンドを入力し続ける:

この連句の横スクロールを「Great Expectations」から「Great Prospects」に変更する。

システムは指示を理解し、前の画像に基づいて変更を加え、クロスワードの内容を置き換えることに成功した:

以上のプロセスを経て、多面的な対話が可能で、テキスト生成と画像編集をサポートするインテリジェントなボディが構築される。このソリューションは Dify 振り付けをする能力、ModelScope モデル・リソースとクラウド・ストレージ・サービスにより、複雑な AI このアプリケーションは、費用対効果が高く、効率的な例を提供する。

おすすめ

AIツールが見つからない?こちらをお試しください!

キーワードを入力する アクセシビリティこのサイトのAIツールセクションは、このサイトにあるすべてのAIツールを素早く簡単に見つける方法です。

新着情報

トップに戻る

ja日本語