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

AI エージェントを実現するプロンプトエンジニアリング「ReAct」を掘り下げる / reac...

AI エージェントを実現するプロンプトエンジニアリング「ReAct」を掘り下げる / react_deepdive

11/6で行われた技術カンファレンス「Microsoft Developer Day」の登壇資料です。

生成 AI の技術を活用して、人間の介入なしに自ら思考し、自ら行動する「AI エージェント」が今、大
きな注目を集めています。本セッションでは、AI エージェントを実現するプロンプトエンジニアリング
「ReAct」を深く掘り下げて、AI エージェントの基本的な仕組みを解説します。

SIOS Tech. Lab

November 07, 2024
Tweet

More Decks by SIOS Tech. Lab

Other Decks in Technology

Transcript

  1. Noriyuki TAKEI 武井 宜行 Information • サイオステクノロジー株式会社 • Microsoft MVP

    for AI Platform Favorites • Azure • パデル • スキー • ライブ配信 • 甘いもの • 走ること blog https://tech-lab.sios.jp/ core skill Azureによるクラウドネイティブな アプリ開発 Twitter @noriyukitakei
  2. AIエージェントでない場合 LLM ミッキーマウスの次の誕生日に ケーキをプレゼントしたいです。 彼の年齢分のろうそくを購入する ための金額を計算してください。 ろうそくは一本100円です。 ① LLMへの指示 ②

    回答の提示 ミッキーマウスの誕生日は1928年11月18日です。 2021年現在の年齢は92歳です。 次の誕生日である2022年11月18日までには、ミッ キーマウスは93歳になるので、93本のろうそくが 必要です。 よって、93本 × 100円/本 = 9,300円が必要な金 額です。 LLMの持つ知識のみから回答し ているので間違っている。(ミッ キーマウスは2024年11月6日時 点で95歳)
  3. LLM インターネット 計算機 ② まずミッキーマウスの誕 生日をインターネットで検 索してみよう。 ① ミッキーマウスの次の誕生日に ケーキをプレゼントしたいです。

    彼の年齢分のろうそくを購入する ための金額を計算してください。 ろうそくは一本100円です。 ① LLMへの指示 ⑧ ミッキーマウスの誕生日と 今日の日付から、ミッキーマ ウスの年齢が95歳だとわかっ たので、今度は、次の誕生日 のケーキに必要なろうそくの 購入金額を計算してみよう ⑫ 最終回答の提示 ⑪ 最終回答は、9,600円です。 AIエージェントの場合 時計 ⑥ 現在の日付を調査 ⑦ 現在の日付を返却 2024年11月6日 ⑤ ミッキーマウスの誕生日 は1928年11月18日のよう だ。今、何歳かを知りたい ので、今日の日付を調べよ う。
  4. ReActとは? 思考 行動 質問 最終回答 観察 (行動の結果) 行動の入力 ReActは、AIが「質問」に対してまず「思考」を行い、 解決するために外部ツールやデータを使用して「行動の

    入力」を行います。 その結果を「観察」して次の行動を決定し、最終的に「 行動」しながら正しい「最終回答」にたどり着くプロセ スです。 このサイクルにより、AIは段階的に問題を解決する能力 を持ち、複雑なタスクにも柔軟に対応できます。
  5. LLM インターネット 計算機 ② まずミッキーマウスの誕 生日をインターネットで検 索してみよう。 ① ミッキーマウスの次の誕生日に ケーキをプレゼントしたいです。

    彼の年齢分のろうそくを購入する ための金額を計算してください。 ろうそくは一本100円です。 ① LLMへの指示 ⑧ ミッキーマウスの誕生日 と今日の日付から、ミッキー マウスの年齢が95歳だとわ かったので、今度は、次の誕 生日のケーキに必要なろうそ くの購入金額を計算してみよ う ⑫ 最終回答の提示 ⑪ 最終回答は、9,600円です。 時計 ⑥ 現在の日付を調査 ⑦ 現在の日付を返却 2024年11月6日 ⑤ ミッキーマウスの誕生日 は1928年11月18日のよう だ。今、何歳かを知りたい ので、今日の日付を調べよ う。 質問 思考 行動の入力 行動 思考 観察 行動 観察 思考 行動の入力 行動 観察 最終回答
  6. 次の質問にできる限り答えてください。次のツールにアクセスできます。 - 検索ツール:検索するときに使います - 計算ツール:計算するときに使います - 今日の日付取得ツール:今日の日付を取得するときに使います。 次のフォーマットを使用します。 質問:回答する必要がある入力質問 思考:次に何をすべきかを常に考える

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

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

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

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

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