Upgrade to Pro — share decks privately, control downloads, hide ads and more …

コード生成を伴うLLMエージェント - 2024.07.18 Tokyo AI

コード生成を伴うLLMエージェント - 2024.07.18 Tokyo AI

「応用機械学習と人工知能セミナー: AIエージェント」の登壇資料です。詳細については 参照元の論文をご確認ください。不十分また不適切な言及内容がございましたらご指摘いただけますと幸いです。
https://tokyoai.connpass.com/event/324085/

Shumpei Miyawaki

July 18, 2024
Tweet

More Decks by Shumpei Miyawaki

Other Decks in Programming

Transcript

  1. コード生成を伴う LLM エージェント AIエージェントにおける自律性 自律エージェントは、環境内に存在し、その一部であり、その環境を感知し、それに対して行動するシステムである
 それは自身の目的を追求し、将来感知するものに影響を与えるために、時間をかけて行動する --- Franklin and Graesser+’97

    LLM エージェント AI エージェント エージェント 自律性 ~ 指示と成果物イメージから勝手に行間を埋めてタスクを遂行する 
 → ゆえに単なる 場合もある 言語生成器がエージェントと誤認識されている 状態 si において、タスクを遂行するために推論過程 s0, a0, o0, ..., si-1, ai-1, oi-1 から ※ a は言語生成, 関数呼び出し, 他者への問い合わせなどが該当する 直近の行動系列 ai:i+k を動的に推論し実行する
  2. コード生成を伴う LLM エージェント Agenticness システムが複雑な環境で、直接的な介入が制限されるなか、適応的に複雑な目標を達成できる度合い https://openai.com/index/practices-for-governing-agentic-ai-systems/ 目標の複雑さ 目標達成がどれほど難しく、目標範囲がどれだけ広いか

 信頼性・速度・安全性が含まれる場合もある 環境の複雑さ

    システムが目標達成する環境がどれほど複雑であるか クロスドメイン、複数のステークホルダ、長期運用、外部ツールの複数使用 適応性 システムが未知の状況にどれほど適応し反応できるか 独立性 人間の介入が制限された中で確実に目標達成できるか
  3. コード生成を伴う LLM エージェント Agenticness の高さを維持したシームレスな業務代行 特定業務の代行におけるエージェント活用の第一歩は エージェント ではない ドメインエキスパートのAI活用( )による業務フローの改善が先行すべき

    エージェンシ 業務改善 達成度 高いレベルの agenticness × 闇雲なAI導入 は 失敗する可能性が高い ドメインエキスパート による AI 活用 (エージェンシ) ドメインエキスパート の思考をトレースした AIエージェント
  4. 高い agenticness が要求される コード生成を伴う LLM エージェント エージェンシによるデータ分析業務の取り組み例 データ分析業務の 60~70% を占める

    がエージェンシによって効率化されると、 価値出せる部分に割り当てる工数が増え、示唆出しのための試行回数 ことができる プログラミングを中心とした作業 (打席数)を増やす 分析設計 欠損値補完, 外れ値除去, 標準化, カテゴリ特徴量の変換, ... LightGBM, XGBoost, RandomForest, NN, ... データ整形, 分布の可視化ƾ データ検証 EDA モデル構築 データ検証 EDA モデル構築 データ検証 モデル構築 EDA データ検証 モデル構築 示唆出し レポート報告 プログラミングを中心とした作業 価値が出せる部分 打率 × 打席数 をあげたい
  5. 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
  6. Automation Cursor コード生成を伴う LLM エージェント https://www.cursor.com/ Advice Augmentation Agent ˆ

    コードの自動生成、補完、デバッグ、チャット機能などをサポートするコードエディタ デバッグ コード編集 チャット(画像入力、@ドキュメント指定なども可能) コードレビュー
  7. Devin コード生成を伴う LLM エージェント g ソフトウェアエンジニアリングで要求されるタスク等を実行するために設計された自律型エージェンB g Cognition AI と

    Microsoft がパートナーシップ連携したことで Azure 上で利用可能に https://coderabbit.ai/ Advice Augmentation Automation Agent
  8. コード生成を伴う LLM エージェント C ユーザのユースケースによって適切な設計は異な1 C 開発者が作りたいものではなく、ユーザが使うものを作る どんなユーザ体験を目指せば良いか? 言語モデルだから 万が一の誤り発生リスクが...

    言語モデルはソフトな関数として機能 データクラスを出力することでエラーを検知 4/5 で 70% の品質 高い再現性・追跡可能 e.g. 中間データ変換器としての LLM + 関数呼び出し e.g. エンドツーエンドの推論器としての LLM 1/5 で 98% の品質 ブラックボックス
  9. コード生成を伴う LLM エージェント LLM エージェントにおけるコードの役割 実行可能なコードによる機能拡張・後処理 実行可能なコード生成 ‚ 実行対象となる関数の呼び出h ‚

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

    出力形式 変数入力 誘導語 意味表現 文表現 談話構造   曖昧な表現・項の省略・代名詞を避け、語句の 特定性 をとにかく上げる   接続詞・格助詞を適切に指定して認知負荷の低い語順を心がける   タグを用いて章・節・項に役割を付与し、談話構造を明確にする 制約事項 出力過程   思考の連鎖を促すダミー出力・誘導語を用いて出力を制限する タスク説明 制約事項 タスク開始 思考方法や推論過程を制限する 出力の期待値(〇字程度、〇向けに、等)や判定基準(〇〇の観点、論理的に、等)を記述する 反復されたくない制約語や否定表現を含めない
  11. コード生成を伴う 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. 疑似コードを用いたプロンプトは自然言語によるプロンプトに対して高い精度を示している
  12. コード生成を伴う LLM エージェント コードを伴うプロンプト手法は実用的か? コードは コード記述によって 条件分岐 や ループ における推論過程のトレースは難しく、

      コードが正しくても推論結果が異なる は存在する 言語モデルによる読解は論理構造が明示的に反映されるわけではない 今後言語モデルの性能改善に伴って実現できるかも 明瞭な指示を記述する方法論の一つとして有効 指示追従性が向上するか明らかでない compositional gap ¼ 簡単なタスク設定では有効といわれÄ ° PAL , PoT , CoC , CodePrompting [Gao+’22] [Chen+’23] [Li+’23] [Hu+’23] 疑似コードで推論過程を制限したい...
  13. コード生成を伴う LLM エージェント LLM エージェントにおけるコードの役割 実行可能なコードによる機能拡張・後処理 実行可能なコード生成 ‚ 実行対象となる関数の呼び出h ‚

    構造化データ出力のための型指˜ ‚ 構成的推論を伴う計画立† ‚ 行動方針を論理構造として表€ ‚ 単一責任の原則に従うことで推論過程を追跡すy ‚ アトミックな関数定義による累積的成果 コードによる制約の付与 ‚ 思考過程を論理構造として表€ ‚ 変数・関数・コメントを利用して
 タスクを曖昧性なく記述 グレッグ・マキューン, 高橋璃子 エフォートレス思考 (かんき出版) 明瞭な論理構造を再現できる形式で指定
  14. コード生成を伴う 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 における成功率
  15. コード生成を伴う LLM エージェント v 視覚タスクにおける構成性を仮定して 2 段階の推論を行7 v ❶ プログラム生成:

    事前定義した視覚処理関数を用いて LLM がプログラムを生S v ❷ 生成したプログラムに基づいて解析・実行し最終出力を得る Visual Programing [Gupta+’23, CVPR] https://github.com/allenai/visprog
  16. コード生成を伴う LLM エージェント SWE-bench [Jimenez+’24, ICLR] https://www.swebench.com … 12 Python

    リポジトリの GitHub Issue, PR から収集された問題解決のための 2,294 件の評価セット 図6. モデルへの入力インスタンスと正解パッチ、予測パッチ、予測パッチに対するテスト実行の例 図1. SWE-bench のタスク概要. システムは問題記述とコードベースからテストに合格するためのパッチを生成する 収集対象 リポジトリ
  17. 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
  18. コード生成を伴う 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 な ど の 移 動コマンドが用 意 される
  19. エージェントは速く成功し、ゆっくりと失敗する [Yang+’24] コード生成を伴う LLM エージェント https://www.swebench.com 失敗への固執によるエラー伝搬 = hallucination snowballing

    [Zhang+’23; Zhong+’24] ¶ SWE agent では、予算やステップ数を増やしても解決率が向上するとは限らな· ¶ 提出されたパッチはステップ数が多くなるほど失敗しやすくな› ¶ インターリーブ型エージェントは関数の重複呼び出しや無限ループが発生しやすい ¶ 一度失敗するとエラー伝搬が発生しやすい [Yao+’23; Yao+’23Ð [Zhang+’23; Zhong+’24]
  20. 表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 に対して僅かに精度が低下
  21. コード生成を伴う 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 比較.
  22. コード生成を伴う LLM エージェント Modular Architecture of Software-engineering AI (MASAI) [Arora+’24]

    ~ 複数のサブエージェントが事前定義された目的を達成するために実行され“ ~ モジュール性の責任分解による具体性の付与が成功のカv ~ Edit Localizer は ReAct, 反復改良的なパッチ修正よりサンプリングなどモジュール別に設計すると良いと主張 https://arxiv.org/abs/2406.11638
  23. コード生成を伴う LLM エージェント s SWE-bench Lite において LLM による行動選択・観測を伴わないアプローチ Agentless

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