Slide 1

Slide 1 text

のネイティ ブ関数について 草場 友光 から まで最新の を語ろう

Slide 2

Slide 2 text

自己紹介  普段は主にシステムをAzureにモダナ イズする仕事をしています。  コミュニティ活動を通じて知識をアッ プデートしています。  2022/08-2024 Microsoft MVP (Developer Technologies)  tomo_kusaba

Slide 3

Slide 3 text

今日の目的  昨今、生成 の盛り上がりがすごいことになっています。  のなかでも中心的な機能であるネイティブ関数 についての機能を見ていきましょう。

Slide 4

Slide 4 text

とは?  既存のアプリケーションに エージェントを簡単に追加できる オープンソースの 。  現在は、 、 、 などのモデル で使用可能。  、 、 で使用可能。  モデルと組み合わせ質問に答えプロセスを自動化するエージェ ントを構築できる。

Slide 5

Slide 5 text

は の中心です https://github.com/Azure-Samples/miyagi?tab=readme-ov-file

Slide 6

Slide 6 text

なぜ、 を選択するのか?  がメインの開発言語であるから  もはや、 はクラウド・デスクトップ・モバイル・ ・ ・ などすべての領域において不可欠の存在になりつつある。  また、 も ・ ・ すべてで動かす必要が ある。  そのすべての領域での開発が可能なのが  エンタープライズ対応(監視・負荷分散・認証・認可・・・)

Slide 7

Slide 7 text

で何が作れる? 名称 説明 Chatbot シンプルなユーザと会話するアプリケーション RAG 情報を検索してそれを元にユーザと対話する←きっとこの後 いろいろ話があるはず Copilot ユーザーと対話して何かを作業する←今回のテーマ Fully autonomus 最小限の人間の入力で完全に自動化されたアプリケーション (まだこわい?)

Slide 8

Slide 8 text

の構成要素 手順を実行するために必要な機能を実装する。 例)データベースから情報を取得する Bingから情報を取得する 電子メールを送信する 以前の会話を記憶したり取得したりする 手順を実行する順番を計画する。 ユーザとどのように対話するかを指示する。 いわゆる「メタプロンプト」または「指示」と呼ばれるも の。

Slide 9

Slide 9 text

プラグインとは?  アプリやサービスに公開できる関数のグループ  ではプラグインの関数を自動または手動の関数 呼び出しまたはプランナーを使用して自動的に呼び出すことがで きる。

Slide 10

Slide 10 text

天気を取得してみる 場所コードを取得する 場所コードをもとにその場所の天気を取得する  以上のような 段階の処理になります。 今回はあえて質問文に応じて の機能を使い で自動的に を自動選択する自動実行で試してみたいと思 います。  のモデルで実行すると比較的成功率が高いようです。

Slide 11

Slide 11 text

場所コードを取得する  まず、場所コードを返すメソッドを実装。  ポイントはメソッドにつける説明文と引数 につける説明文 や関数の自動呼び出しによって使 用される [KernelFunction, Description("天気を取得する場所コードを取得します。")] public static int GetPlaceId([Description("天気を取得する場所")] string place) { var res = place switch { "東京" => 130000, "横浜" => 140000, "名古屋" => 230000, "京都" => 260000, "静岡" => 220000, "福井" => 180000, "新潟" => 150000, "富山" => 160000, "金沢" => 170000, "岐阜" => 210000, "長野" => 200000, "高山" => 190000, "松本" => 200000, "大津" => 250000, "大阪" => 270000, "札幌" => 016000, "仙台" => 040000, "福岡" => 400000, "那覇" => 471000, .... _ => throw new ArgumentException("対応していない地域です。") }; return res; }

Slide 12

Slide 12 text

場所コードに基づいて天気を返す  先ほどの場所コードを求める関数が先に 実行されることを前提に場所コードを引 数にする  戻り値は、  に をよしなに解析させていい感 じに天気を答えてくれる(はず)  呼び出し側は先ほどと同じ [KernelFunction, Description("場所コードの地域の天気を返す")] public async Task Weather([Description("場所コード")]int place) { return (await _client.GetAsync($"https://www.jma.go.jp/bosai/forecast/data/forecast/{place}.jso n")).Content.ReadAsStringAsync().Result; }

Slide 13

Slide 13 text

天気の実行結果  元となっているデータが少々異 なっているのですがそんなに間 違った の読み取りはしてな い印象。  いろいろと自動でやっているにも かかわらずそこそこの結果が出る のはすごい。

Slide 14

Slide 14 text

デモ

Slide 15

Slide 15 text

タスクの自動化がとても簡単!  天気を問い合わせる例を見たとおりユーザからの入力に対して適 切な関数 メソッド が呼び出されタスクを行うことができる。  どの程度精度が出るかは、選択したモデルと説明文 プロンプト能 力)次第。

Slide 16

Slide 16 text

参考文献   ~ 最新の を学ぶ  「 」補足記事 

Slide 17

Slide 17 text

おしまい