# OpenAI (ChatGPT models) で Mattermost の AI ボットを作る

Source: https://langbot.app/docs/ja/recipes/openai/mattermost

LangBot で OpenAI (ChatGPT models) を使った Mattermost の AI ボットを動かす手順：モデル設定、ボットの認証情報、ネットワーク、テスト、トラブルシューティング。

このレシピでは OpenAI (ChatGPT models) のモデルを Mattermost のボットにつなぎます。LangBot が Mattermost のメッセージを受け取り、パイプラインで処理して返信するので、プラットフォーム連携のコードは不要です。

LangBot の内蔵エージェントで OpenAI の GPT モデルを使います。ナレッジベース、MCP ツール、Skills、コードサンドボックスも追加できます。

## 必要なもの

- 稼働中の LangBot：[LangBot Cloud](https://space.langbot.app/cloud)（サーバー不要）、または Docker や `uvx langbot` による[セルフホスト](https://langbot.app/docs/ja/deploy/langbot/docker.md)。
- LangBot から呼び出せる OpenAI (ChatGPT models) のアカウントまたはサーバー。
- Mattermost の **ボットアカウント**（ロール `Member`）とアクセストークン、Mattermost サーバーの URL。

## ネットワーク

LangBot から Mattermost サーバーに到達できれば十分で、Mattermost から LangBot への接続は不要です。

## 1. OpenAI (ChatGPT models) のモデルを追加する

1. OpenAI のコンソールで API キーを作成します。
2. LangBot の **モデル** で LLM モデルを追加し、プロバイダーに OpenAI、リクエスト URL に `https://api.openai.com/v1` を指定して、API キーとモデル ID を入力します。
3. モデルが関数呼び出しに対応していれば **ツール使用** を有効にします。MCP ツール、Skills、サンドボックスに必要です。
4. モデル ID は OpenAI のモデル一覧にある現行のものを使います。OpenAI 互換のエンドポイントも同じ手順で、それぞれのリクエスト URL を指定します。

## 2. パイプラインを作成する

LangBot WebUI の **パイプライン** でパイプラインを作成（または既定のものを編集）し、**AI** を次のように設定します。

| 項目      | 設定値                          |
| ------- | ---------------------------- |
| ランナー    | **Local Agent**（内蔵エージェント）    |
| モデル     | 追加したモデル。予備モデルも指定できます。        |
| プロンプト   | ボットの役割、口調、してはいけないこと。         |
| ナレッジベース | 任意。ナレッジベースを付けると資料に基づいて回答します。 |

## 3. Mattermost のボットを作成する

1. Mattermost でボットアカウントを作成し（DM を使う場合は `post:all`）、一度しか表示されないトークンをコピーします。
2. **Mattermost** アダプターでボットを作成し、サーバーアドレスとトークンを入力してパイプラインを紐付けます。

## 4. 紐付けてテストする

ボットを開いて作成したパイプラインを選び、保存してボットが有効になっていることを確認します。

ボットに DM を送るか、参加しているチャンネルでメンションします。

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

- ネットワークや地域のエラーは、LangBot からリクエスト URL に到達できないことが原因です。制限のある環境では到達可能な互換ゲートウェイを使います。
- 管理者向け機能には対応していないため、ボットのロールは `Member` のままにします。
- パイプラインや AI 側がストリーミングに対応しない場合は、ボットのストリーミングを無効にします。
- WebUI の **モニタリング** に、すべてのメッセージ、パイプラインの実行、エラーが記録されます。

## よくある質問

### Mattermost には公開 IP のあるサーバーが必要ですか？

いいえ。LangBot から Mattermost サーバーに到達できれば十分で、Mattermost から LangBot への接続は不要です。

### Mattermost のボットはストリーミング返信に対応していますか？

はい。ボットでストリーミングを有効にし、AI 側もストリーミングに対応している必要があります。詳しくは[プラットフォーム機能一覧](https://langbot.app/docs/ja/insight/platform-features.md)をご覧ください。

### 同じ OpenAI (ChatGPT models) の設定を他のプラットフォームでも使えますか？

はい。1 つのパイプラインを複数のボットに紐付けられるので、同じ設定で複数のプラットフォームに同時に応答できます。

## 関連ガイド

- [Mattermost の詳しい設定ガイド](https://langbot.app/docs/ja/usage/platforms/mattermost.md)
- [モデルの設定](https://langbot.app/docs/ja/usage/models/readme.md)
- Mattermost で使える他の AI：[Dify](https://langbot.app/docs/ja/recipes/dify/mattermost.md) · [n8n](https://langbot.app/docs/ja/recipes/n8n/mattermost.md) · [Coze](https://langbot.app/docs/ja/recipes/coze/mattermost.md) · [Langflow](https://langbot.app/docs/ja/recipes/langflow/mattermost.md) · [DeepSeek](https://langbot.app/docs/ja/recipes/deepseek/mattermost.md)
- OpenAI (ChatGPT models) を他のプラットフォームで使う：[Telegram](https://langbot.app/docs/ja/recipes/openai/telegram.md) · [Discord](https://langbot.app/docs/ja/recipes/openai/discord.md) · [Slack](https://langbot.app/docs/ja/recipes/openai/slack.md) · [Lark（Feishu）](https://langbot.app/docs/ja/recipes/openai/lark.md) · [DingTalk](https://langbot.app/docs/ja/recipes/openai/dingtalk.md) · [WeCom（社内アプリ）](https://langbot.app/docs/ja/recipes/openai/wecom.md)
