2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AWS Strands Agentsをクロスリージョン推論で利用する

Posted at

AWS Strands Agentsをクロスリージョン推論で利用する

先日、AWSからOSSとしてStrands Agentsがリリースされました。Strands Agentsは、AIエージェントを簡単に作成できるフレームワークです。以下のブログでMCP Serverを利用するためのデモが紹介されています。今回、Strands AgentsをAmazon Bedrockのクロスリージョン推論を利用して、東京リージョンで利用する方法を確認してみました。

前提条件

  • Strands Agents: 0.1.2

まずはデモとおり動かしてみる

事前準備として、必要なモジュールをインストールします。

pip install strands-agents strands-agents-tools

Agentのコードは以下のとおりです。ブログで紹介されているものと同じ内容です。

  • agent.py
from strands import Agent
from strands.tools.mcp import MCPClient
from strands_tools import http_request
from mcp import stdio_client, StdioServerParameters

# 命名にフォーカスしたシステムプロンプトの定義
NAMING_SYSTEM_PROMPT = """
あなたはオープンソースプロジェクトの命名を支援するアシスタントです。

オープンソースのプロジェクト名を提案する際は、必ずプロジェクトに使用できる
ドメイン名と GitHub の組織名を 1 つ以上提供してください。

提案する前に、ドメイン名がすでに登録されていないか、GitHub の組織名が
すでに使用されていないか、ツールを使って確認してください。
"""

# ドメイン名が利用可能かを判定する MCP サーバーを読み込む
domain_name_tools = MCPClient(lambda: stdio_client(
    StdioServerParameters(command="uvx", args=["fastdomaincheck-mcp-server"])
))

# GitHub の組織名が利用可能かを判定するためのリクエストを
# GitHub に送る Strands Agents の事前構築済みツール
github_tools = [http_request]

with domain_name_tools:
    # ツールとシステムプロンプトと共に命名エージェントを定義
    tools = domain_name_tools.list_tools_sync() + github_tools
    naming_agent = Agent(
        system_prompt=NAMING_SYSTEM_PROMPT,
        tools=tools
    )

    # エンドユーザーのプロンプトと共に命名エージェントを実行
    naming_agent("AI エージェント構築のためのオープンソースプロジェクトの名前を考えてください。")

あとは実行するだけですが、ブログの内容ではバージニア北部(us-east-1)で実行することを前提としているため、そのままでは動きません。このため、以下のように実行時のリージョンをus-east-1に指定する必要があります。

AWS_REGION=us-east-1 python -u agent.py

uvxがないと動かない

MCP Serverを実行するためにuvxが必要です。このため、uvを事前にインストールしておく必要があります。uvのインストールは公式サイトを参考にしてください。

デフォルトモデルは何を使用しているのか

ブログの内容では使用するLLMを指定していません。この場合Strands Agentsのデフォルトモデルが使用されます。Strands Agentsのデフォルトモデルは以下が使用されるようです(Version 0.1.2時点)。

  • us.anthropic.claude-3-7-sonnet-20250219-v1:0

クロスリージョン推論を利用する

今度は、Bedrockのクロスリージョン推論を利用して東京リージョンで動かしてみます。クロスリージョン推論を利用するためにはModelIDを指定する必用があります。このため、BedrockModelを明示的に指定するようにします。

  • agent-ap-northeast-1.py
from strands import Agent
from strands.tools.mcp import MCPClient
from strands_tools import http_request
from mcp import stdio_client, StdioServerParameters
from strands.models import BedrockModel

# 命名にフォーカスしたシステムプロンプトの定義
NAMING_SYSTEM_PROMPT = """
あなたはオープンソースプロジェクトの命名を支援するアシスタントです。

オープンソースのプロジェクト名を提案する際は、必ずプロジェクトに使用できる
ドメイン名と GitHub の組織名を 1 つ以上提供してください。

提案する前に、ドメイン名がすでに登録されていないか、GitHub の組織名が
すでに使用されていないか、ツールを使って確認してください。
"""

# ドメイン名が利用可能かを判定する MCP サーバーを読み込む
domain_name_tools = MCPClient(
    lambda: stdio_client(
        StdioServerParameters(command="uvx", args=["fastdomaincheck-mcp-server"])
    )
)

# GitHub の組織名が利用可能かを判定するためのリクエストを
# GitHub に送る Strands Agents の事前構築済みツール
github_tools = [http_request]

# クロスリージョン推論を利用するためのモデルを指定です。
# 使用するModelIDの先頭に、apac.を付ける必要があります。
bedrock_model = BedrockModel(
    model_id="apac.anthropic.claude-3-7-sonnet-20250219-v1:0", temperature=0.3
)

with domain_name_tools:
    # ツールとシステムプロンプトと共に命名エージェントを定義
    tools = domain_name_tools.list_tools_sync() + github_tools
    # model=bedrock_modelを指定することで、クロスリージョン推論を利用します。
    naming_agent = Agent(
        system_prompt=NAMING_SYSTEM_PROMPT, tools=tools, model=bedrock_model
    )

    # エンドユーザーのプロンプトと共に命名エージェントを実行
    naming_agent(
        "AI エージェント構築のためのオープンソースプロジェクトの名前を考えてください。"
    )

以下のようにAWS_REGIONを指定せずに実行することができます(実行環境のデフォルトリージョンがap-northeast-1である前提です)。

python -u agent-ap-northeast-1.py

クロスリージョン推論を利用する場合はModel catalogのModel IDにプレフィクスを追加する

クロスリージョン推論を利用する場合は、Model catalogのModel IDに呼び出したいリージョンに応じたプレフィクス指定を追加する必要があります。東京リージョン(ap-northeast-1)で利用する場合の例は以下のとおりです。勿論、クロスリージョン推論に対応しているモデルである必要があります。

  • 元のModel ID: anthropic.claude-3-7-sonnet-20250219-v1:0
  • 東京リージョンのプレフィクス: apac.
  • クロスリージョンを利用する場合のModel ID: apac.anthropic.claude-3-7-sonnet-20250219-v1:0

参考文献

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?