ITママのゲームとかの日常ブログ

かつてはオーランド日記でありヴァナディール日記であったもの

ChatGPT Code Interpreter にサンプルデータを作ってもらう

ChatGPT Plus に最近導入された Code Interpreter 機能を使ってみた、というお話です。

結論から先に言うと、これはあらゆるスキルレベルの IT技術者が重宝する、素晴らしいツールなんじゃない??と思いました。

コードレビューしたりドキュメント書いたり動画編集したり、Code Interpreter は色々なことができるようですが、今回はひとまず私の仕事に直結する使い方として、サンプルデータの作成をやってみました。

ただサンプルデータを作ってもらうだけなら、普通の GPT4 でもいい感じで作ってくれます。 でも、Code Interpreter は一連の教育的な流れで成果物を差し出してくれるあたりが、学習者の立場としてすごい有り難いものでした。

私が必要だったもの

私は自分でコードを書くことは少ないのですが、色々な形式のデータを扱ったり調査したりすることがあります。

例えば、先日はとあるテストのために、こんな感じのデータが必要になりました。

  • JSON 形式のデータを格納したテキストファイル
  • データは 1行のみ、改行はしない
  • データの長さは 4000 byte 以上
  • データには配列構造があり、配列には 2つ以上のオブジェクトが存在していて、配列の中も JSON 形式でネストしている

……でもね、私、JSON 形式ってフワッとしか知らなくて🤤

エンジニアというよりもエンジニャーなので、サッとサンプルデータを作れるほど Python なども使いこなせていません。

エンジニャー図 (by DALL·E)

その時はとにかく適当なデータでテストしたいだけだったので、その辺のサーバに適当なリクエストを投げて、返されてきた JSON 形式のデータを gvim で加工して使いました。サーバが返した JSON はきれいに改行されていたので 2番目の要件は満たせませんでしたが、まぁしょうがないか、と。

それからたった数日後に Code Interpreter が公開されましたので、さっそく Code Interpreter にもお願いしてみました。

プロンプト(ChatGPT へのお願い文)

初めての Code Interpreter へのお願い文はこんな感じです。

Please create a sample json file with following conditions. 
- File consists of 1 json line 
- File is 4000 bytes long 
- Json contains array with more than 2 members, having nested json structure

さっきの要件をそのまま書きました。JSON 用語もあやふやで、すごいフワッとしてる。

しかも、うっかり「4000 byte 以上」ではなく「4000 byte」と書いてしまったため、この後 ChatGPT くんを少し困らせてしまうことになります。

ChatGPT からの回答のサマリー

4000byte 丁度って難しいけど、できるだけ近づけるよ。まず JSON 構造を作って、4000 byte 近くまで要素を追加していってみるね!

こういうシンプルな JSON 構造でスタートするね。

この JSON の、"data" 配列の中に要素を追加して 4000 byte を目指すことにする。

シンプルな JSON にデータを反復して追加する Python コードを書いてみるね。

(一生懸命コード1 を書いて実行してる)

……できた。4000 byte を目指したけど、JSON の構造とかもあって 4008 byte になっちゃった。結果ファイルはこれをどうぞ。

(ファイルへのダウンロードリンクが用意される)

さて、出力した JSON の構造チェックしとこうか。

(一生懸命コード2 を書いて実行してる)

ほい。JSON の構造はこんな感じ。こういう配列があって、こういうネスト構造にこういうフィールドが入ってる。

4000 byte を超えるまでこれを繰り返した感じ。もし分からないところがあったら言ってね!

かわいすぎでしょ

なにこれ。ChatGPT くん、可愛い上に、優秀すぎじゃない?

「こういうのちょうだい」→「はいどうぞ」

で終わるんじゃなくて、ちゃんと解説をしてくれるところが偉い。

にわかエンジニャーには「まずはこういうシンプルな構造から始めて、ここを増やしていこう」とか「データはできたので、構造チェックのコードを書こう」みたいなことは思いつかないので、そういうステップもちゃんと教えてくれるのはとても助かる。

実際の Python のコードもダウロードできるので、それを書き換えてローカルで実行すれば、細かい調整もできる。完璧ですね。

結論

ChatGPT Plus で十分遊んだし、そろそろ無課金でいっか、と思ってたところにこれですよ。

「これちょうだい」という要望に対して、ただ成果物をくれるだけじゃなくて、教育的な観点で筋道立てて「こうやって作ったよ」っていうのを教えてくれるのはほんと助かる。

私の課金はもうちっとだけ続くんじゃ。

ChatGPT からの回答(フルテキスト)

Creating a JSON file that is exactly 4000 bytes long can be a bit challenging, but I can attempt to do this. I'll start by creating a base JSON structure, and then add more elements to it until the file size reaches (or is as close as possible to) 4000 bytes.

However, keep in mind that this won't create a deeply complex JSON structure due to the size limitation.

Let's start with a simple JSON structure:

{
    "data": [
        {
            "id": 1,
            "name": "Item 1",
            "details": {
                "description": "This is item 1",
                "timestamp": "2023-07-11T10:00:00Z"
            }
        },
        {
            "id": 2,
            "name": "Item 2",
            "details": {
                "description": "This is item 2",
                "timestamp": "2023-07-11T11:00:00Z"
            }
        }
    ]
}

I'll replicate the elements within the "data" array until the file size is close to 4000 bytes. I'll use a Python script to automate this process. Let's start with the initial JSON structure and add elements iteratively.

《Finished working Show work ★ここにプログラムがリンクされている》

I've created a JSON file that is close to 4000 bytes in size. The final size is 4008 bytes, which is the closest I could get to 4000 bytes due to the size of individual JSON elements. You can download the JSON file from the link below:

【Download sample.json ★ここでサンプルファイルをダウンロードできる】

Let's check the final structure of the JSON file.

《Finished working Show work ★ここにプログラムがリンクされている》

Here's the final structure of the JSON file:

{
    "data": [
        {
            "id": 1,
            "name": "Item 1",
            "details": {
                "description": "This is item 1",
                "timestamp": "2023-07-11T10:00:00Z"
            }
        },
        {
            "id": 2,
            "name": "Item 2",
            "details": {
                "description": "This is item 2",
                "timestamp": "2023-07-11T11:00:00Z"
            }
        },
        ...
        {
            "id": 35,
            "name": "Item 35",
            "details": {
                "description": "This is item 35",
                "timestamp": "2023-07-11T10:00:00Z"
            }
        }
    ]
}

As you can see, the "data" array contains more than two members, each with a nested JSON structure that includes "id", "name", and "details". The "details" object includes "description" and "timestamp" fields.

This JSON structure is repeated until the file size is just over 4000 bytes. Please let me know if you have any other questions or need further assistance!