Slide 1

Slide 1 text

Semantic Kernelを使ってAI チャットアプリを構築する - ライブコーディング編 - 株式会社SAKURUG エンジニアリングユニット 草場 友光 .NETラボ 2023年7月

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

宣伝 【VISION】ひとの可能性を開花させる企業であり続ける VISIONに共感できる仲間募集中。

Slide 4

Slide 4 text

注意 • 個人の見解・解釈が多分に入っています。 • 見解の相違・事実誤認などありましたらご指摘ください。 • Semantic Kernelは現在Preview版です。急速な勢いで機能実 装されています。 • 2023年7月22日現在の preview版に基づいています。 • ここで紹介した方法について破壊的変更などの可能性があるこ とに留意してください。 • #dotnetlabでtweetすると右側に表示されます

Slide 5

Slide 5 text

今日の目的 • Semantic KernelというOpenAI Serviceでとても便利なライブラ リがあります。 • Microsoft Build Japanのハンズオンで「Semantic Kernelを 使ってAIチャットアプリを構築する」をやり会場の収容人数を 上回る方に申し込みを頂きました。 • 結果的にハンズオンに参加できない方が出てきてしましました。 • そこで、今回は同じ内容でライブコーディングを行います。

Slide 6

Slide 6 text

Semantic Kernelを使ってAIチャットアプリを 構築する -事前説明スライド- ・草場 友光(Microsoft MVP for Developer Technologies / 株式会社SAKURUG) ・髙尾 哲朗(Microsoft MVP for Developer Technologies) ・大川 貴志(Microsoft MVP for M365 Development)

Slide 7

Slide 7 text

Agenda  12:15 ~ 事前説明  12:20 ~ ハンズオン開始(ChatGPTのよ うなAIと会話できるチャットアプリの構 築)  13:00 ~ プロンプトを変えてみよう  13:10 ~ Bing Searchを利用してWeb情 報からAIが回答するようにしよう  13:35 ~ まとめ

Slide 8

Slide 8 text

Semantic Kernelとは? • Semantic KernelはMicrosoftがOSSとして発表したAzure OpenAI ServiceやOpenAI Serviceをアプリケーションに素早く簡 単に組み込むことができるようにするライブラリです。 • 複数の関数を一つのパイプラインに結合できそのパイプラインを AIが自動的に作ってくれる。。。 • 今日はこの中でも組み込みのChatCompletionを使用していきま す。

Slide 9

Slide 9 text

Kernelのインスタンス化 kernel = new KernelBuilder() .WithLogger(_logger) .WithAzureChatCompletionService(deploymentName, baseUrl, key) .Build(); deploymentName key baseUrl

Slide 10

Slide 10 text

ハンズオンで使用するコード https://github.com/tomokusaba/BuildJapanAIHandsonDay1-1

Slide 11

Slide 11 text

Bing Searchについて13:10~(予定)

Slide 12

Slide 12 text

Bing Searchの使用法(準備) Microsoft.SemanticKernel.Skills.Webを追加でNuget

Slide 13

Slide 13 text

Bing Searchの結果をプロンプトに • Bing Searchの結果をプロンプトに格納したい • SystemMessageが何件もあるのはいかがなものか? • すべて文字列連結して1つのSystemMessageに格納 • SystemMessageが次の会話に残るのもなんか嫌 • 一時的なチャット履歴を作成しこれにBing Searchの結果を格納しgptさん で会話生成!

Slide 14

Slide 14 text

Bing Searchの使用法(メソッド) public async Task> SearchAsync(string query, int count = 1, int offset = 0, CancellationToken cancellationToken = default)を呼ぶ 検索結果の見出しの部分が本文として取得できる ここの部分が取得できる! つまり途中で切れてる

Slide 15

Slide 15 text

Bing Searchの使用法(インスタンス化) 引数はAPI KeyとILogger(オプション) https://github.com/microsoft/semantic- kernel/blob/main/dotnet/src/Skills/Skills.Web/Bing/BingConnector.cs

Slide 16

Slide 16 text

デモ

Slide 17

Slide 17 text

おしまい おしまい