- オープンソース保守のための自動化された支援役「エージェント」を作り、オープンソースソフトウェア開発を改善することを目指すプロジェクト
- オープンソース保守に関わる反復作業の量を減らせる可能性がある
- 大規模言語モデル(LLM)の自然言語の意味解析能力と、自然言語の命令とプログラムコードの間を変換する能力は、エージェントが人とより円滑に相互作用できる新たな機会を生み出す
- LLMはエージェントの一部分であり、エージェント動作の大半は標準的かつ決定論的なコードを実行することになる
- Oscarは、開発に焦点を当てたLLM活用とは異なり、コード作成プロセスを補完または置き換えようとはしていない
- その代わり、流入するイシュー処理や、質問を既存ドキュメントに対応付けるといった面白みのない部分に焦点を当てるというアイデア
プロジェクト目標
- イシュー解決のための保守負荷を削減 [解決が常に修正を意味するわけではない]
- 変更リスト(CL)またはpull request(PR)解決のための保守負荷を削減 [解決が常に提出/マージを意味するわけではない]
- フォーラム上の質問解決のための保守負荷を削減
- より多くの人が生産的なメンテナーになれるよう支援する
アプローチ
- オープンソース保守の反復作業はGoプロジェクトに限られないため、あらゆるソフトウェアプロジェクトが再利用・拡張できるアーキテクチャを構築することが目標
- 現時点でOscarの重要な構成要素になる3つの機能を特定している:
- コントリビューターとのやり取りの中で、関連するプロジェクトコンテキストをインデックス化して提示する
- 自然言語を使って決定論的ツールを制御する
- イシューレポートとCL/PR分析を通じて、提出中または提出直後にリアルタイムで改善し、適切にラベリングおよびルーティングする
関連するプロジェクトコンテキストのインデックス化と提示
- LLMは、類似した意味を持つ文書を類似した方向を指すベクトルに写像する性質を持つ、高次元の浮動小数点ユニットベクトルである埋め込みを生成することで文書を分析できる
- 入力ベクトルに近いベクトルを検索するためのベクトルデータベースと組み合わせることで、LLM埋め込みはオープンソースプロジェクトのあらゆるコンテキストをインデックス化する非常に効果的な方法を提供する
- プロトタイプエージェントはこの機能を実装しており、Goリポジトリの新しいイシューに応答して、関連性の高いリンクを最大10件提示する
決定論的ツールを制御するための自然言語の利用
- オープンソースプロジェクトが成長するにつれて有用なツールの数も増え、すべてのツールを把握し、それぞれの使い方を覚えておくのは難しくなることがある
- LLMは、自然言語で書かれた意図と、プログラムコードやツール呼び出しのような実行可能な形式の意図との間の変換に非常に効果的
- 自然言語のリクエストを満たすために利用可能なツールを選択して呼び出すGeminiの実験を行ったが、まだ実運用できるものはない
イシューレポートおよびCL/PR分析
- 関連イシューへの投稿は限定的な分析の形ではあるが、性能に関するイシューを特定して「性能」ラベルを追加するなど、別の種類の意味解析を追加する計画
- レポートを十分に分析し、有用なものにするためにさらに情報が必要かどうかを識別できるかどうかを探る計画
- これらすべての分析と、その結果としての相互作用は、レポートが提出された直後、つまり報告者がまだ利用可能で関与しているタイミングで行われると、はるかにうまく機能する
プロトタイプ
- Oscarを探る最初のプロトタイプはGaby(Go AI bot)と呼ばれ、Goイシュートラッカー上で動作し、@gabyhelpとして投稿される
- 現在までにGabyは、GitHub上のGoイシュー内容をインデックス化し、go.dev上のGoドキュメントをインデックス化し、新しいイシューに関連リンクで応答する
- Gabyの構造は、あらゆる種類のホスティングサービス上で、あらゆるLLM、ストレージ層、ベクトルデータベースを使って実行しやすいものになっている
まだコメントはありません。