こんにちは、JS2IIUです。
DALL-Eは、OpenAIが開発した画像生成AIで、テキストの説明を基に高品質な画像を生成することができます。特にDALL-E 3は、より詳細でリアルな画像生成が可能であり、クリエイターやデザイナーにとって非常に強力なツールとなっています。今回もよろしくお願いします。
DALL-E APIの特徴
DALL-EのAPIを利用することで、プログラムから簡単に画像を生成し、アプリケーションやWebサービスに組み込むことができます。主な特徴として以下の点が挙げられます。
- 自然な画像生成: テキスト入力に応じて、リアルな写真風の画像や絵画風のイラストを作成できます。
- さまざまなスタイルの対応: アニメ風、スケッチ風など、プロンプト(テキスト入力)を工夫することで多様なスタイルの画像が作成可能です。
- API経由でのアクセス: OpenAIのAPIを使用することで、Pythonなどのプログラミング言語から画像生成を自動化できます。
- 簡単なインターフェース: APIはシンプルなリクエストで利用でき、初心者でも扱いやすい設計になっています。
DALL-Eを活用したStreamlitアプリ
以下のコードでは、Streamlitを使ってDALL-E 3による画像生成アプリを作成します。
import openai
import streamlit as st
# OpenAI APIキーを直接指定
OPENAI_API_KEY = "YOUR_API_KEY"
openai.api_key = OPENAI_API_KEY
def generate_image(prompt):
"""DALL-Eで画像を生成する関数"""
try:
response = openai.Image.create(
prompt=prompt,
model="dall-e-3",
n=1, # 生成する画像の数
size="1024x1024" # 画像サイズ
)
return response["data"][0]["url"]
except Exception as e:
st.error(f"エラーが発生しました: {e}")
return None
# Streamlitアプリのレイアウト
st.title("DALL-E3 画像生成アプリ")
# ユーザーの入力
prompt = st.text_input("画像の説明を入力してください:")
# 画像のテイスト選択
taste = st.selectbox(
"画像のテイストを選択してください:",
["絵画風", "写真風", "アニメ風", "手書きスケッチ風"]
)
# テイストごとのプロンプト修正
def modify_prompt(base_prompt, taste):
styles = {
"絵画風": "A beautiful oil painting of",
"写真風": "A realistic photo of",
"アニメ風": "An anime-style illustration of",
"手書きスケッチ風": "A detailed pencil sketch of"
}
return f"{styles[taste]} {base_prompt}"
if st.button("画像を生成"):
if prompt:
modified_prompt = modify_prompt(prompt, taste)
with st.spinner("画像を生成中..."):
image_url = generate_image(modified_prompt)
if image_url:
st.image(image_url, caption="生成された画像", use_column_width=True)
else:
st.warning("画像の説明を入力してください。")コードの詳しい解説
1. OpenAI APIの設定
import openai
import streamlit as st
OPENAI_API_KEY = "YOUR_API_KEY"
openai.api_key = OPENAI_API_KEYこの部分では、OpenAIのAPIキーを設定し、openai.api_key に割り当てています。このAPIキーを環境変数などで管理すると、より安全に運用できます。
2. 画像生成関数 generate_image()
def generate_image(prompt):
try:
response = openai.Image.create(
prompt=prompt,
model="dall-e-3",
n=1,
size="1024x1024"
)
return response["data"][0]["url"]
except Exception as e:
st.error(f"エラーが発生しました: {e}")
return Noneこの関数では、openai.Image.create() を使ってDALL-E 3のAPIを呼び出し、画像を生成します。エラーが発生した場合は、st.error() を使ってエラーメッセージを表示します。
3. Streamlitアプリのレイアウト
st.title("DALL-E3 画像生成アプリ")Streamlitのst.title()を使ってアプリのタイトルを設定します。
4. ユーザー入力の取得
prompt = st.text_input("画像の説明を入力してください:")st.text_input() を使って、ユーザーから画像の説明を受け取ります。
5. 画像のテイスト選択
taste = st.selectbox(
"画像のテイストを選択してください:",
["絵画風", "写真風", "アニメ風", "手書きスケッチ風"]
)ユーザーが画像のスタイルを選択できるように、st.selectbox() を使用しています。
6. プロンプトの修正
def modify_prompt(base_prompt, taste):
styles = {
"絵画風": "A beautiful oil painting of",
"写真風": "A realistic photo of",
"アニメ風": "An anime-style illustration of",
"手書きスケッチ風": "A detailed pencil sketch of"
}
return f"{styles[taste]} {base_prompt}"ここでは、選択されたテイストに応じてプロンプトを修正し、DALL-Eに適した形式に整えています。
7. 画像の生成
if st.button("画像を生成"):
if prompt:
modified_prompt = modify_prompt(prompt, taste)
with st.spinner("画像を生成中..."):
image_url = generate_image(modified_prompt)
if image_url:
st.image(image_url, caption="生成された画像", use_column_width=True)
else:
st.warning("画像の説明を入力してください。")st.button() をクリックすると、入力されたプロンプトをもとに画像を生成し、表示する処理を行います。
参考になるWEBサイト
最後に、書籍のPRです。
最新のOpenAIのチャットAPIの使い方もしっかりと解説されている良書です。2024年11月初版発行、「LangChainとLangGraphによるRAG・AIエージェント[実践]入門」西見、吉田、大嶋著。
最後まで読んでいただきありがとうございます。73

