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

第50回 Tokyo Jazug Night/react-deepdive

第50回 Tokyo Jazug Night/react-deepdive

Noriyuki TAKEI

December 19, 2024
Tweet

More Decks by Noriyuki TAKEI

Other Decks in Technology

Transcript

  1. Noriyuki TAKEI ෢Ҫ ٓߦ Information • サイオステクノロジー株式会社 • Microsoft MVP

    for AI Platform Favorites • Azure • スカッシュ • スキー • ライブ配信 • ⽢いもの • ⾛ること • ストリートファイター6 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への指⽰ ③ インターネットで検索 ⑨ 計算機で計算実⾏ ⑧ ミッキーマウスの誕⽣⽇と 今⽇の⽇付から、ミッキーマ ウスの年齢が96歳だとわかっ たので、今度は、次の誕⽣⽇ のケーキに必要なろうそくの 購⼊⾦額を計算してみよう ⑫ 最終回答の提⽰ ⑪ 最終回答は、9,700円です。 ④ 結果を返却 ミッキーマウス 誕⽣⽇ ミッキーは1928年誕⽣… 97 * 100 ⑩ 結 果 を 返 却 9700 AIエージェントの場合 時計 ⑥ 現在の⽇付を調査 ⑦ 現在の⽇付を返却 2024年12⽉18⽇ ⑤ ミッキーマウスの誕⽣⽇ は1928年11⽉18⽇のよう だ。今、何歳かを知りたい ので、今⽇の⽇付を調べよ う。
  4. AIエージェントの実装⽅法 ⼈間 AI プログラム ツール (Web検索など) ツールとプロンプトをAIに与える 回答を⽣成し、 プログラムに渡す プロンプト

    あなたはWeb検索と天気取得APIのツー ルが使えます。ミッキーの誕⽣⽇を知る ために必要なツールと⼊⼒値を提⽰して ください⋯(続く) ツールと⼊⼒値 使えるツールと⼊⼒値は以下のとお りです。 ツール: Web検索 ⼊⼒値: ミッキー 誕⽣⽇ 回答をパース ⼊⼒値を渡して ツール(Web検索)を実⾏ ミッキー 誕⽣⽇ 11⽉18⽇はミッキーの誕⽣ ⽇。ミッキーのスクリーン デビュー95周年… 検索結果を返す AIに検索結果を返し 回答が要求を 満たしているか 思考させる 11⽉18⽇はミッキーの誕⽣ ⽇。ミッキーのスクリーン デビュー95周年… 思考する 回答を⽣成し、 プログラムに渡す ツールと⼊⼒値 最終回答が出るまでN回繰り返す 最終回答 ミッキーの誕⽣⽇は 11⽉18⽇です。 最終回答を返す
  5. 次の質問にできる限り答えてください。次のツールにアクセスできます。 - 検索ツール︓検索するときに使います - 計算ツール︓計算するときに使います - 今⽇の⽇付取得ツール︓今⽇の⽇付を取得するときに使います。 次のフォーマットを使⽤します。 質問︓回答する必要がある⼊⼒質問 思考︓次に何をすべきかを常に考える

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

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

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

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

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

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

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

    思考︓まず、ミッキーマウスの次の誕⽣⽇を探し、彼の年齢を計算する必要があります。次に、その年齢分のろうそくを購⼊するにはいくら必要か を計算します。最初にミッキーマウスの誕⽣⽇を調べます。 ⾏動︓検索ツール ⾏動の⼊⼒︓ ミッキーマウスの誕⽣⽇ 観察︓11⽉18⽇はミッキーの誕⽣⽇。ミッキーのスクリーンデビュー95周年をお祝いしよう♪. ミッキーマウス. ミッキーとミニーの誕⽣⽇…(略) 思考︓検索の結果から、ミッキーマウスの誕⽣⽇は1928年の11⽉18⽇であるとわかった。次に、現在の年から1928を引くことで、次の誕⽣⽇で ミッキーマウスが何歳になるかを計算する必要がある。 ⾏動︓今⽇の⽇付計算ツール ⾏動の⼊⼒︓無し 観察︓2024-12-18 22:36:19.047181 思考︓ミッキーマウスは1928年11⽉18⽇に初登場したため、次の誕⽣⽇で97歳となります。⼀つのローソクが100円なので、この価格で必要な ローソクの総額を計算する必要があります。 ⾏動︓計算ツール ⾏動の⼊⼒︓97 * 100 観察︓9600 思考︓今、最終的な答えが分かりました 最終回答︓ミッキーマウスの次の誕⽣⽇に彼の年齢分のろうそくを購⼊するためには、9700円必要です。 思考(4回⽬) 今までの結果からミッキーマウスの年齢分のろうそくの値段がわかったので、これ以上の 思考はせず、LLMが最終回答を出しました。