
吉波拓夢 『Mastraで学ぶAIエージェント開発』
@yoshi8__
Mastraでエージェントワークフローを作るコツ Mastraでエージェントワークフローを作るコツは、「一連の思考と行動を、ステップ単位で設計する」こと。個々の処理をバラバラに書くのではなく、「目的に向かって、どんな情報を集め、どう解釈し、何を提案するのか」という知的プロセスの流れを構造化する視点が必要。 例えば、「天気予報をもとに現地アクティビティを提案するAIエージェントの構築」であれば、 ❌ 単なる天気取得APIのラッパー ⭕️ 外部データ取得 → AIによる判断 → ユーザーへの提案 このような一連の知的ワークフローをMastra上でどう組み上げるかが肝になります。 ⸻ 天気を“取得する”ではなく、“活かす”ために 例えば、ワークフローの最初のステップ「fetch-weather」では、ユーザーが入力した都市名から位置情報(緯度・経度)を取得し、Open-MeteoのAPIを叩いて天気予報データを取得します。 ここで重要なのは、「人間にとって意味ある形式で天気を扱う」ことです。たとえば単なるコード「63」ではなく、「Moderate rain(適度な雨)」という表現に変換されるよう、マッピング処理が組み込まれています。これは後段のAIによる解釈の精度を高めるための前処理であり、エージェントの思考の土台をつくる工程だと捉えるとよいでしょう。 ⸻ AIによる活動提案=意味を編み出すフェーズ 続いてのステップ「plan-activities」では、MastraのAgentを活用した、LLM(GPT-4)による活動提案が行われます。 エージェントには明確な指示文(プロンプト)が与えられており、天気データを読み解きながら、以下のような形式で日別の活動計画を自動生成します: •🌡️ WEATHER SUMMARY:天気概況(気温・降水確率・天候) •🌅 MORNING / 🌞 AFTERNOON ACTIVITIES:時間帯別の屋外アクティビティ(場所・時間・注意事項付き) •🏠 INDOOR ALTERNATIVES:雨天時などの代替案 •⚠️ SPECIAL CONSIDERATIONS:警報・UV指数などの留意点 注目すべきは、「すべての提案がその場所固有である」こと、そして「天候に応じた柔軟な提案が行われる」点です。雨の多い日は室内活動がメインに。涼しい朝は運動強度の高いアクティビティが優先されるよう、文脈的な判断が組み込まれています。 ⸻ 設計から実行へ:Mastraのワークフロービルド構造 この一連のステップは、MastraのWorkflowクラスにより以下のように定義されます。 const weatherWorkflow = new Workflow({ name: "weather-workflow", triggerSchema: z.object({ city: z.string().describe("The city to get the weather for"), }), }) .step(fetchWeather) .then(planActivities); ここでのポイントは、各ステップが型安全なスキーマでつながっていること。これにより、入力と出力の整合性を維持しつつ、柔軟なフローの拡張が可能になります。たとえば、今後「現地イベント情報を取得して統合する」「旅行者の嗜好に合わせてカスタマイズする」といった機能も、ステップを増やすだけで拡張できる設計になっています。 ⸻ エージェントワークフローの価値=“意味の生成”にある Mastraでワークフローを作るコツは、「データ処理」ではなく「意味生成」を中心に据えることです。データを取得するだけならAPI呼び出しで十分ですが、それに対して「何が適切か」「どんな行動が望ましいか」を判断し、提案するのはエージェントの役目です。 そのため、単にLLMを呼び出すのではなく、どういう文脈でAIを動かすか?どのタイミングで何を与えるか?という「設計力」が問われることになります