Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Azure OpenAIサービスでChatGPTをC#で使ってみる
Search
tomokusaba
April 22, 2023
Programming
3
1.2k
Azure OpenAIサービスでChatGPTをC#で使ってみる
.NETラボ勉強会2023年4月
Azure OpenAIサービスでChatGPTをC#で使ってみる
tomokusaba
April 22, 2023
Tweet
Share
More Decks by tomokusaba
See All by tomokusaba
GitHub Copilot の概要
tomokusaba
1
51
ASP.NETアプリケーションのモダナイズ インフラ編
tomokusaba
1
390
Azure AI Foundry Agent Serviceを使用してコードファースト アプリを構築する
tomokusaba
1
280
Part1 GitHubってなんだろう?その1
tomokusaba
3
930
Part1 GitHubってなんだろう?その2
tomokusaba
2
910
Part2 GitHub Copilotってなんだろう
tomokusaba
2
990
Global Azure2025(GitHub Copilot ハンズオン)
tomokusaba
2
910
ASP.NETアプリケーションのモダナイゼーションについて
tomokusaba
0
330
Fluent UI Blazor 5 (alpha)の紹介
tomokusaba
0
260
Other Decks in Programming
See All in Programming
関数型まつり2025登壇資料「関数プログラミングと再帰」
taisontsukada
2
840
Blazing Fast UI Development with Compose Hot Reload (droidcon New York 2025)
zsmb
1
120
deno-redisの紹介とJSRパッケージの運用について (toranoana.deno #21)
uki00a
0
130
カクヨムAndroidアプリのリブート
numeroanddev
0
430
AIネイティブなプロダクトをGolangで挑む取り組み
nmatsumoto4
0
120
AWS CDKの推しポイント 〜CloudFormationと比較してみた〜
akihisaikeda
3
290
都市をデータで見るってこういうこと PLATEAU属性情報入門
nokonoko1203
1
550
生成AIで日々のエラー調査を進めたい
yuyaabo
0
620
Bytecode Manipulation 으로 생산성 높이기
bigstark
2
360
型付きアクターモデルがもたらす分散シミュレーションの未来
piyo7
0
800
Julia という言語について (FP in Julia « SIDE: F ») for 関数型まつり2025
antimon2
3
970
Elixir で IoT 開発、 Nerves なら簡単にできる!?
pojiro
1
150
Featured
See All Featured
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.3k
Designing for Performance
lara
609
69k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
48
5.4k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
45
7.4k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
3k
Making Projects Easy
brettharned
116
6.3k
Large-scale JavaScript Application Architecture
addyosmani
512
110k
KATA
mclloyd
29
14k
A better future with KSS
kneath
239
17k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.5k
Balancing Empowerment & Direction
lara
1
340
Transcript
Azure OpenAIサービスで ChatGPTをC#で使ってみる 株式会社SAKURUG エンジニアリングユニット 草場 友光 .NETラボ 2023年4月
自己紹介 • 普段は主にシステムを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で自力実装) アクセス先URL HTTPヘッダー POST本文
• 応答はマークダウンで返っ てくる • Webなどに表示する際には これをHTMLに変換してあ げるとよい C#で実装するには(HttpClientで自力実装)
• POSTし成功すると以下のような応答がある C#で実装するには(HttpClientで自力実装) ここが表示すべき応答
C#で実装するには(HttpClientで自力実装) メソッドはPOST HTTPヘッダーを設定 リクエスト本文を設定 レスポンスをデシリアライズ マークダウンを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 (プレビュー) の使用を開始する
おしまい おしまい