課題
Djangoの中で画像を生成するAPIを使いたいと思っていた所、DALL·E 2 APIを見つけました。
その使い方だけでなく、結果のURLだけのリストを取得する方法まで載ってるサイトが見つかりにくかったので、共有させていただきます。
PythonでDALL·E 2 APIを使う方法と、出力結果のURLだけのリストを取得する方法
views.py
# "pip3 install openai"などで、openaiをあらかじめインストールしておく。
#google colaboratoryを使う際には、"! pip3 install openai"でインストール
import os
import openai
openai.api_key = "ご自身のAPIキー"
#引数を基に画像を生成し、そのURLのリストを返す
def Get_Image_URL(English_Summary):
# 戻り値を複数返すためのリストの箱を作る
URL_List = []
# リストの中身をリセット
URL_List.clear()
# 生成する画像の数を指定
Number_of_Images = 2
dalle = openai.Image.create(
#promptに、画像を生成するキーワードを入れる。
prompt=English_Summary,
n=Number_of_Images,
size="1024x1024"
)
#画像のURL生成した画像の枚数分
for i in range(Number_of_Images):
# dalleAPIからの結果を取得(辞書型)
IMG_URL_Dict = dalle["data"][i].values()
# 辞書型からリスト型へ変換
IMG_URL_List = list(IMG_URL_Dict)
# 変換したURLの中身を、URL_Listに追加
URL_List.append(IMG_URL_List[0])
return URL_List
#画像を生成するキーワードをtranslation_resultsに入れる。
translation_results="今日はとても幸せな気分です。"
#translation_resultsを引数にして、英訳した要約を基に、画像生成のURLを取得する。
result_urls = Get_Image_URL(translation_results)
print(result_urls)
出力結果
['https://oaidalleapiprodscus.blob.core.windows.net/private/org-b04fDiF1M7SyzWhEfy5pBFhj/user-TgC89wwC9hwu05oNpVHtsNgc/img-EobSx0odM3g0Z64bdK6xGWxl.png?st=2022-12-27T04%3A21%3A16Z&se=2022-12-27T06%3A21%3A16Z&sp=r&sv=2021-08-06&sr=b&rscd=inline&rsct=image/png&skoid=6aaadede-4fb3-4698-a8f6-684d7786b067&sktid=a48cca56-e6da-484e-a814-9c849652bcb3&skt=2022-12-27T03%3A19%3A35Z&ske=2022-12-28T03%3A19%3A35Z&sks=b&skv=2021-08-06&sig=V7qK7auw5EhuoOjkIh2jkIkerXf6OMdYEbPCfTWTtjk%3D', 'https://oaidalleapiprodscus.blob.core.windows.net/private/org-b04fDiF1M7SyzWhEfy5pBFhj/user-TgC89wwC9hwu05oNpVHtsNgc/img-pi5D2k01hanPIz5zZ0bS6s8Q.png?st=2022-12-27T04%3A21%3A16Z&se=2022-12-27T06%3A21%3A16Z&sp=r&sv=2021-08-06&sr=b&rscd=inline&rsct=image/png&skoid=6aaadede-4fb3-4698-a8f6-684d7786b067&sktid=a48cca56-e6da-484e-a814-9c849652bcb3&skt=2022-12-27T03%3A19%3A35Z&ske=2022-12-28T03%3A19%3A35Z&sks=b&skv=2021-08-06&sig=JbW6jvu4a5lXsWXEnTjWvy51WQdfxFogwKvR4dz7oco%3D']
これで、URLのみのリストを取得できました。
このリストの内容をtemplateに送れるようにすることで、生成した画像の一覧を表示するWEBサービスを作ることができます。
リストの内容をtemplateに表示させる方法は以下のサイトで解説されているので、よろしければごらん下さい!
またDALL·E 2 APIのAPIキーを取得する方法については、以下の動画がとても分かりやすかったです!
How to use DALL·E 2 API in Python
最後に
DALL·E 2 APIで、結果のURLだけのリストを取得する方法が見つかりにかったため、出来るようになるまでにまあまあ時間がかかりました。
なので、これが皆さんの参考になれば幸いです!
最後までお読みいただき、ありがとうございました!