# デバッグとテスト

チャットエージェント（デジタルヒューマン）の品質は、**テストの徹底度**に大きく依存します。公開前に「期待どおりに動くか」「想定外入力に耐えられるか」「運用時のログ追跡が可能か」を検証するプロセスは不可欠です。

## デバッグ手法

### 1. プレビューデバッグ (Preview / Run)

フローエディタ上の「プレビュー」または「実行」機能を使用し、エンドユーザー視点で会話を通しで確認します。

* **手順**: エディタ画面のプレビューパネルに入力し、実行ボタンを押下。
* **確認点**:
  * 会話の流れが想定通りか
  * 出力形式（テキスト、JSONなど）が正しいか
  * 外部ツール（検索、API連携）が正しく動作しているか

### 2. ステップ実行 (Single Step Debugging)

特定のノード単体での挙動を確認します。大規模なワークフローでエラー箇所を特定する際に有効です。

* **手順**: 対象ノードを選択し、「ステップ実行（Run this node）」機能を使用。必要な入力変数を手動で設定して実行します。
* **使いどころ**:
  * 変数の受け渡しがうまくいかない場合
  * LLMのプロンプト出力結果のみを調整したい場合
  * 条件分岐ロジックの検証

### 3. トレースログの確認 (Logs & Tracing)

「ログとアナリティクス」または実行履歴から、過去の実行データを詳細に追跡します。

* **確認点**:
  * 各ノードのInput/Outputの値
  * トークン消費量と実行時間
  * エラー発生時の正確なエラーメッセージ（APIタイムアウト、権限エラー等）

## テスト項目チェックリスト

### 機能テスト（Functional Testing）

* [ ] **回答精度**: 主要な質問に対して正しい回答が得られるか
* [ ] **指示遵守**: 指定したフォーマット（箇条書き、敬語、文字数制限など）を守っているか
* [ ] **分岐ロジック**: 条件に応じた適切なルート分岐が行われるか
* [ ] **エラーハンドリング**: ツール実行失敗時などに、適切なフォールバック（謝罪や代替案提示）が行われるか

### 非機能・品質テスト

* [ ] **ペルソナ整合性**: キャラクター設定（口調、一人称）が一貫しているか
* [ ] **安全性（ガードレール）**: 不適切な質問や競合他社に関する質問を適切に回避・拒否できるか
* [ ] **応答速度**: 体感速度が許容範囲内か
* [ ] **ナレッジ検索**: 正しい情報が検索されるか
* [ ] **文脈理解**: 前の会話をふまえた回答ができるか \*\*\*\*

## テストシナリオ例

### 正常系

```jsx
入力: 「営業時間を教えて」
期待: 事前に定義された営業時間が正しく返答される

入力: 「在庫確認をして」
期待: ツールが起動し、在庫DBから情報を取得して回答される
```

### 異常系・準正常系

```jsx
入力: 「あなたは誰ですか？」
期待: システムプロンプトで定義されたペルソナ（役割）を回答する

入力: （意味不明な文字列や範囲外の質問）
期待: 「わかりかねます」等の丁寧な断り、または明確化の質問が返される（ハルシネーションを起こさない）
```

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

問題が発生した場合、以下の手順で切り分けを行います。

1. **再現確認**: 同じ入力で現象が再現するか確認します。
2. **ログ分析**: トレースログを確認し、「どのノード」で「どんな入力」が渡され、「どんな出力/エラー」が出たかを特定します。
3. **ステップ検証**: 問題のノードを単体実行し、プロンプトや設定を調整します。
4. **変数確認**: 前段のノードから必要な変数が正しく渡っているか（空文字やnullになっていないか）確認します。

例:

| 問題        | 原因            | 対処             |
| --------- | ------------- | -------------- |
| 回答が長すぎる   | max\_tokens設定 | 簡潔なプロンプトで指示する  |
| 情報が見つからない | ナレッジ検索設定      | TopKを増やす       |
| ペルソナが崩れる  | プロンプト設定       | システムプロンプトを強化する |

## 参考リソース

* **Dify 公式ドキュメント**: <https://docs.dify.ai/>

{% hint style="warning" %}
UIの名称や配置はDifyのバージョンアップにより変更される可能性があります。\
最新情報は公式ドキュメントの「Debug」セクションを参照してください。
{% endhint %}


---

# Agent Instructions: 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:

```
GET https://docs.digitalhumans.jp/dify-guide/chatflow/dify-docs-debug-and-test-chatflow.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
