17
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AWSが発表したAIエージェント構築SDK「Strands Agents」を5分だけ触ったあとに、もう5分だけ触ってみた

Posted at

完全に便乗投稿です。

こちらを先にお読みください。

簡単にエージェントが作れます。間違いないです。
追加で、いくつか試してみたのでよければ御覧ください

Bedrockのモデルやリージョンをカスタマイズする

デフォルトでは、オレゴン(us-west-2)リージョンのClaude 3.7 Sonnetが使われるのですが、リージョンやモデルをカスタマイズしたい場合はこんな指定をします。

  • バージニア北部(us-east-1)リージョンのAmazon Nova Premierを使用する場合

    import boto3
    from strands import Agent
    from strands.models import BedrockModel
    
    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)
    agent("Strandsってどういう意味?")
    

Bedrock以外のモデルを使用する

Bedrock以外のモデルを使用する方法も用意されています。

  • Anthropic
  • LiteLLM
  • Ollama
  • Llama API

LiteLLMを使えばかなりたくさんのモデルを使用できますし、Ollamaを使うとローカルモデルが使えます。

例として、LiteLLM経由でOpenAIのo4-miniを使用する場合はこのような手順となります。

  1. ライブラリーをインストールする

    uv add strands-agents[litellm]
    
  2. .envにAPIキーを準備する

    .env
    OPENAI_API_KEY=sk-*****
    
  3. 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に記載のある機能の画面キャプチャです。
もう、ワクワクが止まりません。

image.png

やってみた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?でユーザーの入力待ちになります)

image.png

「Y」で回答すると、後続処理が行われ、ファイルへの出力が行われました。

image.png

やってみた: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ですな。

image.png

17
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?