.NETラボ勉強会2023年4月 Azure OpenAIサービスでChatGPTをC#で使ってみる
Azure OpenAIサービスでChatGPTをC#で使ってみる株式会社SAKURUGエンジニアリングユニット草場 友光.NETラボ 2023年4月
View Slide
自己紹介• 普段は主にシステムをAzureにモダナイズする仕事をしています。• コミュニティ活動を通じて知識をアップデートしています。• 2022/08-2023 Microsoft MVP(Developer Technologies)• tomo_kusaba
宣伝【VISION】ひとの可能性を開花させる企業であり続けるVISIONに共感できる仲間募集中。
注意• 個人の見解・解釈が多分に入っています。• 見解の相違・事実誤認などありましたらご指摘ください。• #dotnetlabでtweetすると右側に表示されます
今日の目的• Azure OpenAIサービスでChat GPT(gpt-35-turbo)がプレビューになっています。このモデルについてC#で使用する方法について解説します。• GTP-4についても同様の方法で使用できますのでデモを行います。• APIが今後も変更になる可能性がありますのでドキュメントや実装から読み取りアプリケーションを実装する方法について解説します。
セッションの動機• Chat GPT(Azure OpenAI Service gpt-35-turbo含む)リリース当初、C#でのコード例が少なかった。• コード例はもっぱらPythonでの例が多かった。• しかしながら、REST APIがある以上、C#から利用できないはずがないと考え本セッションをやろうと決めた。• 現在では状況が変わりプレイグラウンドでもC#のコード例があるがそれ以前に企画されたセッションであることを留意していただきたい。
Azure OpenAI サービスとは?• Azure OpenAIサービスはGPT-3、CodexなどOpenAIの強力な言語モデルをREST APIとして使用できます。• コンテンツの生成、まとめ、自然言語からコードへの翻訳などができる。• REST API、Python SDK、またはAzure OpenAI StudioのWebベースのインターフェイスを介してサービスにアクセスできる。• C#ではREST APIを利用してサービスにアクセスする。
責任あるAI• Azure OpenAI使用できる生成モデルにはかなりの潜在的利益があります。• しかし、慎重な設計と熟考した軽減策がない場合有害なコンテンツが生成される可能性があります。• 明確に定義したユースケースを示すことを申請者の要件とするオンボードされた顧客に対して責任あるAI実装のガイダンスを提供するなどです。
Azure OpenAIへのアクセス方法• 現在、アクセスは制限されています。• Microsoftと既存のパートナーシップがあるお客様、リスクが低いユースケース、軽減策の取り入れに取り組んでいるお客様が対象。• 申請フォームを提出し承認される必要があります。
新しいChatGPT(プレビュー)とは?• 会話型インターフェイス用に設計された言語モデル• 以前のモデルはテキストインとテキストアウト• プロンプト文字列を受け入れ、プロンプトに追加する入力候補を返していた• ChatGPTモデルではカンバセーションインとメッセージアウト
Azure OpenAIモデルの種類モデルファミリー 説明GPT-4 GPT-3.5 を基に改善され、自然言語とコードを生成するだけでなく、理解できるモデルのセット。 これらのモデルは現在プレビュー段階です。(要別途申請)GPT-3 自然言語を理解し、生成できるモデルのシリーズ。 これには、新しいChatGPT モデル (プレビュー) が含まれます。Codex 自然言語のコードへの変換を含め、コードを理解し、生成できるモデルのシリーズ。埋め込み 埋め込みを理解し、使用できるモデルのセット。 埋め込みは、機械学習モデルとアルゴリズムで簡単に利用できる特別な形式のデータ表現です。埋め込みは、テキストの意味論的意味の情報密度の高い表現です。 現在、異なる機能に対応する埋め込みモデルの 3 つのファミリ (類似性、テキスト検索、コード検索) を提供しています。
GPT-4へのアクセス方法• リクエストフォームの申請が承認されると使用できる
Azure OpenAIとOpenAIの比較• Azure OpenAIはOpenAIとともにAPIを共同開発し互換性を確保し一方から他方へスムーズな移行を保証します。• Azure OpenAIを使用するとOpenAIと同じモデルを実行しながらAzureのセキュリティ機能を使用できる。• Azure OpenAIでは、プライベートネットワーク、リージョンの可用性、責任あるAIコンテンツのフィルター処理が提供される。• Azureならではのセキュリティ機能・ガバナンス機能が利用できる。
ChatGPT(gpt-35-turbo)モデル• チャットのような特定のトランススクリプト形式でフォーマットされた入力を想定し、チャット内のモデルで記述されたメッセージを表す入力候補を返します。• モデルと対話するためのAPIとして2つのオプションがある• Chat Completion API(推奨)• ChatML API
Chat Completion API• learn.microsoft.comより
ChatML API• learn.microsoft.comより
リソースの作成&モデルデプロイ• 前提条件ーAzure OpenAIサービスへのアクセス申請が承認済みであること• リソースの作成• Azure Portalなどからサブスクリプション・リソースグループ・リージョン・名前・価格レベルを指定してリソースを作成する• モデルのデプロイ• Azure PortalまたはAzure OpenAI Studioから使用するモデルをデプロイする。
ChatGPTプレイグラウンド• Web画面でコードなしにAzure OpenAI機能を試すことができる• パラメータを調整しながら素早く反復して実験することが可能• いくつかの言語やコマンドでのコード例が示されておりこれによってAPI仕様を確認することが可能• 日本語ドキュメントより更新が早いことが多いプレイグラウンドを参考にコードを書く
ドキュメントについて• 基本的には公式ドキュメント(https://learn.microsoft.com/ja-jp/azure/cognitive-services/openai/how-to/chatgpt?pivots=programming-language-chat-completions)を参照• ただし、日本語ドキュメントの翻訳は若干遅れる• Azure OpenAI Studioプレイグラウンドの更新と比べ差異があった場合は英語ドキュメント(US)を確認する
C#で実装するには(HttpClientで自力実装)• AzurePortalよりAPIキーを取得する
• どこにどんな内容のHTTPアクセスを行ったらよいかを確認する• Azure OpenAI Studioのプレイグラウンドで確認• .NETラボ勉強会2023年3月の「何縫ねの。」さんのセッションを聞いたのでHttpClientについてはバッチリですね!C#で実装するには(HttpClientで自力実装)
C#で実装するには(HttpClientで自力実装)アクセス先URLHTTPヘッダーPOST本文
• 応答はマークダウンで返ってくる• Webなどに表示する際にはこれをHTMLに変換してあげるとよいC#で実装するには(HttpClientで自力実装)
• POSTし成功すると以下のような応答があるC#で実装するには(HttpClientで自力実装)ここが表示すべき応答
C#で実装するには(HttpClientで自力実装)メソッドはPOSTHTTPヘッダーを設定リクエスト本文を設定レスポンスをデシリアライズマークダウンをHTMLに変換
C#で実装するには(HttpClientで自力実装)デモ
C#で実装するには(Azure.AI.OpenAIパッケージ)• Azure.AI.OpenAIライブラリを使用する(Preview)• Azure.AI.OpenAIをNuget• プレイグラウンドのサンプルコードを参考にコードを書く
参考文献• Azure OpenAI Service とは• Azure OpenAI Service モデル• クイック スタート: Azure OpenAI Service で ChatGPT (プレビュー) と GPT-4 (プレビュー) の使用を開始する
おしまいおしまい