Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

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

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

Slide 15

Slide 15 text

Chat Completion API • learn.microsoft.comより

Slide 16

Slide 16 text

ChatML API • learn.microsoft.comより

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

おしまい おしまい