完全に便乗投稿です。
こちらを先にお読みください。
簡単にエージェントが作れます。間違いないです。
追加で、いくつか試してみたのでよければ御覧ください
Bedrockのモデルやリージョンをカスタマイズする
デフォルトでは、オレゴン(us-west-2)リージョンのClaude 3.7 Sonnetが使われるのですが、リージョンやモデルをカスタマイズしたい場合はこんな指定をします。
Bedrock以外のモデルを使用する
Bedrock以外のモデルを使用する方法も用意されています。
- Anthropic
- LiteLLM
- Ollama
- Llama API
LiteLLMを使えばかなりたくさんのモデルを使用できますし、Ollamaを使うとローカルモデルが使えます。
例として、LiteLLM経由でOpenAIのo4-miniを使用する場合はこのような手順となります。
-
ライブラリーをインストールする
uv add strands-agents[litellm]
-
.env
にAPIキーを準備する -
Pythonのコードを実装する
from dotenv import load_dotenv from strands import Agent from strands.models.litellm import LiteLLMModel load_dotenv() litellm_model = LiteLLMModel(model_id="openai/o4-mini") agent = Agent(model=litellm_model) agent("Strandsってどういう意味?")
ツールが沢山用意されている
エージェントを作る際に必須なエージェントですが、様々なエージェントが用意されています。
ドキュメントでは、「Example Built-in Tools」という表現なので、「あくまでサンプルですよ」という位置づけなのかもしれません。ただ、GitHubのリポジトリでは「サンプルだよ」のノリは感じられないので、「オープンソースなので無保証だけど自由に使ってね」のスタンスなのかもしれません。
GitHubに記載のある機能の画面キャプチャです。
もう、ワクワクが止まりません。
やってみた1:file_write
ツールとhttp_request
を使ってみる。
ツールは別ライブラリーとして用意されているのでインストールします。
uv add strands-agents-tools
コードはこんな感じです。難しくないですね。
import boto3
from strands import Agent
from strands.models import BedrockModel
from strands_tools import file_write, http_request
session = boto3.Session(
region_name="us-east-1",
)
bedrock_model = BedrockModel(
model_id="us.amazon.nova-premier-v1:0", boto_session=session
)
agent = Agent(model=bedrock_model, tools=[file_write, http_request])
agent("http://www.yahoo.co.jpにアクセスして、今日の主要ニュースを「News.md」としてファイルに保存して")
実行します。標準出力に途中経過が出力されます。
動作で特徴的なのが、ファイル書き込みツールを使用するタイミングで、ユーザーに許可を求めます。
(黄色い文字のDo you want to proceed with the file write?
でユーザーの入力待ちになります)
「Y」で回答すると、後続処理が行われ、ファイルへの出力が行われました。
やってみた:use_aws
ツールとcurrent_time
を使ってみる。
最後にAWSツールを使ってみました。
import boto3
from strands import Agent
from strands.models import BedrockModel
from strands_tools import current_time, use_aws
session = boto3.Session(
region_name="us-east-1",
)
bedrock_model = BedrockModel(
model_id="us.amazon.nova-premier-v1:0", boto_session=session
)
agent = Agent(model=bedrock_model, tools=[use_aws, current_time])
agent("今月作成したLambdaの名称を取得して一覧で出力してください。")
出力をお見せするのは恥ずかしいので割愛しますが、ちゃんと動いたことだけお伝えします。
Strands Agentsがあれば、オレオレQ Developer CLIとか作れそうだな。。
おまけ
とか思ったところなんですが、 Strands CLI がすでに提供されていました!
(リポジトリ名と名前が食い違ってるので、ちょっと気持ち悪いですが。)
デフォルト動作でいい場合は以下で起動
uvx --from strands-agents-builder strands
これはもう、、Q Developer CLIですな。
Views: 2