オープンソース・マルチエージェント・フレームワーク(Strandsチュートリアル)

AIエージェント
この記事は約14分で読めます。

この動画では、AWSのオープンソースマルチエージェントフレームワーク「Strands」を使用して、リアルタイムでニュースサイトから情報を収集し、包括的なビジネスレポートを自動生成するシステムの構築方法を解説している。Strandsはモデル非依存で完全無料のフレームワークであり、複数の専門エージェントが連携して情報収集から分析、レポート作成まで一貫して行う仕組みを実装できる点が特徴である。

Open-Source Multi-Agent Framework (Strands Tutorial)
Get started with Strands Agents Humanities Last Prompt Engineering Guide (free) 👇🏼 ...

オープンソース・マルチエージェント・フレームワークの紹介

今日はな、リアルタイムでニュースサイトから情報を取ってきて、ビジネスレポートをまとめてくれるマルチエージェント研究チームを作っていくで。使うのはAmazon Web ServicesのStrands agentsや。これは完全にオープンソースで無料のエージェントフレームワークで、どんなモデルでも使えるモデル非依存のやつなんや。

好きなモデルを持ってきたらええし、Crew AIやLanggraphみたいな他のエージェントフレームワークとも相性ええで。さらにMCPとメモリも組み込まれてるから、めちゃくちゃ使いやすいわ。今からその方法を見せていくで。

このビデオはAWSがスポンサーしてくれてるから、Strandsの使い方を紹介させてもらえることになったんや。AWSには感謝やで。それじゃあ早速始めようか。

GitHubリポジトリとプロジェクトセットアップ

よっしゃ、これがGitHubリポジトリや。説明欄にリンクを貼っとくから、セットアップ情報とか全部そこで確認できるで。でも一歩一歩丁寧に説明していくからな。

まずはCursorを使って新しいプロジェクトを開いて、Cursorで開いていくで。きれいなフォルダができたな。これで準備完了や。

今度は新しいアプリケーションの骨組みを作っていこうか。まずは新しいファイルを作成するで。こんな感じや。requirements.txtって名前にしよう。ここにPythonの必要なパッケージを全部書いておくんや。strandsとstrands agentも含めてな。

それから環境変数を保存するためのMファイルも作るで。あとはstrands_demo.pyをメインファイルとして作る。まずは基本的なデモから始めて、動くようにしてから、さっき説明したもっと複雑なエージェントシステムの作り方を見せていくで。

基本的なデモの実装

次に、GitHubリポジトリに戻ろう。下にスクロールすると、基本的なプロジェクトをセットアップするための4行のコードを提供してくれてるで。コピーをクリックしよう。

Cursorに戻って、strands demoにペーストするで。ここではStrandsライブラリに組み込まれてる計算機ツールを試してみるんや。でも、どんなMCPサーバーでもプラグインできるし、Pythonで自分でツールを一から書くこともできるで。その方法も後で見せていくからな。

Strandsには実際にたくさんの組み込みツールがあるんや。GitHubリポジトリのgithub.com/strands-agents/toolsを見てみ。メモリ、APIクライアント、ファイル読み込み、ファイル書き込み、その他いろいろある。本当にたくさんの組み込みツールが使えるんや。

4行のコードでこんな感じや。strandsライブラリからagentオブジェクトをインポートしてる。strands toolライブラリから計算機ツールをインポートしてる。計算機ツールを使ってagentオブジェクトをインスタンス化して、agentに割り当ててる。それからエージェントに自然言語のプロンプトを与えてるんや。「1764の平方根は何や?」って。これをresultに割り当てて、コンソールで結果を出力してるだけや。

でもこれを実行したらどうなるやろか?他に何もセットアップしてへんで。どのLLMを使うかをどうやって知るんや?まあ、何が起こるか見てみよう。

認証情報の設定

そらそうやな。エラーが出てるわ。認証情報が見つからへんって。デフォルトでStrandsは当然AWS認証情報を探すんや。でも好きなLLMプロバイダーをプラグインすることもできるで。AWSから認証情報を取得する方法を見せていこう。

console.aws.comに行って、アカウントにログインして、IAMに行く。そこでbedrockの権限を追加するんや。ここではStrandsとbedrockでIAM認証を使ってるんやけど、これは本番環境での推奨アプローチや。でも開発者、特に始めたばかりの人はAPIキーを使うこともできるで。どっちでも動くからな。

ユーザーに行って、使いたいユーザーを選択する。すでにユーザーがあるはずやから(あるべきや)、権限を追加に行く。ポリシーをアタッチして、bedrockポリシーを検索する。その横のチェックボックスにチェックを入れて、次へをクリックする。それから権限を追加や。

ユーザーにbedrock権限が追加されたら、実際のキーを生成できるで。アクセスキーを作成をクリックして、コマンドラインインターフェースを選択する。確認してから次へをクリック。ここに好きな説明を追加できるで。AWS strands demoにしとこう。それからアクセスキーを作成や。

キーは必ず保存しておいてな。Cursorで作ったMファイルに入れておくからな。

よっしゃ、認証情報が手に入ったから、MVファイルに追加してくれ。今度はコードを実際にテストしてみよう。python strandsdemo.pyを実行するで。上の再生ボタンを押してもええで。平方根を計算してくれるはずや。1764の平方根は42やな。これはAWS bedrockへの呼び出しとstrands agentを使って実行されたんや。

異なるモデルの使用方法

これがStrandsの最も基本的な実装や。後でデフォルトモデルとは違うモデルを試したい場合は、AWSコンソールに行って、model accessを検索して、configureまで下にスクロールして、model accessをクリックすると、利用可能なすべてのモデルが見えるで。もちろん、必要なのはモデル名や。

モデルをクリックして、下にスクロールすると、モデルIDがそこにあるで。小さなコピーボタンをクリックすることもできる。

よっしゃ、違うモデルプロバイダーを使いたい場合の方法を見せていこう。ここではstrands.modelsからOpenAI import OpenAIモデルをするで。これはOpenAIを使いたい場合やな。

モデルを読み込んで、OpenAIモデルにする。普通通りにモデルIDを与える。昔ながらのモデルのGPT3.5 Turboにしよう。それからモデルとしてagentに渡すんや。とてもシンプルやで。それから前と同じように実行できる。ほら、OpenAIモデルを使ってるで。

カスタムツールの作成

よっしゃ、今度は2つのカスタムツールを追加しよう。もっと洗練されたプロジェクトに入る前に、とても基本的なやつからや。ツールを作る方法はとてもシンプルや。上に@toolでデコレートする。それから他のPythonメソッドと同じようにメソッドを定義する。最初の行の三重クォートで、基本的にそのメソッドがエージェントのために何をするかを説明するんや。

覚えとってや、ここに書いたことをエージェントが読んで、そのメソッドが実際に何をするかを理解するんやから。数字を足すの場合は、「2つの数字を足す」って書いてる。それから実際に17行目でreturn a plus bで足し算をしてるんや。標準的なコードでやってるで。

今やとエージェントがこのメソッドにアクセスできるようになって、何をすべきかを知ってて、必要な時に使ってくれるようになったで。

実行してみよう。5と3を足してくれるで。ツール1、数字を足す。結果は、ほら、8や。

マルチエージェントワークフローの実装

よっしゃ、今度はもうちょっと複雑にしてみよう。マルチエージェントワークフローを追加するで。ここではいくつかの関数を定義してるで。足し算、掛け算、文字数を数える、単語数を数えるがある。今度は複数のエージェントを作って、それぞれに個別にツールを与えるんや。

数学エージェントとテキストエージェントがある。数学エージェントには足し算と掛け算がある。テキストエージェントには文字数を数えるのと単語数を数えるのがある。数学エージェントには15と25を足すように頼む。それからテキスト文字列を作って、テキストエージェントにそのテキスト文字列の単語数を数えてもらう。それから数学エージェントに戻して、単語数を2倍してもらうんや。

とても基本的やけど、複数のエージェントが協力して働くようになってきたで。何が起こるか見てみよう。ほら、15と25の結果は40や。単語数を数える。「AW strandsは強力や」がテキストや。4つの単語が含まれてる。それから4×2の掛け算で、8や。

StrandがMCPベースのツールをすべてサポートしてるのがええな。ローカルでもリモートでも選択肢があるで。

高度なプロジェクト:ビジネスインテリジェンスレポート

よっしゃ、今度はもっと洗練されたプロジェクトに入ろう。実際にChatGPTを使って、このプロジェクトで使うエージェントチームを考えてもらったんや。プロジェクトは「複数の専門エージェントを調整してStrandsを使って、どんなトピックでもビジネスインテリジェンスレポートを作る」ことや。

ライブニュースの処理を担当するコンテンツエージェントを作る。ソーシャルセンチメントをシミュレートするソーシャルメディアエージェントも作る。今回は実際にソーシャルアカウントをスクレイピングしに行くわけやないけどな。背景インテリジェンス、主要人物、タイムラインをまとめるリサーチエージェント。市場ダイナミクス、競争環境、機会を分析する戦略的専門エージェント。

感情的なトーン、心理的洞察、ステークホルダーのセンチメントを評価するセンチメントエージェント。実装ステップを含む実用的な戦略的アドバイスを作成する推奨エージェント。そして全てを組み合わせて役員に提示できるものにする役員統合エージェント。

前と同じように、Cursorで新しいフォルダ、新しいプロジェクトを作るで。前と同じように、requirements.txtがある。AWS認証情報を入れるMファイルもある。心配せんでええで、これらのファイルは全部下のGitHubリンクで共有するからな。

カスタムツールの詳細実装

最初に見せたいツールは「Get AI headlines」っていうやつや。これは自分らで定義するツールやで。詳しく説明していこう。

上の部分では、前と同じようにAIのためにその関数が何をするかを正確に説明してるんや。ここでは「TechCrunchからAIニュースヘッドラインを取得する引数」がある。実際にこの関数が受け取る引数についても、これもAIの利益のために説明してるんや。それから何を返すかも説明してる。「AIニュースヘッドラインのパイプ区切り文字列」やな。

それから実際のコード、ヘッドラインを取得するものがある。ここでURLを定義してるで。TechCrunchをスクレイピングしに行く。ヘッダーがここにある。動いてることを知らせるためのprint文もある。URLを取得して、ヘッダーを取得して、レスポンスコードをチェックして、エラーハンドリングをして、それからAIに説明した通りのものを返すんや。

各専門エージェントの設定

次に、ソーシャルメディアアナリストエージェントがある。ソーシャルメディアアナリストモデルって名前にするで。まだデフォルトのbedrockモデルを使って、システムプロンプト用にや。「あなたは現実的なオンライン会話分析をシミュレートするソーシャルメディアインテリジェンス専門家です」や。それから動作してほしい方法についてたくさんの情報を与えてる。

これも多分ChatGPTを使って全部作ることができるで。手書きする必要はないからな。返してほしい形式についても説明してる。サンプルツイート、センチメント分析とかな。

リサーチ専門家もある。「あなたはテクノロジー、ビジネス、市場インテリジェンスを専門とするシニアリサーチアナリストです」や。ここでは、マルチエージェント・オーケストレーション用のより簡潔で柔軟かつ強力なagent as toolsパターンを使ってるで。でもStrandはグラフスウォームやワークフローパターンもサポートしてるんや。

それからまた、これらは全部プロンプトやから、エージェントに何をしてほしいかを正確に説明するだけでええんや。基本的に前に説明した様々なエージェント全部に対してこれをやっていく。ツールを与えて、説明を与えて、何をしてほしいかの役割を与える。それで全部がうまく連携して動いてくれるはずや。

ここには戦略的推奨専門家と要約者もある。ユーザー向けの対話機能もちょっと設定してる。スクリプトを起動すると、何について知りたいかを聞いてくる。説明すると、TechCrunchに行って、関連記事を見つけて、その情報を返してくれるんや。見てみよう。

Python C2 interactive agent、エンターを押す。どのモデルを使ってるかが見えて、見たいものを入力できる。「今OpenAIで何が起こってるか?」って。エージェントが考えてる。TechCrunchに行って、取得して、要約してる。全エージェントが協力して働いてて、ほら。様々なエージェントが引っ張ってきた様々な記事の要約がここにあるで。

Strandsで本当に光るのは、カスタムツールを作成できることなんや。文字通りコードで書けるものは何でも、エージェントチームにツールとして追加して提供できるんやで。

エージェントの詳細説明

よっしゃ、これらのエージェントがそれぞれどう動作するかを一行一行説明するつもりはないで。基本的にこのビデオの最初で学んだことの拡張やからな。でもコードは全部提供するで。本当に知っておく必要があるのは、これらのエージェント各々の概要と、最終製品で全部をどうやってまとめる予定かということやな。

前に説明した通り、AWS Strandsはモデル非依存や。好きなモデルをプラグインできるで。ここではBedrockから3つの別々のモデルがある。Nova Pro、Nova Light、Claude Sonnet 4やな。覚えといてほしいのは、コーディングエージェントを使ってClaudeとNovaの間でモデルを動的に選んだということや。でもこれはStrandsに組み込まれた機能やないで。ただカスタムコードで作っただけや。

めちゃくちゃ簡単やで。このデモの目的でこれを作ったんや。かっこええと思ったからな。bedrockでは実際に複数のモデルが利用可能や。面白いアイデアとしては、エージェントが必要やと判断したことに基づいて、技術的にモデルを動的に選択することができるということやな。

こうやって様々なモデルを全部セットアップして、それからエージェント用に一種のデフォルトモデルを用意して、それからモデルの選び方をエージェントに説明できるんや。ここで各モデルの強みを説明してるのが見えるやろ。それからエージェントにそれを読んでもらって、手元のタスクに基づいて、その強みに基づいてどのモデルを選ぶべきかを決めてもらうことができるんや。

メインファイルの統合

よっしゃ、全部まとめよう。これがメインファイルや。全ツールをインポートしてる。見ての通り、環境変数を読み込んでて、ワークフローもある。ここで各エージェントが必要な順番で実行されるのが見えるやろ。そして最後に、専門エージェントが全部をまとめてレポートにしてくれるんや。

ここで使いたいモデルを選んでるで。これはちょっとした追加機能で、する必要はないんや。トピックを入力して、Stargateと現在の米国AI資金調達にしよう。エンターを押そう。覚えといてや、TechCrunchに行って、たくさんのヘッドラインを取得して、全部を要約してくれるんや。

ここでエージェント1、カスタムトピックインテリジェンスプロセッサが見える。それからエージェント2、ソーシャルメディアインテリジェンスアナリスト。覚えといてや、これは全部シミュレートされたソーシャルメディアやからな。

エージェント3、リサーチインテリジェンス専門家、包括的な背景インテリジェンスと市場データをまとめてる。エージェント4、戦略的専門家。エージェント5、センチメントと市場心理学アナリスト。エージェント6、戦略的推奨専門家。そして最終エージェント、全部をまとめる役員インテリジェンスエージェント。

全部まとめると、包括的なレポートができたで。

生成されたレポートの例

よっしゃ、こんな感じになったで。明らかにフォーマットでちょっと手助けが必要やけど、ほら。エグゼクティブサマリー。AI資金調達研究が前年比20%増加で前例のないレベルに達してるとかな。よく調査された2ページのレポートやで。もちろん、もっと詳細に行くこともできるし、正確にニーズに合わせてカスタマイズすることもできるで。

下の説明欄に生成した他のいくつかのレポートを添付しとくわ。本当にかっこいいのは、エージェント間で共有メモリがあって、管理する必要がないことやな。完全に自動で管理してくれる。だから前の会話を必ずしも保存しておく必要はないんや。異なるエージェントとの将来の会話のために共有メモリから読み取ってくれるからな。

エージェント・オーケストレーションの2つのアプローチ

AWS strandsのええところは、エージェント・オーケストレーションへの2つのアプローチが付いてくることや。スウォームとグラフの両方が手に入る。それが何かわからん場合は、説明したるで。グラフはフローチャートみたいに思えばええ。

一連のステップをエージェントのグラフとして設定する。それから各後続エージェントは前のエージェントからの出力に依存するんや。今見せた例みたいなもんやな。全部がとても明確で予測可能な順序で実行される。

スウォームは逆や。並列化みたいに思えばええ。たくさんのエージェントが同時に働いてる。順序は事前に決まってへん。ちょっと混沌としてる。時々冗長やけど、最終的にそれらの出力が組み合わされて、うまくいけばとてもよく見える単一の出力になるんや。

グラフは非常に厳格なパイプラインが必要な場合に使うもんや。スウォームは、エージェントにもっと探索と並列問題解決をやらせたい場合に使いたいもんやな。

かっこいいのは、永遠に一つを選ぶ必要がないことや。正確なユースケースに合わせて行ったり来たりできるんやで。

まとめ

よっしゃ、これで終わりや。Strandsのセットアップ方法についてより良い理解ができたはずや。覚えといてや、これはオープンソースや。モデル非依存や。crew AIやlang chainみたいなものをプラグインできる。完全に柔軟で、完全に無料や。チェックしてみ。下にリンクを貼っとくで。

このビデオをスポンサーしてくれて、strandsについて教えさせてくれたAWSにもう一度感謝やで。

コメント

タイトルとURLをコピーしました