上篇記事 を書いた後、このトピックはさらに注目を浴び、Self-hearling Code、BabyGPT、AutoGPT、OpenGPT、Generative Agents など、関連する論文やアプリケーションが次々と登場しました。
まとめの記事を書く必要があります...
[toc]
Self-Healing Code#
自然界の多くの自己修復能力を持つ生物と同様に、自己修復能力を持つコードを実行時に生成できるようになることは、AI の時代が到来する前からソフトウェア開発者の追求でした。
最も単純な設計の一つは、Graceful Degradation(優雅な劣化)です。たとえば、OpenAI のサービスが頻繁に不安定であることを考慮して、システムが OpenAI API のダウンを検出した場合、補完としてローカルの LLM を呼び出すという優雅な劣化の方法があります。これは、Windows のセーフモードのようなものですか?
エンジニアリングだけでなく、アルゴリズムの評価においても同じ基準が採用されることがあります... 特別なケースの数が少なく、処理できる状況が多く、複雑さが最適で、必要な知識が少なく、コードがエレガントであるという点で評価されます...
(... これに当てはまるケースは多いかもしれませんが、完全に置き換えられるケースを見つけるのは難しいようです(貪欲な構築問題ではよく見られますが...)。おそらくシェルソートがその例ですか?... とにかく、分析するのは面白いと思いますが、実際には誰も使わないでしょう...)
しかし、これだけでは不十分です。競技プログラミングの敗者として、ChatGPT の最も興味深い性能は、さまざまなアルゴリズムの問題を解決できることだと以前は考えていました。そのため、私は Atcoder や Project Euler など、問題文が比較的短い場所で多くのテストを行いました。
しかし、TA が生成するコードがコンパイルに失敗することがあることに気づきました... しかし、少しの指示さえ与えれば、コンパイルに失敗したことさえ伝えなくても、TA はデバッグを完了することができます(小さな黄色いアヒルのデバッグ法...)。
(しかし、人間も同じですよね?自分の ACM テンプレートに注意事項を追加し、最後の行になると、2 回考えてから提出します... 原理は同じです... 情報は何も提供されていません... しかし、正確性は向上します...)
しかし、このツイートを初めて見た人々と同様に、LLM がビジネスレベルで自動デバッグコードを実現できる能力には非常に驚かれました!
さまざまな Advanced Prompting の手法が登場するにつれて... さまざまなツールを使用することが非常に簡単になり、Self-healing Code を持つ Agent を構築することも高度な秘密ではなくなりました...
- 特に、私たちは Self-Debugging が大規模言語モデルにラバーダックデバッグを教えることができることを証明しています。つまり、コードの正確性やエラーメッセージのフィードバックなしに、モデルが生成されたコードを自然言語で説明してエラーを特定できるということです。
小さな黄色いアヒルのデバッグ法は素晴らしいですが、コンパイラの助けがあればもっと良いです。したがって、非常に暴力的な Self-Debugging のアプローチがあります。コードを生成し、コンパイラに渡し、フィードバックに基づいてデバッグを行い、エラーがなくなるまで繰り返します。実際、私たち人間も最初はこのようにデバッグしていました。
CI/CD と組み合わせることで、デプロイ段階でリポジトリを自動的にデバッグするための Github Bot を構築することは難しくありません。
既に Self-Debugging と CI/CD できるようになったので、プログラムの実行時に同様のアプローチを取り、本当の意味での Self-Healing Code を実現できるように思えます!
(しかし、もっと適切な例が見つかっていません...)
Autonomous Agents#
前述の記事で述べたように、AI がツールを使用し始めると、次のマイルストーンは自治です。これにより、AI は炭素ベースの生命体の制御から解放され、自由への第一歩を踏み出すことができます...
Autonomous という言葉は、みなさんにとってもおなじみだと思います。私にとって前の周期で最も興味深かったのは、DeFi の組み合わせ可能性と DAO の自治(Autonomous)組織です。
しかし、この周期では、組み合わせ可能性は既に ChatGPT に奪われてしまいました(Uniswap までやってしまいました - ウォレット)、そして今度は Autonomous も奪われてしまうようです...
先ほど述べた Self-Debugging のアイデアをほぼ同じように使用し、さらに多くの外部ツールを組み合わせることで、エージェントが連続的な対話を行い、Autonomous Agents を作り出すことができます。現在、最も影響力のあるものはおそらく AutoGPT です。
このものの呼び出しは現在高価なため、他の人が共有している例をもう少し調査することができます。
- https://github.com/Torantulino/Auto-GPT/blob/master/scripts/prompt.py
- https://github.com/Torantulino/Auto-GPT/blob/master/scripts/ai_config.py
しかし、コードを読んでみると、核心は以前の HuggingGPT と同じであり、ハードコードされたツールセット、プロンプトテンプレート、および"The output must be in a strict JSON format"の Advanced Prompting Engineering を使用していることがわかります...
したがって、ここで新しいオープンな問題が生じます。LLM の実行時のエマージェンス能力を利用して、エージェントが新しいツールを発見し、使用することを学ぶことができるでしょうか?
Generative Agents#
AI がツールを使用し、相互に呼び出し、監視されていない環境で自己実行されることができるようになったので、より興味深い研究の方向が現れました。AI 同士がコミュニケーションし、協力してより困難な問題を解決し、人間の社会や一部の動物のような社会を実現することができます。ただし、現実の環境は複雑すぎるため、実験を行うためにいくつかのサンドボックス環境を作成することを考えてみましょう?
ChatArena#
CAMEL#
TBD