> For the complete documentation index, see [llms.txt](https://docs.maiagent.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.maiagent.ai/tech/maiagent-tech-ja/others/n8n.md).

# n8n 連携

本ドキュメントでは、ワークフロー自動化ツール n8n を使用して MaiAgent の複数の AI アシスタントを連携させる方法について詳しく説明します。n8n を活用することで、ワークフローを簡単に構築し、複数アシスタントの連携を実現できます。

## 前提条件

1. n8n アカウントを登録済みであること
2. 有効な MaiAgent API キーをお持ちであること
3. AI アシスタントの構築が完了し、アシスタント ID を取得済みであること
4. API とワークフローに関する基本的な理解

## 基本概念

MaiAgent API は、AI アシスタントと対話する機能を提供します。本ドキュメントでは、n8n を使用してこれらの処理を自動化し、複数の AI アシスタントを連携させます。

## ワークフローの例

### 例1：シンプルな AI アシスタント連携ワークフローの構築

このワークフローは、ユーザーのチャットメッセージを受信し、2 つの異なる AI アシスタントを順番に経由して処理することで、直列処理のフローを形成します。

### ステップ1：チャットトリガーノードの設定

1. n8n ワークフローに「When chat message received」ノードを新規追加します
2. これがワークフローの起点となり、ユーザーがメッセージを送信したときにトリガーされます

### ステップ2：1 つ目の HTTP リクエストノードの設定

1. 「HTTP Request」ノードを新規追加し、「When chat message received」ノードに接続します
2. 以下のとおり設定します：

   * メソッド：POST
   * URL：`https://api.maiagent.ai/api/v1/chatbots/{id}/completions/`
   * id：アシスタント ID
   * 認証：Headers
   * Headers：`Authorization` ヘッダーを追加し、値を `Api-Key YOUR_API_KEY` とします（実際の API キーに置き換えてください）
   * リクエストのコンテンツタイプ：JSON
   * リクエスト本文：

   ```json
   {
     "conversation": "",
     "message": {
       "content": "{{ $json.chatInput }}",
       "attachments": []
     },
     "is_streaming": false
   }
   ```

### ステップ3：2 つ目の HTTP リクエストノードの設定

1. もう 1 つ「HTTP Request」ノードを新規追加し、1 つ目の HTTP Request ノードに接続します
2. 以下のとおり設定します：

   * メソッド：POST
   * URL：`https://api.maiagent.ai/api/v1/chatbots/{id}/completions/`
   * id：アシスタント ID
   * 認証：Headers
   * Headers：`Authorization` ヘッダーを追加し、値を `Api-Key YOUR_API_KEY` とします
   * リクエストのコンテンツタイプ：JSON
   * リクエスト本文：

   ```json
   {
     "conversation": "",
     "message": {
       "content": {{ JSON.stringify($json.content) }},
       "attachments": []
     },
     "is_streaming": false
   }
   ```

この設定により、1 つ目の AI アシスタントの応答が入力として 2 つ目の AI アシスタントに渡され、直列処理が実現します。

## 連携の活用シナリオ

### シナリオ1：複数の専門家による意見の集約

異なる専門分野のアシスタントがそれぞれの観点を提供し、それらを集約して包括的な回答にまとめます：

1. 法務アシスタントに法的問題を分析させる
2. 技術アシスタントに技術的な実現可能性を分析させる
3. ビジネスアシスタントにビジネスへの影響を分析させる
4. 最後に集約アシスタントが総合的な提言を行う

### シナリオ2：翻訳の改善フロー

1. 初期アシスタントが翻訳を行う
2. 2 次アシスタントが翻訳品質をチェックする
3. 最終アシスタントが表現を推敲・最適化する

### シナリオ3：コンテンツ生成とレビューのワークフロー

1. クリエイティブアシスタントがコンテンツを生成する
2. レビューアシスタントが正確性と適切性をチェックする
3. 編集アシスタントが推敲とフォーマットの最適化を行う

## 応用：マルチターン対話ワークフローの構築

### 例2：対話 ID を使用したマルチターン対話の維持

### ステップ1：対話初期化ノードの作成

1. HTTP Request ノードを新規追加し、初回の対話を行います
2. 設定はこれまでと同様ですが、対話 ID を保存します：

```jsx
// 対話 ID を保存し、後続の処理で使用する
const conversationId = $json.conversationId;
$workflow.vars.conversationId = conversationId;

return {
  json: {
    ...$json,
    savedConversationId: conversationId
  }
};
```

### ステップ2：後続の対話ノードの設定

1. 新しい HTTP Request ノードを追加し、保存済みの対話 ID を使用するように設定します：

   ```json
   {
     "conversation": "{{$workflow.vars.conversationId}}",
     "message": {
       "content": "前の質問に続けて、さらに詳しい情報を提供してください"
     },
     "is_streaming": false
   }
   ```

## トラブルシューティング

よくある問題と解決方法：

1. **API 認証エラー**：API キーの形式が正しいことを確認してください。「Api-Key」プレフィックスを含めることを忘れないでください
2. **リクエストのタイムアウト**：複雑なクエリの場合は、HTTP リクエストノードのタイムアウト時間を延長してください
3. **ストリーミングモードの処理**：`is_streaming: true` を使用すると、応答モードがストリーミングモードに変更されます

## まとめ

n8n を活用することで、MaiAgent の複数の AI アシスタントを簡単に統合・自動化し、強力な AI ワークフローを構築できます。これにより、異なる専門分野のアシスタントが協調して複雑なタスクを完遂できます。シンプルな対話から複雑なマルチアシスタント連携処理まで、n8n は柔軟かつ強力な自動化機能を提供します。

## 付録：完全なワークフロー JSON

以下は例1の完全なワークフロー JSON 設定です。そのまま n8n にインポートできます：

```json
{
  "name": "My workflow",
  "nodes": [
    {
      "parameters": {
        "method": "POST",
        "url": "https://api.maiagent.ai/api/v1/chatbots/{id}/completions/",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "Api-Key YOUR_API_KEY"
            }
          ]
        },
        "sendBody": true,
        "specifyBody": "json",
        "jsonBody": "={\n  \"conversation\": \"\",\n  \"message\": {\n    \"content\": \"{{ $json.chatInput }}\",\n    \"attachments\": []\n  },\n  \"is_streaming\": false\n} ",
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        -240,
        -180
      ],
      "id": "dfc1157d-7569-4caf-8b1d-256aa74515ac",
      "name": "HTTP Request"
    },
    {
      "parameters": {
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.chatTrigger",
      "typeVersion": 1.1,
      "position": [
        -500,
        -180
      ],
      "id": "82748324-6021-4660-98ef-481bdfc73569",
      "name": "When chat message received",
      "webhookId": "5f833c90-a7f9-4c66-8fff-cecc3568cd2a"
    },
    {
      "parameters": {
        "method": "POST",
        "url": "https://api.maiagent.ai/api/v1/chatbots/{id}/completions/",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "Api-Key YOUR_API_KEY"
            }
          ]
        },
        "sendBody": true,
        "specifyBody": "json",
        "jsonBody": "={\n  \"conversation\": \"\",\n  \"message\": {\n    \"content\": {{ JSON.stringify($json.content) }},\n    \"attachments\": []\n  },\n  \"is_streaming\": false\n} ",
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        20,
        -180
      ],
      "id": "f0a80b1f-1bed-491b-bc5e-cddb87ccd2d5",
      "name": "HTTP Request1"
    }
  ],
  "pinData": {},
  "connections": {
    "When chat message received": {
      "main": [
        [
          {
            "node": "HTTP Request",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "HTTP Request": {
      "main": [
        [
          {
            "node": "HTTP Request1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "HTTP Request1": {
      "main": [
        []
      ]
    }
  },
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "c914db70-985a-48d0-a1ca-47c2a0d4f244",
  "meta": {
    "instanceId": "2eb51fcaa84ba34149e7fc138f6cac3b20a0038764b284579d6ceaea90b669f8"
  },
  "id": "pvMcKA5hHmwAKuZT",
  "tags": []
}
```

## インポート結果

***

ご不明な点がございましたら、[MaiAgent 公式 API ドキュメント](https://docs.maiagent.ai/api)または [n8n 公式ドキュメント](https://docs.n8n.io/)をご参照ください。


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.maiagent.ai/tech/maiagent-tech-ja/others/n8n.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
