AI Programmerを試してみる
はじめに
AI Programmerなるものがプロトタイプ無料で公開されていたので何番煎じかわかりませんが試してみました。
それなに
詳しくはこちらを見たらよいかなと思います。
概要
AI Programmerは日本語の自然言語を元にコードを自動で生成してくれるとても便利なツールです。
全てのプログラマーにとって強力なサポートとなり、教育など様々な分野で応用できるサービスを目指し開発を進めて参ります。
対応言語
SQL
Python
Javascript
HTML & CSS
スマートコントラクト
C++
PHP
Go
R
Perl
Ruby
正規表現
Haskell
Lisp
なにしたの
今回はお試しなので、通常のユースケースとは(恐らく)反対のアプローチをとりました。
ある程度複雑な用途を見てみたいので私が過去、業務で書いたこのコードをAI Programmerに書いてもらうことにしました。
result_sets = [
c if c['id'] != 10 else {'id': 10, 'name': 'ABCキャンペーン'} for c in result_sets]
自然言語にしてみる
絞りだしたのがこちらの文章。
要素が'id'と'name'で構成されたdictの配列result_setsから「'id'が'10'」のものだけ「'name'を'ABCキャンペーン'」に変換する
AI Programmerに書いてもらう
で、出てきたのがこちら。
result_sets = [{'id': '10', 'name': 'ABCキャンペーン'}, {'id': '20', 'name': 'DEFキャンペーン'}]
for result in result_sets:
if result['id'] == '10':
result['name'] = 'ABCキャンペーン'
思ったよりそれらしいのが出てきたなぁと思ったのと、検査値みたいなのもつけてくれて嬉しい反面、性能的にはビハインドのある内包表記を使っていないなぁと思い、与える自然言語を調整。
自然言語にしてみる②
内包表記で変換と指示するのと、'もの'という指定だと全然ダメな結果になるので'要素'に修正。
要素が'id'と'name'で構成されたdictの配列result_setsの「'id'が'10'」の要素の「'name'を'ABCキャンペーン'」に内包表記で変換する。
AI Programmerに書いてもらう②
そうして出てきたのがこちら。
[{'id': '10', 'name': 'ABCキャンペーン'} if result_set['id'] == '10' else result_set for result_set in result_sets]
感想
与える自然言語と、その結果に癖があり安定していないものの、最終的には自分で書いたものと遜色ないものが出てきて、感動しました。
少し複雑なロジックを実装する際、基本的にバカみたいなコードを平たく書いてブラッシュアップしていくことが多いのですが、その初期コードや与える文章によってはそのまま使えるレベルのものが出てきたの素直にすごいなぁと思いました。
Discussion