見出し画像

【ChatGPT初心者向け】指示のコツ - 複数のファイルにまたがる複雑なコーディング・プロンプトのコツ

今回もコーネル大学が発表した、生成AIの精度を上げるプロンプトの原則26点の中から一つご紹介します。

例によって、後々見返した際に記事タイトルを見ただけでも内容を判断できるように、一つずつ紹介していきます。

コーネル大学の論文はこちら
https://browse.arxiv.org/html/2312.16171v1


論文の内容を翻訳してもらうと、次のように記載されていました。

When you have a complex coding prompt that may be in different files: “From now and on whenever you generate code that spans more than one file, generate a [programming language ] script that can be run to automatically create the specified files or make changes to existing files to insert the generated code. [your question]”.

異なるファイルにまたがるような複雑なコーディング・プロンプトがある場合: 「今後、複数のファイルにまたがるコードを生成するときはいつでも、指定されたファイルを自動的に作成したり、生成されたコードを挿入するために既存のファイルに変更を加えたりするために実行できる[プログラミング言語]スクリプトを生成してください。[あなたの質問]」。

使い方としては、「今後、複数のファイルにまたがるコードを生成するときはいつでも、指定されたファイルを自動的に作成したり、生成されたコードを挿入するために既存のファイルに変更を加えたりするために実行できるPythonスクリプトを生成してください。」という感じです。

このテクニックを使用するメリット

このテクニックを使用するメリットは、プログラムを更新する労力が減ることです。

上記のような指示を加えると、今後、ファイルの更新が必要になった場合にコーディングのフォーマットやルールを都度指定しなくても「○○を追加して」などの簡単な追加指示を与えるだけで、既存のコードと同じフォーマットに揃えてコードを自動生成してくれるようになります。

具体的な例をChatGPTに考えてもらいました。

プロンプト例

レシピを整理するプロジェクトを始めています。トマトスープとチョコレートケーキの2つのレシピを集めました。
各レシピには、料理の名前、必要な材料、調理方法を記載したファイル(tomato_soup.txtとchocolate_cake.txt)が必要です。
これらのファイルを自動的に作成し、各ファイルに基本的な情報を挿入するスクリプトを作成してください。

今後、複数のファイルにまたがるコードを生成するときはいつでも、指定されたファイルを自動的に作成したり、生成されたコードを挿入するために既存のファイルに変更を加えたりするために実行できるPythonスクリプトを生成してください。

実行結果

上記のプロンプトを実行した結果は下記の通りです。

ChatGPT

プロジェクトの要件を満たすために、Pythonスクリプトを作成します。このスクリプトは、指定されたレシピの情報を含むテキストファイルを自動的に生成します。今回は「トマトスープ」と「チョコレートケーキ」の2つのレシピファイルを作成するためのスクリプトです。将来的に他のレシピも同様の形式で追加できるようにします。

スクリプトは以下の機能を持つようにします:

指定されたレシピ名に基づいてファイルを作成する。
各レシピファイルには、料理の名前、必要な材料、調理方法のセクションが含まれる。
ファイルがすでに存在する場合は、そのファイルに内容を上書きする。

以下は、この要件を満たすPythonスクリプトの例です。

import os

# レシピ情報を辞書で定義
recipes = {
    'tomato_soup': {
        'title': 'トマトスープ',
        'ingredients': [
            'トマト 4個',
            '玉ねぎ 1個',
            'ニンニク 2片',
            'チキンブイヨン 2カップ',
            '塩 少々',
            '黒コショウ 少々'
        ],
        'method': [
            'トマトと玉ねぎを粗く切る。',
            '鍋にオリーブオイルを熱し、ニンニクを炒める。',
            'トマトと玉ねぎを加え、柔らかくなるまで炒める。',
            'チキンブイヨンを加えて煮込む。',
            '塩と黒コショウで味を調える。',
            'ミキサーで滑らかになるまで混ぜる。'
        ]
    },
    'chocolate_cake': {
        'title': 'チョコレートケーキ',
        'ingredients': [
            '砂糖 1カップ',
            '小麦粉 1カップ',
            'ココアパウダー 1/2カップ',
            'ベーキングパウダー 1 1/2 tsp',
            '塩 1/2 tsp',
            '卵 2個',
            '牛乳 1/2カップ',
            '植物油 1/2カップ',
            'バニラエッセンス 2 tsp'
        ],
        'method': [
            'オーブンを175度に予熱する。',
            '砂糖、小麦粉、ココアパウダー、ベーキングパウダー、塩を混ぜる。',
            '卵、牛乳、植物油、バニラエッセンスを加えてよく混ぜる。',
            '生地を型に流し入れる。',
            '25分間焼く。',
            '冷ましてから、お好みでトッピングをする。'
        ]
    }
}

# レシピファイルを生成する関数
def create_recipe_file(recipe_name, recipe_data):
    filename = f"{recipe_name}.txt"
    with open(filename, 'w', encoding='utf-8') as file:
        file.write(f"{recipe_data['title']}\n\n")
        file.write("【必要な材料】\n")
        for ingredient in recipe_data['ingredients']:
            file.write(f"- {ingredient}\n")
        file.write("\n【調理方法】\n")
        for step, method in enumerate(recipe_data['method'], start=1):
            file.write(f"{step}. {method}\n")

# 各レシピについてファイルを生成
for recipe_name, recipe_data in recipes.items():
    create_recipe_file(recipe_name, recipe_data)

このスクリプトを実行すると、指定されたレシピ情報を含むtomato_soup.txtchocolate_cake.txtという2つのファイルが生成されます。レシピを追加したい場合は、recipes辞書に新しいエントリを追加し、スクリプトを再実行するだけです。

これに今後レシピを追加する場合は、下記のような指示を送るだけでフォーマットに沿った形で追加してくれるようになります。

Pythonスクリプトに次のレシピを追加して。
ポークピカタのレシピ
材料:(材料を記載)
調理方法:(調理方法を記載)

まとめ

今後更新することがない一時的なソースコードを生成する場合は、今回のテクニックは必要ありません。

しかし、今後も更新していく(長期的に運用する)予定があるのであれば、今回のテクニックを使用した方が更新の労力が少なく効率的に運用できます。

今回の記事は以上になります。


初心者向けの記事はこちらのマガジンにまとめていますので、
良かったら他の記事も見ていってください。

この記事が参加している募集

この記事が気に入ったらサポートをしてみませんか?