キャンプでコント:LLMオーケストレーションの苦労を解消する strans-agents/sdk-python 入門
皆さん、キャンプに来ています!テントを立てるのも、火を起こすのも、楽しいけれど結構手間がかかりますよね。AIエージェントを作るのも同じなんです。モデルを選んで、プロンプトを書いて、ツールを組み合わせて...「あー、またエラーだ...」となりがち。
そこに颯爽と登場するのが、この「strands-agents/sdk-python」!
これは、まるで「モデル駆動型AIエージェントの組み立てキット」です。複雑な設定を抽象化し、たった数行のPythonコードで、あなたのアイデアをすぐに動くエージェントに変身させてくれるんです。
LLM(大規模言語モデル)を使ったエージェントを自作するとき、最も手間がかかるのが、LLMの選択、プロンプトの管理、外部ツール(検索、計算など)の呼び出しロジック、そしてそれら全てを調整するオーケストレーションです。
役立つ点
strands は、これらの複雑な要素を内部で自動的に処理し、あなたのコーディングの負担を大幅に減らします。あなたは「このエージェントに何をさせたいか」というモデル(設計図)に集中するだけでOK!
新しいAIのアイデアを試したいとき、環境構築や複雑なボイラープレートコードに時間を費やしたくありません。
役立つ点
導入が非常に簡単で、すぐに動く最小限のエージェントが作れます。これにより、アイデア出し→実装→テストのサイクルが超高速になり、市場への投入(Time to Market)を早めることができます。
エージェントの設計(モデル)と、その実行ロジックが分離されているため、プロジェクト間で設計を再利用したり、チームメンバーとのコミュニケーションがしやすくなります。
役立つ点 ただのプロンプトチェーンではなく、明確な構造を持つため、大規模なプロジェクトでも保守性(Maintainability)が高くなります。
導入はPythonのパッケージマネージャ pip を使うだけ。テントのポールを一本立てるくらい簡単です!
# まずはこれ
pip install strands-sdk
内部で利用するLLMサービス(OpenAI, Anthropicなど)のAPIキーが必要です。これを環境変数に設定しておきましょう。
# シェルで設定
export OPENAI_API_KEY="sk-..."
よし!ここからはキャンプでコントをしながら進めますよ!
エンジニアA(私)
「よし、今から『材料の在庫を見て、足りないものを教えてくれるシェフ』エージェントを作るぞ!」
エンジニアB(あなた)
「いいっすね!でも検索とか計算とか、色々繋げるのめんどくさそう...」
strands を使えば、まるで設計図を書くようにエージェントを作れます。
from strands_sdk import Client
from pydantic import BaseModel, Field
# 1. 必要な情報(アウトプットの形式)をPydanticで定義
# これが「モデル駆動型」のキモ!エージェントは必ずこの形式で答えるようになります。
class ShoppingList(BaseModel):
"""不足している材料と、買い足すべき量."""
ingredient: str = Field(description="不足している材料の名前")
quantity: str = Field(description="買い足すべき量(例: 2kg, 3個)")
# 2. クライアントを初期化
client = Client()
# 3. エージェントの「設計図」を記述(プロンプトと出力モデルを設定)
prompt = """
あなたは、キャンプの食材を管理する熟練のシェフです。
現在の在庫情報と、作りたい料理の情報を受け取ります。
不足している材料のみを特定し、買い足すべき量とともに正確に出力してください。
【現在の在庫】
- 肉: 500g
- ジャガイモ: 1個
- 玉ねぎ: 2個
- カレー粉: 1箱
【作りたい料理】
- ビーフカレー(4人前)
- 肉: 1kg
- ジャガイモ: 3個
- 玉ねぎ: 2個
- カレー粉: 1箱
"""
# 4. エージェントを実行!
# 使うLLMモデル(ここではOpenAIのgpt-4o-mini)と、定義した出力モデルを指定するだけ。
# 複雑なロジックはstrandsが全部面倒を見てくれます。
response = client.run(
prompt=prompt,
model="gpt-4o-mini",
output_model=list[ShoppingList] # リスト形式でShoppingListオブジェクトを出力してね、という指示
)
# 5. 結果を出力
print("--- シェフエージェントの結果 ---")
# 結果は定義したPydanticのリストとして返ってくるので、扱いやすい!
for item in response.output:
print(f"**不足!** {item.ingredient}が{item.quantity}足りません!")
# --- 出力例 ---
# **不足!** 肉が500g足りません!
# **不足!** ジャガイモが2個足りません!
「見て!output_model=list[ShoppingList]って書くだけで、複雑なプロンプトエンジニアリングなしに、構造化された完璧なJSON形式のリストが返ってきた!これはAPI開発でバックエンドと連携するときに、すごく便利だぞ!」
「おお!データがカチッとしているから、この結果をそのまま在庫管理システムに渡せますね!しかも、どのLLMを使うか(model="gpt-4o-mini")も、実行時にサッと変えられる。環境構築の手間はどこへやら!」
「strands-agents/sdk-python」は、AIエージェントをただのコードではなく、再利用可能で保守性の高いソフトウェアコンポーネントとして扱えるようにするための、強力なツールです。
AI開発
複雑なLLMオーケストレーションを抽象化し、プロトタイピングを加速。
データ構造
Pydanticモデルによる厳密な出力制御で、下流のシステムとの連携が容易。
さあ、あなたもこのキットを使って、アイデアを形にする時間を増やしましょう!