[アップデート]Agents for Amazon Bedrockが発表されました! #AWSreInvent

2023.11.29

はじめに

現在開催中のAWS re:Invent 2023。 Amazon BedrockにAgents機能が追加されました!

Agents for Amazon Bedrock is now available with improved control of orchestration and visibility into reasoning | AWS News Blog

3行まとめ

  • Agents for Amazon Bedrockが発表されました
  • Agents for Amazon Bedrockを使うことで、RAGの構築が容易になります
  • API呼び出しにはLambdaを使用し、ナレッジデータベースには新機能のKnowledge baseを使用します

何が嬉しいか

従来のRAGの構築では、開発者が色々なサービスを独自で組み合わせて作り込む必要がありました。 Agents for Amazon Bedrockを使うことで、その開発プロセスをオーケストレーション(自動化)してくれるのでRAGの構築が容易になります。

使ってみた

サービスページにアクセス

AWSのマネジメントコンソールで、バージニア北部リージョン(us-east-1)のAmazon Bedrockのサービスページを開きます。 画面左袖から[Orchestration] > [Agents]にアクセスします。

Agentsの画面で、[Create Agent]をクリックします。

Step 1: Provide Agent details

Agent nameの欄では、エージェント名や説明を定義します。 今回はtest-agentとします。

User inputの欄では、エージェントが発話に応答するのに十分な情報を持っていない場合に、ユーザからの追加情報を促すかどうかを選択します。 今回は[Yes]を選択しました。

IAM Permissionsの欄では、エージェント用のIAMロールを選択します。 今回は[Create and use a new service role]を選択して新しいのIAMロールを作成しました。

KMS key selectionの欄では、エージェント用のKMSキーを選択します。 デフォルトでAWSのマネジメントキーで暗号化されますが、別のキーを選択することもできます。 今回はデフォルトを指定しました。

Idle session timeoutの欄では、ユーザが何も入力せず、セッションがアイドル状態のときに、セッションを維持する期間を設定できます。 Amazon Bedrockは、セッションが終了するまでコンテキスト情報を保持するとのことです。 デフォルトのセッションタイムアウト値は30分で、1秒〜60分の間で設定できます。 今回はデフォルト値の30分を指定しました。

Tagsの欄では、タグを追加できます。 今回はタグを追加しませんでした。

Step 2: Select model

Model detailsの欄では、Agentに使用するモデルを選択します。 私の環境でのモデル一覧は以下の通りでした。 今回はAnthropicのClaude V2を選択しました。

  • Anthropic
    • Claude Instant V1
    • Claude V2
    • Claude V2.1(選択不可)
  • Amazon
    • Amazon Titan Express(選択不可)

[Instructions for the Agent]というテキスト入力欄があります。 ここではAgentへの指示を定義します。 Agentが行うタスクを明確かつ具体的に指示しましょう。 スタイルやトーンを指示することもできます。 40~1200文字で入力する必要があります。 今回は「あなたは優秀なAIアシスタントです。ユーザーの指示には注意深く従ってください。回答にはMarkdownを使用してください。」と指示しました。

Step 3 Add Action groups(optional)

Action groupsの欄では、Agentが自律的に実行できるタスクを定義します。 Lambdaでタスクを定義して、それを呼び出す形のようです。またS3 Urlで、APIのスキーマを定義ができます。 タスクはマネジメントコンソール上だと5つまで定義可能なようです。

Step 4 Add Knowledge base(optional)

[Orchestration] > [Knowledge base]で定義したナレッジベースを指定できます。 また[Knowledge base instructions for Agent]のテキスト入力欄では、ナレッジベース利用におけるAgentへの指示を定義します。

Knowledge baseについては以下の記事が参考になります。

[アップデート] Amazon Bedrockで簡単にRAGが実現できる、Retrieval Augmented Generation (RAG) with Knowledge BaseがとうとうGAになりました!! #AWSreinvent | DevelopersIO

Step 5 Review and create

設定内容のレビュー画面です。 問題なければ[Create Agent]をクリックします。

作成されたAgentの確認

[Create Agent]をクリック後、数秒でAgentが作成されました。

作成したAgent画面右袖の[Test]では、会話のテストができます。

[Create alias]では、Agentのバージョンを作成できるようです。

作成するとAgent画面下部の[Aliases]に作成したバージョンが表示されます。

また画面右袖の[Test]で作成したバージョンを選択することができます。

簡単にバージョンを切り替えてテストできるのは便利ですね。

考察

Knowledge baseとAgentsの違いは何か

どちらともOpenSearch ServerlessなどをデータベースにしたRAGを構築できます。 一方でAgentsはRAGのプロセスにおいてLambda経由でAPIを叩くことができます。 したがって、「Agents = Knowledge base + LambdaをAPIで叩ける」というのが執筆時点での私の考えです。OpenAIでいうと、Function Callingに近いでしょうか。

Lambdaを駆使すれば、様々なLLMの実行結果も活用できる

AWSのサービスを実行させたり、外部のAPIを呼んだりすることが本筋かと思いますが、Bedrockが未対応の生成AIモデルを利用するという使い方もあるかもしれません。 たとえば、LambdaでOpenAIのモデルを利用するタスクを作成すれば、OpenAIのモデルの実行結果を回答に反映することができそうです。 AWS公式ドキュメントでもS3 Urlで定義するための、OpenAIのスキーマについて記載があり、このような利用方法も想定しているように見受けられました。

Action group OpenAPI schemas - Amazon Bedrock

さいごに

生成AIの活用において、RAGは非常に重要な位置を占めています。 今回の発表により、RAGの実現がより簡単になり、生成AIの活用が加速しそうですね。 それでは、また!