Slide 1

Slide 1 text

Keisuke Fujimoto (Labs) AutoGenで作るLLM Agent

Slide 2

Slide 2 text

自己紹介
 2 所属:ABEJA Labs
 テーマ:ビジョン、音声、NLP、ロボット
 
 SNS
  X (Twitter):@peisuke
  Github:https://github.com/peisuke
  note:https://note.com/peisuke 


Slide 3

Slide 3 text

● LLMとLLM Agent
 
 ● AutoGenについて
 
 ● AutoGenでできること
 本日のテーマ
 3

Slide 4

Slide 4 text

Agentとは?
 4 ● 強化学習にも出てくる、「エー ジェント」
 ● 結果を出力するだけのMLと異 なり、環境内で行動したり操作を することが特徴
 
 ● 囲碁や将棋では・・・
 ○ (1) 盤面を観測、(2) 次の手を 考え、(3) 打つ


Slide 5

Slide 5 text

● LLMに対し、(1) 目的を達成するプロセス案を提示させ、(2) 各プロセスの処理の InputをLLMによって生成・処理を行い、(3) これを逐次的に実行
 ○ LLMをChatBotだけではなく、プロセス案生成やクエリ生成に利用
 LLM Agentについて
 5 今流行っているお 笑い芸人の動画 を見たい STEP1: 最近の流行りの芸 人を検索 STEP2: 代表的な作品名 をピックアップ STEP3: 動画ユーザーに 提示 検索モジュールの出力した結果: [XXXX、XXXX、XXXX] LLMで生成した検索クエリ: [2023年 お笑い芸人 流行] クエリを利用し、外 部の検索APIを利 用 LLMで手順を生成し、プ ログラムで読み込む

Slide 6

Slide 6 text

● ユーザーがやりたいことを言うとLLMがそれを全部やってくれちゃう仕組み
 
 要するに・・・
 6 社内データを分 析したい プログラムを作っ て欲しい 動画を作って XXXについての 情報を集めて

Slide 7

Slide 7 text

ChatGPTでも使われているAgentの仕組み
 7 画像解析が必要なら・・・
 コードの実行が必要なら・・・
 ファイルの読み込みが
 必要なら
 GPT-4V 画像を描きたい場合は
 質問を投げる
 どの機能を使う かを考える


Slide 8

Slide 8 text

マルチエージェントの仕組み
 8 質問を投げる
 調査します
 ソースコードを 作ります
 結果を整理しま す


Slide 9

Slide 9 text

世の中の色々なAgent
 9 ● プログラムの自動開発の仕組み
 ● それぞれのキャラクターが、問題を解くAgentとして行 動
 ● 全体を統括するCTO、開発をするエンジニア、テストを するテスターなどのAgentが存在
 ● 利用者が指示したゴールに基づき、要件定義〜開 発〜テスト〜納品を行い、制作物を出力


Slide 10

Slide 10 text

● AutoGPT
 世の中の色々なAgent
 10

Slide 11

Slide 11 text

● Voyager:マインクラフトにおいて、次にどんなアクションをするかをLLMを用いて決 定、アクションをゲーム側に伝えて動かす
 世の中の色々なAgent
 11

Slide 12

Slide 12 text

● LangChain
 ○ 様々な種類のAgentが利用可能
 
 ● Llama Index
 ○ Data AgentにAgentの仕組みが実装
 
 ● AutoGen
 ○ MicrosoftのAgentに特化したライブラリ
 ○ 柔軟な仕組みを構築できる
 Agentを作るためのライブラリ
 12

Slide 13

Slide 13 text

● AutoGen: Microsoftが提供しているOSS
 ○ AutoGen: Enabling Next-Gen LLM Applications via Multi-Agent Conversation, preprint: 2308.08155, arxiv
 AutoGenの紹介
 13

Slide 14

Slide 14 text

AutoGenの紹介
 14

Slide 15

Slide 15 text

AutoGenを使ってできること
 15

Slide 16

Slide 16 text

AutoGenのプログラム例
 16

Slide 17

Slide 17 text

AutoGenのプログラム例
 17

Slide 18

Slide 18 text

AutoGenのプログラム例
 18

Slide 19

Slide 19 text

AutoGenのプログラム例
 19

Slide 20

Slide 20 text

● Agentの構成例
 AutoGenの簡単な原理
 20

Slide 21

Slide 21 text

● 各Agentが通信する流れ
 ○ generate_replyで各Agentがレスポンスを他のエージェントに出力
 AutoGenの簡単な原理
 21

Slide 22

Slide 22 text

● Azure OpenAI APIとOpenAI APIでの切り替えが容易
 AutoGenをAzureで動かしてみよう!
 22

Slide 23

Slide 23 text

AutoGenの色々なパターン
 23

Slide 24

Slide 24 text

● プログラムを実行
 ○ FizzBuzzのコードを書かせて実行させてみる
 色々できる、AutoGen
 24

Slide 25

Slide 25 text

● RAG + AutoGen
 ○ 検索して回答が得られなかったら、自動で再検索
 ○ 回答結果が、英語になってしまった場合も日本語で出力
 色々できる、AutoGen
 25 Retrieve 判定 再Retrieve 判定 終了 再Retrieve 終了 Retrieve 回答生成 Retriever Agent Agent 回答 質問 仮にここが英語 でも・・・ ここで日本語で 出力される Function Calling

Slide 26

Slide 26 text

● プログラムのマニュアルに基づいてコードを実行
 ○ Optunaのマニュアルを読ませて、パラメータ最適化のコードを実行させた 例
 色々できる、AutoGen
 26

Slide 27

Slide 27 text

● GroupChatという機能を用いて沢山の種類のエージェントを連携
 色々できる、AutoGen
 27 様々な役割を持つエージェントを連携 (例) ● プランナー ● コーダー ● 分析者 ● 調査者

Slide 28

Slide 28 text

標準では文字を表示するだけで、サービスに組み込めない
 AutoGenをサービスに組み込むために
 28 文字を表示するメソッドを継承し、履歴を残すカスタムクラスを作成


Slide 29

Slide 29 text

状態を持っているため、Azure Functions等のサービスに利用できない
 AutoGenをサービスに組み込むために
 29 内部状態のロード/セーブの機構を追加で開発


Slide 30

Slide 30 text


 LLM単独の汎用性ではできないことも多い中、Agentの仕組みで将来的には色ん な作業が自動化されていく
 
 まずは、AutoGenを使うことにより、非常に面白いことができそう!
 まとめ
 30