Strands AgentsでAIエージェントを構築してみた

A piece of cardboard with a keyboard appearing through it 日記

最近、AWSが発表したAIエージェント構築SDK「Strands Agents」に興味を持ち、実際に触ってみました。AIエージェントに興味を持っている方々に向けて、セットアップから基本的な実装、そして躓きポイントとその解決策までをまとめてみました。

Strands Agentsとは

AWS Strands Agentsは、AWSが提供するAIエージェント構築のためのPythonベースのSDKです。BedrockのLLMモデルを活用して、対話型のインテリジェントなAIエージェントを簡単に構築できます。計算機能やウェブリクエストなどの様々なツールを統合できるのが特徴です。

以下の記事を読んでちょっと触ってみようと思いました。

環境セットアップ

まず、必要なライブラリをインストールします。

pip install strands-agents
pip install strands-agents-tools strands-agents-builder

AWS 認証情報を設定します。

~/.aws/credentials に適切なプロファイルを設定するか、環境変数で認証情報を設定してください。

実装

参考にした記事に書いてあったコードをそのまま書いて実行してみます。

from strands import Agent

agent = Agent()
agent("Strandsってどういう意味?")

しかし、このコードを実行すると「指定したモデルIDにアクセスできない」というエラーが発生しました。

An error occurred (AccessDeniedException) when calling the ConverseStream operation: You don't have access to the model with the specified model ID.

どうやらデフォルトだとオレゴンリージョンのClaude 3.7が使われるようですが、オレゴンリージョンでは利用できるようにモデルアクセスの設定などしていないのでモデルの設定を追加します。

# Create a BedrockModel
bedrock_model = BedrockModel(
    model_id="us.anthropic.claude-3-7-sonnet-20250219-v1:0",
    region_name='us-east-1',
    temperature=0.3,
)
agent = Agent(
    model=bedrock_model,
)

これでも同じエラーが出てしまいつまづきましたが以下の設定で解決しました。

# Create a BedrockModel 
bedrock_model = BedrockModel(
     model_id=model_id,
     temperature=temperature,
     boto_session=boto3.Session(profile_name="default", region_name="us-east-1"),
)
agent = Agent(
    model=bedrock_model,
)

問題の原因は.aws/configregion = ap-northeast-1が設定されていたため、接続先のリージョンを設定する必要がありました。

機能の活用例

calculatorツールの使用例

Strands Agentsには様々なツールが組み込まれています。

例えば、計算機能を使うには、

agent = Agent(
    model=bedrock_model,
    tools=[
        calculator,
    ],
)

response = agent("2 x 9 + 2 は?")
print(response)

http_requestツールの使用例

さらに、Webページの内容を取得するためのhttp_requestツールも試してみました。

agent = Agent(
    model=bedrock_model,
    tools=[
        calculator,
        http_request,
    ],
)

response = agent("https://qiita.com/minorun365/items/dd05a3e4938482ac6055 の内容を教えて")
print(response)

それぞれ、どのようなレスポンスが返ってくるのか実際に試してみてください。

作業履歴はzennのスクラップにもあります

まとめ

AWS Strands Agentsを使えば、比較的シンプルなコードでインテリジェントなAIエージェントを構築できます。今回は組み込みのツールを使ってみただけでしたが自分でツールを作るのも試してみたいと思っています。

皆さんもぜひ、AWS Strands Agentsを使って、独自のAIエージェントを構築してみてください。

コメント

タイトルとURLをコピーしました