Slide 1

Slide 1 text

コード生成を伴う LLM エージェント 2024/07/18 TokyoAI

Slide 2

Slide 2 text

コード生成を伴う LLM エージェント https://speakerdeck.com/algomatic/company_deck 生成AI × 事業開発 Algomatic MLエンジニア Shumpei Miyawaki (@catshun_)

Slide 3

Slide 3 text

ÉÅ エージェント概要 )Å LLM エージェントにおけるコードの役割 IÅ Auto Software Engineering タスク

Slide 4

Slide 4 text

コード生成を伴う LLM エージェント AIエージェントにおける自律性 自律エージェントは、環境内に存在し、その一部であり、その環境を感知し、それに対して行動するシステムである
 それは自身の目的を追求し、将来感知するものに影響を与えるために、時間をかけて行動する --- Franklin and Graesser+’97 LLM エージェント AI エージェント エージェント 自律性 ~ 指示と成果物イメージから勝手に行間を埋めてタスクを遂行する 
 → ゆえに単なる 場合もある 言語生成器がエージェントと誤認識されている 状態 si において、タスクを遂行するために推論過程 s0, a0, o0, ..., si-1, ai-1, oi-1 から ※ a は言語生成, 関数呼び出し, 他者への問い合わせなどが該当する 直近の行動系列 ai:i+k を動的に推論し実行する

Slide 5

Slide 5 text

コード生成を伴う LLM エージェント Agenticness システムが複雑な環境で、直接的な介入が制限されるなか、適応的に複雑な目標を達成できる度合い https://openai.com/index/practices-for-governing-agentic-ai-systems/ 目標の複雑さ 目標達成がどれほど難しく、目標範囲がどれだけ広いか

 信頼性・速度・安全性が含まれる場合もある 環境の複雑さ システムが目標達成する環境がどれほど複雑であるか クロスドメイン、複数のステークホルダ、長期運用、外部ツールの複数使用 適応性 システムが未知の状況にどれほど適応し反応できるか 独立性 人間の介入が制限された中で確実に目標達成できるか

Slide 6

Slide 6 text

コード生成を伴う LLM エージェント Agenticness の高さを維持したシームレスな業務代行 特定業務の代行におけるエージェント活用の第一歩は エージェント ではない ドメインエキスパートのAI活用( )による業務フローの改善が先行すべき エージェンシ 業務改善 達成度 高いレベルの agenticness × 闇雲なAI導入 は 失敗する可能性が高い ドメインエキスパート による AI 活用 (エージェンシ) ドメインエキスパート の思考をトレースした AIエージェント

Slide 7

Slide 7 text

高い agenticness が要求される コード生成を伴う LLM エージェント エージェンシによるデータ分析業務の取り組み例 データ分析業務の 60~70% を占める がエージェンシによって効率化されると、 価値出せる部分に割り当てる工数が増え、示唆出しのための試行回数 ことができる プログラミングを中心とした作業 (打席数)を増やす 分析設計 欠損値補完, 外れ値除去, 標準化, カテゴリ特徴量の変換, ... LightGBM, XGBoost, RandomForest, NN, ... データ整形, 分布の可視化ƾ データ検証 EDA モデル構築 データ検証 EDA モデル構築 データ検証 モデル構築 EDA データ検証 モデル構築 示唆出し レポート報告 プログラミングを中心とした作業 価値が出せる部分 打率 × 打席数 をあげたい

Slide 8

Slide 8 text

コード生成を伴う LLM エージェント AI 時代のユーザ体験は AAAA モデルで考えよう [Dory+’24] https://note.com/dory111111/n/n03eac77e5197

Slide 9

Slide 9 text

コード生成を伴う LLM エージェント AI 時代のユーザ体験は AAAA モデルで考えよう [Dory+’24] https://note.com/dory111111/n/n03eac77e5197

Slide 10

Slide 10 text

Automation Gemini in Colab Enterprise コード生成 デバッグ コード補完 u ホスト型の Jupyter Notebook サービw u Google Colab ノートブック上で Gemini 1.5 によるアシスタントが提供 コード生成を伴う LLM エージェント https://cloud.google.com/gemini/docs/colab/overview Advice Augmentation Agent

Slide 11

Slide 11 text

Automation Cursor コード生成を伴う LLM エージェント https://www.cursor.com/ Advice Augmentation Agent ˆ コードの自動生成、補完、デバッグ、チャット機能などをサポートするコードエディタ デバッグ コード編集 チャット(画像入力、@ドキュメント指定なども可能) コードレビュー

Slide 12

Slide 12 text

CodeRabbit コード生成を伴う LLM エージェント X GitHub の Pull Request の要約、コードレビュー、チャット機能が搭載されたプラットフォーム https://coderabbit.ai/ Advice Augmentation Automation Agent PR の要約 チャット デバッグ

Slide 13

Slide 13 text

Devin コード生成を伴う LLM エージェント g ソフトウェアエンジニアリングで要求されるタスク等を実行するために設計された自律型エージェンB g Cognition AI と Microsoft がパートナーシップ連携したことで Azure 上で利用可能に https://coderabbit.ai/ Advice Augmentation Automation Agent

Slide 14

Slide 14 text

コード生成を伴う LLM エージェント C ユーザのユースケースによって適切な設計は異な1 C 開発者が作りたいものではなく、ユーザが使うものを作る どんなユーザ体験を目指せば良いか? 言語モデルだから 万が一の誤り発生リスクが... 言語モデルはソフトな関数として機能 データクラスを出力することでエラーを検知 4/5 で 70% の品質 高い再現性・追跡可能 e.g. 中間データ変換器としての LLM + 関数呼び出し e.g. エンドツーエンドの推論器としての LLM 1/5 で 98% の品質 ブラックボックス

Slide 15

Slide 15 text

ÉÅ エージェント概要 )Å LLM エージェントにおけるコードの役割 IÅ Auto Software Engineering タスク

Slide 16

Slide 16 text

コード生成を伴う LLM エージェント LLM エージェントにおけるコードの役割 実行可能なコードによる機能拡張・後処理 実行可能なコード生成 ‚ 実行対象となる関数の呼び出h ‚ 構造化データ出力のための型指˜ ‚ 構成的推論を伴う計画立† ‚ 行動方針を論理構造として表€ ‚ 単一責任の原則に従うことで推論過程を追跡すy ‚ アトミックな関数定義による累積的成果 コードによる制約の付与 ‚ 思考過程を論理構造として表€ ‚ 変数・関数・コメントを利用して
 タスクを曖昧性なく記述 グレッグ・マキューン, 高橋璃子 エフォートレス思考 (かんき出版) 明瞭な論理構造を再現できる形式で指定

Slide 17

Slide 17 text

コード生成を伴う LLM エージェント LLM から望ましい出力を得るためのプロンプト記法 役割 タスク目的 サブタスク 変数説明 推論形式 出力形式 変数入力 誘導語 意味表現 文表現 談話構造   曖昧な表現・項の省略・代名詞を避け、語句の 特定性 をとにかく上げる   接続詞・格助詞を適切に指定して認知負荷の低い語順を心がける   タグを用いて章・節・項に役割を付与し、談話構造を明確にする 制約事項 出力過程   思考の連鎖を促すダミー出力・誘導語を用いて出力を制限する タスク説明 制約事項 タスク開始 思考方法や推論過程を制限する 出力の期待値(〇字程度、〇向けに、等)や判定基準(〇〇の観点、論理的に、等)を記述する 反復されたくない制約語や否定表現を含めない

Slide 18

Slide 18 text

コード生成を伴う LLM エージェント Prompting with Pseudo-Code Instructions [Mishra+’23, EMNLP] https://openreview.net/forum?id=2prcotJejU ¡ 擬似コードを用いたプロンプト手法が BLOOM, CodeGen のタスク性能改善に寄与することを示しj ¡ Super-NaturalInstructions から 132 タスクの指示を Python 構造による擬似コードで記g ¡ コメント, docstring, 擬似コードの構造的手がかりが、性能向上に寄与していることを示した 感情分類タスクにおける 疑似コードを用いたプロンプト 疑似コードが単純な形式であり、if, for などの構文別の指示追従性については不明 最新の言語モデルにおけるコードの読解性能別の横断評価は未実施 複雑なコード読解を伴う学習が言語モデルの指示追従性を向上させるか不明 表4. 疑似コードを用いたプロンプトは自然言語によるプロンプトに対して高い精度を示している

Slide 19

Slide 19 text

コード生成を伴う LLM エージェント コードを伴うプロンプト手法は実用的か? コードは コード記述によって 条件分岐 や ループ における推論過程のトレースは難しく、   コードが正しくても推論結果が異なる は存在する 言語モデルによる読解は論理構造が明示的に反映されるわけではない 今後言語モデルの性能改善に伴って実現できるかも 明瞭な指示を記述する方法論の一つとして有効 指示追従性が向上するか明らかでない compositional gap ¼ 簡単なタスク設定では有効といわれÄ ° PAL , PoT , CoC , CodePrompting [Gao+’22] [Chen+’23] [Li+’23] [Hu+’23] 疑似コードで推論過程を制限したい...

Slide 20

Slide 20 text

コード生成を伴う LLM エージェント ️ 視覚言語モデルの学習時は出力形式の指定を含めると指示追従性が向上 コードを含む学習が長距離依存性を改善 する話はある一方で、 コードによる推論過程の制約が指示追従性に与える影響については個人的興味 [Li+’23; Muennighoff+’23]

Slide 21

Slide 21 text

コード生成を伴う LLM エージェント LLM エージェントにおけるコードの役割 実行可能なコードによる機能拡張・後処理 実行可能なコード生成 ‚ 実行対象となる関数の呼び出h ‚ 構造化データ出力のための型指˜ ‚ 構成的推論を伴う計画立† ‚ 行動方針を論理構造として表€ ‚ 単一責任の原則に従うことで推論過程を追跡すy ‚ アトミックな関数定義による累積的成果 コードによる制約の付与 ‚ 思考過程を論理構造として表€ ‚ 変数・関数・コメントを利用して
 タスクを曖昧性なく記述 グレッグ・マキューン, 高橋璃子 エフォートレス思考 (かんき出版) 明瞭な論理構造を再現できる形式で指定

Slide 22

Slide 22 text

コード生成を伴う LLM エージェント CodeAct [Wang+’24, ICLR] https://arxiv.org/abs/2402.01030 CodeAct AddAgenda(content=” ”, time=” ”) Meeting with John 2023-10-26 09:00:00 JSON { “action”: “ ”, “content”: “ ”,
 “time”: “ ” } AddAgenda Meeting with John 2023-10-26 09:00:00 Text Action: , content: , time: AddAgenda Meeting with John 2023-10-26 09:00:00 À LLM エージェントの行動を実行可能な Python コードで統一した CodeAct を提› À Python インタプリタと統合され、実行結果を含む環境からのあらゆるテキスト観察に観察に基づいて行動を新たに作成・動的に修正する M3ToolEval における成功率

Slide 23

Slide 23 text

コード生成を伴う LLM エージェント 解きたいタスクに対してコーディング粒度やワークフロー設計をどう選択するか? a 対象タスクが非定型である場合、未知の状態に対してエラーの影響を最小限に抑えたW a 対象タスクが定型である場合、エラーが発生しない効率的なワークフローを構築したい タスク モジュール粒度 ワークフロー メリット 非定型タスク atomic
 右を向く, 前に進む, etc インターリーブ 柔軟な対応 定型タスク organism 机の上のリンゴを取る, etc 関数組み替え 安定した実行

Slide 24

Slide 24 text

コード生成を伴う LLM エージェント v 視覚タスクにおける構成性を仮定して 2 段階の推論を行7 v ❶ プログラム生成: 事前定義した視覚処理関数を用いて LLM がプログラムを生S v ❷ 生成したプログラムに基づいて解析・実行し最終出力を得る Visual Programing [Gupta+’23, CVPR] https://github.com/allenai/visprog

Slide 25

Slide 25 text

コード生成を伴う LLM エージェント g 視覚タスクにおける構成性を仮定して状態遷移グラフを用いたツールの選択を行' g 遷移グラフにおけるノード間のエッジははヒューリスティックスに事前定義する AVIS [Hu+’23, NeurIPS] https://arxiv.org/abs//2306.08129

Slide 26

Slide 26 text

コード生成を伴う LLM エージェント 決定性有限な状態遷移モデルはテストがしやすい

Slide 27

Slide 27 text

ÉÅ エージェント概要 )Å LLM エージェントにおけるコードの役割 IÅ Auto Software Engineering タスク

Slide 28

Slide 28 text

ソフトウェア開発で必要とされるスキル コード生成を伴う LLM エージェント I 本スライドで紹介するエージェントではコード記述・デバッグを対象としていw I コード記述・デバッグはソフトウェア開発に求められる一部のスキルであることに注意されたい ※ SWEBOK を参照して作成

Slide 29

Slide 29 text

コード生成を伴う LLM エージェント SWE-bench [Jimenez+’24, ICLR] https://www.swebench.com … 12 Python リポジトリの GitHub Issue, PR から収集された問題解決のための 2,294 件の評価セット 図6. モデルへの入力インスタンスと正解パッチ、予測パッチ、予測パッチに対するテスト実行の例 図1. SWE-bench のタスク概要. システムは問題記述とコードベースからテストに合格するためのパッチを生成する 収集対象 リポジトリ

Slide 30

Slide 30 text

f SWE-bench から抽出した 300 件で評B f 以下の問題が指摘されている f 再現可能な情報が含まれない (9.3% f 解決策が自然言語で記述される (10.0% f 問題の行番号が含まれる (9.7%) [Xia+’24p (2024/07/17 時点) SWE-bench Lite: GitHub PR の問題解決リーダーボード Devin 直後の競合 Not Agent Closed Systems コード生成を伴う LLM エージェント https://www.swebench.com

Slide 31

Slide 31 text

コード生成を伴う LLM エージェント SWE agent [Yang+’24] https://arxiv.org/abs/2405.15793 i LM Agent 特化の Computer Interface を介して ReAct による , を遂行すv i コマンド群はシェルスクリプトで記述される 思考・行動 (コマンド) 観測 (環境フィードバック) ファイル・コードブロックの検索 コードの閲覧 コードの修正 コンテキストの保持 i 編集コマンドはファイルビューアと連携して動作、エージェントが開いているファイルの特定の行範囲を 置き換える。編集コマンドの引数は、開始行、終了行、置換テキストr i 編集後は FileViewer が自動的に呼び出されるr i 編集機能に Linter を統合し、ファイル編集時に統語エラーを、エラーが導入される前後のファイル内容の スニペットと共に表示する。無効な編集は破棄され、エージェントは再度ファイルの編集を試みる。 Thought & Action Observation žá Context Management 情報豊富なプロンプト、エラーメッセージ、履歴プロセッサを使用して、エージェントのコンテキストを簡潔かつ有益に保ちます。 エージェントは、bashおよびACIコマンドの正しい使用法について、指示、ドキュメント、およびデモンストレーションを受け取ります。 各ステップで、システムはエージェントに思考と行動の両方を生成するよう指示します (Yao+’23)。 形式が不正な生成はエラーレスポンスを引き起こし、図31に示すようにエージェントに再試行を求め、正しい生成が受け取られるまで繰り返されます。正しい生成が受け取られると、最初のエ ラーメッセージを除いてすべての過去のエラーメッセージは省略されます。 エージェントの環境応答は、図30に示すテンプレートを使用してコンピュータの出力を表示します。出力が生成されない場合は、「コマンドは正常に実行され、出力は生成されませんでした」 という特定のメッセージを出力する。コンテキストの関連性をさらに向上させるために、最後の5つの観察に先行する観察はそれぞれ1行にまとめられます。これにより、計画と行動履歴に関す る重要な情報を維持しつつ、不要なコンテキストを削減し、より多くの対話サイクルを可能にし、古いファイル情報の表示を避けます。§Aにはさらなる実装の詳細が提供されています。 i クエリに関連するファイル ・ コードを 検Ç i 最大 50 件 の 結果 を返す i ファイル ウ ィンド ウ と scroll _d own な ど の 移 動コマンドが用 意 される

Slide 32

Slide 32 text

エージェントは速く成功し、ゆっくりと失敗する [Yang+’24] コード生成を伴う LLM エージェント https://www.swebench.com 失敗への固執によるエラー伝搬 = hallucination snowballing [Zhang+’23; Zhong+’24] ¶ SWE agent では、予算やステップ数を増やしても解決率が向上するとは限らな· ¶ 提出されたパッチはステップ数が多くなるほど失敗しやすくな› ¶ インターリーブ型エージェントは関数の重複呼び出しや無限ループが発生しやすい ¶ 一度失敗するとエラー伝搬が発生しやすい [Yao+’23; Yao+’23Ð [Zhang+’23; Zhong+’24]

Slide 33

Slide 33 text

表3. 自己修正による精度の改悪 表7. 自己修正による精度の改悪 Large Language Models Cannot Self-Correct Reasoning Yet [Huang+’24, ICLR] コード生成を伴う LLM エージェント https://openreview.net/forum?id=IkmD3fKBPQ © 外部からのフィードバックを伴わない LLM の を示 © またマルチエージェントによる改善は、議論や討論に起因するものではなく、
 であると主張 自己修正が性能低下をもたらす可能性 複数のモデル間での一貫性に起因するもの © Standard Prompting に対して MAD, SC が大幅に精度向æ © 一方 MAD は SC に対して僅かに精度が低下

Slide 34

Slide 34 text

コード生成を伴う LLM エージェント AgentCoder [Huang+’23] https://arxiv.org/abs/2312.13010 ° 3 つのエージェントで構成されるマルチエージェントフレームワー¦ : 特定のタスクを解決するため、問題の把握・明瞭化・アルゴリズムやメソッドの選択・擬似コード生成・コード生成による 思考の連鎖を伴うコード生成を実行します。またコード実行が失敗した際のコード修正の役割も担っています’ : {基本的な, エッジとなる, 大規模な入力を伴う} テストケースを生成します’ : ローカル環境でテストを実行し、合否に応じてユーザおよびプログラマにその結果を返します。 ¹ ❶ プログラマ ¹ ¹ ❷ テスト設計者 ❸ テスト実行者 図1. HumanEval における AgentCoder の概要図 表3. 各評価ベンチマークにおける反復回数別の Pass@1 (GPT-3.5-turbo). 反復回数が増えるほど Pass@1 精度が向上する。 表6. 各評価ベンチマークにおける シングルエージェントとマルチエージェント による Pass@1 比較.

Slide 35

Slide 35 text

コード生成を伴う LLM エージェント Modular Architecture of Software-engineering AI (MASAI) [Arora+’24] ~ 複数のサブエージェントが事前定義された目的を達成するために実行され“ ~ モジュール性の責任分解による具体性の付与が成功のカv ~ Edit Localizer は ReAct, 反復改良的なパッチ修正よりサンプリングなどモジュール別に設計すると良いと主張 https://arxiv.org/abs/2406.11638

Slide 36

Slide 36 text

コード生成を伴う LLM エージェント MAGIS [Arora+’24] Y 複数のサブエージェントが事前定義された目的を達成するために実行されるマルチエージェントシステ‰ … モジュール性の責任分解による具体性の付与が成功のカ … Edit Localizer は ReAct, 反復改良的なパッチ修正よりサンプリングなどモジュール別に設計すると良いと主張 https://arxiv.org/abs/2403.17927

Slide 37

Slide 37 text

コード生成を伴う LLM エージェント CodeR [Arora+’24] ’ 人間のイシュー解決プロセスに着想を得た、マルチエージェントシステb ’ タスクグラフを動的に使い分けたり、既存システムのいいとこどりもしている https://arxiv.com/abs/2406.01304

Slide 38

Slide 38 text

コード生成を伴う LLM エージェント s SWE-bench Lite において LLM による行動選択・観測を伴わないアプローチ Agentless を提T s 問題記述とコードベースを受け取ると ❶ 編集箇所の特定 ❷ エラー修正による 2 段階で実‚ s エージェント機構を有する一部の既存システムより高い解決率・エラー特定率を示した 目的が限定されるタスクは Agentless で十分な場合がある [Xia+’24] https://arxiv.org/abs/2407.01489 表1. SWE-bench Lite における性能比較