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

Semantic KernelでGPTと外部ツールを連携する

Semantic KernelでGPTと外部ツールを連携する

Takashi Sasaki

May 25, 2023
Tweet

More Decks by Takashi Sasaki

Other Decks in Technology

Transcript

  1. Copyright © Acroquest Technology Co., Ltd. All rights reserved. ChatGPT

    Meetup #2 Semantic Kernelで GPTと外部ツールを連携する 2023/05/25 アクロクエストテクノロジー株式会社 佐々木 峻 1
  2. 今日話すこと Copyright © Acroquest Technology Co., Ltd. All rights reserved.

    2 1.ReActとは? 2.Semantic Kernelとは? 3.検索・要約ツールを実装してみる
  3. 1. ReActとは? Copyright © Acroquest Technology Co., Ltd. All rights

    reserved. 4 ユーザーの入力をGPTが解釈して、実行は外部ツールを使用するという考え方 「OpenAI APIの使い方について検索してまとめを教えて」 考え:OpenAI API 使い方で検索する 行動:検索 search(“OpenAI API 使い方”) 考え:検索結果をもとに要約する 行動:要約 summary(“<検索結果>”) GPT-3モデル 外部ツール 考え:回答を得られたので終了 行動:終了
  4. 1. ReActとは? Copyright © Acroquest Technology Co., Ltd. All rights

    reserved. 5 考え:OpenAI API 使い方で検索する 行動:検索 search(“OpenAI API 使い方”) 考え:検索結果をもとに要約する 行動:要約 summary(“<検索結果>”) GPT-3モデル 外部ツール 考え:回答を得られたので終了 行動:終了 Reasoning=するべきことは何かを思考 Action=実際にアクションを実行する
  5. ReAct 何がうれしい? Copyright © Acroquest Technology Co., Ltd. All rights

    reserved. 6 言語モデルだけではできない 他ツールとの連携ができる!
  6. 2-1. Semantic Kernelとは? Copyright © Acroquest Technology Co., Ltd. All

    rights reserved. 8 ReActを活用したアプリケーションを実装できるライブラリ 他によく使われるライブラリ
  7. 2-1. Semantic Kernelとは? Copyright © Acroquest Technology Co., Ltd. All

    rights reserved. 9 1.言語はC# or Python 2.Microsoft発のOSS 3.ReActのアプリを簡単に実装できる
  8. 2-1. Semantic Kernelの動作イメージ Copyright © Acroquest Technology Co., Ltd. All

    rights reserved. 10 Kernel Elasticsearch検索 要約 Skill 「OpenAI APIの使い方について検索してまとめを教えて」 Planner 入力 “OpenAI APIの使い方” ① ② 要約 実行 入力 ①の出力 実行結果 Semantic Kernel Elasticsearch検索 実行
  9. 2-2. Semantic Kernelの概念 Copyright © Acroquest Technology Co., Ltd. All

    rights reserved. 11 Kernel • 処理全体を制御する。 • Plannerという機能を使えば、Kernelに実行したいスキルを登録することで、ユーザー の入力文からどのスキルをどの順番に実行するかを決定して自動で実行できる Skill • 何を実行するかを実装する部分。Functionという部分に実行することと実装する。 • Functionには以下の2種類ある • Semantic Function:プロンプトテンプレートを使ってLLMの回答を取得する • Native Function:プログラムの関数として実装される。
  10. 2-3. Planner Copyright © Acroquest Technology Co., Ltd. All rights

    reserved. 12 ユーザーの入力から登録されているスキルをどの順番で実行するか計画を立てる。 「GPTをアシスタントとして使うための情報があるか検索して要約してください」 ※Python版にはまだ実装されていないので注意
  11. 3. 作るもののイメージ Copyright © Acroquest Technology Co., Ltd. All rights

    reserved. 14 Kernel Elasticsearch検索 要約 Skill 「OpenAI APIの使い方について検索してまとめを教えて」 Planner 入力 “OpenAI APIの使い方” ① ② 要約 実行 入力 ①の出力 実行結果 Semantic Kernel Elasticsearch検索 実行
  12. 3. やること Copyright © Acroquest Technology Co., Ltd. All rights

    reserved. 15 1.Skillを作成する 2.Kernelを実装する 3.実行してみる
  13. 3-1. Skillを作成する Copyright © Acroquest Technology Co., Ltd. All rights

    reserved. 16 1. 入力を要約するSkill(Semantic Function) 2. Elasticsearchに検索するSkill(Native Function) 以下の2つのSkillを作成する
  14. 3-1-1. Semantic Functionsを作成する Copyright © Acroquest Technology Co., Ltd. All

    rights reserved. 17 1.config.json 2.skprompt.txt 以下の2ファイルを用意する
  15. 3-1-1. config.txt Copyright © Acroquest Technology Co., Ltd. All rights

    reserved. 18 関数とLLMのパラメータを定義する
  16. 3-1-1. config.txt Copyright © Acroquest Technology Co., Ltd. All rights

    reserved. 19 関数とLLMのパラメータを定義する LLMが実行計画を作るときに この内容で判断する
  17. 3-1-1. skprompt.txt Copyright © Acroquest Technology Co., Ltd. All rights

    reserved. 20 LLMへ入力するプロンプトのテンプレートを定義する
  18. 3-1-1. skprompt.txt Copyright © Acroquest Technology Co., Ltd. All rights

    reserved. 21 LLMへ入力するプロンプトのテンプレートを定義する config.txtで定義した parameterの値が入る
  19. 3-1-2. Native Functionの実装 Copyright © Acroquest Technology Co., Ltd. All

    rights reserved. 22 処理内容を関数として実装する
  20. 3-1-2. Native Functionの実装 Copyright © Acroquest Technology Co., Ltd. All

    rights reserved. 23 処理内容を関数として実装する LLMが実行計画を作るときに この内容で判断する
  21. 3-1-3. Skillを配置する Copyright © Acroquest Technology Co., Ltd. All rights

    reserved. 24 Namespaceで定義した 値と合わせる。 プロジェクト内にSkill用のディレクトリを作成する
  22. 3-2. Kernelを実装する Copyright © Acroquest Technology Co., Ltd. All rights

    reserved. 25 まずはSkillを使えるようにする
  23. 3-2. Kernelを実装する Copyright © Acroquest Technology Co., Ltd. All rights

    reserved. 26 まずはSkillを使えるようにする 基本はtext-davince-003 モデルを使用する
  24. 3-2. Kernelを実装する Copyright © Acroquest Technology Co., Ltd. All rights

    reserved. 27 まずはSkillを使えるようにする Plannerもスキルの一つ なので登録が必要
  25. 3-2. Kernelを実装する Copyright © Acroquest Technology Co., Ltd. All rights

    reserved. 28 まずは簡単な文章でPlannerを実行してみる
  26. 3-2. Kernelを実装する Copyright © Acroquest Technology Co., Ltd. All rights

    reserved. 29 検索だけ実行する実行計画が出力される
  27. 3-2. Kernelを実装する Copyright © Acroquest Technology Co., Ltd. All rights

    reserved. 30 2つのタスクが必要な文章を試してみる
  28. 3-2. Kernelを実装する Copyright © Acroquest Technology Co., Ltd. All rights

    reserved. 31 検索→要約の流れで実行計画が出力される
  29. 3-3. 実行してみる Copyright © Acroquest Technology Co., Ltd. All rights

    reserved. 32 実行計画を順番に実行して、最終的に以下の結果を得られる
  30. まとめ Copyright © Acroquest Technology Co., Ltd. All rights reserved.

    33 1. Semantic Kernelを使えばReActで簡単に実装できる 2. Plannerで動的に実行計画を作成できる
  31. Copyright © Acroquest Technology Co., Ltd. All rights reserved. 34

    詳しくは以下のブログに書いているのでよければご覧ください https://acro-engineer.hatenablog.com/entry/2023/04/18/120000