概要
このリリースでは、ツールストリーミング機能を実現する非同期ジェネレータツールのサポートが追加されました。また、AWS Bedrock モデルプロバイダにおける複数の互換性問題が修正され、Claude 3 以外のモデルや古いバージョンの boto3 ライブラリとの統合が改善されました。
リリース: v1.7.1
新機能
非同期ジェネレータツールのサポート (#788)
この機能でできること: ツールが async generator として定義できるようになり、処理中に中間結果をストリーミングできます。これにより、長時間実行されるツールからリアルタイムでフィードバックを受け取ることが可能になります。
使用例:
import strands
from strands import Agent
# ストリーミング可能なツールの定義
@strands.tool
async def streaming_search():
"""検索を実行し、進捗状況をストリーミングします"""
yield {"status": "検索を開始しています..."}
yield {"progress": 50, "message": "データベースを検索中..."}
yield {"progress": 100, "message": "検索完了"}
return "検索結果: 3件のドキュメントが見つかりました"
# エージェントの設定
agent = Agent(
model="claude-3-5-sonnet-20241022",
tools=[streaming_search]
)
# イベントのハンドリング
def event_handler(event: dict):
if "tool_stream_event" in event:
tool_use = event["tool_stream_event"]["tool_use"]
data = event["tool_stream_event"]["data"]
print(f"ツールからのストリーム: {data}")
# エージェントの実行
for event in agent.stream("最新のドキュメントを検索してください"):
event_handler(event)
ポイント:
- ツールは
async defで定義し、yieldを使用して中間結果をストリーミングします - 最後の
return値がツールの最終結果として LLM に渡されます tool_stream_eventイベントをリスニングすることで、ストリーミングデータを受け取れます- 通常の非ジェネレータツールは
ToolStreamEventを発行しないため、既存の動作に影響しません
バグ修正
非ジェネレータ関数の ToolStream イベント発行を停止 (#773)
- 非ジェネレータツールが不要な
ToolStreamEventを発行していた問題を修正 - ツールが実際にジェネレータである場合のみストリーミングイベントを発行するように変更
- SDK 内部のツール実装で型付きイベントを直接発行できるように特別な処理を追加
Bedrock の非 Claude 3 モデルで status フィールドを削除 (#686)
- AWS Bedrock で Claude 3 以外のモデル(Writer Palmyra など)を使用した際にエラーが発生していた問題を修正
toolResultブロックのstatusフィールドは Claude 3 モデルでのみサポートされているため、他のモデルでは除外するように変更- Bedrock の公式ドキュメントに準拠した実装に改善
Bedrock レスポンスから SDK_UNKNOWN_MEMBER をフィルタリング (#798)
- 古いバージョンの boto3 を使用している場合に
SDK_UNKNOWN_MEMBERがレスポンスコンテンツに含まれていた問題を修正 - レスポンスの処理時に
SDK_UNKNOWN_MEMBERを自動的にフィルタリングするように改善 - boto3 のバージョンに関わらず一貫した動作を保証
reasoning ブロックへの署名追加条件を修正 (#806)
- すべての reasoning コンテンツに空の署名が追加されていた問題を修正
- 署名を提供しないプロバイダ(openai.gpt-oss-120b-1:0 など)との互換性が向上
- 署名が実際に提供されている場合のみ reasoning ブロックに追加するように変更
まとめ
このリリースは、ツールストリーミング機能という重要な新機能を追加し、AWS Bedrock との統合における複数の互換性問題を解決しました。これにより、より幅広いモデルプロバイダとライブラリバージョンで安定した動作が保証されます。