話題のChatGPTですが、「文字だけではなく画像もあわせて表示してくれたらいいのに」と感じたことはないでしょうか?
Pythonコードで実装できるChatGPTとDALL-EのAPIを組み合わせることで、画像出力が簡単に可能になります。
本記事では、OpenAIの高性能なNLPモデルであるChatGPTと、画像生成モデルであるDALL-Eを組み合わせた実用的なPythonプログラムの作成例を紹介します。このプログラムを使って、ユーザーが入力した材料や味付けの情報をもとに、料理のメニューを考案し、その完成イメージを画像として生成することができます。
ChatGPTとDALL-EのAPIを組み合わせることで、画像出力が可能。
また、当ブログ内のChatGPTについての記事を以下のページでまとめていますので、あわせてご覧ください。
ChatGPTとは
ChatGPTは、OpenAIが提供する自然言語生成モデルです。GPT(Generative Pre-training Transformer)と呼ばれるモデルのアーキテクチャを採用しています。
GPTは、Transformerと呼ばれるニューラルネットワークを使用して、文書や言語処理タスクでのテキスト生成を行うモデルです。GPTは、大量のテキストデータを学習し、そのデータをもとに新しい文章を生成することができます。
ChatGPTは、GPTをもとにしたモデルであり、対話型システムやチャットボットなどで使われることを想定して開発されています。対話を続けることができるようになっており、ユーザーが入力するテキストに対して、自然で返答ができるようになっています。
OpenAI APIキーの取得
PythonのプログラムからChatGPTを使用するためには、OpenAIのAPIキーを取得する必要があります。
取得の手順については以下の記事で解説しています。
DALL-E
DALL-Eは、OpenAIが開発したテキストプロンプトから画像を生成することができる深層学習モデルです。
DALL-Eについての詳細は以下の記事で解説していますので、あわせてご覧ください。
ライブラリのインストール
ChatGPTとDALL-Eを使用して画像を生成するために必要なライブラリをインストールします。
コマンドプロンプトで以下のコマンドを実行してください。
pip install openai
pip install pillow
作成したPythonコード
ここからはPythonコードの実装方法について解説します。
Pythonコード解説
OpenAI APIキーの設定
OpenAIのAPIキーを設定します。APIキーはOpenAIのウェブサイトから取得できます。your_openai_api_key
の部分を自分のAPIキーに置き換えてください。
openai.api_key = "your_openai_api_key"
chat_gpt_request
ChatGPTを使ったテキスト生成
chat_gpt_request
関数は、与えられたプロンプトに基づいてGPT-3.5-turboを使ってテキストを生成します。この関数は、APIリクエストを送信し、生成されたテキストを返します。
def chat_gpt_request(prompt):
...
return message
generate_image
DALL-Eを使った画像生成
generate_image
関数は、与えられたプロンプトに基づいてDALL-Eを使って画像を生成します。この関数は、APIリクエストを送信し、生成された画像のURLを返します。
def generate_image(prompt):
...
return image_url
作成した全体のソースコード
作成した全体のソースコードは以下の通りです。
import openai
import requests
from PIL import Image
from io import BytesIO
# APIキーを設定
openai.api_key = "your_openai_api_key"
def chat_gpt_request(prompt):
"""
GPT-3.5-turboを使って与えられたプロンプトに基づいてテキストを生成します。
prompt: GPT-3.5-turboに送るプロンプト(str)
返り値: GPT-3.5-turboから生成されたテキスト(str)
"""
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": prompt}
],
max_tokens=60,
n=1,
temperature=0.8,
)
message = response.choices[0].message['content'].strip()
return message
def generate_image(prompt):
"""
DALL-Eを使って与えられたプロンプトに基づいて画像を生成します。
prompt: DALL-Eに送るプロンプト(str)
返り値: 生成された画像のURL(str)
"""
response = openai.Image.create(
prompt=prompt,
model="image-alpha-001",
n=1,
size="256x256",
response_format="url",
)
image_url = response['data'][0]['url']
return image_url
def main():
# ユーザーからの入力を受け取る
ingredients = input("材料を入力してください: ")
seasoning = input("味付けを入力してください: ")
# ChatGPTによる料理メニューの考案
prompt = f"材料: {ingredients}、味付け: {seasoning} の料理のメニューを考案してください。"
menu = chat_gpt_request(prompt)
print("考案された料理メニュー: ", menu)
# DALL-Eによる画像生成
prompt = f"{menu} の完成イメージを描いてください。"
image_url = generate_image(prompt)
# 生成された画像を表示
response = requests.get(image_url)
img = Image.open(BytesIO(response.content))
img.show()
if __name__ == "__main__":
main()
Pythonコードの実行結果
先ほどのPythonコードを実行した結果は以下の通りです。
実行すると以下のように質問文が表示されますので、作成したい料理の情報を入力してください。
材料を入力してください:
味付けを入力してください:
今回は以下の同じ内容を設定し、4回生成を行いました。
材料を入力してください: 鶏肉と野菜
味付けを入力してください: 甘辛い
メニュー1
材料を入力してください: 鶏肉と野菜
味付けを入力してください: 甘辛い
考案された料理メニュー: 材料: 鶏肉、玉ねぎ、にんじん、ピーマン、しょうが、にんにく、ごま油、醤油、酒、みりん
味付け: ガーリック、醤油、みりん、砂糖
【ガーリックチキン炒め】
1. 鶏肉を一口大に切り、しょうがとにんにくをみじん切りにする。
2. 玉ねぎ、にんじん、ピーマンを細かく切る。
3. フライパンにごま油を熱し、鶏肉、しょうが、にんにくを炒める。
4. 鶏肉に火が通ったら、玉ねぎ、にんじん、ピーマンを加えて炒める。
5. 醤油、酒、みりんを加え、全体に混ぜ合わせる。
6. 最後に、ガーリック、砂糖を加え、調味する。
お好みで、ご飯や麺と一緒に食べても美味しいです。
メニュー2
材料を入力してください: 鶏肉と野菜
味付けを入力してください: 甘辛い
考案された料理メニュー: 材料: 鶏もも肉、にんじん、玉ねぎ、しいたけ、ごま油、醤油、みりん、砂糖
味付け: 甘辛醤油味
【甘辛醤油味の鶏肉炒め】
1. 鶏もも肉を一口大に切り、1/4カップの醤油と1/4カップのみりんに漬け込んでおく。
2. にんじん、玉ねぎ、しいたけをそれぞれ一口大に切る。
3. フライパンにごま油を熱し、鶏肉を焼き色がつくまで炒める。
4. にんじん、玉ねぎ、しいたけを加えて炒める。
5. 醤油、みりん、砂糖を加えて全体に絡める。
6. お皿に盛り付けて、ご飯と一緒に召し上がれ。
メニュー3
材料を入力してください: 鶏肉と野菜
味付けを入力してください: 甘辛い
考案された料理メニュー: 材料:
- 鶏もも肉
- じゃがいも
- にんじん
- 玉ねぎ
- キャベツ
味付け:
- 醤油
- みりん
- 砂糖
- 酒
- にんにく
- しょうが
【鶏もも肉と野菜の煮物】
1. 鶏もも肉を一口大に切り、塩こしょうをしておく。
2. じゃがいもとにんじんは一口大に切り、玉ねぎはくし形に切る。
3. 鍋に油を熱し、鶏もも肉を焼き色がつくまで炒める。
4. 玉ねぎを加えて炒め、しんなりしたらじゃがいもとにんじんを加える。
5. 醤油、みりん、砂糖、酒、にんにく、しょうがを加え、煮込む。
6. 野菜が柔らかくなったら、キャベツを加えてさっと煮て完成。
ぜひお試しください!
メニュー4
材料を入力してください: 鶏肉と野菜
味付けを入力してください: 甘辛い
考案された料理メニュー: 材料:
- 鶏もも肉 200g
- キャベツ 1/4個
- にんじん 1/2本
- 玉ねぎ 1/2個
- にんにく 1かけ
- 塩 小さじ1/4
- こしょう 適量
- オリーブオイル 大さじ1
味付け:
- 醤油 大さじ2
- みりん 大さじ1
- 砂糖 小さじ1/2
- 酒 大さじ1
1. 鶏もも肉を一口大に切り、塩とこしょうで下味をつけます。
2. キャベツ、にんじん、玉ねぎを一口大に切ります。
3. にんにくをみじん切りにします。
4. フライパンにオリーブオイルを熱し、にんにくを炒めます。
5. 鶏肉を加えて焼き色がつくまで炒めます。
6. 野菜を加えて炒め、醤油、みりん、砂糖、酒を加えて味を調えます。
7. 野菜がしんなりするまで炒め、完成です。
この料理は、鶏肉の旨味と野菜の甘味が調和して、とても美味しい一品に仕上がります。ご飯やお酒のおつまみにもぴったりです。
ChatGPTによって4つの料理メニューが画像付きで生成されました。
\ Pythonを自宅で好きな時に学べる! /
まとめ
今回は、OpenAIのChatGPTとDALL-Eを組み合わせて、ユーザーが入力した材料や味付けの情報から料理のメニューを考案し、その完成イメージを画像として生成するプログラムの作成方法を解説しました。
このプログラムをさらに拡張すれば、自動的にレシピの手順や栄養情報を生成することも可能です。
今回の料理メニューの考案以外にも、ChatGPTとDALL-Eを組み合わせてWebサイトのUIやチラシのデザインを考案するなど、色々な応用ができると思いますので、ぜひ活用してみてください。
また、以下の記事で効率的にPythonのプログラミングスキルを学べるプログラミングスクールの選び方について解説しています。最近ではほとんどのスクールがオンラインで授業を受けられるようになり、仕事をしながらでも自宅で自分のペースで学習できるようになりました。
スキルアップや副業にぜひ活用してみてください。
スクールではなく、自分でPythonを習得したい方には、いつでもどこでも学べる動画学習プラットフォームのUdemyがおすすめです。
講座単位で購入できるため、スクールに比べ非常に安価(セール時1200円程度~)に学ぶことができます。私も受講しているおすすめの講座を以下の記事でまとめていますので、ぜひ参考にしてみてください。
それでは、また次の記事でお会いしましょう。
コメント