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

Semantic Kernel(C#)でAzure OpenAI ServiceのGPT-4を使ってみる

Semantic Kernel(C#)でAzure OpenAI ServiceのGPT-4を使ってみる

Semantic Kernel(C#)でAzure OpenAI ServiceのGTP-4を使ってみる
.NETラボ勉強会2023年5月
https://dotnetlab.connpass.com/event/281932/

tomokusaba

May 27, 2023
Tweet

More Decks by tomokusaba

Other Decks in Programming

Transcript

  1. Semantic Kernel(C#)で
    Azure AI OpenServiceの
    GPT-4を使ってみる
    株式会社SAKURUG
    エンジニアリングユニット
    草場 友光
    .NETラボ 2023年5月

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  5. 今日の目的
    • Semantic KernelというOpenAI Serviceでとても便利なライブラ
    リがあります。
    • Semantic Kernel自体にはテンプレート化、チェーン化、埋め
    込みベースのメモリ、プランニング機能といった便利な機能が
    備わっています。
    • 本日は、ChatGPTで会話ベースのアプリケーションを実装で
    きるところまでを解説します。

    View Slide

  6. セッションの動機
    • 現在、Chat GPTプレイグラウンドでC#のコード例として表示
    されているコードは「Azure.AI.OpenAI」のライブラリーを使
    用している。
    • ChatCompletionsOptionsのMessagesプロパティはGetしか
    許されておらずユーザメッセージとAIによる生成を繰り返し行
    うような使い方をするには使い勝手が悪い
    • REST APIとしてはとてもよいのに残念
    • しかし、Semantic Kernelならできそう!!

    View Slide

  7. Azure OpenAI サービスとは?
    • Azure OpenAIサービスはGPT-3、CodexなどOpenAIの強力
    な言語モデルをREST APIとして使用できます。
    • コンテンツの生成、まとめ、自然言語からコードへの翻訳など
    ができる。
    • REST API、Python SDK、またはAzure OpenAI Studioの
    Webベースのインターフェイスを介してサービスにアクセスで
    きる。
    • C#ではREST APIを利用してサービスにアクセスする。

    View Slide

  8. Open AI × Microsoft
    • https://news.microsoft.com/ja-jp/2023/01/25/230125-
    microsoftandopenaiextendpartnership/
    • 2023年1月複数年にわたって数十億ドル規模の投資を行うと発

    • AIの力によりマイクロソフトのミッションである「地球上の
    すべての個人とすべての組織が、より多くのことを達
    成できるようにする」この手段の一つであると推察

    View Slide

  9. 責任あるAI
    • Azure OpenAI使用できる生成モデルにはかなりの潜在的利益
    があります。
    • しかし、慎重な設計と熟考した軽減策がない場合有害なコンテ
    ンツが生成される可能性があります。
    • 明確に定義したユースケースを示すことを申請者の要件とする
    オンボードされた顧客に対して責任あるAI実装のガイダンスを
    提供するなどです。

    View Slide

  10. Azure OpenAIへのアクセス方法
    • 現在、アクセスは制限されています。
    • Microsoftと既存のパートナーシップ
    があるお客様、リスクが低いユース
    ケース、軽減策の取り入れに取り組ん
    でいるお客様が対象。
    • 申請フォームを提出し承認される必要
    があります。

    View Slide

  11. GPT-4へのアクセス方法
    • リクエストフォームの申請が承認されると使用できる

    View Slide

  12. Azure OpenAIとOpenAIの比較
    • Azure OpenAIはOpenAIとともにAPIを共同開発し互換性を確
    保し一方から他方へスムーズな移行を保証します。
    • Azure OpenAIを使用するとOpenAIと同じモデルを実行しな
    がらAzureのセキュリティ機能を使用できる。
    • Azure OpenAIでは、プライベートネットワーク、リージョン
    の可用性、責任あるAIコンテンツのフィルター処理が提供され
    る。
    • Azureならではのセキュリティ機能・ガバナンス機能が利用で
    きる。

    View Slide

  13. Chat Completion API
    • learn.microsoft.comより
    メッセージ 説明
    System システムメッセージはモデルの初期
    コンテキストとガイダンスを提供し
    ます。応答すべきことと回答すべき
    でないこと。応答の書式方法につい
    て説明します。
    Assistant モデルによって生成された入力候
    補または応答を含むメッセージ
    User ユーザーが作成したメッセージ。

    View Slide

  14. リソースの作成&モデルデプロイ
    • 前提条件ーAzure OpenAIサービスへのアクセス申請が承認済
    みであること
    • リソースの作成
    • Azure Portalなどからサブスクリプション・リソースグループ・リー
    ジョン・名前・価格レベルを指定してリソースを作成する
    • モデルのデプロイ
    • Azure PortalまたはAzure OpenAI Studioから使用するモデルをデプ
    ロイする。

    View Slide

  15. ChatGPTプレイグラウンド
    • Web画面でコードなしにAzure OpenAI機能を試すことができ

    • パラメータを調整しながら素早く反復して実験することが可能
    • いくつかの言語やコマンドでのコード例が示されておりこれに
    よってAPI仕様を確認することが可能
    • 日本語ドキュメントより更新が早いことが多い
    プレイグラウンドを参考にコードを書く

    View Slide

  16. ChatGPTプレイグラウンドでまずは実験
    • 実装を始める前にChatGPTがどんな挙動をするかプレイグラ
    ウンドでいろいろ試してみることが必要です。

    View Slide

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

    View Slide

  18. Semantic Kernelの概要
    カーネル
    全体の制御
    プランナー
    スキルの実行順を
    決める
    スキル
    プロンプトを管理
    メモリー
    記憶を管理
    コネクター
    外部接続を管理
    今日は組み込み

    ChatCompletion
    を使用します。

    View Slide

  19. Kernelのインスタンス化
    • 汎用ホストに近い書き方も
    できる!
    kernel = new KernelBuilder().Configure(c =>
    {
    c.AddAzureChatCompletionService(serviceId, deploymentName, baseUrl, key);
    }).WithLogger(_logger).Build();
    serviceId
    deploymentName
    key
    baseUrl

    View Slide

  20. IChatCompletion
    • CreateNewChatメソッドで新しい会話インスタンスを作成
    • 引数はシステムメッセージ
    • 戻り値がOpenAIChatHistoryでここに会話メッセージを追加
    • GenerateMessageAsyncメソッドでAIがメッセージ生成
    • 引数はOpenAIChatHistoryとChatRequestSettings
    • 戻り値が生成された文字列(マークダウンされている)

    View Slide

  21. OpenAIChatHistory
    • AddUserMessageメソッドでユーザの会話を追加
    • AddAssistantMessageメソッドでAIが生成した会話を追加
    • AddSystemMessageメソッドでシステムメッセージを追加
    {"role":"user","content":"システム障害を起こしちゃった。"}
    {"role":"assistant","content":"ご迷惑をおかけして申し訳ありません。突然のシステム障害により、お客様に多大なご迷惑をおかけしました
    ことを心よりお詫び申し上げます。現在、全力で復旧作業を行っておりますので、今しばらくお待ちいただけますようお願い申し上げます。今後
    は、同様のトラブルが発生しないように、システムの強化に努めてまいります。再度、ご迷惑をおかけしましたことを、心よりお詫び申し上げま
    す。"}]
    {"role":"system","content":"顧客に謝罪をしなければいけません。¥n謝罪文を作ってください。"}

    View Slide

  22. ChatRequestSettings
    • チャットパラメータを設定
    プレイグラウンドでいうここ!

    View Slide

  23. コード例(コンストラクタ)
    0.13以降でコンスト
    ラクタの引数変更

    View Slide

  24. コード例(入力時)

    View Slide

  25. ストリーミング対応
    • 本家OpenAIのChatGPTは回答する際に文字が1文字ずつ表示
    されます。このような表示方法を再現してみましょう。
    • ストリーミングAPIを使えばこの機能は実現できます。
    • Semantic KernelのChatCompletionでは0.13系以降で実装さ
    れています。

    View Slide

  26. ストリーミング対応コード

    View Slide

  27. デモ

    View Slide

  28. 来月予告
    • Bing Connectorを使って最新の情報をもとに回答をする
    • 既存のチャットアプリにAIアシスタント(ChatGTP)を参加さ
    せてみた

    View Slide

  29. 時間があったら

    View Slide

  30. Dev Driveの効果
    項目 条件
    プロジェクトの種類 Blazor Server
    構成 Release
    ターゲットフレームワーク net7.0
    配置モード 自己完結
    ターゲットランタイム win-x64
    単一ファイルの作成 ✅
    ReadyToRunコンパイルを有効にする ✅
    未使用コードのトリミング ✅
    Dev Drive未使用時
    3分3秒
    Dev Drive使用時
    2分45秒

    View Slide

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

    View Slide

  32. おしまい
    おしまい

    View Slide