Slide 1

Slide 1 text

Ayumu Inaba Technical Specialist Microsoft Japan Azure OpenAI Workshop - Internal Document Search 1

Slide 2

Slide 2 text

Agenda Azure OpenAI Service 概要 Retrieval-Augmented Generation Workshop で利用するツール紹介 サンプルアプリのデプロイと動作確認 チャットアプリ側の処理内容 インデックス生成側の処理内容 サンプルアプリのカスタマイズ インデックスの更新 AZD 環境の管理 2 本資料は Azure OpenAI Samples Japan の 5章 企業内向けChatと社内文書検索の構築 Workshop の補助資料です 必要なソフトウェアのインストールや詳細な構築手順等は リポジトリのドキュメント を参照してください サンプルアプリの修正やデバッグ等には Visual Studio Code を利用します(構築だけで良ければ不要です)

Slide 3

Slide 3 text

Azure OpenAI Service 3

Slide 4

Slide 4 text

Azure OpenAI Service の概要 4 APIでOpenAIの 推論機能を提供 エンドポイントへのリクエストを投げるだけで 推論結果が得られます。AIを動作させるインフラを新たに準備・開発する 必要はありません。API仕様やライブラリも基本は共通。(REST API, Python SDKから呼び出しが可能。) SLA・サポート付きの 提供 99.9%以上の稼働率を保証するSLAを既定し、 Azureのサポートサービスが利用可能。 Azureのセキュリティ 機能が統合 Microsoft Entra IDと連携した認証、プライベートネットワークでの利用、 データの暗号化、コンテンツフィルタリングなど、企業がAIを使うリスクを軽 減するセキュリティをカバーします。 Azure OpenAI Service データ+ リクエスト システム エンドポイント AzureはOpenAIのモデルを展開する唯一のパブリッククラウドサービス。 エンタープライズ向けの データ管理 マイクロソフトのモデルのトレーニングにお客様データを利用しない。デフォルトでは入 出力データは悪用/誤用の監視目的で30日間保持され、承認されたマイクロソフト 社員が不正利用時にレビューする可能性があるが、 監視のためのログ保存プロセス はオプトアウト申請が可能で、承認されればログは保持されない。 GPT Data, privacy, and security for Azure OpenAI Service - Azure AI Services | Microsoft Learn

Slide 5

Slide 5 text

モデルとWeb API Azure OpenAI 用のアカウントリソースに対して各種モデルをデプロイ、 対応する API を呼び出して推論を行う 開発者や管理者向けのツール(図の右側)も提供されているが、ユーザー向けにはカスタムアプリ(左側)を実 装する必要がある HTTPS ベースの Web API なので任意のツールや言語が利用可能だが、通常は SDK やライブラリを利用し て呼び出す 利用するリージョン、デプロイ可能なモデルとバージョン、対応する API にばらつきがあるため注意すること 5 AOAI アカウント GPT-3.5 モデル Embedding モデル DALL-E モデル Preview Azure プラットフォーム Azure Portal / CLI / Bicep / etc.. ARM AOAI Studio GPT-4 モデル Completions API Chat Completions API Embeddings API Image generation API アプリケーション

Slide 6

Slide 6 text

GPT 単体で利用する際の注意点 6 文脈から推定しにくいトークン 正しい答えが決まっていないデータ 違いが判別しづらい学習データ 学習データが少ないマイナーな事象 GPT単体の弱点 日本語 文章中の数字、例えば「昨年と比べ売上○○%低下」などは正確な数字と 文脈が紐づかないことがあり精度が落ちることがある。 料理のレシピなど、人によって材料や分量が違うケースなどは正誤が安定しない。 逆に物理法則など普遍的な事象の解説では安定する。 正しい事実関係の出現確率を高めるほどの学習ができておらず 間違えやすい。「1998年の日本プロ野球の2軍について教えて」など。 注意の概要・具体例 GPT-4で多少改善はしたが、言語格差が見られる。一般的にGPTの多くは英語 の文章の方が多く学習されているため日本語より精度が高い。 地理・交通を加味した最適経路計算 データの解釈 乗換案内のように、路線図情報や駅間所要時間のデータや確立された解法に よって本来は答えが導かれているものは言語モデルには推定しにくい。 最新情報やドメイン固有情報の記述 GPTには膨大なデータが学習されているが、GPTは最新モデルでも2021年9月 のもの。最新情報を聞かれると不正確な回答に。

Slide 7

Slide 7 text

Fine tuning と Prompt Engineering 精度向上の主要作業の優先度は Prompt Engineering 側へシフト 7 獲得される効果 (一部主観) 言語能力・長期記憶 (永続的だがあくまで基礎の言語生成能力や知識を強化) 使用上の懸念点 膨大なリソースおよびデータ準備コスト かなり高度なLLM学習の知識 (GPT-3.5, GPT-4では機能提供されていない) セキュリティ・品質 注意点 学習データへの機密情報混入 アノテーション品質 使いどころ (一部主観) 新しいタスクの獲得もしくは完成度向上 出力フォーマットの限定 (量が膨大な場合のみ)ドメイン知識・最新知識の獲得 情報参照 (より強く言語生成に影響するが揮発性) プロンプトのトークン入力制限 プロンプトインジェクションなどの攻撃 問いかけに対する適切な情報引き出し ドメイン知識・最新知識の補助 タスクの指示 出力フォーマットの指定 Prompt Engineering Fine tuning

Slide 8

Slide 8 text

RAG Retrieval Augmented Generation 8

Slide 9

Slide 9 text

RAG : Retrieval Augmented Generation GPT単体では得られない情報を加味した回答を生成するために外部 情報を活用する Retrieval : (情報などを)検索する、読みだす Augmented : 増大、増加、拡張、増音された 9 GPT 2023年のWBC優勝国はどこ? ユーザ Web検索 bing APIなど ①チャット内容 ④クエリ「WBC 2023 優勝国」 ⑤検索結果 バックエンド プログラム ⑥質問+検索結果 ⑦回答 2023年のWBC優勝国は日本でした。 ユーザへの 返答作成 ②チャット内容 ③クエリ化結果 LLMと外部情報は独立して管理・活用する

Slide 10

Slide 10 text

Web 検索を元にした RAG の例 内部仕様が公開されているわけではないが、Microsoft Copilot の挙 動からある程度の予測は可能 ユーザーの発言から検索キーワードを生成して Web の情報を検索、その結果をもとに回答を生成している 素の Azure OpenAI モデルが事前に学習したデータだけを根拠にしているわけではないので、最新情報への 対応が可能になっている 10 素の Azure OpenAI Service の回答 (gpt-35-turbo のトレーニングデータは 2021 年9月まで) Microsoft Copilot の回答

Slide 11

Slide 11 text

社内データを元にした RAG 社内ドキュメントなどは外部情報の取得元となる検索サービスを別 途構築する必要がある 11 LLMと外部情報を 独立して管理 Azure で ChatGPT × AI Search を使ったエンター プライズサーチを実現 - Qiita 外部データをRetrievalしてLLM活用する上での課題 と対策案 - ABEJA Tech Blog Azure で ChatGPT × AI Search を使ったエンター プライズサーチに履歴機能を付ける - Qiita プロンプトの一部と して外部情報を LLM に提供

Slide 12

Slide 12 text

Azure Cognitive Search 全文検索機能を提供する PaaS 型の検索サービス 検索の専門的な知識なしで、検索システムの構築・利用が可能 豊富な検索機能をシンプルなプロトコルと API で利用可能 フルマネージドサービス & スケーラブル 充実した自然言語解析、ランキング調整機能 事前構成/カスタム構成の AI 連携 12 事前に社内データを投入してインデックスを構築、 ChatGPT が学習していないデータを保持させる

Slide 13

Slide 13 text

文書のインデックス化 ファイルの実体そのものではなく、テキストなど検索に必要な 情報を抽出すること AI Searchでは様々な抽出に対応しており、単純なクエリとの類似度だけでない情報を検索 対象にできる 13 検索エンジン (AI Searchなど) ~~~~~~~~~~~ ~~~~~~~~~~~ ~~~~~~~~~~~ ~~~~~~~~~~~ ~~~~~~~~~~~ ~ ➢ ファイルへのリンク ➢ 文書中のテキスト ➢ テキストのベクトル化結果 ➢ テキストの翻訳結果 ➢ テキストの要約 ➢ 画像内のテキストや画像キャプション ➢ ファイルのメタデータ ➢ トピック ➢ キーワード、固有表現 ➢ 言語 ➢ その他 事前に Index化 初心者 バット クエリ

Slide 14

Slide 14 text

インデックス チャンク戦略 既存の PDF ファイルなど大規模なデータを含む場合にはそのまま インデックスを構築せずにチャンク化(断片化)を行う 文章をそのまま与えるとトークン上限に引っかかったり、ピンポイントに有益な情報を得られない 14 検索エンジン (AI Searchなど) クエリ ~~~~~~ ~~~~~~ ~~~~~~ ~~~~~~ ~~~~~~ ~~~~~~ ~~~~~~ ~~~~~~ … … ~~~~~~ ~~~~~~ ~~~~~~ ~~~~~~ ~~~~~~ ~~~~~~ ~~~~~~ ~~~~~~ … … オリジナル テキスト抽出& チャンク分割 メタデータと共に インデックスに登録 Azure OpenAI 検索にヒットしたデータを プロンプトに含める 生成結果 サービス提供 事前準備

Slide 15

Slide 15 text

補足 : トークン制限について RAG を実施する際に注意すべきトークン制限は以下の2つ 最大要求トークン 1回のプロンプトに含められるトークンの上限 システムメッセージ + ユーザー入力 + 検索結果のデータ Azure OpenAI Service モデル 各モデルの仕様として制限されているため、チャンクサイズ、 チャンク数、会話履歴を調整して収める必要がある 各要求のトークンが大きいほど下記 TPM にも抵触しやすい 1分あたりのトークン (TPM) 各リージョンおよびサブスクリプションで共有するクォータ モデルデプロイ単位で指定する Azure OpenAI Service のクォータと制限 特に1つのサブスクリプションで複数の PoC やトレーニングを 行う際には抵触しやすいので注意 実運用環境で不足する場合にはアプリケーションから複数の リージョンやサブスクリプションを束ねて利用するか、 PTU と呼ばれる専有環境を利用する 15 < 16K ※ 東日本リージョン の gpt-35-turbo-16k モデル の場合 < 16K < 16K < 300K TPM

Slide 16

Slide 16 text

補足 : RAG に使用する検索エンジン 回答の根拠となるデータをプロンプトに含められれば良いので、必 ずしも Azure Cognitive Search を使う必要はない トークン制限に抵触しないデータサイズという前提は変わらないが、ユーザー入力に関連する情報を “検索” できればよい OpenAIとMicrosoft Graph Search APIでM365の組織内データを検索するRAGアプリを作る (zenn.dev) Azure AI Search の標準機能でチャンク分割やベクトル化が可 能になったため、構築は今後容易になる可能性がある サンプルコードでは PDF から文字列の抽出(Form Recognizer)、チャンク分割、 Search インデッ クスへドキュメントチャンクの Push といった一連の処理を Python スクリプトで実装 本機能は現時点でプレビュー機能の段階であるため本格的には利用できない Azure AI Search(旧: Cognitive Search)のチャンク分割+ベクトル化が簡単になったので試す! (1/2) #Azure – Qiita 16

Slide 17

Slide 17 text

Workshop で利用するツール 17

Slide 18

Slide 18 text

Azure CLI Azure に接続して Azure リソースの構築・設定変更・削除な どの管理コマンドを実行することが出来る Azure CLI とは | Microsoft Learn 各種シェルで対話形式で使用することも、シェルスクリプトを使用して呼び出すことも可能 既存環境に対して差分をデプロイする時には存在チェックなどの工夫が必要 アプリのビルドやデプロイは別のコマンドラインツールと組み合わせて利用する 18 # リソースグループの作成 az group create -n demo-rg -l japaneast # OpenAI アカウントの作成 az cognitiveservices account create -n aoaiName –g demo-rg –l japaneast # モデルのデプロイ az cognitiveservices account deployment create -n aoaiName –g demo-rg --model-name gpt-35-turbo --model-version 0301

Slide 19

Slide 19 text

Bicep (Infrastructure as Code) 宣言型の構文を使用して Azure リソースをデプロイするドメイン固 有言語(DSL) JSON 形式の ARM テンプレートよりも構文が簡潔で可読性が高い アプリのデプロイや初期データの投入といったデータプレーン操作には不向き 19 Azure Resource Manager Template (.bicep) Parameter リソースのデプロイと構成 az deployment group create -f infra.bicep -p name=hoge Shell Script (.sh/.ps1) 多数のコマンド 実行順序の制御 反復実行に不向き 必要なリソースと 設定を宣言 Azure リソースをデプロイするための Bicep 言語 アプリやデータのデプロイは別途

Slide 20

Slide 20 text

Azure Developer CLI Azure リソースだけでなくアプリのビルドやデプロイ、カスタム スクリプトの実行を一括して行うことが出来る Azure Developer CLI とは | Microsoft Learn yaml 形式で宣言的に環境とアプリを定義するためコマンド実行数が少なく、開発者によるス クラップ&ビルドやクローン環境の構築が用意 Azure リソースのデプロイは IaC 技術(Bicep など)を利用する(azd provision) Bicep デプロイした Compute リソースに対してアプリケーションをデプロイ (azd deploy) 一連の処理の途中のイベントをフックしてカスタムスクリプトを実行可能 20 # 環境の初期化 azd init # 環境の構築(各種定義ファイルを読み取って実行される) # azd up は azd provision と azd deploy がまとめて実施される azd up azure .yaml .env .bicep Source Code Scripts

Slide 21

Slide 21 text

必要ソフトウェアのインストール(Windows) Windows 端末では winget を使用して各種ソフトウェアのイ ンストールおよびバージョン確認が可能です 各サイトからインストーラをダウンロードしてインストールしても構いません 21 # Visual Studio Code winget install Microsoft.VisualStudioCode code --version # Git Winget install Git.Git git --version # PowerShell 7 のインストール(Windows の場合) winget install Microsoft.PowerShell pwsh --version # Azure CLI winget install Microsoft.AzureCLI az --version # Azure Developer CLI winget install Microsoft.Azd azd version # Node.js のインストール winget install OpenJS.NodeJS.LTS node --version # Python 3 winget install Python.Python.3.11 python --version

Slide 22

Slide 22 text

Visual Studio Code + Dev Container 開発に必要な資源をコンテナとして定義することで、環境の再現性 を高め、端末の構成管理を容易にする 安定したチーム開発にはソースコードの共有だけでなくランタイムや SDK 等の統一が重要 コンテナテクノロジによる再現性と分離性を活用し、Visual Studio Code から利用する ソースコードと一緒にコンテナの定義をリポジトリで管理することで常に最新の環境を共有 22 Windows / MacOS Visual Studio Code Linux Container ソースコード + 環境定義 Remote Container Extension ローカル ストレージ マウント push/pull 同一の開発環境を再現 GitHub Codespaces VSCode or Web Browser Developing inside a Container using Visual Studio Code Remote Development クラウド開発 コンテナで複数の環境を分離(端末環境を汚さない)

Slide 23

Slide 23 text

Dev Container 環境のセットアップ Visual Studio Code と Docker Desktop を組み合わせて 開発に必要なソフトウェアをコンテナで準備することも可能 Developing inside a Container using Visual Studio Code Remote Development 23 # Visual Studio Code winget install Microsoft.VisualStudioCode code --version # Visual Studio Code Remote Container Extension code --install-extension ms-vscode-remote.remote-containers code --list-extensions --show-versions # Git winget install Git.Git git --version # Windows Subsystem for Linux (WSL2) wsl --install –d Ubuntu wsl --version # Docker Desktop for windows winget install Docker.DockerDesktop docker --version Windows 端末ローカル

Slide 24

Slide 24 text

Dev Container 定義ファイルの例 リポジトリ内に配置しておくことで、アプリの開発に必要なツー ル群を定義・共有することが可能 24 { "name": "internal document search", "image": "mcr.microsoft.com/devcontainers/python:1-3.11-bullseye", "features": { "ghcr.io/devcontainers/features/azure-cli:1": {}, "ghcr.io/devcontainers/features/node:1": {}, "ghcr.io/devcontainers/features/powershell:1": {}, "ghcr.io/azure/azure-dev/azd:0": {} }, "customizations": { "vscode": { "extensions": [ "ms-azuretools.vscode-bicep", "ms-python.python", "GitHub.copilot", "GitHub.copilot-chat" ] } } } devcontainer.json

Slide 25

Slide 25 text

サンプルアプリのデプロイと動作確認 25

Slide 26

Slide 26 text

Azure Developer CLI によるセットアップ azd up の実行後、以下の3つの入力が必要になる 使用する Azure サブスクリプション デプロイ対象の Azure リージョン Windows VM のパスワード(本 Workshop では使用しないため空入力で良い) 26 20分程度

Slide 27

Slide 27 text

サンプルアプリの動作確認 azd up 完了後に Azure App Service を開くと以下の2つ の機能を試すことが可能です 企業内向け Chat タブ : Azure OpenAI Service と直接チャットするための画面 社内文書検索 タブ : data ディレクトリ内の文書に基づいたチャットをするための画面

Slide 28

Slide 28 text

社内文書検索の例 実際に OpenAI Service に入力 されたプロンプトを確認可能 プロンプト構築に使用された補助資料 (=Cognitive Search の検索結果)

Slide 29

Slide 29 text

App Service Easy Auth による Entra ID 認証 App Service の「認証」画面から ID プロバイダーとして Microsoft Entra ID を追加 自動的に Entra ID にユーザー認証が可能なアプリとして登録 される ユーザーの “認証” が行われるだけなので、きめ細かなアクセ ス制御は別途必要 App Service における Microsoft Entra ID 認証ユーザーに対するア クセス制御 (ayuina.github.io) 29

Slide 30

Slide 30 text

App Service のクライアント IP アドレス制限 App Service の「アクセス制限」画 面からクライアント IP 制限をかける 企業のインターネット エッジが利用する IP アドレスは 別途特定すること https://ifconfig.io など 30

Slide 31

Slide 31 text

チャットアプリ側の処理内容 31

Slide 32

Slide 32 text

アーキテクチャの確認 32 Blob Storage 参照用文書 Azure App Services Web Browser Azure Active Directory 1 データソースとなるPDFを分割し、 Blob Storageにアップロード 2 分割したPDFからCognitive Searchの インデックスを作成 1 URLを開く 問い合わせ 3 4 問い合わせからCognitive Search の検索クエリを生成 (Davinciモデルを使用) 5 2 認証 7 Azure OpenAI で回答生成 (GPT-35-Turboモデルを使用) PDF 文書検索の準備 Azure OpenAI と ナレッジベースによる アプリケーション Azure OpenAI Service Davinci/GPT-35-Turbo/(GPT-4) pdf Azure Cognitive Search Index (gptkbindex) Cognitive Searchで文書を検 索 7 必要に応じて引用元文書をプレ ビュー/ダウンロード 6 プロンプトをCosmos DBに保存 Azure Cosmos DB

Slide 33

Slide 33 text

構築された Azure 環境の確認 Azd 環境名のリソースグループ配下に Bicep で定義した各 種リソースが配置される

Slide 34

Slide 34 text

言語モデルを使用した検索クエリの作成 ユーザーメッセージから検索クエリを生成 chatreadretrieveread.py の STEP1 に該当 34 # プロンプトの例 下記の文章から検索キーワードを生成してください。 --- 就業規則とはなんですか? Azure OpenAI Studio (https://oai.azure.com)

Slide 35

Slide 35 text

Cognitive Search を用いた参考情報の検索 生成した検索クエリを用いて参考情報を取得 chatreadretrieveread.py の STEP2 の処理に該当 35 # 検索クエリの例 就業規則 定義 概要

Slide 36

Slide 36 text

最終的な回答の生成 ユーザーの発言と検索結果をを組み合わせて回答を生成 ソースコードでは chatreadretrieveread.py の STEP3 に該当 36 # システムメッセージの例 ソースに記載されている事実のみを使用してユー ザーの質問に回答してください。 # ユーザーメッセージの例 就業規則とは何ですか? ソース: (目的) 第1条 この就業規則(以下「規則」とい う。 )は、労働基準法(以下「労基法」とい う。 )第89 条に基づき、 ・・・・

Slide 37

Slide 37 text

会話履歴の確認 ユーザーとのチャット履歴は Cosmos DB に格納され、会話 のコンテキストを維持する

Slide 38

Slide 38 text

インデックス生成側の処理内容 38

Slide 39

Slide 39 text

アーキテクチャの確認 39 Blob Storage 参照用文書 Azure App Services Web Browser Azure Active Directory 1 データソースとなるPDFを分割し、 Blob Storageにアップロード 2 分割したPDFからCognitive Searchの インデックスを作成 1 URLを開く 問い合わせ 3 4 問い合わせからCognitive Search の検索クエリを生成 (Davinciモデルを使用) 5 2 認証 7 Azure OpenAI で回答生成 (GPT-35-Turboモデルを使用) PDF 文書検索の準備 Azure OpenAI と ナレッジベースによる アプリケーション Azure OpenAI Service Davinci/GPT-35-Turbo/(GPT-4) pdf Azure Cognitive Search Index (gptkbindex) Cognitive Searchで文書を検 索 7 必要に応じて引用元文書をプレ ビュー/ダウンロード 6 プロンプトをCosmos DBに保存 Azure Cosmos DB

Slide 40

Slide 40 text

PDF の分割 分割された PDF は Blob ストレージにアップロードされている サンプルアプリでは Web 画面から参照するために分割した PDF を配置している 実際にこのドキュメントを検索しているわけではない

Slide 41

Slide 41 text

OCR : 光学文字認識による PDF のテキスト化 Form Recognizer の OCR 処理によって PDF ファイル内の 文字列を抽出 Document Intelligence Studio テキスト全量をインデックス に登録してしまうと、トークン 制限に引っかかってしまう > チャンク化

Slide 42

Slide 42 text

Cognitive Search インデックス OCR 処理で得られたテキストを一定サイズのチャンクにまと め、インデックスに登録することで検索可能になる 42

Slide 43

Slide 43 text

インデックスの更新 43

Slide 44

Slide 44 text

検索対象データの変更 社内文書を検索可能にするためには Cognitive Search イ ンデックスを更新する 削除済みのインデックス(gptkbindex)を削除 Data ディレクトリ内の PDF を削除 Data ディレクトリに社内文書 PDF を追加 インデックス準備スクリプトの実行 44 Azure PDF git pull OCR チャンク化ドキュメント # PDF ファイルの分割/Blob アップロード/OCR処理/チャンク生成/インデックスへの ドキュメント Push を行うスクリプト ./scripts/prepdocs.ps1 PowerShell

Slide 45

Slide 45 text

サンプルアプリのカスタマイズ 45

Slide 46

Slide 46 text

Web アプリのローカル デバッグ サンプルアプリのカスタマイズおよびデプロイを行うために、ま ずはローカル実行とデバッグの準備を整える Web アプリ(backend)がアクセスする、Cognitive Search、Cosmos DB、OpenAI など のサービスは Bicep デプロイしたものを使用する 各種サービスのエンドポイントは .env ファイルに記載されており、認証情報は azd login し たユーザーアカウントを使用する Azure src ローカル実行 git pull デプロイ (azd deploy) ユーザー利用

Slide 47

Slide 47 text

Web アプリ用の Python デバッガのセットアップ Visual Studio Code の Python Extension をインストー ルし、デバッグ実行のための設定ファイルを作成する Python - Visual Studio Marketplace Run メニュー > Add Configuration を選択 デバッガーとして Python 、デバッグ設定として Python Fileを選択 .vscode/launch.json ファイルを編集 47 { "version": "0.2.0", "configurations": [ { "name": "Python: Current File", "type": "python", "request": "launch", "program": "${workspaceFolder}/src/backend/app.py", "envFile": "${workspaceFolder}/.azure/YOUR_ENVIRONMENT_NAME/.env", "console": "integratedTerminal", "justMyCode": true } ] } launch.json azd init 時に指定した名前

Slide 48

Slide 48 text

Web アプリのデバッグ実行 F5 実行するとローカルで Web サーバーが起動、デバッガが Python プロセスにアタッチされる Web ブラウザーを開き http://localhost:5000 にアクセスすると確認できる 適宜ブレークポイントを設定してカスタマイズ作業を進める 48

Slide 49

Slide 49 text

補足 : Application Insights の設定 本ドキュメント作成時のソースコードではローカル実行時にエ ラーが発生する .env ファイルに Application Insights の接続文字列が設定されてないため Azure Portal 等から接続文字列を取得して追加しておく 49 APPLICATIONINSIGHTS_CONNECTION_STRING="{Azure Portal から取得した文字列}" .env

Slide 50

Slide 50 text

Web アプリのデプロイ カスタマイズ作業が完了したら azd deploy コマンドで新し いアプリをデプロイします azd up とは異なり、インフラの構築を行う azd provision 相当の処理が行われません デプロイの履歴は App Service のデプロイセンターからも確認できる 50

Slide 51

Slide 51 text

AZD で作成した環境の管理 51

Slide 52

Slide 52 text

環境の追加 複数の環境を作成したい場合は azd env new コマンドを使用し て追加することが出来る 異なる用途や別のリージョンやサブスクリプションにも環境を作りたい場合などに利用する 各 azd コマンドは defaultEnvironment の設定を用いて動作するため、環境の切り替えや指定を 忘れないように注意すること 52 # 環境の追加 PS> azd env new 新しい環境名 # 環境の一覧と既定値の確認 PS> azd env list NAME DEFAULT LOCAL REMOTE aoai-prep1215 false true false aoai-ws1214 true true false # 既定の環境の切り替え PS> azd env select 既定にする環境名 # 既定値でない環境に対する操作 PS> azd up --environment 環境名 PowerShell 現在の環境は .azure/config.json で指定されている 各環境固有の値は .azure/環境名 ディレクトリで管理 ※ .azure ディレクトリや .env ファイルは .gitignore 指定することでリポジトリには登録せず、他の開発者とは共有しない

Slide 53

Slide 53 text

環境の削除 AZD で構築した環境は azd down コマンドで削除できる 前述の方法で複数環境を構築している場合は、対象環境名を明示するか、環境の切り替え を忘れずに実行すること デプロイしたリソースは1つのリソースグループにまとまっているため、Azure Portal や CLI で削除しても良い 53 # Default 環境の削除 PS> azd down # 環境を指定した削除 PS> azd down --environment 環境名 # コマンド実行後に本当に削除して良いか、データも Purge してよいか 確認される # Purge をしない場合、サブスクリプションのクォータを確保し続けてしま うため注意が必要 PowerShell 環境名のついたリソース グループを削除 ※ Azure 側で削除した場合、ローカルに残っている .azure/config.json や .azure/環境名 ディレクトリと状態が乖離するため、そちらも削除しておくこと

Slide 54

Slide 54 text

Microsoft Confidential ◼ 本資料は情報提供のみを目的としており、本資料に記載されている情報は、本資料作成時点でのマイクロソフトの見解を示したものです。状況等の変化により、内容は変更される場合があります。本資料 に特別条件等が提示されている場合、かかる条件等は、貴社との有効な契約を通じて決定されます。それまでは、正式に確定するものではありません。従って、本資料の記載内容とは異なる場合がありま す。また、本資料に記載されている価格はいずれも、別段の表記がない限り、参考価格となります。貴社の最終的な購入価格は、貴社のリセラー様により決定されます。マイクロソフトは、本資料の情報に対 して明示的、黙示的または法的な、いかなる保証も行いません。 © 2020 Microsoft Corporation. All rights reserved. Microsoft, Windows, その他本文中に登場した各製品名は、Microsoft Corporation の米国およびその他の国における登録商標または商標です。 その他、記載されている会社名および製品名は、一般に各社の商標です。 54