テキスト生成と画像生成が同時に学べる記事【OpenAI API】

# はじめに
この記事は、下記のOpenAI APIについての記事の発展的な内容を取り扱います。
- [OpenAI APIの使い方講座【公式Quickstart】](https://qiita.com/Isaka-code/items/b50983796636503b44c5)
- [Chat Completions APIで京都旅行プランを考える](https://qiita.com/Isaka-code/items/96b3ae49616d6f467856)
- [DALL·E APIで実在しないポケモンを創る](https://qiita.com/Isaka-code/items/7eba1881931dd646baed)



本日のお題は、「**ポケモンを生成するプロンプトを生成⇒存在しないポケモンを生成**」です。

前提として、[OpenAI APIの使い方講座【公式Quickstart】](https://qiita.com/Isaka-code/items/b50983796636503b44c5)のStep2まで完了している必要があります。


# 本日のお題：ポケモンを生成するプロンプトを生成⇒存在しないポケモンを生成
**出来上がったソースコード**
```text_and_image_generation.py
from text_generation import text_generation
from image_generation import image_generation

def text_and_image_generation(model_name, system_message, user_message, image_model):
    # テキストを生成する
    generated_text = text_generation.generate_text(model_name, system_message, user_message)
    print("Generated text:", generated_text)

    # 生成したテキストを基に画像を生成する
    response = image_generation.generate_image(image_model, generated_text)
    print("Generated image response:", response)

if __name__ == "__main__":
    # テキスト生成のパラメータ
    text_model_name = "gpt-4"
    system_message = "あなたはポケモンの専門家で、新しいポケモンのアイデアを提案するのが得意です。"
    user_message = "新しい1匹のポケモンを生成するプロンプトを考えてください"

    # 画像生成のパラメータ
    image_model = "dall-e-3"

    # テキストと画像の生成を行う
    text_and_image_generation(text_model_name, system_message, user_message, image_model)
```
「[Chat Completions APIで京都旅行プランを考える](https://qiita.com/Isaka-code/items/96b3ae49616d6f467856)」の`text_generation.py`と「[DALL·E APIで実在しないポケモンを創る](https://qiita.com/Isaka-code/items/7eba1881931dd646baed)」の`image_generation.py`をimportし、実装しています。
前半の`Chat Completions API`を用いたテキスト生成関数でポケモンを生成するプロンプトを生成し、後半の`DALL·E API`を用いた画像生成関数に引数として渡し、存在しないポケモンを生成しています。

**実行結果（生成されたテキスト）**

>Generated text: もちろんです。では、以下のようなアイデアは如何でしょうか。
>この新しいポケモンの名前は"ライトニュメラ"です。ライトニュメラは種族が"神話的な獣"で、電気と光の能力を持つポケモンです。ライトニュメラは、主に夜に活動し、その体から放たれる強烈な発光は、一晩中光り続けることができます。この光は、ライ トニュメラが戦闘で振りまわす電気の力を増幅させ、闇の中でも特別な美しさを放ちます。
>ライトニュメラは、敵の攻撃を避けるために高速で飛行し、その速さはラピッドなスピードの名を持つポケモンでさえ匹敵します。その動きは光の閃きのように速く、目で追うことは殆ど不可能です。
>このポケモンは、特にユニークな技"イリュージョンフラッシュ"を使うことができます。これは、まばゆい光を発生させて敵の視界を奪い、その間に攻撃を行うというものです。さらに、この技は敵の防御力を一時的に低下させる効果もあります。
>エボリューションのパターンでは、"光のオーブ"という特殊なアイテムを使うことで"ライトイェティ"へと進化します。ライトイェティはもっと大きく、更にパワフルな形態で、その存在感は一段と増します。
>ライトニュメラのデザインは、美しくエレガントな神話の獣にインスパイアされています。その体は、主に純白で、細長い尾と大きな羽を持っています。羽はその美しさを一層引き立てる一方、攻撃や防御の際にも役立ちます。また、尾はバランスを取るため に使われ、また空中での機動性を向上させます。
>ライトニュメラは、その美しさと力強さでポケモンワールドの新たなアイコンとなることでしょう。

**実行結果（生成された画像）**

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2627015/ee531ce6-6e85-4cbd-66e4-4fcb5870af4c.png)

カッコいい、、！
日本語名の`ライトニュメラ`は7文字になってしまっていますが、英語名の`Lightnumera`なら12文字以内だからセーフということでしょうか？



![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2627015/82836c6c-99c6-d72e-bb32-2aa47cd5b86b.png)


>出典：[ポケモンWiki/ニックネーム](https://wiki.xn--rckteqa2e.com/wiki/%E3%83%8B%E3%83%83%E3%82%AF%E3%83%8D%E3%83%BC%E3%83%A0)



# おわりに

この記事では、OpenAIのAPIを使用して、架空のポケモン「ライトニュメラ」の生成に挑戦しました。テキスト生成と画像生成の技術を組み合わせることで、想像力の限界を超えた創作が可能になることを実感できたのではないでしょうか。

さまざまなAI技術の進化により、私たちの創造性は新たな次元に引き上げられています。今回のプロジェクトは、AIの可能性を探る一歩に過ぎません。読者の皆さんには、この記事をきっかけに、AIを活用した独自の創作活動に挑戦していただければ幸いです。

次回の記事では、さらに別の面白いAIの使い方をご紹介します。是非カレンダーの購読や、QiitaとTwitterのフォローをお願いします。皆さまの応援が大きな励みになります！



https://qiita.com/advent-calendar/2023/nebosuke-ai

https://twitter.com/AInebosuke



### ソースコード

本記事で使用したソースコードは、下記のGitHubレポジトリに格納しています。

https://github.com/Isaka-code/openai-api-hands-on