📈

GPT-4Vにプログラミングをしてもらう

2023/10/20に公開

実現したいこと

元々、GPT-4では(3.5でも)要望に合わせて、プログラム作成をすることができるというのが、多くの利用シーンとして言われてきました。
さらに、Advanced Data Analysisの機能を使えば、CSVを読み込んで必要な集計を実施してくれるということも可能でした。

私の業務の1つであるSQLやPythonでの集計とかも簡単に実装してくれちゃって、結構自分の仕事の感じたものです。

であれば、GPT-4Vと組み合わせるともっと面白いことができるのではということで、画像の表データをもとに、SQLを用いた集計ができるのかを検証します。

利用するデータ

出典:https://www.city.chiba.jp/sogoseisaku/sogoseisaku/kikaku/tokei/jinkou.html

これをChatGPTのGPT-4Vを用いて、プログラム作成・さらに集計ができるのかを検証していきます。

検証

SQLを作成してみる

画像を渡して「表は千葉市の市・区ごとの推計人口です。千葉市を除いた、区ごとの人口について、総数と男・女のそれぞれの平均値を求めるための、SQLを作成、実際に算出してください。」としてみました。そこででてきたのが、次の通りです。

テーブル名や、変数名を定義した上で、千葉市を除いて、平均値を出すSQLを作成してくれています。
おお、完璧と思ったのですが、実はこれって画像なくても出せちゃいますね。

最後に、「具体的な数字については、このSQLを実際のデータベース環境で実行する必要があります。」と言われてしまいました。算出はできないのでしょうか。。。

平均値を出してみる

改めて「ありがとうございます。上記のテーブルデータをもとに、千葉市を除いた、区ごとの人口について、総数と男・女のそれぞれの平均値を求めるための、SQLを作成し、実際に算出してください。」と指示を出してみると、しっかりと計算してくれました。

が、平均値を出すときには、四則演算をしだした(苦笑)

SQLで

まとめ

ちゃんとChatGPT内でプログラムを実行してやろうとすると、
⓵数表の画像を渡して、データ化してもらう。

※ここの市・区の名前が、東京23区になってしまっていますね。やはり、どうしても日本語の認識は難しいようですね。

このデータをテキストエディタに貼り付けて、test.txtとして保存しておきます。

⓶このデータを、Advanced Data Analysisモードにした、GPT-4にアップロードして、「このTSVデータをもとに、区ごとの人口について、総数と男・女のそれぞれの平均値を求めるための、SQLを作成し、実際に算出してください。」と指示します。

おお、ちゃんと結果が出ていますね。

ちなみに、生成してくれたプログラムは次の通りです。
Pythonの環境内で、SQLiteのデータベースを用いて集計してくれていますね。

import sqlite3

# Connect to an in-memory SQLite database
conn = sqlite3.connect(":memory:")
cur = conn.cursor()

# Create a table
cur.execute("""
CREATE TABLE population (
    district TEXT,
    total INTEGER,
    male INTEGER,
    female INTEGER,
    monthly_change INTEGER,
    yearly_change INTEGER,
    households INTEGER
)
""")

# Insert data into the table
for line in lines[1:]:  # Skip the header
    data = line.strip().split("\t")
    cur.execute("INSERT INTO population VALUES (?, ?, ?, ?, ?, ?, ?)", data)

# Commit the changes
conn.commit()

Discussion