Amazon Bedrock 生成AIアプリ開発入門 レビュー #Bedrock開発入門

:::note info
著者より発売前の書籍をご恵贈いただきました。この記事はその書評を個人の見解として述べるものです。
:::

2024/6/26 にAmazon Bedrock 生成AIアプリ開発入門 [AWS深掘りガイド] が発売されます🎉

https://www.sbcr.jp/product/4815626440/

本書は Qiita でも Bedrock 関連のアウトプットを積極的におこなわれている @minorun365 @hedgehog051 @moritalous という超強力な著者陣による執筆です。

https://qiita.com/tags/bedrock

## 書籍の概要
本書は AWS の生成 AI サービスである Amazon Bedrock を中心に、生成 AI 技術とそのアプリケーション開発について、幅広く体系的に解説している入門書です。

具体的には生成 AI の基本から始まり、Bedrock の使用方法、LangChain や Streamlit などのフレームワークを使用したアプリケーション開発の基本とコツを学ぶことができます。社内文書検索 RAG アプリや自立型 AI エージェントのハンズオンの他、ローコード開発や他 AWS サービスとの連携にまで触れられており、生成 AI 開発に興味のある AWS エンジニアには特にオススメの内容になっています。

開発入門というタイトル通り、より高度な開発、運用の知見を得たい方、学術的な解説を求めている方にはアンマッチかもしれません。一方でモデルやアプリケーションの評価、責任ある AI (Responsible AI) 開発、RAG アプリケーションの精度を向上させるための手法など実際のアプリケーション開発にあたっての重要なトピックには幅広く触れられています。

私個人としても本書を取っ掛かりとしてこれらのトピックについてより知識を深めていかなければいけないなと感じました。

## 本書の個人的推しポイント
### 直近の最新アップデートを網羅
2024 年 6 月発売の書籍ですが、2024 年 5 月までの情報で書かれています。5 月上旬とかではなく、本当に 5 月 31 日までの発表が含まれています。例えば日本時間の 5/31 にアナウンスされた 新しい [Converse API](https://aws.amazon.com/jp/about-aws/whats-new/2024/05/amazon-bedrock-new-converse-api/) についてもその概要が触れられています。

周辺のフレームワークも日夜アップデートが激しいですが、LangChain を使用したサンプルコードは 5 月にリリースされた LangChain v0.2.0 を前提としており、現在推奨される LCEL 記法を使用したものとなっています。 AWS サービスとの統合についても LangChain リポジトリの langchain-community から切り離されている `langchain-aws` パッケージが使用されています。最近 LangChain 周りを触っていなかった方もキャッチアップできる内容になっています。

また第 11 章では最新情報のキャッチアップ方法がまとめられており、読者自身でも情報のキャッチアップ手法や情報源について学べます。

### memo、Column の記載が豊富
最新のアップデートの解説や、本筋と少し離れてしまうが重要なナレッジなどは基本的に memo や Column といった形で掲載されています。

個人的にはこれがすごく良いコンテンツだと思っています。例えばまれに発生しうるエラーへの対処、マルチモーダルで画像を扱う場合のプロンプトエンジニアリングテクニック、基盤モデルのライフサイクル (EOL) への言及など、参考になる情報が各所に散りばめられています。

### 丁寧な基盤モデルの解説
Amazon Bedrock はユースケースに応じて複数の基盤モデルを使い分けがることができます。2024 年 5 月時点で 7 社 30 種類のモデルが提供されており、本書では 30 ページ以上を割いて、各モデルの特徴や出力例などが丁寧に解説されています。

### AWS Step Functions ハンズオン
第 8 章 生成 AI アプリをローコードで開発しよう では AWS Step Functions を使った生成 AI アプリ開発のハンズオンが収録されています。Step Functions のワークフローで Bedrock の API を連鎖的に呼び出すことで、[プロンプトチェイニング](https://www.promptingguide.ai/jp/techniques/prompt_chaining) と呼ばれる手法を実装する内容になっています。

ワークフロー内での値の受け渡しや組み込み関数などについても解説されているため、Step Functions の入門としても学びが多い内容でした。

題材も Qiita の記事を取得して自己紹介文と画像を生成するという Qiita ユーザーのみなさんには特にとっつきやすい内容になっています。

### Amazon Q Business のハンズオン
第 9 章 Bedrock 以外の生成 AI サービスの紹介 では Amazon Q Business のハンズオンも収録されています。先日開催された AWS Summit Japan で Amazon Q Business の日本語版が 2024 年に東京リージョンでローンチされるとのニュースもあり、タイムリーなコンテンツになっています。

https://x.com/awscloud_jp/status/1803613633324183739/

### サンプルコードが充実
本書に掲載されているサンプルコードは GitHub リポジトリで公開されています。AWS やライブラリのアップデートによってコードが動作しなくなった場合も当面は GitHub 上のコードをアップデートしていくとのことです。またコード修正だけでなく、6/20 に発表されたばかりの Claude 3.5 Sonnet の使用方法についても既に取り込まれていました。

また第 3 章では LlamaIndex や Chainlit といったフレームワークについてもいくつかピックアップして紹介されています。書籍上は概要の紹介にとどまっていますが、GitHub リポジトリにはこれらのフレームワークを利用したサンプルコードも格納されています。

## こういった情報もあると更に嬉しいなと感じた点
私は書籍の執筆をした経験はありませんが、都合上、泣く泣くカットされているコンテンツもあるのではないかと想像します。そういった前提ではありますが、個人的にこういった情報もあると良いなと感じた点もいくつかピックアップします。

### モデルアクセスや課金周り
Amazon Bedrock て提供される他社提供のモデルは基本的に AWS Marketplace のサブスクリプションとして提供され、課金も AWS Marketplace 経由となります。

またモデル提供会社ごとに EULA (End-User License Agreement) が存在するため、ユーザーはその内容を承諾した上でモデルの利用を開始する必要があります。

個人の検証用途であればあまり気にするところではないかもしれませんが、企業利用の場合はこのあたりを十分に確認した上で利用する必要があるかと思いますので注意しましょう。


### Bedrock の IAM ポリシー周り
ハンズオンは AdministratorAccess がアタッチされた IAM ユーザーを前提としています。また Lambda 関数用の IAM ロールには AmazonBedrockFullAccess を設定しています。実際の開発や実務環境においては IAM ポリシーによるアクセス制御を意識しなければならない場面は出てくるかと思うので、必要に応じて調査、設定することをおすすめします。

ドキュメントでは以下に IAM ポリシーの例が記載されています。 

https://docs.aws.amazon.com/bedrock/latest/userguide/security_iam_id-based-policy-examples.html


## その他勝手に補足シリーズ
本書を読み込んでいった中での個人的なメモではありますが、どなたかの参考になればとも思い記載します。

### Cloud9 に別バージョンの Python をインストール
本書は Python 3.9.16 を前提としているが、これは開発環境として採用している AWS Cloud9 のベース OS が Amazon Linux 2023 あり、このバージョンがデフォルトでインストールされているため。これより新しいバージョンを使用して開発したい場合はひと作業必要。

https://techblog.ap-com.co.jp/entry/2024/04/26/083000

### Kendra の Retrieve API は FAQ タイプの応答を取得できない
という仕様があるため、FAQ を検索させるには Query API を使用する必要がある。

https://docs.aws.amazon.com/kendra/latest/APIReference/API_Retrieve.html

> With the Retrieve API, you can retrieve longer passages of up to 200 token words and up to 100 semantically relevant passages. This doesn't include question-answer or FAQ type responses from your index. 

### Agents for Amazon Bedrock のバージョンとエイリアス
運用環境においては使いこなしたい

https://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/agents-deploy.html

### そもそも OpenAPI Schema とか Specification って何だっけ
https://engineers.fenrir-inc.com/entry/2024/02/13/142312

### ヒューマンワーカーによるモデル評価
AWS マネージドによる手動評価を行う場合、内部的には Amazon Augmented AI が活用されているっぽい

https://docs.aws.amazon.com/bedrock/latest/userguide/model-evaluation-type-human-customer.html

https://docs.aws.amazon.com/sagemaker/latest/dg/a2i-use-augmented-ai-a2i-human-review-loops.html

### Amazon Q Developer Agent for code transformation
Amazon Q Developer には 、Maven 上に構築された Java 8 または Java 11 プロジェクトを Java 17 に変換する機能も提供している。

https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/code-transformation.html

プレビュー発表時のブログ

https://aws.amazon.com/jp/blogs/news/upgrade-your-java-applications-with-amazon-q-code-transformation-preview/

## まとめ
Amazon Bedrock 生成AIアプリ開発入門は、Bedrock を中心に AWS の生成 AI サービスの使用方法、複数のフレームワークを用いたアプリケーション開発などの手法を体系的に学ぶことのできる貴重な一冊です。特に最新のアップデート情報を含む充実したコンテンツ、丁寧な基盤モデルの解説、実践的なハンズオンなどが本書の強みであると感じました。

より高度な開発、運用の知識を得るにはさらなる学習が必要かもしれません。それでも、本書を通じて得られる知識は AWS における生成 AI 開発の基盤として非常に価値があるものです。

Amazon Bedrock 生成AIアプリ開発入門の発売により、もっともっと Bedrocker 仲間が増えることを願っています！

以上です。
参考になれば幸いです。