# 会話履歴（メモリ）の設定

## 会話履歴とは

会話履歴（メモリ）とは、過去の対話内容をLLM（大規模言語モデル）に送信することで、直近の文脈を考慮した自然な回答を生成させる機能です。

## メモリの効果

メモリを有効にすることで、以下のような対話品質の向上が見込めます。

* **文脈の維持**: 直前の会話で提示された条件、要望、固有名詞などをふまえた回答が可能になります。
* **やり取りの効率化**: ユーザーが同じ情報を繰り返し入力する手間を省けます。
* **自然な対話**: 話題の唐突な転換や、文脈の矛盾を防ぎ、デジタルヒューマンとしての没入感を高めます。

{% hint style="warning" %}
一方で、履歴を含める分だけ**入力トークン数が増加**するため、コストの増加や応答速度（レイテンシ）の遅延につながる点に注意が必要です。
{% endhint %}

| メモリなし         | メモリあり        |
| ------------- | ------------ |
| 各会話が独立        | 直前の会話をふまえた回答 |
| 「それ」「あれ」が理解不可 | 代名詞を適切に解釈    |
| コスト低          | コスト高（トークン増）  |

## 設定方法（LLMノード）

一般的なLLMノードでの設定手順は以下の通りです。

1. **LLMノード**の設定画面を開きます。
2. 「メモリ（Memory）」または「会話履歴」のセクションを見つけます。
3. 機能を\*\*有効化（ON）\*\*にします。
4. 保持するターン数を設定します。画面上の「**メモリウィンドウサイズ**」がこの設定項目です。デジタルヒューマン向けの推奨値は**5〜10**です。

## ターン数の考え方と推奨設定

### ターンの定義

本ガイドラインでは、**1ターン ＝ 「ユーザーの発言 ＋ アシスタントの応答」の1往復**と定義します。 したがって、「メモリ10ターン」の設定は、直近の10往復分（合計約20メッセージ）をコンテキストとしてLLMに渡すことを意味します。

### ターン数の設定

| ターン数     | 特徴    | 用途                |
| -------- | ----- | ----------------- |
| **0**    | メモリなし | 単発Q\&A            |
| **3〜5**  | 短期記憶  | 一般的な対話            |
| **5〜10** | 中期記憶  | デジタルヒューマン（**推奨**） |
| **10以上** | 長期記憶  | 複雑な相談             |

### デジタルヒューマン向け推奨値

* **推奨ターン数: 5 〜 10 ターン**

### 推奨の理由

* **会話品質**: 接客や案内などのシナリオでは、直近の文脈（比較中の商品、ユーザーの制約条件など）を維持するために一定の長さが必要です。
* **パフォーマンス**: これより長くしすぎると、トークン課金が増大し、生成までの待ち時間も長くなる傾向があります。
* **リスク回避**: 短すぎると「さっき言ったこと」を忘れる現象が起き、ユーザー体験を損ないます。

{% hint style="info" %}
最適な値はユースケースによって異なります。まずは「5〜10」で運用を開始し、実際の会話ログとコストを見ながら調整してください。
{% endhint %}

## コスト管理と最適化の指針

### コスト増加の仕組み

履歴が積み重なると、毎回のAPIリクエストに含まれるトークン数が増加します。

{% hint style="info" %}
例：1ターンあたり平均100トークンの場合、10ターンの履歴を含めると

100✕10＝約1,000トークン／回 が追加で消費されます。
{% endhint %}

### コスト最適化のベストプラクティス

1. **適切なターン数の設定**: 必要以上に長く設定せず、業務に必要な範囲（5〜10ターン程度）に留める。
2. **会話変数（Variables）の活用**:
   * **メモリ（短期記憶）**: 直近の会話の流れや言い回しの保持に使用。
   * **会話変数（長期記憶）**: 顧客の名前、確定した予約日時、NG事項などの「確定情報」は、メモリではなく変数として構造化して保持する。
3. **要約機能の検討**: プラットフォームが対応している場合、古い会話を要約して圧縮する機能を利用する。

## まとめ

* まずは**5〜10ターン**を基準に設定する。
* \*\*「直近の流れ（一時的な文脈）はメモリ、重要情報（持続的な情報）は変数」\*\*と使い分ける。
* 運用開始後は、実際の応答速度とトークンコストをモニタリングして微調整を行う。


---

# 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-configure-conversation-memory.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.
