少々レビューのお手伝いをしたことが縁で、著者の永田さん ( @shohei_aio ) から発売前著者献本の形で書籍をいただきました。どうもありがとうございます。

レビュー時はPDFで読んでいたのですが、やはり実際の書籍として手に取るとうれしいですね(おそらく著者陣はうれしくてそれだけで酒が進むかもしれない🍶)。そして読み出すと「PDFより楽に読める」と実感しました(これはPDFで読み慣れていないというか、年寄りなだけ、ともいう)。
読んでいて、著者の皆様の苦労が偲ばれました。素晴らしい内容なので、AOAIを使って何か作りたい、と思っている方にとっては、入門書籍として1冊持っておいて損はしないと思います。
先日「感想書くよ!」って宣言しましたので、書評をまとめておきます。
全体的な話
他の方も書いてらっしゃるが、2023/12現在の情報まで記載されているのはすごい。通常、書籍で1ヶ月前までの情報を詰め込むというのは難しいので、相当著者ならびに技術評論社の方々が頑張ったのだと思う。👏👏👏👏👏
300ページ近いけれども、読みやすい。おそらく著者が分担して執筆しているにもかかわらず、表現方法にあまり差が無いことが好影響を与えているように思う(とはいえ、特に第2部や第3部後半、付録Bでは、著者の趣味嗜好が文章からもわかるので興味深い)。
基本Python、たまにFrontendでTypeScriptなので、多くの利用者にとってうれしいのではなかろうか(残念ながらJava使いにとってはあれだが、ま、仕方がない。AIと言えばPythonですしね)。
コラムがかなり充実している(そして著者の興味がわかる)ので、コラムの記載事項を調べて理解しておくとよいかと。
いつ買うか?、といえば、(書籍は脱稿・校了した時点から情報の鮮度が落ちていくので)発売と同時に買うことを強く推奨。
細かい話
AOAIのデプロイメント
AOAIの各モデルには従量課金だとTPM、RPMというクォータがあって、そのクォータの制限を超えるためにはどうしたらよいか、という点が、わかりやすくまとめてある(実のところ、参考資料としてLogico Insideのエントリを取り上げてもらったのが非常にうれしいw)。
RAG (Retrieval-Augmented Generation)
お問い合わせが非常に多いRAGについて、どういう仕組みで動作するのか、どういったコンポーネントが必要か、がわかりやすく記載されている。入門書籍なので、より踏み込んだ実装はカバーしていないが、そこは読者にとっての発展課題と捉えるのがよいかと思う。
Semantic Kernel / LangChain
LangChainやSemantic Kernelを紹介したり、これらを実践的に使う方法を紹介したりすることが目的の書籍ではないため、この書籍ではさらっと概要を説明するだけにとどめている。とはいえ、「LangChainだったらFunction Callingは…」という表現も含まれていたりする(さすがに「Semantic Kernelだったら…」という表現はなかった)ので、気になる人は調査対象にしてもらうのがよろしいかと。
Java使いならLangChain4JやSemantic Kernel for Javaが気になるところだけれども、当然out of scope。興味ある方は是非書籍にまとめてください(って言い出しっぺが書かざるを得なくなるケースか?)。
Copilot Stack
Build 2023で発表されたCopilot StackがIgnite 2023でより詳細かつ具体的になったこともあり、独自Copilotの開発の敷居が下がった。第3部では、Copilot Stackの詳細の記述があるので、今後独自Copilotを作ってみよう、と思ってらっしゃる方にとっては一読に値すると思う。
ガバナンス
「基盤」という言葉に嫌悪感を持つ人もいるかと思うが、エンタープライズで利用するとなると、どうしてもこういう概念が必要になる。おおよそAzure OpenAI Serviceリファレンスアーキテクチャの第6章に記載されているが、書籍ではできる限り最新情報を詰め込んでくれている。
Azure OpenAI Service リファレンスアーキテクチャ
https://www.microsoft.com/ja-jp/events/azurebase/contents/default.aspx?pg=AzureOAIS
a) PTU (Provisioned Throughput Unit)
従量課金で構成したAOAIを多数のプロジェクトでバラバラに使うより、PTUを使って快適かつ高速に使うほうが効率的かつコストメリットも出る可能性がある。ただ、これは技術的な話ではないので、入門書で取り扱わなかったのだと思われる。
プロビジョニングされたスループットとは / What is provisioned throughput?
https://learn.microsoft.com/azure/ai-services/openai/concepts/provisioned-throughput
b) ログ収集
ログ収集について記載はあるものの、ログを収集する目的に言及されていると、読者にとってより一層重要性が湧いたかもしれない。全社利用するなら一元管理して、以下の目的でログを分析し、システムの改善を進めることになるはず。
- (問い合わせが多い=知りたい情報、なので)FAQにまとめたり、特定のコンテンツに到達しやすくしたりするなどの改善作業
- 怪しげなプロンプトのチェック
- システムプロンプトの継続的改善
c) ネットワークの閉域化
ネットワークの閉域化もよくお問い合わせをもらう内容のひとつ。どのコンポーネントからVNetに入るかは、AOAIリファレンスアーキテクチャの第6章に記載があるが、API Management v2 Standardを利用するパターンも言及されているので、最新情報をできるだけ載せようとした著者陣の意思を感じる(Logico Insideのエントリにも記載がありますw)。
d) 負荷分散・エンドポイントの死活監視
AOAIのデプロイメントとも関連するが、Global load balancerを使うか、Regional load balancerを使うか、L4、L7のLoad Balancerを使うか、まで明確に記載されているので、困ったら読んでおくのがよいかと(これもLogico Insideのエントリに記載があったりしますw)。