書籍概要

エンジニア選書

Azure OpenAI Serviceではじめる ChatGPT/LLMシステム構築入門

著者
発売日
更新日

概要

Microsoft AzureはChatGPTをはじめとするOpenAIモデルを利用できる,現在唯一のパブリッククラウドサービスです。本書はLLM(大規模言語モデル)に興味があるITエンジニアを対象に,AzureからOpenAIモデルにアクセスできる「Azure OpenAI Service」を使い,ChatGPTを利用した社内AIシステムの開発と導入を実現してもらうのが目的です。

前半では,生成AIとChatGPTモデルの基本的な概念とその仕組みを解説します。また,Azure OpenAI Serviceの概要と具体的な利用方法を解説し,プロンプトエンジニアリングについても紹介します。後半ではChatGPTを利用する社内システムの開発手法について,実際にAzure OpenAI Serviceを使いながら学んでいきます。RAGを利用した社内文章検索システムの実装を経て,LLMを組み込んだアプリケーション(Copilot)の構築へとステップアップしていきます。また,Azure OpenAI Serviceの利用におけるガバナンス実現に必要な共通基盤化と責任あるAIについても解説しています。

こんな方におすすめ

  • OpenAIモデルやChatGPTに興味がある,また,それらを使ったシステムを開発したいITエンジニア

サンプル

samplesamplesample

目次

第1部 Microsoft AzureでのChatGPT活用

第1章 生成AIとChatGPT

  • 1.1 生成AIとChatGPTの衝撃
    • 1.1.1 「AIの時代が始まった」
    • 1.1.2 ChatGPTがこなせるタスク
    • COLUMN Open Interpreter
    • 1.1.3 ChatGPTを利用するうえでの注意点
  • 1.2 ChatGPTの仕組み
    • 1.2.1 従来の「チャットボット」との違い
    • 1.2.2 GPTとは
    • 1.2.3 人間が好む文章を生成するための手法「RLHF」
    • 1.2.4 ChatGPTができるまで
  • 1.3 まとめ

第2章 プロンプトエンジニアリング

  • 2.1 プロンプトエンジニアリングとは
  • 2.2 基本的なテクニック
    • 2.2.1 指示を具体的に書く
    • 2.2.2 モデルの逃げ道となる「アウト」を指定する
    • 2.2.3 役割を明確にする
    • 2.2.4 入出力例を与える
    • COLUMN Zero-shot LearningとFew-shot Learning
    • 2.2.5 構造的に書く
  • 2.3 思考の連鎖(Chain of Thought)
    • COLUMN GPT-3.5 TurboとGPT-4の性能の違い
  • 2.4 その他のテクニック
  • 2.5 まとめ

第3章 Azure OpenAI Service

  • 3.1 Azure OpenAI Serviceとは
    • 3.1.1 OpenAI社のAPIサービスとAzure OpenAI Service
    • 3.1.2 Azure OpenAIの全体像
  • 3.2 Azure OpenAIの始め方
    • 3.2.1 Azure OpenAI利用申請
    • 3.2.2 リソース作成
    • 3.2.3 GPTモデルのデプロイ
  • 3.3 チャットプレイグラウンドでChatGPTアプリを開発する
    • 3.3.1 アシスタントのセットアップ
    • 3.3.2 構成
    • 3.3.3 チャットセッション
    • COLUMN チャットプレイグラウンドはどこで動作する?
    • 3.3.4 チャットアプリケーションのデプロイ
    • COLUMN プレイグラウンドからデプロイされたWebアプリのソースコード
  • 3.4 考慮するポイント
    • 3.4.1 コストの考え方
    • 3.4.2 リクエスト制限
  • 3.5 まとめ

第2部 RAGによる社内文章検索の実装

第4章 RAGの概要と設計

  • 4.1 ChatGPTの問題点と解決手法
  • 4.2 Retrieval-Augmented Generationとは
  • 4.3 検索システム
  • 4.4 Azure AI Search
    • 4.4.1 インデックス作成
    • 4.4.2 ドキュメント検索
  • 4.5 オーケストレータ
    • 4.5.1 Azure OpenAI on your data
    • 4.5.2 Azure Machine Learningプロンプトフロー
    • 4.5.3 フルスクラッチ(自前で実装)
  • 4.6 Azure OpenAI on your data
    • 4.6.1 データソース
    • 4.6.2 使用方法
  • 4.7 Azure Machine Learningプロンプトフロー
    • 4.7.1 利用の流れ
    • COLUMN Azure Machine Learningとは
  • 4.8 大規模言語モデル
  • 4.9 Azure OpenAI API
    • 4.9.1 Chat Completions API
    • 4.9.2 Embeddings API
  • 4.10 まとめ
    • COLUMN RAG vs. ファインチューニング

第5章 RAGの実装と評価

  • 5.1 アーキテクチャ
  • 5.2 社内文章検索の実装例
    • 5.2.1 使用するAzureサービス一覧と料金
    • 5.2.2 ローカル開発環境を構築する
    • 5.2.3 ローカル開発環境で実行する
    • 5.2.4 ローカルの変更をApp Serviceへデプロイする
    • 5.2.5 環境設定ファイルを変更する
    • 5.2.6 追加のドキュメントをインデックス化する
    • 5.2.7 実際に質問する
    • 5.2.6 機能紹介
  • 5.3 会話履歴の保持
    • 5.3.1 履歴保持の実装例
    • 5.3.2 Cosmos DBに会話履歴が保存されたことを確認する
  • 5.4 検索機能
    • 5.4.1 ベクトル検索
    • COLUMN チャンク分割の重要性
    • 5.4.2 ハイブリッド検索
    • 5.4.3 セマンティックハイブリッド検索
    • COLUMN どの検索モードが最も良い結果を出すか
    • COLUMN カスタマイズポイント
  • 5.5 データインジェストの自動化
  • 5.6 RAGの評価と改善
  • 5.7 検索精度の評価
    • 5.7.1 基本的な評価指標
    • 5.7.2 順位を考慮した評価指標
  • 5.8 生成精度の評価
    • 5.8.1 関連性の評価
    • 5.8.2 一貫性の評価
    • 5.8.3 類似性の評価
    • COLUMN RAGの回答精度を向上させるには?
  • 5.9 まとめ

第3部 Copilot stackによるLLMアプリケーションの実装

第6章 AIオーケストレーション

  • 6.1 Copilot stackとは
    • 6.1.1 第1層:Copilotフロントエンド
    • 6.1.2 第2層:AIオーケストレーション
    • 6.1.3 第3層:基盤モデル
  • 6.2 AIオーケストレーションとエージェント
    • 6.2.1 Reasoning & Acting(ReAct)
    • 6.2.2 Planning&Execution(計画と実行)
    • COLUMN LangChain
    • COLUMN Semantic Kernel
    • 6.2.3 プラグインの実行
  • 6.3 独自Copilot開発のアーキテクチャと実装
    • 6.3.1 ツール選定(ReAct)の実装
    • 6.3.2 チャットUIからの利用
    • 6.3.3 ChatGPTプラグインの実装
    • 6.3.4 ストリーム出力の実装
  • 6.4 まとめ
    • COLUMN Azure AI Studioの登場

第7章 基盤モデルとAIインフラストラクチャ

  • 7.1 基盤モデルとAIインフラストラクチャとは
  • 7.2 ホスティングされたモデルの場合
    • 7.2.1 GPT-3.5とGPT-4
    • COLUMN GPT-4 Turbo
    • 7.2.2 ファインチューニング
    • COLUMN GPT-4のファインチューニング
  • 7.3 公開モデルの場合
    • 7.3.1 モデルの種類
    • 7.3.2 モデルサイズと圧縮方法
    • 7.3.3 モデルのホスト
    • COLUMN Azure Machine Learningモデルカタログ
  • 7.4 まとめ
    • COLUMN OSSライセンスと機械学習モデル

第8章 Copilotフロントエンド

  • 8.1 ユーザーエクスペリエンスの基礎
    • 8.1.1 ユーザビリティ
    • 8.1.2 停止ボタンと再生成ボタン
    • 8.1.3 キャッシュしやすい実装
  • 8.2 LLMの不確実な応答への対処
    • 8.2.1 正確性
    • 8.2.2 透明性(情報の根拠の提示)
    • 8.2.3 UX向上のためのストリーム処理
    • 8.2.4 OpenAIエンドポイントのストリーム出力を直接処理
    • 8.2.5 Flaskアプリケーションでレスポンスをストリーム形式で処理する194
  • 8.3 UX向上のための参考資料
    • COLUMN チャット以外のインターフェース
  • 8.4 まとめ

第4部 ガバナンスと責任あるAI

第9章 ガバナンス

  • 9.1 共通基盤とは
  • 9.2 共通基盤のアーキテクチャ
    • 9.2.1 使用するAzureサービス一覧と料金
    • 9.2.2 デプロイ
  • 9.3 認証・認可
    • 9.3.1 認証・認可の流れ
    • 9.3.2 サンプルコードの実行
    • COLUMN API Managementのサブスクリプションキー
    • COLUMN Azure OpenAI APIの利用を特定のユーザーに制限する
  • 9.4 ログ統合
  • 9.5 課金
  • 9.6 流量制限
  • 9.7 閉域化
  • 9.8 負荷分散
    • 9.8.1 Application Gatewayの利用
    • COLUMN Application Gatewayの負荷分散を本番化するときの注意点
    • 9.8.2 API Managementの利用
  • 9.9 まとめ

第10章 責任あるAI

  • 10.1 責任あるAIに対するMicrosoftの取り組み
  • 10.2 責任あるAIの実践
  • 10.3 コンテンツフィルタリング

サポート

正誤表

本書の以下の部分に誤りがありました。ここに訂正するとともに,ご迷惑をおかけしたことを深くお詫び申し上げます。

(2024年2月5日最終更新)

P.148 図6.5 図内のテキスト

掛け算ツール
計算ツール

(以下2024年1月31日更新)

P.51 図3.31 図内のテキスト

Token-Per-Minut(TPM)
Token-Per-Minute(TPM)

(以下2024年1月23日更新)

P.209 表9.3 Log Analytics行,プラン列

Basicログプラン
Analyticsログプラン

P.209 表9.3 Log Analytics行,価格列

1GBあたり約75円/月
1GBあたり約475円/月

P.243 16行目

曲の歌詞、記事、レシピなどの既知のテキストコンテンツ(Protected Material for Code)
曲の歌詞、記事、レシピなどの既知のテキストコンテンツ(Protected Material for Text

P.243 17行目

パブリックリポジトリに公開されている既知のソースコード(Protected Material for Text)
パブリックリポジトリに公開されている既知のソースコード(Protected Material for Code

(以下2024年1月22日更新)

P.60 図4.8 図内のテキスト(2ヵ所)

インデクサ
インデクサ

P.143 第3部扉ページ 目次部分

第8章 Copilptフロントエ
第8章 Copilptフロントエンド

P.161 リスト6.8 6行目

engine ="gpt-4"
model ="gpt-4"

商品一覧