はじめに
Strands Agentsを使って、たった数行のコードで画像解析ができちゃいました!
準備
1. Bedrockのモデルアクセス設定
AWS Bedrockでモデルアクセスをリクエストします。
今回の例ではClaude Sonnet 4を使用しています。
2. 認証情報の設定
使用するモデルにアクセスできるよう、AWSの認証情報を設定します。
詳細は公式ドキュメントをご確認ください。
3. 必要なライブラリのインストール
requirements.txt
strands-agents>=0.1.0
strands-agents-tools>=0.1.0
python -m venv .venv
souece .venv/bin/activate
pip install -r requirements.txt
実装:画像解析AIエージェン
とてもシンプルなコードです。
app.py
import os
import sys
from strands import Agent
from strands_tools import image_reader
# 環境変数AWS_REGIONを設定
os.environ['AWS_REGION'] = 'ap-northeast-1'
SYSTEM_PROMPT = """
すべて日本語で回答してください。
"""
tools = [image_reader]
def explain_image(image_filename):
try:
agent = Agent(
model='apac.anthropic.claude-sonnet-4-20250514-v1:0',
system_prompt=SYSTEM_PROMPT,
tools=tools
)
response = agent(f"画像({image_filename})の内容を説明してください。")
except Exception as e:
print(f"エラーが発生しました: {e}")
if __name__ == '__main__':
explain_image(sys.argv[1])
使い方
python app.py image.jpg
画像ファイルを指定するだけで、AIが画像の内容を詳しく日本語で説明してくれます。
使用例
画像の内容を確認いたします。
Tool #1: image_reader
この画像は、京都の街並みを高い場所から撮影した景色です。以下の特徴が見えます:
主要な特徴:
- 京都タワー:画像右側に白い高いタワーが立っており、特徴的な形状から京都タワーと分かります
- 都市景観:現代的なビルや建物が建ち並ぶ京都市内の風景
- 山々:背景には雪をかぶった山々が連なっており、これは京都を囲む山地と思われます
- 空と雲:青空に白い雲が浮かんでいる、晴れた日の撮影
建物の詳細:
- 手前には「ROHM」の看板が見える現代的なオフィスビル
- 様々な高さの建物が密集している都市部の典型的な風景
- 道路には車やバスが走行している様子も確認できます
この写真は、京都駅周辺から京都市内を一望した風景で、伝統的な古都のイメージとは異なる、現代的な京都の一面を捉えた画像です。
おわりに
これまでは、「ファイルをバイナリで読み込んでBase64に変換して」とか、「ファイルはwith openで扱おう」「pillowで画像を扱う」「OpenCVのサンプルを使うのは簡単だけど学習させるのは難しい」とかいろいろ考えましたが、全て解消されていることに驚き、本ブログにしました。
これまでの常識は、どこにいっちゃうんでしょうね。