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

Azure OpenAIサービスでChatGPTをC#で使ってみる

Azure OpenAIサービスでChatGPTをC#で使ってみる

.NETラボ勉強会2023年4月
Azure OpenAIサービスでChatGPTをC#で使ってみる

tomokusaba

April 22, 2023
Tweet

More Decks by tomokusaba

Other Decks in Programming

Transcript

  1. Azure OpenAIサービスで
    ChatGPTをC#で使ってみる
    株式会社SAKURUG
    エンジニアリングユニット
    草場 友光
    .NETラボ 2023年4月

    View Slide

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

    View Slide

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

    View Slide

  4. 注意
    • 個人の見解・解釈が多分に入っています。
    • 見解の相違・事実誤認などありましたらご指摘ください。
    • #dotnetlabでtweetすると右側に表示されます

    View Slide

  5. 今日の目的
    • Azure OpenAIサービスでChat GPT(gpt-35-turbo)がプレビュー
    になっています。このモデルについてC#で使用する方法につい
    て解説します。
    • GTP-4についても同様の方法で使用できますのでデモを行いま
    す。
    • APIが今後も変更になる可能性がありますのでドキュメントや
    実装から読み取りアプリケーションを実装する方法について解
    説します。

    View Slide

  6. セッションの動機
    • Chat GPT(Azure OpenAI Service gpt-35-turbo含む)リ
    リース当初、C#でのコード例が少なかった。
    • コード例はもっぱらPythonでの例が多かった。
    • しかしながら、REST APIがある以上、C#から利用できないは
    ずがないと考え本セッションをやろうと決めた。
    • 現在では状況が変わりプレイグラウンドでもC#のコード例が
    あるがそれ以前に企画されたセッションであることを留意して
    いただきたい。

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

    View Slide

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

    View Slide

  10. 新しいChatGPT(プレビュー)とは?
    • 会話型インターフェイス用に設計された言語モデル
    • 以前のモデルはテキストインとテキストアウト
    • プロンプト文字列を受け入れ、プロンプトに追加する入力候補を返し
    ていた
    • ChatGPTモデルではカンバセーションインとメッセージアウ

    View Slide

  11. Azure OpenAIモデルの種類
    モデルファミリー 説明
    GPT-4 GPT-3.5 を基に改善され、自然言語とコードを生成するだけでなく、
    理解できるモデルのセット。 これらのモデルは現在プレビュー段階です。
    (要別途申請)
    GPT-3 自然言語を理解し、生成できるモデルのシリーズ。 これには、新しい
    ChatGPT モデル (プレビュー) が含まれます。
    Codex 自然言語のコードへの変換を含め、コードを理解し、生成できるモデルの
    シリーズ。
    埋め込み 埋め込みを理解し、使用できるモデルのセット。 埋め込みは、機械学習モ
    デルとアルゴリズムで簡単に利用できる特別な形式のデータ表現です。
    埋め込みは、テキストの意味論的意味の情報密度の高い表現です。 現在、
    異なる機能に対応する埋め込みモデルの 3 つのファミリ (類似性、テキ
    スト検索、コード検索) を提供しています。

    View Slide

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

    View Slide

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

    View Slide

  14. ChatGPT(gpt-35-turbo)モデル
    • チャットのような特定のトランススクリプト形式でフォーマッ
    トされた入力を想定し、チャット内のモデルで記述されたメッ
    セージを表す入力候補を返します。
    • モデルと対話するためのAPIとして2つのオプションがある
    • Chat Completion API(推奨)
    • ChatML API

    View Slide

  15. Chat Completion API
    • learn.microsoft.comより

    View Slide

  16. ChatML API
    • learn.microsoft.comより

    View Slide

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

    View Slide

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

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

    View Slide

  19. ドキュメントについて
    • 基本的には公式ドキュメント
    (https://learn.microsoft.com/ja-jp/azure/cognitive-
    services/openai/how-to/chatgpt?pivots=programming-
    language-chat-completions)を参照
    • ただし、日本語ドキュメントの翻訳は若干遅れる
    • Azure OpenAI Studioプレイグラウンドの更新と比べ差異が
    あった場合は英語ドキュメント(US)を確認する

    View Slide

  20. C#で実装するには(HttpClientで自力実装)
    • AzurePortalよりAPIキーを取得する

    View Slide

  21. • どこにどんな内容のHTTPア
    クセスを行ったらよいかを
    確認する
    • Azure OpenAI Studioのプ
    レイグラウンドで確認
    • .NETラボ勉強会2023年3月
    の「何縫ねの。」さんの
    セッションを聞いたので
    HttpClientについてはバッチ
    リですね!
    C#で実装するには(HttpClientで自力実装)

    View Slide

  22. C#で実装するには(HttpClientで自力実装)
    アクセス先URL
    HTTPヘッダー
    POST本文

    View Slide

  23. • 応答はマークダウンで返っ
    てくる
    • Webなどに表示する際には
    これをHTMLに変換してあ
    げるとよい
    C#で実装するには(HttpClientで自力実装)

    View Slide

  24. • POSTし成功すると以下のような応答がある
    C#で実装するには(HttpClientで自力実装)
    ここが表示すべき応答

    View Slide

  25. C#で実装するには(HttpClientで自力実装)
    メソッドはPOST
    HTTPヘッダーを設定
    リクエスト本文を設定
    レスポンスをデシリアライズ
    マークダウンをHTMLに変換

    View Slide

  26. C#で実装するには(HttpClientで自力実装)
    デモ

    View Slide

  27. C#で実装するには(Azure.AI.OpenAIパッケージ)
    • Azure.AI.OpenAIライブラリ
    を使用する(Preview)
    • Azure.AI.OpenAIをNuget
    • プレイグラウンドのサンプル
    コードを参考にコードを書く

    View Slide

  28. 参考文献
    • Azure OpenAI Service とは
    • Azure OpenAI Service モデル
    • クイック スタート: Azure OpenAI Service で ChatGPT (プレ
    ビュー) と GPT-4 (プレビュー) の使用を開始する

    View Slide

  29. おしまい
    おしまい

    View Slide