Slide 1

Slide 1 text

AIエージェントを実現する プロンプトエンジニアリング「ReAct」を 掘り下げる AI エージェントを実現する プロンプトエンジニアリング 「ReAct」を深 く掘り下げて、AI エージェントの 基本的な仕組みを解説する。 Microsoft Developer Day 〜 AIで開発者の力を最大限に引き出す

Slide 2

Slide 2 text

Noriyuki TAKEI 武井 宜行 Information • サイオステクノロジー株式会社 • Microsoft MVP for AI Platform Favorites • Azure • パデル • スキー • ライブ配信 • 甘いもの • 走ること blog https://tech-lab.sios.jp/ core skill Azureによるクラウドネイティブな アプリ開発 Twitter @noriyukitakei

Slide 3

Slide 3 text

世界一わかりみの深い クラウドネイティブ on Azure #wakarimiazure MVPコミュニティブースで14:00からお待ちしています!!

Slide 4

Slide 4 text

いま世間を賑わせている AIエージェント とは?

Slide 5

Slide 5 text

LLMの知識だけでは解決できないことを 自律的にタスクを実行 外部データやツールと連携し 問題を解決するAIシステムのこと AIエージェントとは?

Slide 6

Slide 6 text

以下を例に考えてみる。 ミッキーマウスの次の誕生日にケーキをプレゼントしたいです。 彼の年齢分のろうそくを購入するための金額を計算してください。 ろうそくは一本100円です。

Slide 7

Slide 7 text

ミッキーマウスの誕生日は、1928年11月18日であり、 今日の日付は2024年11月6日なので、 現時点で95歳。 次の誕生日のケーキに必要なローソクの合計金額は 96歳 × 100円 = 9,600円

Slide 8

Slide 8 text

AIエージェントでない場合 LLM ミッキーマウスの次の誕生日に ケーキをプレゼントしたいです。 彼の年齢分のろうそくを購入する ための金額を計算してください。 ろうそくは一本100円です。 ① LLMへの指示 ② 回答の提示 ミッキーマウスの誕生日は1928年11月18日です。 2021年現在の年齢は92歳です。 次の誕生日である2022年11月18日までには、ミッ キーマウスは93歳になるので、93本のろうそくが 必要です。 よって、93本 × 100円/本 = 9,300円が必要な金 額です。 LLMの持つ知識のみから回答し ているので間違っている。(ミッ キーマウスは2024年11月6日時 点で95歳)

Slide 9

Slide 9 text

LLM インターネット 計算機 ② まずミッキーマウスの誕 生日をインターネットで検 索してみよう。 ① ミッキーマウスの次の誕生日に ケーキをプレゼントしたいです。 彼の年齢分のろうそくを購入する ための金額を計算してください。 ろうそくは一本100円です。 ① LLMへの指示 ⑧ ミッキーマウスの誕生日と 今日の日付から、ミッキーマ ウスの年齢が95歳だとわかっ たので、今度は、次の誕生日 のケーキに必要なろうそくの 購入金額を計算してみよう ⑫ 最終回答の提示 ⑪ 最終回答は、9,600円です。 AIエージェントの場合 時計 ⑥ 現在の日付を調査 ⑦ 現在の日付を返却 2024年11月6日 ⑤ ミッキーマウスの誕生日 は1928年11月18日のよう だ。今、何歳かを知りたい ので、今日の日付を調べよ う。

Slide 10

Slide 10 text

プロンプトエンジニアリング ReActの概要

Slide 11

Slide 11 text

プロンプトエンジニアリングとは? プロンプトエンジニアリングは、OpenAIのAIモデル に「ちょうどいい質問」を投げかけて、欲しい答えを ゲットするためのテクニックです。 なにそれ? いい質問をするには、具体的で明確に!何回も試して、 質問の言い回しを変えると、AIの答えも変わってくる から、いろんなパターンを試しましょう。 どうやるの? OpenAIのAPIを商用利用などで、OpenAIを使うとき や、何か特定のことをさせたいとき、このテクニック を使うと、AIがより役立つ答えをくれるようになりま す。 なんで大事?

Slide 12

Slide 12 text

Few-shot Learning 少数の例文から新しいタスクに対して高精度な回答を出力する技 術です。例えば、ChatGPTでは、少数の例文から新しい文章を生 成することができます。 Zero-shot Learning 事前学習されたモデルに対して、新しいタスクに対する指示を与 えることで回答を出力する技術です。例えば、「英語で書かれた 小説を日本語に翻訳してください」という指示を与えることで、 モデルは自動的に翻訳を行います。 ReAct 言語モデルでさまざまな言語推論や意思決定を遂行する手法です。 行動理由の「推論」と「行動」の組み合わせにより、より高度な タスクを処理することができます。 様々なプロンプトエンジニアリング

Slide 13

Slide 13 text

ReActとは? 思考 行動 質問 最終回答 観察 (行動の結果) 行動の入力 ReActは、AIが「質問」に対してまず「思考」を行い、 解決するために外部ツールやデータを使用して「行動の 入力」を行います。 その結果を「観察」して次の行動を決定し、最終的に「 行動」しながら正しい「最終回答」にたどり着くプロセ スです。 このサイクルにより、AIは段階的に問題を解決する能力 を持ち、複雑なタスクにも柔軟に対応できます。

Slide 14

Slide 14 text

以下の質問に回答するためのプロセスをReActで考えてみる。 ミッキーマウスの次の誕生日にケーキをプレゼントしたいです。 彼の年齢分のろうそくを購入するための金額を計算してください。 ろうそくは一本100円です。

Slide 15

Slide 15 text

思考 行動 質問 最終回答 ミッキーマウスの次の誕生日にケーキを プレゼントしたいです。彼の年齢分のろ うそくを購入するための金額を計算して ください。ろうそくは一本100円です。

Slide 16

Slide 16 text

思考 行動 質問 最終回答 まずインターネットを検索して、ミッ キーマウスの誕生日を調べよう。そして 現在の日付を調べれば、ミッキーマウス の年齢がわかり、次の誕生日のときの年 齢にろうそく1本あたりの値段をかけれ ば、必要な料金がでてくるだろう。 行動の入力 ミッキーマウス 誕生日

Slide 17

Slide 17 text

思考 行動 質問 最終回答 「行動の入力」で与えられた「ミッキー マウス 誕生日」でインターネットを検 索しよう。 11月18日はミッキーの誕生日。 ミッキーのスクリーンデビュー95 周年をお祝いしよう♪. ミッキー マウス. ミッキーとミニーの誕生 日…(略) 観察 (行動の結果)

Slide 18

Slide 18 text

思考 行動 質問 最終回答 先程の「観察(行動の結果)」からどうや らミッキーマウスの現在の誕生日は、 1928年11月18日のようだ。なので、次 は現在の日付を調べよう。

Slide 19

Slide 19 text

思考 行動 質問 最終回答 時計(実際はPythonのdatetimeモジュー ル)で現在の日付を調べよう。 観察 (行動の結果) 2024年11月6日

Slide 20

Slide 20 text

思考 行動 質問 最終回答 ミッキーマウスの誕生日と現在の日付か ら、ミッキーマウスは現時点で95歳のよ うだ。そうすると次の誕生日は96歳だか ら、それにろうそく一本あたりの値段で ある100円をかければ良さそうだ。 行動の入力 96 * 100

Slide 21

Slide 21 text

思考 行動 質問 最終回答 96 * 100を計算機(実際はPythonのeval 関数)で計算しよう。 観察 (行動の結果) 9600

Slide 22

Slide 22 text

思考 行動 質問 最終回答 先程の「観察(行動の結果)」を見ると、 ミッキーマウスの誕生日のケーキに用意 するろうそくの合計金額は9,600円のよ うだ。これで最終回答は出た。

Slide 23

Slide 23 text

LLM インターネット 計算機 ② まずミッキーマウスの誕 生日をインターネットで検 索してみよう。 ① ミッキーマウスの次の誕生日に ケーキをプレゼントしたいです。 彼の年齢分のろうそくを購入する ための金額を計算してください。 ろうそくは一本100円です。 ① LLMへの指示 ⑧ ミッキーマウスの誕生日 と今日の日付から、ミッキー マウスの年齢が95歳だとわ かったので、今度は、次の誕 生日のケーキに必要なろうそ くの購入金額を計算してみよ う ⑫ 最終回答の提示 ⑪ 最終回答は、9,600円です。 時計 ⑥ 現在の日付を調査 ⑦ 現在の日付を返却 2024年11月6日 ⑤ ミッキーマウスの誕生日 は1928年11月18日のよう だ。今、何歳かを知りたい ので、今日の日付を調べよ う。 質問 思考 行動の入力 行動 思考 観察 行動 観察 思考 行動の入力 行動 観察 最終回答

Slide 24

Slide 24 text

具体的な事例で ReActを考える

Slide 25

Slide 25 text

以下の質問に回答するためのプロンプトを考えてみる。 ミッキーマウスの次の誕生日にケーキをプレゼントしたいです。 彼の年齢分のろうそくを購入するための金額を計算してください。 ろうそくは一本100円です。

Slide 26

Slide 26 text

次の質問にできる限り答えてください。次のツールにアクセスできます。 - 検索ツール:検索するときに使います - 計算ツール:計算するときに使います - 今日の日付取得ツール:今日の日付を取得するときに使います。 次のフォーマットを使用します。 質問:回答する必要がある入力質問 思考:次に何をすべきかを常に考える 行動:実行するアクションは、「計算ツール」「検索ツール」「今日の 日付取得ツール」のいずれかである必要があります。 行動の入力:アクションへの入力(ツールによっては行動の入力が不要 の場合がありますので、その場合は「無し」にしてください) 観察:行動の結果 ...(この思考/行動/行動の入力/観察はN回繰り返すことができま す) 最終的な答えがわかったら以下を出力します。 思考:今、最終的な答えが分かりました 最終回答:元の入力質問に対する最終回答 計算ツールを使うときの行動の入力は、計算式を入力してください。 例:52 * 100 例:100 – 1 質問:ミッキーマウスの次の誕生日にケーキをプレゼントしたいです。 彼の年齢分のろうそくを購入するための金額を計算してください。ろう そくは一本100円です。 さぁ始めましょう。 思考: AIが行動のときに使うツールをAIに与えてあげる必要がある。実装 では、検索ツールはGoogleCustomSearchというインターネット 検索のPythonライブラリを利用し、計算ツールはPythonのeval関 数を使っている。 ReActのコンポーネントである「質問」「思考」「行動」「行動の 入力」「観察」「最終回答」について定義しています。「行動」で 使うツールについては、明示的に「計算ツール」と「検索ツール」 と「今日の日付取得ツール」のいずれかを使うように指示をしてい ます。 計算ツールの入力式の例を示しています。Pythonのeval関数で処理 するので、eval関数が期待する値でないとエラーになるので、この ようにしています。 質問の内容を明記し、思考から開始するように指示しています。

Slide 27

Slide 27 text

次の質問にできる限り答えてください。次のツールにアクセスできます。 - 検索ツール:検索するときに使います ...(省略)... 次のフォーマットを使用します。 質問:回答する必要がある入力質問 ...(省略)... 質問:次のミッキーマウスの誕生日にケーキをプレゼントしたいです。彼の年齢分のろうそくを購入するための金額を計算してください。ろうそく は一本100円です。 さぁ始めましょう。 思考:まず、ミッキーマウスの次の誕生日を探し、彼の年齢を計算する必要があります。次に、その年齢分のろうそくを購入するにはいくら必要か を計算します。最初にミッキーマウスの誕生日を調べます。 行動:検索ツール 行動の入力: ミッキーマウスの誕生日 思考(1回目) 先のプロンプトに対するLLMの出力結果が黄色の部分です。プロンプトの内容から、 LLLMがしっかり思考をして、段取りを組んでいるのがわかります。 その結果、行動として「検索ツール」、行動の入力として「ミッキーマウスの誕生日」を 返しています。

Slide 28

Slide 28 text

次の質問にできる限り答えてください。次のツールにアクセスできます。 - 検索ツール:検索するときに使います ...(省略)... 次のフォーマットを使用します。 質問:回答する必要がある入力質問 ...(省略)... 質問:次のミッキーマウスの誕生日にケーキをプレゼントしたいです。彼の年齢分のろうそくを購入するための金額を計算してください。ろうそく は一本100円です。 さぁ始めましょう。 思考:まず、ミッキーマウスの次の誕生日を探し、彼の年齢を計算する必要があります。次に、その年齢分のろうそくを購入するにはいくら必要か を計算します。最初にミッキーマウスの誕生日を調べます。 行動:検索ツール 行動の入力: ミッキーマウスの誕生日 観察:11月18日はミッキーの誕生日。ミッキーのスクリーンデビュー95周年をお祝いしよう♪. ミッキーマウス. ミッキーとミニーの誕生日…(略) 思考: 行動(1回目) 検索ツール(PythonのGoogleCustomSearchライブラリ)を使って、「ミッキーマウスの 誕生日」を追加したのが、水色の部分になります。 これをLLMモデルの入力として渡して、再度思考させます。

Slide 29

Slide 29 text

次の質問にできる限り答えてください。次のツールにアクセスできます。 - 検索ツール:検索するときに使います ...(省略)... 次のフォーマットを使用します。 質問:回答する必要がある入力質問 ...(省略)... 質問:次のミッキーマウスの誕生日にケーキをプレゼントしたいです。彼の年齢分のろうそくを購入するための金額を計算してください。ろうそく は一本100円です。 さぁ始めましょう。 思考:まず、ミッキーマウスの次の誕生日を探し、彼の年齢を計算する必要があります。次に、その年齢分のろうそくを購入するにはいくら必要か を計算します。最初にミッキーマウスの誕生日を調べます。 行動:検索ツール 行動の入力: ミッキーマウスの誕生日 観察:11月18日はミッキーの誕生日。ミッキーのスクリーンデビュー95周年をお祝いしよう♪. ミッキーマウス. ミッキーとミニーの誕生日…(略) 思考:検索の結果から、ミッキーマウスの誕生日は1928年の11月18日であるとわかった。次に、現在の年から1928を引くことで、次の誕生日で ミッキーマウスが何歳になるかを計算する必要がある。 行動:今日の日付計算ツール 行動の入力:無し 思考(2回目) 緑色の部分がLLMの出力になります。「観察」の部分に記載されている、インターネット から検索したミッキーマウスの誕生日に関する情報をもとに、ミッキーマウスの誕生日を 考え出しています。そして、行動には次のアクションである「今日の日付計算ツール」設 定しています。

Slide 30

Slide 30 text

次の質問にできる限り答えてください。次のツールにアクセスできます。 - 検索ツール:検索するときに使います ...(省略)... 次のフォーマットを使用します。 質問:回答する必要がある入力質問 ...(省略)... 質問:次のミッキーマウスの誕生日にケーキをプレゼントしたいです。彼の年齢分のろうそくを購入するための金額を計算してください。ろうそく は一本100円です。 さぁ始めましょう。 思考:まず、ミッキーマウスの次の誕生日を探し、彼の年齢を計算する必要があります。次に、その年齢分のろうそくを購入するにはいくら必要か を計算します。最初にミッキーマウスの誕生日を調べます。 行動:検索ツール 行動の入力: ミッキーマウスの誕生日 観察:11月18日はミッキーの誕生日。ミッキーのスクリーンデビュー95周年をお祝いしよう♪. ミッキーマウス. ミッキーとミニーの誕生日…(略) 思考:検索の結果から、ミッキーマウスの誕生日は1928年の11月18日であるとわかった。次に、現在の年から1928を引くことで、次の誕生日で ミッキーマウスが何歳になるかを計算する必要がある。 行動:今日の日付計算ツール 行動の入力:無し 観察:2024-11-6 22:36:19.047181 思考: 行動(2回目) 思考(2回目)の結果である行動から、Pythonのdatetimeモジュールを使って、現在の日時 を出しています。この結果をもとに再度LLMに思考させます。

Slide 31

Slide 31 text

次の質問にできる限り答えてください。次のツールにアクセスできます。 - 検索ツール:検索するときに使います ...(省略)... 次のフォーマットを使用します。 質問:回答する必要がある入力質問 ...(省略)... 質問:次のミッキーマウスの誕生日にケーキをプレゼントしたいです。彼の年齢分のろうそくを購入するための金額を計算してください。ろうそく は一本100円です。 さぁ始めましょう。 思考:まず、ミッキーマウスの次の誕生日を探し、彼の年齢を計算する必要があります。次に、その年齢分のろうそくを購入するにはいくら必要か を計算します。最初にミッキーマウスの誕生日を調べます。 行動:検索ツール 行動の入力: ミッキーマウスの誕生日 観察:11月18日はミッキーの誕生日。ミッキーのスクリーンデビュー95周年をお祝いしよう♪. ミッキーマウス. ミッキーとミニーの誕生日…(略) 思考:検索の結果から、ミッキーマウスの誕生日は1928年の11月18日であるとわかった。次に、現在の年から1928を引くことで、次の誕生日で ミッキーマウスが何歳になるかを計算する必要がある。 行動:今日の日付計算ツール 行動の入力:無し 観察:2024-11-6 22:36:19.047181 思考:ミッキーマウスは1928年11月18日に初登場したため、次の誕生日で96歳となります。一つのローソクが100円なので、この価格で必要な ローソクの総額を計算する必要があります。 行動:計算ツール 行動の入力:96 * 100 思考(3回目) 赤色の部分がLLMの出力になります。「観察」の部分に記載されている現在日付と、以前検索して取 得したミッキーマウスの誕生日をもとに、ミッキーマウスの次の誕生日に迎える年齢を考え出してい ます。そして、行動には次のアクションである「計算ツール」を、行動の入力として、計算式「96 * 100」を出しています。

Slide 32

Slide 32 text

次の質問にできる限り答えてください。次のツールにアクセスできます。 - 検索ツール:検索するときに使います ...(省略)... 次のフォーマットを使用します。 質問:回答する必要がある入力質問 ...(省略)... 質問:次のミッキーマウスの誕生日にケーキをプレゼントしたいです。彼の年齢分のろうそくを購入するための金額を計算してください。ろうそく は一本100円です。 さぁ始めましょう。 思考:まず、ミッキーマウスの次の誕生日を探し、彼の年齢を計算する必要があります。次に、その年齢分のろうそくを購入するにはいくら必要か を計算します。最初にミッキーマウスの誕生日を調べます。 行動:検索ツール 行動の入力: ミッキーマウスの誕生日 観察:11月18日はミッキーの誕生日。ミッキーのスクリーンデビュー95周年をお祝いしよう♪. ミッキーマウス. ミッキーとミニーの誕生日…(略) 思考:検索の結果から、ミッキーマウスの誕生日は1928年の11月18日であるとわかった。次に、現在の年から1928を引くことで、次の誕生日で ミッキーマウスが何歳になるかを計算する必要がある。 行動:今日の日付計算ツール 行動の入力:無し 観察:2024-11-6 22:36:19.047181 思考:ミッキーマウスは1928年11月18日に初登場したため、次の誕生日で96歳となります。一つのローソクが100円なので、この価格で必要な ローソクの総額を計算する必要があります。 行動:計算ツール 行動の入力:96 * 100 観察:9600 思考: 行動(3回目) 思考(3回目)の結果である行動と行動の入力から、ミッキーマウスの誕生日に必要なろう そくの合計本数を計算しています。Pythonのeval関数を使って算出した結果が観察に書 いてあります。このプロンプトをLLMに入力し、さらに思考を重ねます。

Slide 33

Slide 33 text

次の質問にできる限り答えてください。次のツールにアクセスできます。 - 検索ツール:検索するときに使います ...(省略)... 次のフォーマットを使用します。 質問:回答する必要がある入力質問 ...(省略)... 質問:次のミッキーマウスの誕生日にケーキをプレゼントしたいです。彼の年齢分のろうそくを購入するための金額を計算してください。ろうそく は一本100円です。 さぁ始めましょう。 思考:まず、ミッキーマウスの次の誕生日を探し、彼の年齢を計算する必要があります。次に、その年齢分のろうそくを購入するにはいくら必要か を計算します。最初にミッキーマウスの誕生日を調べます。 行動:検索ツール 行動の入力: ミッキーマウスの誕生日 観察:11月18日はミッキーの誕生日。ミッキーのスクリーンデビュー95周年をお祝いしよう♪. ミッキーマウス. ミッキーとミニーの誕生日…(略) 思考:検索の結果から、ミッキーマウスの誕生日は1928年の11月18日であるとわかった。次に、現在の年から1928を引くことで、次の誕生日で ミッキーマウスが何歳になるかを計算する必要がある。 行動:今日の日付計算ツール 行動の入力:無し 観察:2024-11-6 22:36:19.047181 思考:ミッキーマウスは1928年11月18日に初登場したため、次の誕生日で96歳となります。一つのローソクが100円なので、この価格で必要な ローソクの総額を計算する必要があります。 行動:計算ツール 行動の入力:96 * 100 観察:9600 思考:今、最終的な答えが分かりました 最終回答:ミッキーマウスの次の誕生日に彼の年齢分のろうそくを購入するためには、9600円必要です。 思考(4回目) 今までの結果からミッキーマウスの年齢分のろうそくの値段がわかったので、これ以上の 思考はせず、LLMが最終回答を出しました。

Slide 34

Slide 34 text

デモを通して ReActに対する 理解を深める

Slide 35

Slide 35 text

本日、これからデモしますが、 LLMは結果がいつも同じではないので、 デモが失敗する可能性が少々高いので ご了承下さいませ。

Slide 36

Slide 36 text

世界一わかりみの深い クラウドネイティブ on Azure #wakarimiazure MVPコミュニティブースで14:00からお待ちしています!!

Slide 37

Slide 37 text

言語 Python LLM Azure OpenAI Service デモ環境

Slide 38

Slide 38 text

AIエージェントをもっと簡単に実現する方法 Function Calling 事前に定義された関数の中から、プロンプトに対する回答を作成するために 必要な関数とその引数を返してくれる。 1 LangChain LLMを使用したアプリケーションを開発するためのオープンソースのフレー ムワークであり、AIエージェントを実現するための様々な機能も備えている。 2 Semantic Kernel Microsoftが発表したOSSであり、LangChainと同様に、LLMを使用したア プリケーションを開発するためのオープンソースのフレームワークの機能を 提供する。 3

Slide 39

Slide 39 text

世界一わかりみの深い クラウドネイティブ on Azure #wakarimiazure MVPコミュニティブースで14:00からお待ちしています!!

Slide 40

Slide 40 text

Azure OpenAI Service 技術コンサルティングサービス 「Azure OpenAI Service」の導入プラン作成支援からトレーニングまで一貫したコンサルティングサービスを提供します。 Azure OpenAI ServiceによるRAGハンズオン 導入プラン作成支援 PoC支援 開発・設計支援 運用支援 要望のヒアリング タスク洗い出し スケジュール策定支援 PoC環境構築 技術調査 PoC評価支援 トレーニング 開発環境構築 Azureセキュリティ設定支援 運用シナリオ策定 継続的なチューニング支援 運用に関するQA 【初級編】Azure OpenAI Serviceで学ぶRAGハンズオン 1 【上級編】サーバーレステクノロジーを駆使したRAGハンズオン 2 【無償】「Azure OpenAI ServiceによるRAG実装ガイド」をダウンロードして 頂いた方限定に、RAGのハンズオンを無料開催しております。 【有償】Azure OpenAIとサーバーレステクノロジーを駆使し、本番環境で の運用に対応できる実践的なRAGシステムの構築ハンズオンを行います。

Slide 41

Slide 41 text

最後までご清聴頂き ありがとうございました!!