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

Semantic KernelのChatCompletionでBing検索を使う

Semantic KernelのChatCompletionでBing検索を使う

Semantic KernelのChatCompletionでBing検索を使う
.NETラボ勉強会2023年6月
https://dotnetlab.connpass.com/event/285454/

tomokusaba

June 22, 2023
Tweet

More Decks by tomokusaba

Other Decks in Programming

Transcript

  1. 注意 • 個人の見解・解釈が多分に入っています。 • 見解の相違・事実誤認などありましたらご指摘ください。 • Semantic Kernelは現在Preview版です。急速な勢いで機能実 装されています。 •

    2023年6月24日現在の0.16.230615.1 preview版に基づいて います。 • ここで紹介した方法について破壊的変更などの可能性があるこ とに留意してください。 • #dotnetlabでtweetすると右側に表示されます
  2. 今日の目的 • Semantic KernelというOpenAI Serviceでとても便利なライブラ リがあります。 • Semantic Kernel自体にはテンプレート化、チェーン化、埋め 込みベースのメモリ、プランニング機能といった便利な機能が

    備わっています。 • 本日は、ChatGPTでBing Searchを使い最新の情報を元に回答 するところ。 • すでにあるチャットアプリにAIアシスタントを参加させてみた というところについて解説します。
  3. Azure OpenAI サービスとは? • Azure OpenAIサービスはGPT-3、CodexなどOpenAIの強力 な言語モデルをREST APIとして使用できます。 • コンテンツの生成、まとめ、自然言語からコードへの翻訳など

    ができる。 • REST API、Python SDK、またはAzure OpenAI Studioの Webベースのインターフェイスを介してサービスにアクセスで きる。 • C#ではREST APIを利用してサービスにアクセスする。
  4. Open AI × Microsoft • https://news.microsoft.com/ja-jp/2023/01/25/230125- microsoftandopenaiextendpartnership/ • 2023年1月複数年にわたって数十億ドル規模の投資を行うと発 表

    • AIの力によりマイクロソフトのミッションである「地球上の すべての個人とすべての組織が、より多くのことを達 成できるようにする」この手段の一つであると推察
  5. Azure OpenAIとOpenAIの比較 • Azure OpenAIはOpenAIとともにAPIを共同開発し互換性を確 保し一方から他方へスムーズな移行を保証します。 • Azure OpenAIを使用するとOpenAIと同じモデルを実行しな がらAzureのセキュリティ機能を使用できる。

    • Azure OpenAIでは、プライベートネットワーク、リージョン の可用性、責任あるAIコンテンツのフィルター処理が提供され る。 • Azureならではのセキュリティ機能・ガバナンス機能が利用で きる。
  6. Chat Completion API • learn.microsoft.comより メッセージ 説明 System システムメッセージはモデルの初期 コンテキストとガイダンスを提供し

    ます。応答すべきことと回答すべき でないこと。応答の書式方法につい て説明します。 Assistant モデルによって生成された入力候 補または応答を含むメッセージ User ユーザーが作成したメッセージ。 今回はここにBing Search の検索結果を入れてみます。
  7. Bing Searchを使う • public async Task<IEnumerable<string>> SearchAsync(string query, int count

    = 1, int offset = 0, CancellationToken cancellationToken = default)を呼ぶ • 検索結果の見出しの部分が本文として取得できる ここの部分! つまり途中で切れてる
  8. Bing Searchの結果をプロンプトに • Bing Searchの結果をプロンプトに格納したい • SystemMessageが何件もあるのはいかがなものか? • すべて文字列連結して1つのSystemMessageに格納 •

    SystemMessageが次の会話に残るのもなんか嫌 • 一時的なチャット履歴を作成しこれにBing Searchの結果を格納しgpt さんで会話生成!
  9. AIアシスタント追加のポイント • Semantic Kernelの機能を提供するクラスを用意する • kernelのインスタンス化(コンストラクタ) • メッセージ生成メソッド • メッセージ追加メソッド→通常発言の場合でもOpenAIChatHistoryに

    メッセージを追加しておき文脈を意識した返答をAIアシスタントがで きるようにする! • チャット画面Razor側でSemantic Kernel機能を提供するクラ スをInject(Singleton) • 発言ボタンでメッセージ追加メソッドを呼ぶ • ほのかさんに話しかけるボタンでメッセージ追加メソッドを呼ぶ
  10. 参考文献 • Azure OpenAI Service とは • Azure OpenAI Service

    モデル • クイック スタート: Azure OpenAI Service で ChatGPT (プレ ビュー) と GPT-4 (プレビュー) の使用を開始する • Semantic Kernel • Microsoft が LLM をアプリ開発に統合するための OSS 「Semantic Kernel」を発表