Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Semantic Kernelの ChatCompletionでBing検索 を使う 株式会社SAKURUG エンジニアリングユニット 草場 友光 .NETラボ 2023年6月
Slide 2
Slide 2 text
自己紹介 • 普段は主にシステムをAzureにモダナ イズする仕事をしています。 • コミュニティ活動を通じて知識をアッ プデートしています。 • 2022/08-2023 Microsoft MVP (Developer Technologies) • tomo_kusaba
Slide 3
Slide 3 text
本日誕生日です • 一応、欲しいものリスト • https://www.amazon.jp/hz/wishlist/ls/1PYM6PUAV4A1U ?ref_=wl_share
Slide 4
Slide 4 text
宣伝 【VISION】ひとの可能性を開花させる企業であり続ける VISIONに共感できる仲間募集中。
Slide 5
Slide 5 text
注意 • 個人の見解・解釈が多分に入っています。 • 見解の相違・事実誤認などありましたらご指摘ください。 • Semantic Kernelは現在Preview版です。急速な勢いで機能実 装されています。 • 2023年6月24日現在の0.16.230615.1 preview版に基づいて います。 • ここで紹介した方法について破壊的変更などの可能性があるこ とに留意してください。 • #dotnetlabでtweetすると右側に表示されます
Slide 6
Slide 6 text
今日の目的 • Semantic KernelというOpenAI Serviceでとても便利なライブラ リがあります。 • Semantic Kernel自体にはテンプレート化、チェーン化、埋め 込みベースのメモリ、プランニング機能といった便利な機能が 備わっています。 • 本日は、ChatGPTでBing Searchを使い最新の情報を元に回答 するところ。 • すでにあるチャットアプリにAIアシスタントを参加させてみた というところについて解説します。
Slide 7
Slide 7 text
先月からのIChatCompletionを使う上 での破壊的変更・非推奨機能への変更 • KernelBuilderでConfigure()内でサービス追加していたが非推 奨になり、With~()に統一 • OpenAIChatHistory.Messagesプロパティの型が ListからListに変更
Slide 8
Slide 8 text
Azure OpenAI サービスとは? • Azure OpenAIサービスはGPT-3、CodexなどOpenAIの強力 な言語モデルをREST APIとして使用できます。 • コンテンツの生成、まとめ、自然言語からコードへの翻訳など ができる。 • REST API、Python SDK、またはAzure OpenAI Studioの Webベースのインターフェイスを介してサービスにアクセスで きる。 • C#ではREST APIを利用してサービスにアクセスする。
Slide 9
Slide 9 text
Open AI × Microsoft • https://news.microsoft.com/ja-jp/2023/01/25/230125- microsoftandopenaiextendpartnership/ • 2023年1月複数年にわたって数十億ドル規模の投資を行うと発 表 • AIの力によりマイクロソフトのミッションである「地球上の すべての個人とすべての組織が、より多くのことを達 成できるようにする」この手段の一つであると推察
Slide 10
Slide 10 text
責任あるAI • Azure OpenAI使用できる生成モデルにはかなりの潜在的利益 があります。 • しかし、慎重な設計と熟考した軽減策がない場合有害なコンテ ンツが生成される可能性があります。 • 明確に定義したユースケースを示すことを申請者の要件とする オンボードされた顧客に対して責任あるAI実装のガイダンスを 提供するなどです。
Slide 11
Slide 11 text
Azure OpenAIへのアクセス方法 • 現在、アクセスは制限されています。 • Microsoftと既存のパートナーシップ があるお客様、リスクが低いユース ケース、軽減策の取り入れに取り組ん でいるお客様が対象。 • 申請フォームを提出し承認される必要 があります。
Slide 12
Slide 12 text
GPT-4へのアクセス方法 • リクエストフォームの申請が承認されると使用できる
Slide 13
Slide 13 text
Azure OpenAIとOpenAIの比較 • Azure OpenAIはOpenAIとともにAPIを共同開発し互換性を確 保し一方から他方へスムーズな移行を保証します。 • Azure OpenAIを使用するとOpenAIと同じモデルを実行しな がらAzureのセキュリティ機能を使用できる。 • Azure OpenAIでは、プライベートネットワーク、リージョン の可用性、責任あるAIコンテンツのフィルター処理が提供され る。 • Azureならではのセキュリティ機能・ガバナンス機能が利用で きる。
Slide 14
Slide 14 text
Chat Completion API • learn.microsoft.comより メッセージ 説明 System システムメッセージはモデルの初期 コンテキストとガイダンスを提供し ます。応答すべきことと回答すべき でないこと。応答の書式方法につい て説明します。 Assistant モデルによって生成された入力候 補または応答を含むメッセージ User ユーザーが作成したメッセージ。 今回はここにBing Search の検索結果を入れてみます。
Slide 15
Slide 15 text
準備 • Microsoft.SemanticKernel.Skills.Webを追加でNuget
Slide 16
Slide 16 text
インスタンス化 • 引数はAPI KeyとILogger(オプション) https://github.com/microsoft/semantic- kernel/blob/main/dotnet/src/Skills/Skills.Web/Bing/BingConnector.cs
Slide 17
Slide 17 text
Bing Searchを使う • public async Task> SearchAsync(string query, int count = 1, int offset = 0, CancellationToken cancellationToken = default)を呼ぶ • 検索結果の見出しの部分が本文として取得できる ここの部分! つまり途中で切れてる
Slide 18
Slide 18 text
Bing Searchの結果をプロンプトに • Bing Searchの結果をプロンプトに格納したい • SystemMessageが何件もあるのはいかがなものか? • すべて文字列連結して1つのSystemMessageに格納 • SystemMessageが次の会話に残るのもなんか嫌 • 一時的なチャット履歴を作成しこれにBing Searchの結果を格納しgpt さんで会話生成!
Slide 19
Slide 19 text
結果 続きは Microsoft Build Japan 「Semantic Kernelを使ってAIチャット アプリを構築する」ハンズオ ンで
Slide 20
Slide 20 text
デモ
Slide 21
Slide 21 text
既存のチャットアプリにAIアシスタント を参加させてみる • .NETラボ勉強会2022年2月「SignalRを使ったチャットアプ リの制作」で紹介したチャットアプリにAIアシスタントを参加 させてみる。 追加
Slide 22
Slide 22 text
基本的な動作
Slide 23
Slide 23 text
応用的な動作 普通に発言 ほのかさんに話しかけ てみる! 文脈を読んだ返答が 帰ってくる!
Slide 24
Slide 24 text
AIアシスタント追加のポイント • Semantic Kernelの機能を提供するクラスを用意する • kernelのインスタンス化(コンストラクタ) • メッセージ生成メソッド • メッセージ追加メソッド→通常発言の場合でもOpenAIChatHistoryに メッセージを追加しておき文脈を意識した返答をAIアシスタントがで きるようにする! • チャット画面Razor側でSemantic Kernel機能を提供するクラ スをInject(Singleton) • 発言ボタンでメッセージ追加メソッドを呼ぶ • ほのかさんに話しかけるボタンでメッセージ追加メソッドを呼ぶ
Slide 25
Slide 25 text
Semantic Kernel0.15.230609.2- preview新機能の紹介 • 複数の回答を生成する機能が追加になりました
Slide 26
Slide 26 text
使い方 • ChatRequestSettingsのResultsPerPromptプロパティに回答 する数を設定 • GetChatCompletionsAsyncまたは GetStreamingChatCompletionsAsync(ストリーミング)を 呼ぶ • ストリーミングは回答ごとにストリーミングされてくるので難 しめ(サンプルではTaskを使ってます)
Slide 27
Slide 27 text
コード例
Slide 28
Slide 28 text
デモ
Slide 29
Slide 29 text
参考文献 • Azure OpenAI Service とは • Azure OpenAI Service モデル • クイック スタート: Azure OpenAI Service で ChatGPT (プレ ビュー) と GPT-4 (プレビュー) の使用を開始する • Semantic Kernel • Microsoft が LLM をアプリ開発に統合するための OSS 「Semantic Kernel」を発表
Slide 30
Slide 30 text
おしまい おしまい