この記事では、GrasshopperとHopsを使ってChatGPT APIをPython経由で呼び出し、その応答をGrasshopperで利用する方法について説明します。ChatGPTとの連携により、設計アイデアを自然言語で入力し、その結果をインタラクティブに利用することができます。
最終的にはChatGPTからの指示に基づき、形状やデザインを自動生成することを目標に進めていきます。
前提条件
- Rhino 8 と Grasshopper がインストールされている
- Python(CPython)がセットアップされている
- Flask や Hops の基礎知識がある
- OpenAI API キーを取得済みである
ステップ1: Python環境の準備
ChatGPT APIにアクセスするために、PythonでFlaskサーバーを立ち上げ、Hops経由でそのサーバーにリクエストを送ります。
pip install openai flask
ステップ2: Flaskサーバーのセットアップ
Flaskを使って簡単なサーバーを作り、ChatGPT APIを呼び出すルートを設定します。次のPythonコードを app.py として保存してください。
from flask import Flask, request, jsonify
import openai
app = Flask(__name__)
# OpenAI APIキーをセット
openai.api_key = 'YOUR_OPENAI_API_KEY'
@app.route("/chatgpt", methods=["POST"])
def chatgpt():
# クエリ(プロンプト)を取得
prompt = request.json.get('prompt')
# ChatGPT APIにリクエスト
response = openai.Completion.create(
engine="text-davinci-003",
prompt=prompt,
max_tokens=100
)
# ChatGPTの応答を返す
return jsonify({"response": response.choices[0].text.strip()})
if __name__ == "__main__":
app.run(debug=True)
YOUR_OPENAI_API_KEYを自身のAPIキーに置き換えてください。- このサーバーは、受け取ったプロンプトをChatGPT APIに送り、その結果を返します。
ステップ3: GrasshopperでHopsを使用
次に、GrasshopperでHopsコンポーネントを使い、上記のFlaskサーバーにリクエストを送ります。
- Hopsコンポーネント をGrasshopper内に配置します。
- コンポーネントのURLをFlaskサーバーのエンドポイントに設定します。例えば、
http://localhost:5000/chatgptです。 - Hopsコンポーネントの引数として、「プロンプト」入力を追加し、適切なテキスト(例:「デザインのアイデア」)を入力します。
ステップ4: Grasshopper内でChatGPTの応答を使用
Hopsから返されたChatGPTの応答をGrasshopperのパラメータとして利用できます。例えば、ChatGPTの応答をラベルやメッセージとして表示することができます。
Panelコンポーネントを使って応答を表示。- ChatGPTからの指示に基づき、形状やデザインを自動生成するステップにも進むことができます。
サンプル応答と結果
例えば、「建築のファサードのデザインアイデアを教えて」といったプロンプトを送信した場合、以下のような応答を得ることができます。
ガラスと木材を組み合わせた自然なファサードデザインを検討してください。透明感と温かみが調和し、周囲の自然と一体化します。
これを元に、Grasshopperでガラスや木材をモチーフにした形状を生成することができます。
まとめ
このチュートリアルでは、ChatGPTをGrasshopperと連携させ、デザインのヒントやアシスタンスを得るための基本的な設定方法を説明しました。これにより、インタラクティブな設計フローを構築し、テキストベースのフィードバックを直接Grasshopperのモデリングに反映させることができます。
次のステップでは、より高度なプロンプトを作成したり、APIの応答を具体的な形状生成に応用する方法を探っていきます。
