# Act 2: ポッドキャスト制作チームを組もう 🎬 ![lab2](../../../../translated_images/ja/lab2.48444b9d549e7863.webp) ## 物語は深まる Alex(Act 1で登場したあなたのAIアシスタント)は素晴らしいですが、一人のエージェントだけでポッドキャストスタジオ全体を運営することはできません。必要なのは*チーム*です: - 🔍 **リサーチエージェント**:ネット上の新しい情報を探索 - ✍️ **スクリプトエージェント**:リサーチから魅力的な対話を作成 - 👤 **あなた(エディター)**:スクリプトを承認するか、書き直しを依頼 ようこそ、**AIエージェントオーケストレーション**へ — あなた自身のAIチームの監督者になりましょう。アベンジャーズのように、ポッドキャスト制作のために。 ## エージェントオーケストレーションとは?(簡単な説明) レストランを経営していると想像してください。すべて自分でやるわけではないですよね?あなたには: - 🍳 料理をするシェフ - 👨‍🍳 下ごしらえをするスーシェフ - 👩‍🍳 配膳係 エージェントオーケストレーションも同じ考え方で、AIエージェントそれぞれに専門分野があり、あなたはそれらを調整して大きな目標を達成します。どのエージェントも過負荷にならず、作業が早く終わります。 ### バンドの例え 🎸 あなたのAIエージェントはバンドのようなものです: - **リードシンガー**:顧客対応のメインエージェント - **ドラマー**:リズムを刻み、バックグラウンド処理を担当 - **ベースプレイヤー**:全員をサポートし、データを取得 - **あなた(バンドマネージャー)**:全てをコーディネート! 調整なしではただの騒音。オーケストレーションがあれば、美しい音楽。 ### なぜこれが重要か 一人のAIエージェントが何でもやろうとすると燃え尽きます。専門化されたエージェントが協力すれば効率が爆上がり!🚀 **正直な話**:ひとりで調査も執筆も編集も全部やろうとしてませんでしたか?辛かったですよね。オーケストレーションを使えば、各エージェントは得意なことだけ担当し、あなたは最終判断をするだけ。 **実例**:請求処理か技術サポートか、それとも人間にエスカレーションするかを判断するカスタマーサポートボット。それがオーケストレーション! ## エージェントとワークフロー:違いは? こう考えてみてください: ### 🤖 AIエージェント = ジャズミュージシャン - 聴いた内容に基づきその場で決定を下す - ツールを使って即興で解決策を編み出す - LLMの脳で考える - 投げられた課題に適応する ### 🎵 ワークフロー = クラシック音楽を演奏するオーケストラ - スコア(あらかじめ決められた手順)に従う - 実行経路が予測可能 - 複数のエージェントや人間、システムを調整 - レシピのように構造化されている **魔法のポイント**:ワークフローがエージェントを*オーケストレーション*する!エージェントにいつ演奏するか指示するワークフローを作ることで、両方の良さを享受できます。🎭 ## AIチームを調整する3つの方法 ### 1. 🎯 集中管理型(あなたがボス) 一人のメインエージェントがすべての指示を出します。あなたがチームを管理するイメージで、誰が何をいつするかを決めます。 **利点**: - ✅ 明確なリーダーシップ(混乱なし) - ✅ 一貫した意思決定 - ✅ デバッグが簡単 **おすすめ用途**: - カスタマーサービスのルーティング(「これは請求関係?技術サポート?」) - コンテンツ承認ワークフロー(「このスクリプトはOK?」) - ポッドキャスト制作(まさにこれ!) ### 2. 🤝 分散型(エージェントが自律的に調整) エージェント同士が直接コミュニケーションを取り、グループで問題を解決します。グループチャットでみんなが調整している感じ。 **利点**: - ✅ 簡単に規模拡大可能(いつでもエージェント追加OK) - ✅ 単一障害点なし - ✅ 自然な協調動作 **おすすめ用途**: - リサーチチーム(各エージェントが異なる情報源を調査) - ブレインストーミング - 分散問題解決 ### 3. 🔀 ハイブリッド(いいとこ取り) 全体の方針はあなたが決めつつ、エージェントは自分たちで調整可能。CEOがチームを信頼しているイメージ。 **最適**:コントロールと柔軟性が同時に必要な複雑なプロジェクト。 ## Microsoft Agent Framework:オーケストレーションのツールキット 🧰 さあ構築開始!以下のものを使います: ### 基本構成要素 #### 1. 🧱 エグゼキューター(作業者) - **何か**:単一の処理単位—エージェントやカスタムロジック - **すること**:入力を受け取り作業し、出力を生成 - **イメージ**:組み立てラインの作業ステーション #### 2. ➡️ エッジ(接続) - **何か**:エグゼキューター間の経路 - **すること**:メッセージの流れを制御(「AのあとBへ」) - **イメージ**:フローチャートの矢印 #### 3. 🗺️ ワークフロー(マスタープラン) - **何か**:エグゼキューター+エッジの完全なグラフ - **すること**:開始から終了までの全プロセスを定義 - **イメージ**:あなたの制作パイプラインの設計図 ### あなたが気に入るクールな機能 **🛡️ 型安全**:エージェント間のメッセージは型チェックされる。間違ったデータ型でエラー発生はなし。 **🔀 柔軟なルーティング**: - 条件分岐(「承認されたら公開、そうでなければ書き直し」) - 並列処理(複数エージェントが同時に作業) - 動的経路(結果によってワークフローが適応) **🔌 外部連携**: - API接続 - 人間のチェックポイント(公開前にあなたが承認) - リクエスト・レスポンスフロー構築 **💾 チェックポイント**:進捗を保存!クラッシュ時も途中からやり直せる。 **🤝 複数エージェントの協調**: - 順番に実行(A → B → C) - 同時に実行(A + B + C) - エージェント間の引き継ぎ - 協同処理 ## ベストプラクティス(プロのコツ) 🎯 ### 1. モジュール式を守る 各エージェントは一つのことを極めるべき。すべてをやろうとする「スーパーエージェント」はデバッグが地獄に。 ### 2. 障害を想定して計画せよ エージェントは失敗するしネットも切れる。エラー処理やバックアッププランを必ず組み込もう。未来の自分が感謝する。 ### 3. 全部モニターしろ エージェントの動きを常に追跡。DevUI(後述)を使ってワークフローの動作を把握しよう。 ### 4. メッセージサイズを最適化 巨大ファイルをエージェント間で渡すな。高速処理のためにメッセージは軽くシンプルに。 ### 5. 適切なパターンを選べ 管理が必要なら集中型。スケールが必要なら分散型。迷ったらハイブリッド! ## DevUI:あなたのワークフローデバッガ 🔍 ### DevUIとは? DevUIはエージェントやワークフローをテストするための遊び場のようなもの。Webインターフェースで: - 👀 ワークフローの動作をリアルタイムで監視 - 💬 エージェントと直接チャット - 🔍 問題発生時のデバッグ - 📊 トレースやパフォーマンスデータの閲覧 > **重要**:DevUIは開発専用!本番環境では使わないで。ローカルのテスト環境のようなものです。 ### なにがすごいの? - **🖥️ インタラクティブWeb UI**:クリックして入力、コマンドライン不要 - **📁 ドラッグ&ドロップ対応**:ファイルをアップロードして様々な入力テスト可能 - **📂 自動検出**:フォルダを指定するとエージェントを自動で見つける - **📋 セットアップ不要モード**:エージェントをコードで登録、フォルダ構成不要 - **🔌 OpenAI互換**:OpenAI SDKとも連携OK(互換性万歳!) - **👁️ トレース機能内蔵**:エージェントの動きを正確に追跡 ### 入力の仕組み DevUIは入力に賢く対応: - **エージェントテスト?** テキストボックスやファイルアップロードボタンで入力 - **ワークフローテスト?** ワークフローが期待する入力に応じてUIが自動生成 魔法のようですが、単に良いコードです。✨ ## あなたのミッション:ポッドキャストスタジオを作ろう 🎬 ### ミッション 1:DevUIで単一エージェントを作成 📂 [01.AgentDevUI](../../../../WorkshopForAgentic/code/02.Workflow/01.AgentDevUI) **チャレンジ**:フルチーム構築の前に、DevUIでウェブ検索専門の単一エージェントをテストしよう。 **作成内容**:ポッドキャストのトピックをインターネットで調査できるリサーチエージェント。DevUIのWebインターフェース(`http://localhost:8090`)からテスト。 **習得スキル**: - 🚀 DevUIでエージェント起動 - 🔍 リアルタイムにエージェント応答をテスト - 🛠️ カスタムツール(ウェブ検索)の構築 - 📊 トレース有効化とデバッグ - 🖥️ インタラクティブなWeb UI使用 **コード内容**: - `agent.py`:ウェブ検索パワーを持つSearchAgent - OllamaChatClientを使ってQwen接続 - `web_search()` ツール関数実装 - `serve()` で起動、DevUI自動オープン **クリア条件**:エージェントに「AIのトレンドは?」と質問し、ウェブ検索が動くのを確認!🎉 ### ミッション 2:マルチエージェントワークフロー作成 📂 [02.WorkflowDevUI](../../../../WorkshopForAgentic/code/02.Workflow/02.WorkflowDevUI) **チャレンジ**:さあ本番!以下のフルポッドキャスト制作ワークフローを構築: 1. 🔍 **リサーチエージェント** → トピックをリサーチ 2. ✍️ **スクリプトエージェント** → 2人のホストの対話形式スクリプトを書きます(中国語で!) 3. 👤 **レビューワークフロー** → あなたに承認または拒否を求める 4. 🔄 **ループバック** → 拒否されたらあなたのフィードバックに基づき書き直し **習得スキル**: - 🧱 専門エージェントの作成 - 🔗 WorkflowBuilderでエージェントを接続 - 🔀 承認ループ(人間インザループ)実装 - 🚦 条件分岐ルーティング - 🔧 ビジネスロジック用カスタムエグゼキューター構築 **ワークフロー**: ``` SearchAgent → ScriptAgent → ReviewExecutor ↑ ↓ (if rejected) ←───────── ``` **コード内容**: - `search_agent/agent.py`:リサーチ担当 - `generate_script_agent/agent.py`:スクリプト作成担当(中国語で書く!) - `workflow/workflow.py`:オーケストレーションの魔法はここに - `main.py`:DevUIで全起動 **クリア条件**:トピックを入力し、スクリプトをレビュー。一度拒否してループをテストし、最後に承認!🎉 ### ミッション 3:コンソールアプリを作成 📂 [03.Application](../../../../WorkshopForAgentic/code/02.Workflow/03.Application) **チャレンジ**:DevUIのワークフローを使い、カラフルな出力やロードスピナーつきのスッキリしたターミナルアプリを作ろう。本番環境対応! **習得スキル**: - ⚡ プログラムからのワークフロー実行(DevUI不要) - 📡 ストリーミングを使ったイベント駆動設計 - 🎨 美しいターミナルUI作成(色、スピナー、進捗バー) - 💾 完成スクリプトをファイル保存 - 🔄 Pythonのasyncioで非同期ワークフロー処理 **機能**: 1. ポッドキャストのトピックを尋ねる 2. 進捗をリアルタイム表示(「リサーチエージェント動作中…」) 3. 色付きの生成スクリプト表示 4. 承認を尋ねる 5. 承認後、`podcast.txt`に保存 **コード内容**: - `podcast_app.py`:イベント処理付きメインアプリ - `workflow.py`:ミッション2で作ったワークフローを再利用 - イベント処理:`AgentRunUpdateEvent`、`RequestInfoEvent`、`WorkflowOutputEvent` - ANSIカラーでターミナルスタイル **クリア条件**:アプリを動かしてポッドキャストスクリプト作成&保存!リアルなツールが完成。🚀 ## あなたが習得したこと 🏆 Act 2を終えた今、あなたは: - ✅ 複数AIエージェントをボスのようにオーケストレーションできる - ✅ 順序的かつ条件付きロジックを持つワークフローを作れる - ✅ 人間の承認チェックポイントを入れられる - ✅ DevUIでワークフローのテストとデバッグができる - ✅ 本番対応のコンソールアプリを作成できる - ✅ 複雑なシステムのエラー処理を適切に行える - ✅ どんなプロジェクトでも適切なオーケストレーションパターンを選択できる ## 問題が起きたら 🔧 ### 「ワークフローが複雑すぎる!」 **解決策**:小さなサブワークフローに分割しよう。ワークフローは一つの目的をしっかり遂行するべき。必要なら連結して使う。 ### 「何が起きているか追えない!」 **解決策**:ワークフローのチェックポイントで状態保存。DevUIのトレース機能を有効化してすべてのステップを確認。 ### 「一つのエージェントのエラーで全部落ちる!」 **解決策**:エラー境界を設ける。各エージェントは自身の失敗を処理しフォールバック動作を持つべき。 ### 「動作が遅すぎる」 **解決策**:並列実行できるエージェントはないか?順次実行は簡単だが遅い。並列化の機会を探そう! ## 役立つリソース 🔗 - [Workflow Docs](https://learn.microsoft.com/en-us/agent-framework/user-guide/workflows/overview) — 公式Microsoftガイド - [Orchestration Patterns](https://www.ibm.com/think/topics/ai-agent-orchestration) — IBMの解説 - [Agent Framework GitHub](https://github.com/microsoft/agent-framework) — ソースコード閲覧 - [Code Examples](https://github.com/microsoft/agent-framework/tree/main/python/samples) — ここからパターンを盗もう --- **最後の準備はいいですか?** スクリプトができましたね。さあ、それを実際の音声に変えましょう!→ [Act 3: Bring Your Podcast to Life](03.Multi-SpeakerPodcastGenerationWithVibeVoice.md) 🎤 --- **詰まった?混乱した?ワクワクしてる?** ワークショップのチャットで共有しましょう!みんなで一緒に学んでいます。🚀 --- **免責事項**: 本書類はAI翻訳サービス「Co-op Translator」(https://github.com/Azure/co-op-translator) を使用して翻訳されました。正確性の向上に努めておりますが、自動翻訳には誤りや不正確な表現が含まれる場合があります。正式かつ権威ある情報源としては、原文書(原語版)を参照してください。重要な情報については、専門の翻訳者による翻訳を推奨します。本翻訳の使用により生じたいかなる誤解や誤訳についても、当方は一切の責任を負いかねます。