Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

Copyright © Acroquest Technology Co., Ltd. All rights reserved. 3 1. ReActとは?

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

ReAct 何がうれしい? Copyright © Acroquest Technology Co., Ltd. All rights reserved. 6 言語モデルだけではできない 他ツールとの連携ができる!

Slide 7

Slide 7 text

Copyright © Acroquest Technology Co., Ltd. All rights reserved. 7 2. Semantic Kernelとは?

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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:プログラムの関数として実装される。

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

Copyright © Acroquest Technology Co., Ltd. All rights reserved. 13 3. 実際に作ってみる

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

3-2. Kernelを実装する Copyright © Acroquest Technology Co., Ltd. All rights reserved. 31 検索→要約の流れで実行計画が出力される

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

Copyright © Acroquest Technology Co., Ltd. All rights reserved. 34 詳しくは以下のブログに書いているのでよければご覧ください https://acro-engineer.hatenablog.com/entry/2023/04/18/120000

Slide 35

Slide 35 text

35 ご清聴ありがとうございました Copyright © Acroquest Technology Co., Ltd. All rights reserved.