Slide 1

Slide 1 text

ChatGPT Pluginからプロダクト応用まで 〜大規模言語モデルの力を引き出す方法〜 1


Slide 2

Slide 2 text

イタンジ株式会社 経営企画 マネージャー 石見 淳太郎 #本日のモデレーター #Vartical SaaS好き #普段はスーツ着ない #今日は代打 【経歴】 イタンジにて、カスタマーサポート、カスタマーサクセ ス、PMMなどSaaSビジネスの運用/立上/グロースを 行った後、現在は全社戦略の立案と新規事業開発に 従事。

Slide 3

Slide 3 text

300 イタンジのDX推進への取り組みは、 DX銘柄2022の選定を通じて評価されてい ます。(3年連続) 2023年1月末 3

Slide 4

Slide 4 text

4

Slide 5

Slide 5 text

5

Slide 6

Slide 6 text

6

Slide 7

Slide 7 text

7

Slide 8

Slide 8 text

8

Slide 9

Slide 9 text

イタンジの情報は、Twitterをフォローお願いします✨
 公式アカウント
 9 Biz・PR・HRアカ ウント


Slide 10

Slide 10 text

ChatGPT Pluginからプロダクト応用まで 本日のテーマと内容
 10 テーマ 目次 ● 検索とLLMの組み合わせ presenter:丸山 拓己 ● ChatGPT応用 - 自律型エージェント - presenter:岩隈 啓悟 ※※注意事項※※
 本発表の資料は、2023年7月時点の情報を元に作成しています。 
 また、分かりやすさを優先し、表現が正確ではない部分があります。 
 
 


Slide 11

Slide 11 text

検索とLLMの組み合わせ
 - Retrieval-Augmented Generation編 - 
 
 丸山拓己


Slide 12

Slide 12 text

目次
 P13    自己紹介 P14    大規模言語モデルおさらい・苦手なこと P21    Retrieval-Augmented Generation(RAG) P37    RAGを実現するためのツール・資料 P43    終わりに P41    参考文献・資料 12

Slide 13

Slide 13 text

自己紹介
 ● 丸山 拓己
 ● 青山学院大学大学院卒
 ● GA technologies 2021年新卒入社
 ● M&A仲介の業務支援ツール開発
 13

Slide 14

Slide 14 text

大規模言語モデル
 おさらい・苦手なこと
 14


Slide 15

Slide 15 text

言語モデル(Language Model)とは
 「単語(token)の並びから続く単語(token)を予測する」ように
 学習された仕組み(モデル)のこと
 言語モデルのパラメータが多くなると、
 「大規模言語モデル(LLM)」と呼ばれるようになる
 A language model is 
 ??? 言語
 モデル
 …
 ※ 確率分布はOpenAI API playgroundで利用できるtext-davinci-003(temperature=0)のものを記載しています 
 続く単語の確率を予測する


Slide 16

Slide 16 text

大規模言語モデルの例
 16 ● GPT-3(OpenAI) ● GPT-4(OpenAI) ● PaLM(Google) ● BLOOM(HuggingFace) ● LLama(Meta) モデル名 ● ChatGPT(OpenAI) ● Bing AI(Microsoft) ● Bard(Google) ● GitHub Copilot(GitHub) アプリケーション

Slide 17

Slide 17 text

大規模言語モデルの問題点
 17 ● 生成した文章に最もらしい嘘が紛れ込むことがある ● Hallucinationの原因には様々な理由があると言われている Hallucinationsのリスク ● 外部のデータに基づいた出力が難しい ● Fine Tuningすることもできるがコスト・時間がかかる 外部データを使用できない

Slide 18

Slide 18 text

これらの問題を解決する方法
 18 ● 入力文に近い外部のデータを検索する ● 得られたデータを元に大規模言語モデルに出力を考えさせる Retrieval Augmented Generation ● どのような情報が必要かを大規模言語モデルに考えさせる ● 言語モデルが使用できるツールを用意して、使ってもらう 自律型Agent

Slide 19

Slide 19 text

これらの問題を解決する方法
 19 ● 入力文に近い外部のデータを検索する ● 得られたデータを元に LLMに出力を考えさせる Retrieval Augmented Generation ● どのような情報が必要かを大規模言語モデルに考えさせる ● 言語モデルが使用できるツールを用意して、使ってもらう 自律型Agent 前半(丸山)
 後半(岩隈)


Slide 20

Slide 20 text

検索とLLMの組み合わせ
 - Retrieval-Augmented Generation編 - 
 
 丸山拓己 


Slide 21

Slide 21 text

Retrieval-Augmented
 Generation
 21


Slide 22

Slide 22 text

Retrieval-Augmented Generation(RAG)
 22 LLMの回答を社内の文書・知識基づいたものにしたい 社内の文書が膨大すぎて、 LLMに渡せない ユーザの質問への回答に必要な文書だけを検索して
 LLMに渡してあげよう!


Slide 23

Slide 23 text

提案された論文
 23 NIPS 2020で発表
 https://arxiv.org/abs/2005.11401

Slide 24

Slide 24 text

仕組み
 24 文書DB 言語モデル サーバ ユーザ
 ①質問を受け取る
 ②必要な文書を検索 
 ③質問と文書から回 答を生成
 ④回答を送信
 社内の文書
 ⓪文書を構造化・格納 


Slide 25

Slide 25 text

論文中でのアーキテクチャ
 25 文書DB 言語モデル サーバ ユーザ
 社内の文書


Slide 26

Slide 26 text

論文中でのアーキテクチャ(検索部分)
 26 文書DB サーバ 社内の文書
 ● Dense Passage Retrieverを使用
 ● 事前に文書をBERTを使用してベクトル化(数値化) 
 ● ユーザからの質問もBERTでベクトル化 
 ● ユーザからの質問を使用して、ベクトル化された文書を検 索
 https://github.com/facebookresearch/DPR 


Slide 27

Slide 27 text

論文中でのアーキテクチャ(生成部分)
 27 言語モデル サーバ ● 回答生成にはBARTを使用
 ○ not BERT
 ○ 4億パラメータのモデルを使用
 ● 検索した文書ベクトルと質問ベクトルを結合して入 力とする 
 ○ 文書を考慮した回答が生成できる 
 ● 検索部分と一緒にファインチューニング 
 ○ 少量の質問・回答データで学習し直す 


Slide 28

Slide 28 text

この研究で得られた結果
 28 ● 質問応答において当時の最高性能を達成
 ● 生成する回答も、外部知識を用いない手法よりも多様で正確だった
 ● 人間の評価者も、RAGによって生成された回答の方が外部知識を使用しない手法 よりも好みであると評価している
 ● この研究では、RAGを使用することでHallucinationのリスクを抑えられることが確 認された


Slide 29

Slide 29 text

提案された手法をシステムに組み込むには...
 29 大規模言語モデルを自前でホスティング 検索〜生成までのファインチューニング 時間、お金、工数などのコストがかかる
 実装するまでにコストがかかる

Slide 30

Slide 30 text

30 精度は多少低くてもいいから
 もっと手軽に試したい!


Slide 31

Slide 31 text

31 OpenAIのAPIを使おう!


Slide 32

Slide 32 text

アーキテクチャ
 32 文書DB 言語モデル サーバ ユーザ
 ①質問を受け取る
 ②必要な文書を検索 
 ③質問と文書から回 答を生成
 ④回答を送信
 社内の文書
 ⓪文書を構造化・格納 


Slide 33

Slide 33 text

アーキテクチャ
 33 文書DB 言語モデル サーバ ユーザ
 社内の文書
 Embeddings API
 +
 シンプルなベクトル検索
 (コサイン類似度)


Slide 34

Slide 34 text

アーキテクチャ
 34 文書DB 言語モデル サーバ ユーザ
 社内の文書
 Chat Completion API
 +
 検索した文書を埋め込み


Slide 35

Slide 35 text

デモ: RENOSYマガジンチャットボット
 35 ● RENOSYが運営している不動産やお金の疑問をわかりやすく解決するサイト
 ● このデータを使用して、質問に回答するチャットボットを作成する
 ● mayooear氏のgpt4-pdf-chatbot-langchainをベースに作成
 https://github.com/mayooear/gpt4-pdf-chatbot-langchain

Slide 36

Slide 36 text

デモンストレーション
 36

Slide 37

Slide 37 text

RAGを実現するための
 ツール・資料
 37


Slide 38

Slide 38 text

RAGを実現するためのツール
 38 🦜🔗 LangChain 🗂 LlamaIndex 🦙

Slide 39

Slide 39 text

🦜🔗 LangChain
 
 
 39 ● 大規模言語モデルを使用したアプリ開発の支援ツール
 ○ Python版とTypeScript版がある
 ● 様々な便利モジュールが含まれている
 ○ OpenAI APIなどのAPI使用をWrapしてくれているModelsモジュール
 ○ 文書のロード・ベクトル化・検索を支援するIndexesモジュール
 ○ 外部リソースとのやりとりをE2Eで行ってくれるAgentsモジュール
 ● 更新が頻繁に行われている


Slide 40

Slide 40 text

🗂 LlamaIndex 🦙
 
 
 40 ● 大規模言語モデルと様々なデータを繋ぐことができるフレームワーク
 ● 昔はGPT Indexと呼ばれていた
 ● 構造化データから非構造化データまで様々なデータコネクターがある
 ● APIなども簡単に使用できるように整備してくれている
 ● 内部でLangChainを使用している
 ● LangChainと比較して運用向けの機能が多めな印象


Slide 41

Slide 41 text

どっちを使えばいいの?
 41 ● 簡単なQAチャットbotを作成するだけであればLlama Index
 ● もうちょっと込み入った機能を作るならLangChainの方が良さそう
 ● リリース速度はLangChainの方が速い
 ● GitHubのスター数(いいね数)もLangChainの方が多い(07/24現在)
 ○ LangChain: 56,000 star
 ○ Llama Index: 19,300 star


Slide 42

Slide 42 text

参考になりそうな論文
 42 ● Dense Passage Retrieval for Open-Domain Question Answering
 ○ https://arxiv.org/abs/2004.04906 
 ● REALM: Retrieval-Augmented Language Model Pre-Training
 ○ https://arxiv.org/abs/2002.08909 
 ● Retrieval Augmentation Reduces Hallucination in Conversation
 ○ https://arxiv.org/abs/2104.07567 
 ● Leveraging Passage Retrieval with Generative Models for Open Domain Question Answering
 ○ https://arxiv.org/abs/2007.01282 


Slide 43

Slide 43 text

まとめ
 43 ● 言語モデル単体では、外部の知識を使用することが困難
 ○ Hallucinationなどのリスクも高い
 ● 紹介した論文では、この問題を解決するための仕組みとしてRAGを提案
 ● RAGを使用することで、質問への回答をより良いものにすることができる
 ● OpenAI APIを活用することで、手軽にRAGに近い仕組みを実現できる


Slide 44

Slide 44 text

参考文献
 44 ● Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks 
 https://arxiv.org/abs/2005.11401 
 ● Dense Passage Retrieval for Open-Domain Question Answering 
 https://arxiv.org/abs/2004.04906 
 ● BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding 
 https://arxiv.org/abs/1810.04805 
 ● OpenAI API Reference
 https://platform.openai.com/docs/api-reference/ 
 ● LangChain
 https://python.langchain.com/
 ● LLamaIndex
 https://gpt-index.readthedocs.io/en/stable/ 


Slide 45

Slide 45 text

ChatGPT応用
 - 自律型エージェント -
 GA technologies AISC 岩隈


Slide 46

Slide 46 text

自己紹介


Slide 47

Slide 47 text

P047    1. 導入
 最近のパラダイムの話
 P058    2. 仕組み
 自律型エージェントがどう動いているのか
 P072    3. 実装
 自律型エージェントの実装
 P086    4. 参考資料
 
 ChatGPT応用
 - 自律型エージェント -


Slide 48

Slide 48 text

1. 導入


Slide 49

Slide 49 text

自律型エージェント(Autonomous Agents)
 49 何らかの目的を達成するために、環境を認識し行動を取れるシステム
 例:アレクサ
 Alexa
 アレクサ、Prime Videoつけて


Slide 50

Slide 50 text

自律型エージェント(Autonomous Agents)
 50 Adept.ai ACT-1
 Web上の操作が許可されたエージェント 
 
 デモ動画では
 「予算60万ドルで、4人で住める家をヒュー ストンで探して下さい 」
 という指示から、ユーザーを該当物件 
 までナビゲートしている 
 URL: https://www.adept.ai/blog/act-1 


Slide 51

Slide 51 text

51 困難は分割せよ
 最近のパラダイム:
 ルネ・デカルト


Slide 52

Slide 52 text

52 新しいタスクを既存のタスクの組み合わせで解決する
 最近のパラダイム:Compositionという考え方
 困難は分割せよ
 ルネ・デカルト


Slide 53

Slide 53 text

53 新しいタスクを既存のタスクの組み合わせで解決する
 例:画像内の人と動物の数を数える 
 最近のパラダイム:Compositionという考え方


Slide 54

Slide 54 text

54 新しいタスクを既存のタスクの組み合わせで解決する
 モデル
 画像と「人と動物の数」のペア
 , “2”
 画像から「人と動物の数」を予測するように
 最近のパラダイム:Compositionという考え方
 従来:新しいデータセットを作って新しいモデルを学習
 例:画像内の人と動物の数を数える 
 タスクの数だけ
 データセットを作るのが大変!
 困難は分割せよ


Slide 55

Slide 55 text

55 新しいタスクを既存のタスクの組み合わせで解決する
 Composition:既存の検出モデルを利用(学習不要)
 Visual Programming: Compositional visual reasoning without training [ arXiv]
 最近のパラダイム:Compositionという考え方
 人検出
 動物検出
 人と動物の数 = COUNT( ) + COUNT( )
 例:画像内の人と動物の数を数える 
 人検出や動物検出ができるモデルは 
 ある!(とする)


Slide 56

Slide 56 text

56 新しいタスクを既存のタスクの組み合わせで解決する
 Composition:既存の検出モデルを利用(学習不要)
 Visual Programming: Compositional visual reasoning without training [ arXiv]
 最近のパラダイム:Compositionという考え方
 人検出
 動物検出
 人と動物の数 = COUNT( ) + COUNT( )
 例:画像内の人と動物の数を数える 
 人検出や動物検出ができるモデルは 
 ある!(とする)
 困難は分割せよ
 以下のように既存のタスクで分解
 1. 画像から人の位置をボックスで検出
 2. 画像から動物の位置をボックスで検出
 3. 人のボックスを数える
 4. 動物のボックスを数える
 5. 人の数と動物の数を合計する
 6. 最終的な答えとして出力


Slide 57

Slide 57 text

57 新しいタスクを既存のタスクの組み合わせで解決する
 最近のパラダイム:Compositionという考え方
 以下のように既存のタスクで分解
 1. 画像から人の位置をボックスで検出
 2. 画像から動物の位置をボックスで検出
 3. 人のボックスを数える
 4. 動物のボックスを数える
 5. 人の数と動物の数を合計する
 6. 最終的な答えとして出力
 例:画像内の人と動物の数を数える 
 人検出や動物検出ができるモデルは 
 ある!(とする)
 ここを考えて実行させるのが大変
 困難は分割せよ
 ここを考えて実行させるのが大変
 分割するのが困難...!


Slide 58

Slide 58 text

58 新しいタスクを既存のタスクの組み合わせで解決する
 最近のパラダイム:Compositionという考え方
 以下のように既存のタスクで分解
 1. 画像から人の位置をボックスで検出
 2. 画像から動物の位置をボックスで検出
 3. 人のボックスを数える
 4. 動物のボックスを数える
 5. 人の数と動物の数を合計する
 6. 最終的な答えとして出力
 例:画像内の人と動物の数を数える 
 人検出や動物検出ができるモデルは 
 ある!(とする)
 ここを考えて実行させるのが大変
 困難は分割せよ
 ここを考えて実行させるのが大変
 分割するのが困難...!
 これChatGPTなら
 出来るんじゃ?
 
 導入終わり!


Slide 59

Slide 59 text

2. 仕組み


Slide 60

Slide 60 text

自律型エージェント(Autonomous Agents)再掲
 60 何らかの目的を達成するために、環境を認識し行動を取れるシステム
 
 ここでは自律型エージェントがどのように動作しているのかを確認します!
 例:アレクサ
 Alexa
 アレクサ、Prime Videoつけて


Slide 61

Slide 61 text

自律型エージェントの定式化
 61 大きくMemory、Tools、Planning、Actionの4つから構成される
 引用画像: https://lilianweng.github.io/posts/2023-06-23-agent/ 


Slide 62

Slide 62 text

自律型エージェントの仕組み(1/10)
 62 取れるアクションをまとめたToolsと履歴を保存するMemoryを用意する
 Memory
 ● Search ○ input: 文字列
 ○ desc: 検索に使える
 Tools
 Agent


Slide 63

Slide 63 text

63 目的をユーザーに指示してもらう
 Memory
 ● Search ○ input: 文字列
 ○ desc: 検索に使える
 Tools
 Agent
 Goal: 明日の東京の天気と気温 
 明日の東京の天気と気温を教えて
 自律型エージェントの仕組み(2/10)


Slide 64

Slide 64 text

64 与えられたToolsと履歴であるMemoryを考慮してPlanningをする
 Memory
 ● Search ○ input: 文字列
 ○ desc: 検索に使える
 Tools
 Agent
 Goal: 明日の東京の天気と気温 
 Planning
 明日の東京の天気を検索
 明日の東京の天気と気温を教えて
 自律型エージェントの仕組み(3/10)


Slide 65

Slide 65 text

65 Planningの内容からActionを決定する
 Memory
 ● Search ○ input: 文字列
 ○ desc: 検索に使える
 Tools
 Agent
 Goal: 明日の東京の天気と気温 
 Planning
 Action
 明日の東京の天気を検索
 Search(“明日 東京 天気”) Plan: 明日の東京の天気を検索 
 Action: Search(“明日 東京 天気”)
 明日の東京の天気と気温を教えて
 自律型エージェントの仕組み(4/10)


Slide 66

Slide 66 text

66 Actionを実行する
 Memory
 ● Search ○ input: 文字列
 ○ desc: 検索に使える
 Tools
 Agent
 Goal: 明日の東京の天気と気温 
 Planning
 Action
 明日の東京の天気を検索
 Search(“明日 東京 天気”) => “晴れ” Plan: 明日の東京の天気を検索 
 Action: Search(“明日 東京 天気”)
 Observation: “晴れ“
 明日の東京の天気と気温を教えて
 自律型エージェントの仕組み(5/10)


Slide 67

Slide 67 text

67 再び、与えられたToolsと履歴であるMemoryを考慮してPlanningをする
 Memory
 ● Search ○ input: 文字列
 ○ desc: 検索に使える
 Tools
 Agent
 Goal: 明日の東京の天気と気温 
 Planning
 明日の東京の気温を検索
 Plan: 明日の東京の天気を検索 
 Action: Search(“明日 東京 天気”)
 Observation: “晴れ“
 Plan: 明日の東京の気温を検索 
 明日の東京の天気と気温を教えて
 自律型エージェントの仕組み(6/10)


Slide 68

Slide 68 text

68 再び、Planningの内容からActionを決定する
 Memory
 ● Search ○ input: 文字列
 ○ desc: 検索に使える
 Tools
 Agent
 Goal: 明日の東京の天気と気温 
 Planning
 Action
 明日の東京の気温を検索
 Search(“明日 東京 気温”) Plan: 明日の東京の天気を検索 
 Action: Search(“明日 東京 天気”)
 Observation: “晴れ“
 Plan: 明日の東京の気温を検索 
 Action: Search(“明日 東京 気温”)
 明日の東京の天気と気温を教えて
 自律型エージェントの仕組み(7/10)


Slide 69

Slide 69 text

69 再び、Actionを実行する
 Memory
 ● Search ○ input: 文字列
 ○ desc: 検索に使える
 Tools
 Agent
 Goal: 明日の東京の天気と気温 
 Planning
 Action
 明日の東京の気温を検索
 Search(“明日 東京 気温”) => “33度” Plan: 明日の東京の天気を検索 
 Action: Search(“明日 東京 天気”)
 Observation: “晴れ“
 Plan: 明日の東京の気温を検索 
 Action: Search(“明日 東京 気温”)
 Ovservation: “33度“
 明日の東京の天気と気温を教えて
 自律型エージェントの仕組み(8/10)


Slide 70

Slide 70 text

70 再び、与えられたToolsと履歴であるMemoryを考慮してPlanningをする
 Memory
 ● Search ○ input: 文字列
 ○ desc: 検索に使える
 Tools
 Agent
 明日の東京の天気と気温を教えて
 Goal: 明日の東京の天気と気温 
 Planning
 終わり
 Plan: 明日の東京の天気を検索 
 Action: Search(“明日 東京 天気”)
 Observation: “晴れ“
 Plan: 明日の東京の気温を検索 
 Action: Search(“明日 東京 気温”)
 Observation: “33度“
 Plan: 終わり
 自律型エージェントの仕組み(9/10)


Slide 71

Slide 71 text

71 Planningの内容がなくなったので
 Memory
 ● Search ○ input: 文字列
 ○ desc: 検索に使える
 Tools
 Agent
 明日の東京の天気と気温を教えて
 Goal: 明日の東京の天気と気温 
 Planning
 終わり
 Plan: 明日の東京の天気を検索 
 Action: Search(“明日 東京 天気”)
 Observation: “晴れ“
 Plan: 明日の東京の気温を検索 
 Action: Search(“明日 東京 気温”)
 Observation: “33度“
 Plan: 終わり
 明日の東京は晴れで33度です
 自律型エージェントの仕組み(10/10)


Slide 72

Slide 72 text

自律型エージェントのコアとしてのChatGPT
 72 Planning、Actionの部分にChatGPTを利用する
 Memory
 ● Search ○ input: 文字列
 ○ desc: 検索に使える
 Tools
 Agent
 Goal: 明日の東京の天気と気温 
 Planning
 Plan: 明日の東京の天気を検索 
 Action: Search(“明日 東京 天気”)
 Observation: “晴れ“
 Plan: 明日の東京の気温を検索 
 Action: Search(“明日 東京 気温”)
 Observation: “33度“
 Plan: 終わり
 明日の東京は晴れで33度です
 Action
 ChatGPT(LLM)
 Planningと
 Actionの選択・呼び出しを行う
 
 従来通り
 ユーザー出力の生成も行う 


Slide 73

Slide 73 text

3. 実装


Slide 74

Slide 74 text

自律型エージェントの実装
 74 1から実装しようとすると意外と実装するものが多い
 
 簡単に実装できる方法を2つ紹介
 1. OpenAI Chat Pluginの利用
 2. LangChainの利用
 Memory
 Tools
 Agent
 Planning
 Action
 実装しなければいけないものたち
 Interface


Slide 75

Slide 75 text

実装①:OpenAI Chat Pluginsの利用
 75 OpenAIがサービスとして公開しているChatGPTをPluginで拡張できる
 使ったPlugin
 Show Me Diagrams
 チャットを通して図を描いてくれる


Slide 76

Slide 76 text

実装①:OpenAI Chat Pluginsの利用
 76 APIをプラグイン形式で準備するだけで利用可能
 Memory
 ● MyPlugin 
 ● OtherPublicPlugin
 Tools
 Planning
 Action
 ChatGPT Plus UI
 MyAPI OpenAI
 Agent


Slide 77

Slide 77 text

実装①:OpenAI Chat Pluginsの利用
 77 連日色々な会社さんが公開している
 Mercariさん
 Wantedlyさん
 チャット形式で「メルカリ」の
 商品検索ができるようになる
 チャット形式で「Wantedly」に
 掲載中の募集を検索できるようになる
 PR: https://about.mercari.com/press/news/articles/20230724_chatgpt/ 
 PR: https://prtimes.jp/main/html/rd/p/000000217.000021198.html 


Slide 78

Slide 78 text

実装②:LangChainの利用
 78 ChatGPT以外のLLMの利用、プロンプトの調整やエラー処理が可能
 Memory
 ● MyTool 
 ● OtherBuiltInTool
 Tools
 Agent
 Planning
 Action
 かなり抽象化されているので
 コード量は多くない


Slide 79

Slide 79 text

実装②:LangChainの利用
 79 ChatGPT以外のLLMの利用、プロンプトの調整やエラー処理が可能
 Memory
 ● MyTool 
 ● OtherBuiltInTool
 Tools
 Agent
 Planning
 Action
 統合されているToolも多い


Slide 80

Slide 80 text

LangChainのエージェントタイプ:ReAct
 80 ActionをするたびにMemoryとToolを評価してPlanningをする
 Tools
 Goal
 Memory
 Plan0
 Agent
 Action0
 Observation0
 Tools
 Goal
 Memory
 Plan1
 Action1
 Observation1
 Plan0
 Action0
 Observation0
 Tools
 Goal
 Memory
 Plan2
 Action2
 Observation2
 Plan0
 Action0
 Observation0
 Plan1
 Action1
 Observation1
 Pros:Actionを逐次的に評価しながら次に進める 
 Cons:複雑なタスクに対しては終わらないことがある 


Slide 81

Slide 81 text

Plan
 81 Tools
 Goal
 Step0
 Planner
 Tools
 Memory
 Action0
 Observation0
 Step1
 StepN
 LangChainのエージェントタイプ:Plan and execute
 先に目的を達成するステップをPlanningし、
 そのステップを達成するようにMemoryとToolを評価しActionをする
 Step0
 Tools
 Memory
 Action1
 Observation1
 Step1
 Observation0
 Executor
 Pros:AgentをPlannerとExecuterに分けることで効率よくタスクを遂行できる 
 Cons:Planningの段階で予見できないことに対しては上手く行かない 


Slide 82

Slide 82 text

おまけ:自然言語を構造化するツール
 82 ChatGPTのような言語モデルの出力は自然言語(非構造)である一方で、
 システムの入力としては構造化された情報が求められる
 ● Search ○ input: ■ query: 文字列
 ○ desc: 検索に使える
 Tools
 Planning
 Action
 明日の東京の天気を検索
 Search ActionInput
 X {query: [“明日”, “東京”, “天気”]} O {query: “明日 東京 天気”} ● JapanWeather ○ input: ■ prefecture: 文字列
 ■ date: “YYYY-MM-DD”形式の文字列
 ○ desc: 日本の天気予報データを取得できる 
 Planning
 Action
 明日の東京の天気を取得
 JapanWeather ActionInput
 X {query: “東京 2023-07-27”} O {prefecture: “東京都”, date: “2023-07-27”}

Slide 83

Slide 83 text

おまけ:自然言語を構造化するツール
 83 OpenAI API GPTモデル Function calling
 ● Search ○ input: ■ query: 文字列
 ○ desc: 検索に使える
 Functions
 Input
 Function
 明日の東京の天気を教えて
 Search 入力と関数記述を合わせて送ると、入力に対して適用すべき関数があれば、
 その関数名とJSON形式の関数入力を返してくれる
 (ようにファインチューニングされている)
 FunctionInput
 {query: “明日 東京 天気”} GPT
 gpt-3.5-turbo-0613, 
 gpt-4-0613
 URL: https://platform.openai.com/docs/guides/gpt/function-calling 


Slide 84

Slide 84 text

おまけ:自然言語を構造化するツール
 84 TypeChat
 Types
 Text
 Output
 Could I get a blueberry muffin and a grande latte?
 TypeScriptの型情報を使って自然言語を構造化するツール
 (内部的にGPTのAPIを使用して構造化、出力をコンパイラでチェックし、失敗した場 合はエラー情報をガイドに再度構造化する)
 TypeCh at
 URL: https://microsoft.github.io/TypeChat/ 


Slide 85

Slide 85 text

キュレーションサイト:Awesome AI Agent
 85 URL: https://github.com/e2b-dev/awesome-ai-agents 


Slide 86

Slide 86 text

まとめ
 86 ● ChatGPTをはじめとするLLMのおかげでエージェントシステムを比較的簡単に 構築できるようになった
 ● エージェントシステムを利用することで従来では難しかったタスクも自動化する ことができるかもしれない
 ● 一方で、LLMがシステムのコアとなるため今以上に如何にしてLLMの出力を安 定させるかが大事になる
 
 感想
 ● 今回あまり触れませんでしたが、サービスに組み込む場合はインタフェースやUX設計も大 事だと思いました
 ● 今後マルチモーダルなモデルが利用できるようになると、また出来ることが一気に増えると 感じました
 ● エージェントシステムの枠組みは自由度が高く工夫の余地が多いので、今後の発展が楽 しみです


Slide 87

Slide 87 text

4. 参考資料


Slide 88

Slide 88 text

利用したサービス
 88 ● carbon [ https://carbon.now.sh/ ]
 ○ コード画像の作成に利用しました


Slide 89

Slide 89 text

引用サイト (1/2)
 89 ● ACT-1 | Adept.ai blog:
 https://www.adept.ai/blog/act-1 
 ● Visual Programming: Compositional visual reasoning without training:
 https://arxiv.org/abs/2211.11559 
 ● LLM Powered Autonomous Agents | Lil’Log:
 https://lilianweng.github.io/posts/2023-06-23-agent/
 ● OpenAI Chat Plugin:
 https://platform.openai.com/docs/plugins/introduction 
 ● Mercari Plugin:
 https://about.mercari.com/press/news/articles/20230724_chatgpt/ 
 ● Wantedly Plugin:
 https://prtimes.jp/main/html/rd/p/000000217.000021198.html 
 ● LangChain:
 https://python.langchain.com/docs/get_started/introduction.html 


Slide 90

Slide 90 text

引用サイト (2/2)
 90 ● OpenAI API GPT Function calling:
 https://platform.openai.com/docs/guides/gpt/function-calling 
 ● TypeChat:
 https://microsoft.github.io/TypeChat/ 
 ● Awesome AI Agent:
 https://github.com/e2b-dev/awesome-ai-agents