Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥

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

ITANDI
August 09, 2023
380

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

ITANDI

August 09, 2023
Tweet

Transcript

  1. イタンジ株式会社 経営企画 マネージャー 石見 淳太郎 #本日のモデレーター #Vartical SaaS好き #普段はスーツ着ない #今日は代打

    【経歴】 イタンジにて、カスタマーサポート、カスタマーサクセ ス、PMMなどSaaSビジネスの運用/立上/グロースを 行った後、現在は全社戦略の立案と新規事業開発に 従事。
  2. 4

  3. 5

  4. 6

  5. 7

  6. 8

  7. ChatGPT Pluginからプロダクト応用まで 本日のテーマと内容
 10 テーマ 目次 • 検索とLLMの組み合わせ presenter:丸山 拓己

    • ChatGPT応用 - 自律型エージェント - presenter:岩隈 啓悟 ※※注意事項※※
 本発表の資料は、2023年7月時点の情報を元に作成しています。 
 また、分かりやすさを優先し、表現が正確ではない部分があります。 
 
 

  8. 大規模言語モデルの例
 16 • GPT-3(OpenAI) • GPT-4(OpenAI) • PaLM(Google) • BLOOM(HuggingFace)

    • LLama(Meta) モデル名 • ChatGPT(OpenAI) • Bing AI(Microsoft) • Bard(Google) • GitHub Copilot(GitHub) アプリケーション
  9. これらの問題を解決する方法
 18 • 入力文に近い外部のデータを検索する • 得られたデータを元に大規模言語モデルに出力を考えさせる Retrieval Augmented Generation •

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

    • どのような情報が必要かを大規模言語モデルに考えさせる • 言語モデルが使用できるツールを用意して、使ってもらう 自律型Agent 前半(丸山)
 後半(岩隈)

  11. 論文中でのアーキテクチャ(検索部分)
 26 文書DB サーバ 社内の文書
 • Dense Passage Retrieverを使用
 •

    事前に文書をBERTを使用してベクトル化(数値化) 
 • ユーザからの質問もBERTでベクトル化 
 • ユーザからの質問を使用して、ベクトル化された文書を検 索
 https://github.com/facebookresearch/DPR 

  12. 論文中でのアーキテクチャ(生成部分)
 27 言語モデル サーバ • 回答生成にはBARTを使用
 ◦ not BERT
 ◦

    4億パラメータのモデルを使用
 • 検索した文書ベクトルと質問ベクトルを結合して入 力とする 
 ◦ 文書を考慮した回答が生成できる 
 • 検索部分と一緒にファインチューニング 
 ◦ 少量の質問・回答データで学習し直す 

  13. 🦜🔗 LangChain
 
 
 39 • 大規模言語モデルを使用したアプリ開発の支援ツール
 ◦ Python版とTypeScript版がある
 •

    様々な便利モジュールが含まれている
 ◦ OpenAI APIなどのAPI使用をWrapしてくれているModelsモジュール
 ◦ 文書のロード・ベクトル化・検索を支援するIndexesモジュール
 ◦ 外部リソースとのやりとりをE2Eで行ってくれるAgentsモジュール
 • 更新が頻繁に行われている

  14. 🗂 LlamaIndex 🦙
 
 
 40 • 大規模言語モデルと様々なデータを繋ぐことができるフレームワーク
 • 昔はGPT

    Indexと呼ばれていた
 • 構造化データから非構造化データまで様々なデータコネクターがある
 • APIなども簡単に使用できるように整備してくれている
 • 内部でLangChainを使用している
 • LangChainと比較して運用向けの機能が多めな印象

  15. 参考になりそうな論文
 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 

  16. 参考文献
 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/ 

  17. P047    1. 導入
 最近のパラダイムの話
 P058    2. 仕組み
 自律型エージェントがどう動いているのか
 P072    3.

    実装
 自律型エージェントの実装
 P086    4. 参考資料
 
 ChatGPT応用
 - 自律型エージェント -

  18. 自律型エージェント(Autonomous Agents)
 50 Adept.ai ACT-1
 Web上の操作が許可されたエージェント 
 
 デモ動画では
 「予算60万ドルで、4人で住める家をヒュー

    ストンで探して下さい 」
 という指示から、ユーザーを該当物件 
 までナビゲートしている 
 URL: https://www.adept.ai/blog/act-1 

  19. 55 新しいタスクを既存のタスクの組み合わせで解決する
 Composition:既存の検出モデルを利用(学習不要)
 Visual Programming: Compositional visual reasoning without training

    [ arXiv]
 最近のパラダイム:Compositionという考え方
 人検出
 動物検出
 人と動物の数 = COUNT( ) + COUNT( )
 例:画像内の人と動物の数を数える 
 人検出や動物検出ができるモデルは 
 ある!(とする)

  20. 56 新しいタスクを既存のタスクの組み合わせで解決する
 Composition:既存の検出モデルを利用(学習不要)
 Visual Programming: Compositional visual reasoning without training

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

  21. 57 新しいタスクを既存のタスクの組み合わせで解決する
 最近のパラダイム:Compositionという考え方
 以下のように既存のタスクで分解
 1. 画像から人の位置をボックスで検出
 2. 画像から動物の位置をボックスで検出
 3. 人のボックスを数える


    4. 動物のボックスを数える
 5. 人の数と動物の数を合計する
 6. 最終的な答えとして出力
 例:画像内の人と動物の数を数える 
 人検出や動物検出ができるモデルは 
 ある!(とする)
 ここを考えて実行させるのが大変
 困難は分割せよ
 ここを考えて実行させるのが大変
 分割するのが困難...!

  22. 58 新しいタスクを既存のタスクの組み合わせで解決する
 最近のパラダイム:Compositionという考え方
 以下のように既存のタスクで分解
 1. 画像から人の位置をボックスで検出
 2. 画像から動物の位置をボックスで検出
 3. 人のボックスを数える


    4. 動物のボックスを数える
 5. 人の数と動物の数を合計する
 6. 最終的な答えとして出力
 例:画像内の人と動物の数を数える 
 人検出や動物検出ができるモデルは 
 ある!(とする)
 ここを考えて実行させるのが大変
 困難は分割せよ
 ここを考えて実行させるのが大変
 分割するのが困難...!
 これChatGPTなら
 出来るんじゃ?
 
 導入終わり!

  23. 63 目的をユーザーに指示してもらう
 Memory
 • Search ◦ input: 文字列
 ◦ desc:

    検索に使える
 Tools
 Agent
 Goal: 明日の東京の天気と気温 
 明日の東京の天気と気温を教えて
 自律型エージェントの仕組み(2/10)

  24. 64 与えられたToolsと履歴であるMemoryを考慮してPlanningをする
 Memory
 • Search ◦ input: 文字列
 ◦ desc:

    検索に使える
 Tools
 Agent
 Goal: 明日の東京の天気と気温 
 Planning
 明日の東京の天気を検索
 明日の東京の天気と気温を教えて
 自律型エージェントの仕組み(3/10)

  25. 65 Planningの内容からActionを決定する
 Memory
 • Search ◦ input: 文字列
 ◦ desc:

    検索に使える
 Tools
 Agent
 Goal: 明日の東京の天気と気温 
 Planning
 Action
 明日の東京の天気を検索
 Search(“明日 東京 天気”) Plan: 明日の東京の天気を検索 
 Action: Search(“明日 東京 天気”)
 明日の東京の天気と気温を教えて
 自律型エージェントの仕組み(4/10)

  26. 66 Actionを実行する
 Memory
 • Search ◦ input: 文字列
 ◦ desc:

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

  27. 67 再び、与えられたToolsと履歴であるMemoryを考慮してPlanningをする
 Memory
 • Search ◦ input: 文字列
 ◦ desc:

    検索に使える
 Tools
 Agent
 Goal: 明日の東京の天気と気温 
 Planning
 明日の東京の気温を検索
 Plan: 明日の東京の天気を検索 
 Action: Search(“明日 東京 天気”)
 Observation: “晴れ“
 Plan: 明日の東京の気温を検索 
 明日の東京の天気と気温を教えて
 自律型エージェントの仕組み(6/10)

  28. 68 再び、Planningの内容からActionを決定する
 Memory
 • Search ◦ input: 文字列
 ◦ desc:

    検索に使える
 Tools
 Agent
 Goal: 明日の東京の天気と気温 
 Planning
 Action
 明日の東京の気温を検索
 Search(“明日 東京 気温”) Plan: 明日の東京の天気を検索 
 Action: Search(“明日 東京 天気”)
 Observation: “晴れ“
 Plan: 明日の東京の気温を検索 
 Action: Search(“明日 東京 気温”)
 明日の東京の天気と気温を教えて
 自律型エージェントの仕組み(7/10)

  29. 69 再び、Actionを実行する
 Memory
 • Search ◦ input: 文字列
 ◦ desc:

    検索に使える
 Tools
 Agent
 Goal: 明日の東京の天気と気温 
 Planning
 Action
 明日の東京の気温を検索
 Search(“明日 東京 気温”) => “33度” Plan: 明日の東京の天気を検索 
 Action: Search(“明日 東京 天気”)
 Observation: “晴れ“
 Plan: 明日の東京の気温を検索 
 Action: Search(“明日 東京 気温”)
 Ovservation: “33度“
 明日の東京の天気と気温を教えて
 自律型エージェントの仕組み(8/10)

  30. 70 再び、与えられたToolsと履歴であるMemoryを考慮してPlanningをする
 Memory
 • Search ◦ input: 文字列
 ◦ desc:

    検索に使える
 Tools
 Agent
 明日の東京の天気と気温を教えて
 Goal: 明日の東京の天気と気温 
 Planning
 終わり
 Plan: 明日の東京の天気を検索 
 Action: Search(“明日 東京 天気”)
 Observation: “晴れ“
 Plan: 明日の東京の気温を検索 
 Action: Search(“明日 東京 気温”)
 Observation: “33度“
 Plan: 終わり
 自律型エージェントの仕組み(9/10)

  31. 71 Planningの内容がなくなったので
 Memory
 • Search ◦ input: 文字列
 ◦ desc:

    検索に使える
 Tools
 Agent
 明日の東京の天気と気温を教えて
 Goal: 明日の東京の天気と気温 
 Planning
 終わり
 Plan: 明日の東京の天気を検索 
 Action: Search(“明日 東京 天気”)
 Observation: “晴れ“
 Plan: 明日の東京の気温を検索 
 Action: Search(“明日 東京 気温”)
 Observation: “33度“
 Plan: 終わり
 明日の東京は晴れで33度です
 自律型エージェントの仕組み(10/10)

  32. 自律型エージェントのコアとしての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の選択・呼び出しを行う
 
 従来通り
 ユーザー出力の生成も行う 

  33. 実装①:OpenAI Chat Pluginsの利用
 76 APIをプラグイン形式で準備するだけで利用可能
 Memory
 • MyPlugin 
 •

    OtherPublicPlugin
 Tools
 Planning
 Action
 ChatGPT Plus UI
 MyAPI OpenAI
 Agent

  34. 実装①: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 

  35. 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:複雑なタスクに対しては終わらないことがある 

  36. 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の段階で予見できないことに対しては上手く行かない 

  37. おまけ:自然言語を構造化するツール
 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”}
  38. おまけ:自然言語を構造化するツール
 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 

  39. おまけ:自然言語を構造化するツール
 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/ 

  40. まとめ
 86 • ChatGPTをはじめとするLLMのおかげでエージェントシステムを比較的簡単に 構築できるようになった
 • エージェントシステムを利用することで従来では難しかったタスクも自動化する ことができるかもしれない
 • 一方で、LLMがシステムのコアとなるため今以上に如何にしてLLMの出力を安

    定させるかが大事になる
 
 感想
 • 今回あまり触れませんでしたが、サービスに組み込む場合はインタフェースやUX設計も大 事だと思いました
 • 今後マルチモーダルなモデルが利用できるようになると、また出来ることが一気に増えると 感じました
 • エージェントシステムの枠組みは自由度が高く工夫の余地が多いので、今後の発展が楽 しみです

  41. 引用サイト (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 

  42. 引用サイト (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