白猫のメモ帳

C#とかJavaとかJavaScriptとかHTMLとか機械学習とか。

OpenAIのAPIで画像を生成したり、画像から文章が作れるようになったみたい

こんばんは。
最後の夏の名残を感じた気がします。11月だぞー。

さて、OpenAI DevDayでいろんなことが発表されたみたいです。
DALLE-3による画像生成と、GPT-4Vによる画像の入力が気になったので試してみます。
ちなみにTypeScript(nodejs)です。

今日のコードはこれだけ。

import { ClientOptions, OpenAI } from "openai";

// APIクライアントの設定
const configuration : ClientOptions = {
    apiKey: "自分のAPIキーを入れてね"
};
const openai = new OpenAI(configuration);

(async () => {

    // 画像を生成する
    const response1 = await openai.images.generate({
        model: "dall-e-3",
        prompt: "a giant fluffy cat",
        n: 1,
        size: "1024x1024",
    });
    const imageUrl = response1.data[0].url;
    console.log(imageUrl);

    // 画像を解説させる
    const response2 = await openai.chat.completions.create({
        model: "gpt-4-vision-preview",  // 現段階だとnodejsのopenaiライブラリのリテラル型には入ってなかったけど普通に文字列で指定はできる
        messages: [
            {
                role: "user",
                content: [
                    {
                        type: "text", 
                        text: "Please explain this image in Japanese."
                    },
                    {
                        type: "image_url",
                        image_url: { 
                            url : imageUrl 
                        },
                    },
                ],
            }
        ],
        max_tokens: 500,
    });
    const text = response2.choices[0].message;
    console.log(text);
})();

こんな感じのながーいURLが返ってきて、アクセスしてみたらこんな画像でした。もっふもふ。

https://oaidalleapiprodscus.blob.core.windows.net/private…

で、逆にその画像の解説をさせてみると、

この画像は、壁に掛けられた大きな肖像画とその前に実際に座っているネコが描かれています。このネコは長い毛を持つ品種で、豊かな毛並みと鋭い目をしています。肖像画はネコ自身のものであり、まるでネコが自身の芸術的な表象を見ているかのようです。画像の右側には小さな作業台があり、そこには芸術家が使うブラシや他のアート用品が入った容器が置かれています。作業台の側には灰色の布が敷かれ、その上には一本のペンが落ちています。このシーンは室内に設定されており、床は木製で、背景は落ち着いた色合いで塗られています。全体的に創造的で風変わりな雰囲気を持った画像です。

だそうです。これを猫が自身の肖像画を見てるって解釈するとは…なかなかおしゃれな感性ですね。
ちなみにGPT-4は0.5ドル以上課金をしていないとAPIからは使えないのですが、前払いでチャージをすると使えるようになりますよ。

こんな簡単にできてすごい!