LayerX エンジニアブログ

LayerX の エンジニアブログです。

Strands Agents で AWS コスト最適化エージェントをサクッと作る

こんにちは、バクラク事業部 Platform Engineering 部 SRE グループの uehara です。

これは LayerX AI Agent ブログリレー の記事です。昨日は yu-ya4 さんの Langfuse の Datasets 機能を利用した AIエージェント機能の性能評価のためのデータセット構築 でした。AI エージェントについて毎日発信していますので、他の記事もぜひご覧ください!

今回は、先日開催された AI エージェント祭 で実装した「AWS コスト最適化エージェント」について紹介します。

Strands Agents とは

Strands Agents は AI エージェントを効率的に構築・実装するために設計されたオープンソースの SDK です。2025年5月に AWS から公開されました。Amazon Bedrock、Anthropic、Ollama など様々なプロバイダ・モデルに対応しています。

複雑なコーディングをすることなく、簡単に AI エージェントを開発できます。AI エージェント開発にチャレンジしたいが何から始めればよいか分からない方にもおすすめです。

詳細については、AWS 公式ブログもご参照ください。

aws.amazon.com

AWS コスト最適化エージェントの実装

Strands Agents を用いることで、システムプロンプトや入出力処理を含めても90行程度で実装できました。LLM を呼び出すためのコア実装は以下だけです。

from strands import Agent
from strands_tools import use_aws, current_time, calculator
from strands_tools.tavily import tavily_search
from strands.models import BedrockModel

model = BedrockModel(
    model_id="us.anthropic.claude-3-7-sonnet-20250219-v1:0",
    temperature=0.3,
    region_name="us-west-2"
)
agent = Agent(
    model=model,
    tools=[
        use_aws,
        current_time,
        tavily_search,
    ],
    system_prompt=SYSTEM_PROMPT,
)
response = agent(user_input)

検証用アカウントで実行したサンプルもご紹介します。

起動すると質問の入力を求められます。デフォルト値として「今月のコスト感をまとめて」と入力されていますが、これ以外の質問に書き換えて送信することも可能です。

質問を受け取ったエージェントは、現在日時を確認しつつ AWS ツールを用いてコストを調査してくれます。ここでは、コストの上位10サービスとその他のサマリについてまとめてくれました。

詳しく知りたいサービスがあるかを尋ねられているため、「S3 コストを削減したい」と伝えてみます。

エージェントは S3 コストの内訳を確認した後に、Web 検索も活用してコスト最適化案をまとめてくれます。今回は S3 データ転送コストを抑えるための CloudFront 活用、ストレージコストのためのライフサイクルポリシーなどを提案してくれました。

実際の AWS 利用状況を踏まえた回答になっていることがわかります。

システムプロンプトと利用ツール

AWS コスト最適化エージェントは以下のシステムプロンプトで動いています。利用しているモデルは Claude 3.7 Sonnet です。

あなたはAWSのコスト管理アシスタントです。
あなたの役割は:
- 利用可能なツールを使用して正確な情報を提供する
- 特に利用料の高いサービスをハイライトする
- サービスの説明は不要でサービス名とコストだけをシンプルに出力
- どのサービスを掘り下げるか・コストを削減したいかユーザに尋ねる
- サービス(Service)単位や項目(UsageType)単位で見やすくまとめる
- コスト削減案を尋ねられたらtavily_search()を活用しつつ提案する
- 回答出力はマークダウン形式でよいが、太字(**)や表形式や絵文字は使用しない

以下のツールにアクセスできます:
1. use_aws() - AWSのAPIを使用して情報を取得する
2. tavily_search() - 最新情報をWebで検索する
3. current_time() - 現在日時を取得する

3つのツールはいずれも Strands Agents で提供されているものです。

github.com

  • use_aws
    • AWS の各種 API をコールできます。今回は料金情報の取得や各サービスの利用状況取得に用いています。
  • tavily_search
    • AI エージェント向けに最適化された Web 検索ツールです。今回はコスト削減の提案に用いるアイデアを検索する用途で使用しました。
  • current_time
    • その名の通り現在日時の取得ツールです。正確に現在月を把握するために利用しています。

工夫した点

今回の AWS コスト最適化エージェント開発にあたりいくつか工夫した点をご紹介します。

初期プロンプトの事前入力

起動直後にチャットの入力を求められても何を入れるか悩んでしまう可能性があるため、サンプルとして「今月のコスト感をまとめて」をデフォルト設定しました。このエージェントで何ができるのかを理解しやすいように入れています。

回答テキストのフォーマット指定

太字や絵文字による過剰な装飾を制限することで、ターミナル上でも読みやすく、今後 Web UI などに組み込む場合でも使いやすい plain text (markdown) を得られるように指示しています。

current_time() の活用

LLM は特性上、現在日時を正確に把握できません。それっぽい日付を補完して回答を生成してしまうため、ツールから現在日時を取得できる旨をシステムプロンプトに組み込んでいます。

まとめ

Strands Agents を用いた AWS コスト最適化エージェントについてご説明しました。

ツールを個別に開発せずとも、Strands Agents のツールを用いることで簡単に AI エージェントを実装することができます。AI エージェント開発の第一歩としておすすめのツールです。ぜひお試しください。

お知らせ

SRE グループでは、新プロダクトやお客様の規模が拡大していく中で AWS コストを適切にコントロールすることもミッションの一つです。プロダクトの信頼性とコスト効率を両立できるように取り組む仲間も探しています!

また、今後も AI エージェントを組み込んだ新たなプロダクトや機能が続々と登場予定です。少しでもご興味がありましたらぜひご連絡ください!

open.talentio.com jobs.layerx.co.jp