<< TOPへ
Communicative Agents for Software Development
・アーキテクトやPM、PGなど役割とゴールを定義して、コミュニケーションすることを実現している。すごすぎる。感動の域。2023年。
・以前読んで試したことがあったけど、やはり本当に面白い論文。SWの自動開発は夢がある。でも夢じゃなくなっている。注目すべきは現実のウォーターモデルのモデル化だと思う。
・以下は、抜粋。本当にそうだなって思う。
>生成されるソフトウェアは、実行ごとに異なる場合があります。その結果、この技術は、バリエーションが許容できるオープンで創造的なソフトウェア生産シナリオに最も適しています。さらに、ソフトウェアがユーザーのニーズを満たせない場合もある。これは、ユーザーの要求が不明確であることと、テキストやコード生成に固有のランダム性に起因している
ユーザー要求がどれだけ明確かってことが、要件定義につながるのよね。。。
>実世界のジュニアプログラマやエンジニアを支援する可能性があるが、高レベルまたは大規模なソフトウェア要件に対応する完璧なソースコードを生成することは、システムにとって困難である。この困難さは、エージェントが特定の実装の詳細を自律的に決定する能力が限られているために、しばしば長時間の議論が何度も発生することに起因している。さらに、大規模なソフトウェア開発は、与えられた時間的制約の中で欠陥や脆弱性を特定することが困難になるため、査読者とテスターの双方にとって困難であることが判明しています。
大規模なSWを作るための本質的な問題とはなにか?業務知識か?などなど思う
・以下は以前やった実行例。
---
$ python run.py --task "コマンドラインで動作するオセロ"
・こんなテキトーなシステム要件1行もらって「あとは自分で考えて作ってね!」と言われた文句言うけど、
ChatDEVは、果たしてどのようなものを開発してくれるのか。
・10分ほど動いたうえで、出来上がったプログラムソースを実行してみました。以下は実行結果です。
$ python main.py
0 1 2 3 4 5 6 7
0
1
2
3 W B
4 B W
5
6
7
Black's turn (B)
Enter your move (row col): 3 2
0 1 2 3 4 5 6 7
0
1
2
3 B B B
4 B W
5
6
7
White's turn (W)
Enter your move (row col): 4 2
0 1 2 3 4 5 6 7
0
1
2
3 B B B
4 W W W
5
6
7
・Bが黒で、Wが白ですね。ちゃんと動いています!、、、でも、白も黒も私が操作しなきゃいけないことに気づきました。そうではない。
そしてこういうことは、要件定義する側の問題なんですね。。。ChatDEVは言われた通りのものを忠実に作っただけですので。。
・ということで、次はこのように依頼をしてみました
$ python run.py --task "コマンドラインで動作するオセロ。相手はAIのため一人で遊べる。ゲームスタート時に、AIの強さを、強い、普通、弱いの3つから選ぶことができる。選んだ強さによりAIの強さが定まる。"
・再び10分ほど動いたうえで、出来上がったプログラムソースを実行してみました。以下は実行結果です。
(可能な方は等幅フォントにしてもらえると、見やすいです)
$ python main.py
Welcome to Othello!
Please select the AI difficulty:
1. Strong
2. Normal
3. Weak
Enter the number corresponding to the AI difficulty: 1
1 2 3 4 5 6 7 8
-----------------
1 | |
2 | |
3 | |
4 | X O |
5 | O X |
6 | |
7 | |
8 | |
-----------------
It's X's turn.
Enter the row number (1-8): 3
Enter the column number (1-8): 4
Invalid move. Please try again.
Enter the row number (1-8): 3
Enter the column number (1-8): 5
1 2 3 4 5 6 7 8
-----------------
1 | |
2 | |
3 | X |
4 | X X |
5 | O X |
6 | |
7 | |
8 | |
-----------------
It's O's turn.
1 2 3 4 5 6 7 8
-----------------
1 | |
2 | |
3 | O O |
4 | X O |
5 | O X |
6 | |
7 | |
8 | |
-----------------
It's X's turn.
Enter the row number (1-8):
・おお!ちゃんと動いています!X側が私ですが、O側はAIがコマを置いてくれています。
このことから以下の2つのことがわかります。
A)AIは、事前にオセロを学習して、その知識を獲得していること。(要件定義者は、オセロのルールを教えなくてよい)
B)また、その知識を元にプログラムを開発できること。
社会一般として広まっていることは、AIは学習済みであり得意分野なんですね。
・そして今回興味深いことは、今回は結果的に「AIにAIを作らせた」という点です。
もちろん初歩的なオセロのAIだったのですが、
これはメタ的(一段階上)な観点からも、AIの進化とその適用範囲の広さを感じています。
・AIが単なるツール以上のものとして成長していることを感じる。