何かすごそうなのが来ました!
Strandsは日本人に馴染みの薄い単語ですが、DNAのように複数の糸がからまって幹をなす鎖を表すようですね。(LLMとツールの暗喩のようです)
いわゆる「組み紐」ですね。タキクゥーン!
世はAIエージェントSDK戦国時代!
この分野ではLangChainシリーズのLangGraphがずっと人気ですし、
最近はTypeScriptで書けるMastraも注目です。
また、OpenAIやGoogleなどのモデルベンダーもSDKをオープンソース公開する流れになっています。
そこにAWSも参入!というわけです。
3秒でAIエージェントが書ける!
ユーザーガイドを見てみましょう。
pip install strands-agents
したら、なんと以下だけでAIエージェントが動きます!
from strands import Agent
agent = Agent()
agent("Strandsってどういう意味?")
これを実行すると、デフォルトではAWSオレゴンリージョンのAmazon BedrockでClaude 3.7 Sonnetが推論に使われます。
※事前にAWS CLIの認証を通しておく必要があります。
実際にAIエージェントを作ってみよう
公式クイックスタートを少しアレンジしたものを使います。
最初にPythonのパッケージマネージャーuvで、プロジェクトディレクトリを作りましょう。
brew install uv
uv init strands-agents-handson
VS CodeなどのIDEでディレクトリを開き、Pythonの仮想環境を有効化しましょう。
cd strands-agents-handson
uv venv
source .venv/bin/activate
必要なライブラリを追加します。uvを使えば、pipよりも爆速ですね。
uv add strands-agents strands-agents-tools strands-agents-builder
事前にAWSアカウントを用意して、オレゴンリージョンでBedrockのClaude Sonnet 3.7を有効化しておきましょう。
また、作業PC上でAWS CLIの認証設定を済ませておき、ターミナルに環境変数(AWS_ACCESS_KEY_ID
/ AWS_SECRET_ACCESS_KEY
)をセットしましょう。
その後、以下のメインコードを作成します。
from strands import Agent, tool
from strands_tools import current_time, python_repl
@tool
def letter_counter(word: str, letter: str) -> int:
return word.lower().count(letter.lower())
agent = Agent(tools=[current_time, python_repl, letter_counter])
message = """
いくつか質問があります。
1. いま日本は何時?
2. その時刻表示の中に「1」はいくつある?
3. ここまで話した内容をPyhtonコードにして。テストしたあとにコード内容を表示して。
"""
agent(message)
書けたら実行してみましょう。
uv run agent.py
結果はやってみてのお楽しみ!
話題のMCPにもばっちり対応
Model Context Protocol標準に従って、他の人が作った便利なツールをStrandsから実行してみましょう。
以下のコードを書いてみます。
from strands import Agent
from strands.tools.mcp import MCPClient
from mcp import stdio_client, StdioServerParameters
# ローカルMCPサーバーを定義
stdio_mcp_client = MCPClient(lambda: stdio_client(
StdioServerParameters(
command="uvx",
args=["awslabs.aws-documentation-mcp-server@latest"]
)
))
# 利用可能なツールを読み込んでエージェントに設定
with stdio_mcp_client:
agent = Agent(
tools=stdio_mcp_client.list_tools_sync()
)
agent("BedrockのClaude 3.7 SonnetのモデルIDは?")
書けたら実行してみましょう。
uv run mcp-agent.py
結果はやってみてのお楽しみ!
もちろん、Streamable HTTPを含むリモートMCPサーバーの利用にもばっちり対応しています。
AIエージェント構築用のSDKは、グラフ構造が独特なLangGraph以外はどれも使用感が似ていますね。
(かくいうLangGraphも、シンプルなFunctional APIをリリースしています)
AWS & Bedrockユーザーとしては、このStrands Agentsも流行ってほしいところです!
おまけ
MCPの入門書を出版することになりました! すでに予約可能です。