[アップデート] Amazon Bedorck のナレッジベースとエージェントが CloudFormation によるデプロイをサポートしたっぽいので、使ってみた
いわさです。
休日・土曜日の朝、起床後に何をしますか。やはり CloudFormation が新しいリソースをサポートしたかどうかを確認しますよね。
本日、CloudFormation のサポートリソースに Amazon Bedorck のエージェントとナレッジベースが追加されたようです。
今回新たに CloudFormation でサポートされるようになったリソースは以下です。
- AWS::Bedrock::Agent
- AWS::Bedrock::AgentAlias
- AWS::Bedrock::DataSource
- AWS::Bedrock::KnowledgeBase
おそらくAWS::Bedrock:XXX
系のリソースは初めてではないでしょうか。
ただ、実は CloudFormation のドキュメントはリリース反映前に先行でドキュメントだけ更新されることがありますので。私の体感ですけども。
そこで本日は実際にテンプレートを作成してリソースが作成出来るのかを確認してみました。
Amazon Bedrock エージェントとナレッジベース
私が全く理解していなかったのもあり、大前提となるそもそもの Amazon Bedrock のエージェントとナレッジベースが何なのかを調べてみましたので、以下に概要だけまとめておきます。
これらは AWS re:Invent 2023 でGA となった Amazon Bedrock の機能です。
ナレッジベース(Knowledge bases for Amazon Bedrock)
ナレッジベースを使うと、AWS マネージドな機能でプライベートなカスタムデータをベクターストアに統合し、API を通じてナレッジベースにクエリを実行したりすることが出来ます。
本日時点でナレッジベースがサポートするモデルは以下です。
- ベクターストアへの統合
- Amazon Titan Embeddings G1
- Cohere Embed (English)
- Cohere Embed (Multilingual)
- レスポンス生成
- Anthropic Claude v2.0
- Anthropic Claude v2.1
- Anthropic Claude 3 Sonnet v1
- Anthropic Claude 3 Haiku v1
- Anthropic Claude Instant v1
エージェント(Agents for Amazon Bedrock)
エージェントはユーザーとやり取りを行い Lambda で定義したタスクを実行したり、オプションで前述のナレッジベースと統合することも出来ます。
エージェントがサポートするモデルは本日時点では以下です。
- Anthropic Claude v2.0
- Anthropic Claude v2.1
- Anthropic Claude Instant v1
上記ブログで説明に使われている以下の画像がとても理解しやすかったので引用させて頂きます。
ちなみに、本日時点では東京リージョンではまだサポートされておらず、バージニア北部リージョンとオレゴンリージョンでのみ利用可能です。
今回はバージニア北部リージョンで確認しています。
テンプレート例とデプロイ
今回テンプレートを作成しましたが、いくつかインプットパラメータに必要なリソースを作成しています。
IAM ロールや、ナレッジベース用の OpenSearch Serverless コレクション、データストア用の S3 バケットなどです。
今回はナレッジベースのモデルにはAmazon Titan Embeddings G1
を、エージェントのモデルにはAnthropic Claude v2.1
をパラメータで指定し、エージェントにナレッジベースを関連付けした上でエージェントのバージョンとエイリアスを作成しています。
AWSTemplateFormatVersion: 2010-09-09 Description: --- Parameters: ########################### # ナレッジベース用 ########################### HogeEmbeddingModelArn: Type: String Default: arn:aws:bedrock:us-east-1::foundation-model/amazon.titan-embed-text-v1 HogeKnowledgeBaseRole: Type: String Default: arn:aws:iam::123456789012:role/service-role/AmazonBedrockExecutionRoleForKnowledgeBase_6nciu HogeOSSCollectionArn: Type: String Default: arn:aws:aoss:us-east-1:123456789012:collection/sw4zckofthortv2svhch HogeOSSIndexName: Type: String Default: bedrock-knowledge-base-default-index HogeOSSVecroField: Type: String Default: bedrock-knowledge-base-default-vector HogeOSSMappingText: Type: String Default: AMAZON_BEDROCK_TEXT_CHUNK HogeOSSMappingMetadata: Type: String Default: AMAZON_BEDROCK_METADATA HogeDatasourceBucketArn: Type: String Default: arn:aws:s3:::xxxxxxx ########################### # エージェント用 ########################### HogeBedrockExecutionRoleForAgent: Type: String Default: arn:aws:iam::123456789012:role/service-role/AmazonBedrockExecutionRoleForAgents_NA5QLXKD89 HogeFoundationModel: Type: String Default: anthropic.claude-v2:1 HogeAgentInstruction: Type: String Default: hogehogeinstruction Resources: ########################### # ナレッジベース ########################### HogeKnowledgeBase: Type: AWS::Bedrock::KnowledgeBase Properties: Name: hoge-knowledge-base KnowledgeBaseConfiguration: Type: VECTOR VectorKnowledgeBaseConfiguration: EmbeddingModelArn: !Ref HogeEmbeddingModelArn RoleArn: !Ref HogeKnowledgeBaseRole StorageConfiguration: Type: OPENSEARCH_SERVERLESS OpensearchServerlessConfiguration: CollectionArn: !Ref HogeOSSCollectionArn FieldMapping: MetadataField: !Ref HogeOSSMappingMetadata TextField: !Ref HogeOSSMappingText VectorField: !Ref HogeOSSVecroField VectorIndexName: !Ref HogeOSSIndexName HogeDataSource: Type: AWS::Bedrock::DataSource Properties: KnowledgeBaseId: !Ref HogeKnowledgeBase Name: hoge-data-source DataSourceConfiguration: Type: S3 S3Configuration: BucketArn: !Ref HogeDatasourceBucketArn ########################### # エージェント ########################### HogeAgent: Type: AWS::Bedrock::Agent Properties: AgentName: hoge-agent AgentResourceRoleArn: !Ref HogeBedrockExecutionRoleForAgent FoundationModel: !Ref HogeFoundationModel Instruction: !Ref HogeAgentInstruction KnowledgeBases: - Description: hoge-knowledge-base KnowledgeBaseId: !Ref HogeKnowledgeBase KnowledgeBaseState: ENABLED HogeAgentAlias: Type: AWS::Bedrock::AgentAlias Properties: AgentAliasName: hoge-agent-alias-1 AgentId: !Ref HogeAgent
なお、各パラメータで不明点がある場合はマネジメントコンソールで作成した後に AWS CLI などで設定値を確認すると理解を助けてくれると思います。上記の実装にあたってリファレンスだけだといくつかわからない点があって CLI でパラメータを確認しました。
- get-agent — AWS CLI 1.32.79 Command Reference
- get-knowledge-base — AWS CLI 1.32.79 Command Reference
- get-data-source — AWS CLI 1.32.79 Command Reference
デプロイされたリソースの確認
上記のテンプレートをデプロイ後にリソースを確認してみます。
なお、今回は必須パラメータと、ナレッジベース関連付けに必要なオプションパラメータを指定しましたが、実際に上記構成で動作するかまでは確認しておらずもしかすると追加のパラメータが必要になるかもしれません。
一旦デプロイまでは上記で可能だよ、という感じです。
バージョン・エイリアスが設定されたエージェントがデプロイされています。
エージェンのバージョンあるいは作業中のドラフトを確認してみると、指定したモデルでエージェントが構成されていること、ナレッジベースが関連付いていることが確認できます。
続いてナレッジベースのほうも指定してモデルで構成されていること、ベクターストアとしてパラメータ指定した OpenSearch Serverless コレクションが構成されていること、指定した S3 バケットを使ったデータソースが作成され統合されていることが確認出来ました。
さいごに
本日は Amazon Bedorck のナレッジベースとエージェントが CloudFormation によるデプロイをサポートしたっぽいので、使ってみました。
正式にリリースされてるようですね。たまに使えてたはずの機能が使えなくなるケースもあるのでアップデートアナウンスも待ちたいですが。
東京リージョンではまだ使えないナレッジベースとエージェントですが、CloudFormation のサポートも開始されたということで覚えておきましょう。
2024.04.09 追記
アップデートアナウンスも出ました。