GPT-4 Turbo with Vision を使用して、WebページのスクリーンショットからNext.js × Tailwind CSSのコードを生成してみた

はじめに

GPT-4 Turbo with Vision を使用して、Web ページのスクリーンショットから Next.js × Tailwind CSS のコードを生成してみました。

開発環境

  • OS: Windows 11
  • 言語: Python 3.11.5
  • ライブラリ: Azure OpenAI

実装

では、早速実装していきます!

1. 環境設定

まず、必要なライブラリをインストールします。dotenvopenaiを使用します。これらは、以下のコマンドでインストールできます。

2. Azure OpenAI の設定

Azure OpenAI を使用するためには、Azure ポータルで Azure OpenAI リソースを作成し、API キーとエンドポイント URL を取得する必要があります。
本記事では省略します。
取得した情報を.envファイルに保存します。

3. 画像の準備

次に、コードを生成したい Web ページのスクリーンショットをwebpage.pngという名前でプロジェクトのルートディレクトリに保存します。

本記事では、以下のスクリーンショットを使用します。

image.png

引用元 : https://preline.co/examples/hero-sections.html#hero-with-polygon-bg-element

4. コードの実装

以下の Python スクリプトをtest.pyとして保存し、実行します。

local_image_to_data_url関数は、ローカルの画像パスをbase64に変換します。

プロンプトは日本語よりも英語の方が効果的な傾向が見られたため、英語にしています。
プロンプトの日本語訳は以下のとおりです。

システムプロンプト:あなたは、Next.js(TypeScript)/Tailwind CSSに精通したフロントエンドエンジニアです。

ユーザープロンプト:
# タスク
ユーザー」から「参照Webページのスクリーンショット」を受け取り、Next.js(TypeScript)とTailwind CSSを使ってシングルページのアプリケーションを構築する。
# 制約事項
– “参照Webページのスクリーンショット “と同じ外観や雰囲気であること
– 背景色、文字色、フォントサイズ、フォントファミリー、パディング、マージン、ボーダーなどのスタイルを正確に再現すること
– スクリーンショットのテキストを正確に使用すること
– スクリーンショット内の要素の配置や改行を正確に再現すること
– コードの内容を省略することなく、完全なコードを提供すること
– コードの先頭や末尾に”"や"`tsx”、コードの説明を含めず、コードの内容のみを提供すること
参考Webページのスクリーンショット:

プロンプトは、以下のScreenshot to Code の GitHub リポジトリのシステムプロンプトなどを参考に作成しました。

5. 結果の確認

レスポンスは以下のようになりました。

/* Tailwind CSS */より上の部分をNext.jsで作成したプロジェクトのapp/page.tsxに貼り付けて表示した結果は以下のとおりです。

image.png

完全な再現はできていませんが、文字や改行のポイント、配置などはほぼ正確ですね。
これを更に洗練するプロンプトは難易度が高そうですが、あとは人間が少し手を加えれば再現できそうなレベルです。
フロントエンドの開発に変化が起きそうです。

なお、プロンプトを日本語にして実行した結果は以下のとおりです。

image.png

配置などがかなり崩れていることが確認できます。
日本語より英語のほうが効果的なのでしょうか?

以上になります!
最後まで読んでいただき、ありがとうございました!

参考文献

 

 

この記事を書いた人

azure-recipe-user