プログラム自動生成を試してみた (AI Programmer)

2022/10/09

Python プログラミング

t f B! P L

(画像はStable Diffusionでプロンプト「AI Programmer」)


巷で話題のプログラム生成Webアプリ、有限会社ASReal さんの AI Programmer を試してみました。


Webメディアによる紹介記事はこちらなど

自然な日本語で注文するとソースコードを作ってくれるサービス「AI Programmer」が登場 - やじうまの杜 - 窓の杜


 公式サイトによると、

たとえばこのように指示を出してください。

SQL

売り上げテーブルAと企業マスタテーブルBがあります。この二つのテーブルを結合して、企業別の売り上げ一覧を集計する。

Python

データベースから値を取得してCSVファイルに変換する。

HTML&CSS

タイトルはマイページ、セクション数は2つ、1セクション目は2カラムで横幅100%、2セクション目は3カラム

ということで、かなり自然な日本語が使えそうです。

なおかつ内容も計算問題に限らず、現実にありそうな、慣れていないとなんだったっけとなりえる、ちょっとしたタスクができそうに見えます。

早速試してみます。Pythonの例を入力。


......?
翻訳されているだけにしか見えません。

ちょっと独特なUIなので説明を加えると、入力ボックスに入力して「コードを生成」ボタンを押すと空行を開けて同じ枠に出力が出てきます。

念のため3回くらいやってみたところ、それらしいのがでてきました。


なんかおまけで2回実行してくれていますね。
1つのdbにテーブルが複数あるような構造ですよって教えてくれてる例なのだとしたらすごい丁寧なのかも知れません。

さて、プログラムの内容ですが、1行目

from database import *

databaseは自分で作れってことでしょうか。たしかに、データベースとしか言ってないので仕方ない...?

あんまり詳しくないので、知ってて当然なライブラリとかだったらどうしようとか思いつつ、SQLiteで自分で作ってみることに。

get_values(table) でリストとかイテレーターになればいいので、DB名はtest.dbで良いことにして、ホントにこの方向性で合ってる?と不安になりつつ作成。
(中身を文字列にしたかったのでちょっとゴニョゴニョ。実験レベルなので動けば良いことにしておいてください)

# database.py
import sqlite3
class Database():
  name = 'test.db'
  def get_values(self,table):
    conn = sqlite3.connect(self.name)
    cur = conn.cursor()
    result = cur.execute('SELECT * FROM '+table+'')
    data = [[str(i) for i in item] for item in result]
    conn.close()
    return data

こんなtable1を用意して、

先程出力されたプログラムをそのまま実行、無事csvが出力されました。


人生初のAIとのペアプログラミング(?)は無事完了しました。
改めて流れを見てみると、
  1. 人間がやりたいことを考えて日本語を描く
  2. AIがコードの骨組みを作る
  3. 人間が細部をコーディングする
と言った感じ。特に3番、これで良いのか...?
でもここをAIにやらせようと思うとちょっと厳しい気がする。入力にコードを入れられるようなものが出てきたらいけるのだろうか。

なんとなく、「人間=大雑把なタスク」「機械=細かなタスク」みたいなイメージがあったけれど今回の実験では逆に見える結果と言えそうです。


最後に、得意そうな問題もやらせてみました。

入力を「1から10までの和を求める。」とした結果がこちら。

実行してみるとちゃんと動作します。

rangeの上界は長らく使っていないと人間でもミスしがちなので、ちゃんと合ってて偉い。

以上です。






QooQ