Alibaba Model Studio で Agent Orchestration を使ってみた


今回は **複数の自律エージェントを組み合わせて動かす「Agent Orchestrationアプリケーション」** を Alibaba Cloud の Model Studio 上で試してみました。

単独のエージェントでもそれなりに便利ですが、複数のエージェントが同時進行でタスクをこなしてくれると、とにかく効率が上がるんですよね。特に「これは一人のエージェントじゃ厳しいかも……」という複雑な処理にはかなり有効です。

# 主要な利点

- **協力と柔軟性**
    
    情報収集役、データ整理役など、エージェント同士で役割分担をしつつ、必要に応じて協力・情報共有ができます。たとえば、複数人のスケジュールをまとめたいときなどにすごく便利。
    
- **拡張性と堅牢性**
    
    エージェントの数や役割は、状況に合わせていくらでも追加・削除できます。仕事が増えたらエージェントを足せばいいし、余計なものは外せばいい。システムが大きくなっても対応しやすいのがポイントです。
    
- **タスクの分解と並行処理**
    
    面倒な大きいタスクを細かいサブタスクに分けて、それぞれを同時並行で処理できます。これだけでも作業効率が劇的にアップ。
    
- **自動計画**
    
    タスクの実行フローを自動で考えてくれる仕組みも備わっています。スケジュール管理なんかで、「じゃあ次に何をやればいいの？」といった疑問を自動で解決してくれるわけですね。
    
- **完全なエージェント機能**
    
    もちろん単独エージェントが持つ機能も全部使えます。そこに複雑なやりとりを追加するだけ、と考えるとイメージがしやすいと思います。
    

# ワークフローアプリケーションとの違い

Agent Orchestration アプリと聞くと、「ワークフローアプリとの違いって何？」と思う方もいるかもしれません。簡単にまとめると、**ワークフロー**はステップごとの手順や依存関係をがっちり決めて順番に実行するイメージ。一方で、**Agent Orchestration**は独立したエージェントたちが連携しつつ動くので、柔軟に並行作業できるのが大きな違いです。

1. **目的の違い**
    - **エージェントオーケストレーション**: 各エージェントはそれぞれ別々の役割を担いながらも、相互にやりとりしつつタスクをこなします。いわゆる「チームプレイ」を自動化した感じですね。
    - **ワークフロー**: あらかじめ決められた手順を順番に実行するのがメイン。タスク管理やステップ管理に向いています。
2. **構成要素**
    - **エージェントオーケストレーション**: "情報収集者" や "データ整理者"など、役割ごとに独立したエージェントを用意して、それぞれに好きなモデルやプロンプトを設定します。
    - **ワークフロー**: こちらは「開始ノード」「終了ノード」「LLMノード」「APIノード」といった単位でつないでいき、フローチャート的に処理を進めます。
3. **実行の柔軟性**
    - **エージェントオーケストレーション**: 各エージェントが独立して動けるので、並列処理がしやすいですし、新しいエージェントの追加もラク。
    - **ワークフロー**: ステップの順序や依存関係を変えるには全体の流れを見直す必要があるので、微調整にはちょっと手間がかかります。
4. **適用例**
    - **エージェントオーケストレーション**: スケジュール管理で色んな情報源から予定を吸い上げて統合したいときなど。
    - **ワークフロー**: 旅行プランや顧客サービスなど、手順が明確に固まっているシナリオに向いています。

# 例: スケジュール管理アシスタント

具体例として、スケジュール管理アプリを作ってみることを考えます。ユーザーが自然文で書いた予定を、カレンダー形式に整理するイメージです。

## タスクの構造

1. **情報収集者 (Information Collector)**
    - ユーザーが入力した「明日の午前10時にチームミーティングがある」みたいな情報を、一旦構造化データに変換します。
    - サンプル出力例:
        
        ```json
        {
          "date": "明日",
          "time": "午前10時",
          "event": "チームミーティング"
        }
        ```
        
    - プロンプト
        
        ```json
        あなたは、ユーザーのスケジュールを収集する責任を持つインテリジェントアシスタントです。ユーザーは自然言語でスケジュール情報を入力します。あなたの仕事は、これらの入力を解析し、日付、時間、イベントを抽出することです。出力形式は構造化されたJSONオブジェクトである必要があります。
        サンプル入力：
        「明日の午前10時にチームミーティングがあります。」
        サンプル出力：
        {
          "date": "tomorrow",
          "time": "10:00",
          "event": "チームミーティング"
        }
        ユーザーがスケジュールを入力した際には、上記の形式で解析されたデータを返してください。
        
        ```
        
2. **データ整理者 (Data Organizer)**
    - 上記の構造化データを受け取って、カレンダー形式に整形します。
    - サンプル出力例:
        
        ```json
        {
        "user calendar": {
          "2024-08-19": [
            {
              "time": "10:00",
              "event": "チームミーティング"
            }
          ]
        }
        
        ```
    
    - プロンプト例：
        
        ```json
        あなたは、ユーザーのスケジュールを整理する責任を持つインテリジェントアシスタントです。別のエージェントから渡された構造化データを受け取り、このデータをユーザーのカレンダーに追加します。データが日付と時間でソートされていることを確認し、更新されたカレンダーを出力してください。
        
        サンプル入力：{
          "date": "tomorrow",
          "time": "10:00",
          "event": "チームミーティング"
        }
        
        サンプル出力：{
          "user_callender": {
            "2024-08-19": [
                {
                    "time": "10:00",
                    "event": "チームミーティング"
                }
            ]
          }
        }
        
        受け取ったデータをユーザーのカレンダーに追加し、更新された結果を返してください。
        サンプル出力のようにjsonだけを結果として返してください
        ```
        

これらの設計例を元に、アプリケーションを作成していきます。

# アプリケーションの作成

1. **Model Studioにログイン**
    
    Alibaba Cloud のアカウントでログインし、[Model Studio](https://bailian.console.alibabacloud.com/#/app-center) にアクセスします。
    
2. **新しいアプリケーションの作成**
    - 画面左の [My Applications] から [Create Application] をクリック。
    - アプリケーションタイプに [Agent Orchestration] を選びます。
    
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/25772/1bc68666-3a5c-4c13-a042-dcd2bb70529b.png)
    
3. **エージェントグループノードの設定**
    - キャンバスに「Agent Group」をドラッグ＆ドロップ。
    - 「Start」ノードから不要なパラメータは削除（[city]や[date]など、デフォルトのもの）。
    - グループ名や使用するモデルを設定。
        - 例: グループ名は "Schedule Management"、モデルは "Qwen-Plus"。
    
    ![image1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/25772/34a471e6-9916-4d43-bb5c-51d5f17c7874.png)
    
4. **サブエージェントの設定**
    - **情報収集者 (Information Collector)**
        - ユーザーが入力したテキストをパースして構造化データに変換する、という狙いをプロンプトや説明欄に書きます。
        - モデルは同じく Qwen-Plus でOK。
        - Prompt は設計例で記載したものを利用
        
        ![image2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/25772/c4cd9f7d-0c36-48b0-b070-a24b8761314e.png)
        
    - **データ整理者 (Data Organizer)**
        - 情報収集者から受け取ったデータをカレンダー形式にまとめる役割。
        - こちらも Qwen-Plus や他のモデルを利用可能。
        
        ![image3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/25772/22939e66-74ff-4607-bea1-38f4e6c2e0fc.png)
        
5. **ノードの接続とパラメータ設定**
    - エージェントグループ内でノードをつなぎ、入力と出力のパラメータを設定します。
    - つながることで、Agent Group ノードのInputに、System Variables/queryを設定します。
    - Endノードにて、 "/"を入力すると出力するものを選べる画面がモーダルで表示されるので、AgentGroupのresult（結果）を選択します。
        
        ![R7_02_18_15_29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/25772/8f79724b-e9f9-44d0-a400-c09bff70f113.png)
        
6. **アプリケーションのテストと公開**
    - 画面右上の [Test] ボタンで動作を確認。
        - query には 「週次ミーティングを明日の11時から」と伝えます。
        - Execute ボタンで、テストをしてみます
        
        ![R7_02_18_15_32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/25772/30e5331d-b006-4b8b-94ab-3ff31e19b051.png)
        
    - 実行結果
        
        ![image4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/25772/9d11d143-e23d-4fce-b3b4-b4965e7cf7e3.png)
        
    - 実行結果 Markdown
        
        ```json
        {
          "user_callender": {
            "2025-02-19": [
              {
                "time": "10:00",
                "event": "Weekly meeting"
              }
            ]
          }
        }
        ```
        
    - 問題なさそうなら [Publish] ボタンで公開します。
7. **API呼び出しの確認**
    - 公開後、[View API] ボタンをクリックすれば API エンドポイントとサンプルコードが確認できます。
        
        ![image5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/25772/cdfcee14-b0ca-411a-984b-71ddaffd8be7.png)
        
    - curlで確認
        
        ![image6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/25772/af2bc5bb-4f9f-466d-9be8-2e0c5c45cc37.png)
        
        ```json
        {
          "user_callender": {
            "2025-02-19": [
              {
                "time": "11:00",
                "event": "深圳でミーティング"
              }
            ]
          }
        }
        ```
        
    - Official Sharing Method で確認
    複数の設定もしっかりできていますね
        
        ![image7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/25772/2d7f1986-dc29-4142-85b9-8aaae7d1af1b.png)
        

# まとめ

**Agent Orchestrationアプリケーション**は、ちょっと大がかりなタスクを効率よくさばきたいときに非常に役立つ仕組みです。

特に Alibaba Cloud の Model Studio を使うと、ノーコードやローコードでサクッとセットアップできるのが魅力。

「エージェント同士が連携して自動的に動いてくれる環境を作りたい」というケースにハマるなら、試してみる価値は十分あると思います。

## 参考URL
[https://www.alibabacloud.com/help/en/model-studio/user-guide/multi-agent-application](https://www.alibabacloud.com/help/en/model-studio/user-guide/multi-agent-application)