# チャット

チャットは、組み込みのLLMと対話し、エージェントに実行してほしい内容を記述する会話です。LLMはリクエストを解釈し、エージェントの指示やスキルを生成し、デプロイ可能な完全なエージェント定義を組み立てます。

チャットには次の2つの目的があります。

- **単発タスク**：最近のデバイスデータを照会したり、インシデントを要約したり、MQTTイベントのセットを分析したりするために、永続的なエージェントを作成せずにLLMに依頼します。
- **エージェント作成**：自動化の目標を記述し、フォローアップメッセージで動作を反復し、結果を長時間稼働するエージェントとしてデプロイします。

## チャットの表示

左メニューの **Chats** をクリックするとチャットページが開きます。リストにはこのデプロイメント内のすべてのチャットが以下の列で表示されます。

| 列 | 説明 |
|---|---|
| **タイトル** | チャットのタイトル。最初のメッセージから自動生成されます。クリックするとチャットが開きます。 |
| **デプロイ済みエージェント** | このチャットからデプロイされたエージェント（あれば） |
| **最終更新日時** | チャットが最後にアクティブだった日時 |
| **操作** | チャットの名前変更または削除 |

![view_chats](./_assets/view_chats.png)

## 新しいチャットの開始

1. 左メニューの **Chats** をクリックします。
2. **+ New Chat** をクリックします。
3. 必要に応じて、このセッションで利用可能にするコネクターを選択します（[コネクターの選択](#select-connectors)参照）。
4. 入力欄にリクエストを入力し、送信します。

入力欄のプレースホルダーには、以下のような開始例が表示されます。

- *EMQX Tablesから最近の電力消費を照会し、ライン3のモーター使用状況を要約する*
- *MQTTトピックからロボットアームのテレメトリの停止を検知し、オンコールチームに通知する*

これらはあくまで例です。ご自身のユースケースを自然な言葉で記述してください。

## コネクターの選択

チャットの開始前または途中で、LLMがアクセスできるコネクターを選択できます。LLMはエージェント定義を生成する際に、例えばMQTTトリガートピックや `mqtt.publish` アクションの対象を設定するために選択されたコネクターを使用します。

コネクターを選択するには：

1. 入力欄の左下にあるコネクターアイコンをクリックします。**Connectors** パネルが表示され、設定済みのコネクターが一覧で表示されます。
2. このセッションで利用可能にしたいコネクターにチェックを入れます。
3. 新しいコネクターを追加する場合は、パネル右上の **+** をクリックします。チャットを離れずにコネクター追加フォームが開きます。

コネクターが選択されていない場合でも、LLMは一般的な質問には応答できますが、特定のブローカーやTablesインスタンスを参照するエージェント定義は生成できません。

![agents_chat_connector_panel](./_assets/agents_chat_connector_panel.png)

## シンキングモード

入力欄の右下にはシンキングモードのセレクターがあります。2つのモードが利用可能です。

| モード | 説明 |
|---|---|
| **Thinking** | 応答前により多くの推論を行います。複数のツールやスキルを含む複雑なエージェント定義に適しています。 |
| **Instant** | より速く応答しますが推論は少なめです。単純な質問や単発タスクに適しています。 |

送信前にリクエストに合ったモードを選択してください。

## エージェント定義の調整

LLMが応答した後も、会話を続けてエージェントを調整できます。

- トリガートピックの変更、閾値の調整、新しいツールの追加を依頼する。
- 別のスキル実装やより慎重なアラート条件をリクエストする。
- デプロイ前に生成内容の説明を求める。

フォローアップメッセージごとにワークスペース内のエージェント定義が更新されます。LLMは同一チャット内の全メッセージのコンテキストを保持します。

## チャットからエージェントをデプロイする

LLMがエージェント定義を生成すると、チャット下部に **Deploy Agent** ボタンが表示されます。

1. 生成された定義を確認します。フォローアップで質問や変更依頼も可能です。
2. **Deploy Agent** をクリックします。チャット内容から自動生成された **Agent Name** と **Description** が入力されたダイアログが表示されます。
3. 必要に応じて名前や説明を編集し、ダイアログ内の **Deploy Agent** をクリックします。
4. エージェント詳細ページが開きます。エージェントが **Running** 状態になるまで数分かかることがあります。

![agents_deploy_agent](./_assets/agents_deploy_agent.png)

::: tip
チャットからエージェントをデプロイしてもチャットは閉じたりアーカイブされたりしません。後で同じチャットに戻り、エージェントの動作を更新して再デプロイできます。
:::

## チャットから再デプロイする

デプロイ済みエージェントを更新するには、元のチャットに戻り会話を続けます。

1. **Chats** リストから該当チャットを開きます。
2. 変更内容を記述します。
3. LLMが定義を更新したら再度 **Deploy Agent** をクリックします。

再デプロイすると、実行中のエージェントが新しい定義に置き換わります。以前の実行履歴は保持されます。

## チャットの名前を変更する

1. **Chats** リストページの **Actions** 列にある編集アイコンをクリックします。
2. 新しいタイトルを入力して確定します。

## チャットを削除する

1. **Chats** リストページの **Actions** 列にある削除アイコンをクリックします。
2. 削除を確認します。

チャットを削除しても、そのチャットからデプロイされたエージェントには影響しません。エージェントは独立して稼働し続けます。

## 次のステップ

- [エージェントの管理](./agents.md)
- [コネクターの管理](./connectors.md)
