# コスト管理とトークン最適化

{% hint style="warning" %}
UIや詳細な料金体系はプロバイダごとに頻繁に変更されるため、運用時は必ず公式ドキュメントを確認してください。
{% endhint %}

## 1. コストの仕組み（最新トレンド対応）

### 1.1 課金要素の細分化

従来の「入力/出力」に加え、最新モデルでは以下の要素がコストに影響します。

* **入力トークン（Input）**：ユーザー入力やRAGコンテキスト。
* **キャッシュ済み入力（Cached Input）**：AnthropicやOpenAI、Gemini等で導入。 一度送信した共通コンテキスト（システムプロンプトや長い文書）を再利用する場合、**入力料金が50%〜90%割引**される機能。RAGや長文タスクで極めて重要。
* **出力トークン（Output）**：生成された回答。
* **推論トークン（Reasoning Tokens）**：OpenAI o1/o3シリーズなどで導入。回答生成前の「思考プロセス」として消費されるトークン。**出力トークンとして課金**されるが見えない場合があるため、想定以上のコスト消費に注意が必要。

### 1.2 トークン効率の変化

* 最新のトークナイザ（例：GPT-4oの`o200k_base`）では、日本語のトークン効率が改善傾向（以前より少ないトークン数で表現可能）にあります。
* とはいえ、依然として英語に比べれば割高なため、**実測（ログ）ベースでの管理**が必須である点に変わりはありません。

{% hint style="warning" %}
料金は変動するため、各プロバイダの公式サイトをご確認ください。
{% endhint %}

## 2. コストの確認方法と管理体系

### 2.1 請求体系の変化（プリペイド化）

* **Credit Balance（前払い式）の普及**：OpenAI等は、API利用において「後払い（月次請求）」から「プリペイド（クレジット購入）」へ移行しています。
* **管理ポイント**：
  * 「月次予算（Budget）」の設定に加え、**「オートリチャージ（自動入金）」の設定**が重要です。
  * 残高不足によるサービス停止（APIエラー）を防ぐため、残高アラートのしきい値を適切に設定してください。

### 2.2 Dify / アプリケーション側での確認

* **トークン消費の内訳**：入力、出力に加え、「コンテキストキャッシュがヒットしたかどうか（Cache Hit/Miss）」が確認できる場合は活用します。
* **トレース**：RAG検索ノードやツール実行ノードでの消費量が、全体の何割を占めているかを確認します。

## 3. トークン最適化の方法（最新技術の活用）

### 3.1 プロンプトキャッシュ（Context Caching）の活用

**現在、最もコスト削減効果が高い手法の一つです。**

* **仕組み**：システムプロンプト、数ショットの例、RAGで取得したドキュメントなど、「変わらない部分」をキャッシュします。
* **適用箇所**：
  * 長大なシステムプロンプトを持つエージェント
  * 多くのドキュメントを参照するチャットボット
* **効果**：キャッシュヒット時の入力コストが大幅に削減（例：1/10など）され、応答速度（レイテンシ）も向上します。

### 3.2 モデル選択とルーティング

**(1) モデルの使い分け**

* **推論モデル（o1/o3等）**：複雑な論理的思考が必要な場合のみ使用。コストと時間がかかるため、通常のチャットには不向き。
* **高性能モデル（GPT-4o, Claude 3.5 Sonnet等）**：文脈理解が必要な難易度の高いタスク用。
* **高効率モデル（GPT-4o mini, Claude 3.5 Haiku, Gemini Flash等）**：日常会話、要約、単純な分類タスク用。**基本はこのクラスを使用**し、コストを抑制します。

**(2) AIによるルーティング**

* ユーザーの質問内容を軽量モデル（または分類器）で判定し、難問だけを高性能モデルに送る構成を推奨します。

### 3.3 プロンプトとRAGの最適化

**System Promptの圧縮**

冗長な表現を削るだけでなく、マークダウン記法を活用して構造化し、トークン数を節約します。

**簡潔なプロンプト**

削減前（トークン多）：

```
あなたは親切で丁寧なアシスタントです。
ユーザーからの質問に対して、丁寧に回答してください。
回答はわかりやすく、具体的に行ってください。
```

削減後（トークン少）：

```jsx
丁寧に回答。
```

**不要なコンテキストの削除**

削減ポイント：

* 重複した指示を削除
* 例文は必要最小限に
* 「できれば」「可能な限り」などの曖昧な表現を削除

**RAGの検索精度向上（Re-ranking）**

検索ヒット数（Top K）を多く取った後、**Re-rankモデル**で関連度が高い上位数件のみをLLMに渡すことで、コンテキスト量を絞りつつ回答精度を維持できます。

### 3.4 アノテーション（定型QA）の活用

頻出質問（FAQ）や固定的な案内（営業時間、手続きURLなど）は、LLMを使わず**キーワード一致や類似度検索のみ**で回答を表示させることで、LLMコストをゼロにします。

## 4. 予算管理と運用フロー

### 4.1 コスト予測式（キャッシュ考慮版）

**月間コスト = ( (新規入力 × 単価) + (キャッシュ入力 × 割引単価) + (出力 × 単価) ) × 会話数**

キャッシュ活用時は入力単価が大きく下がるため、これを計算に入れないと過大な見積もりになります。

### 4.2 運用チェックリスト

* [ ] **モデル更新**：より安価で高性能な新モデル（例：mini版の更新）が出ていないか四半期ごとに確認。
* [ ] **キャッシュ設定**：システムプロンプトや固定コンテキストが正しくキャッシュされているか（Cache Hit率）を確認。
* [ ] **推論トークン監視**：o1等の推論モデルを使用している場合、思考トークンが暴走していないか確認。
* [ ] **プリペイド残高**：オートチャージ設定が有効か、クレジットカード期限が切れていないか。

## 5. デジタルヒューマン向け推奨設定

* **デフォルト**：GPT-4o mini / Gemini Flash などの高速・低コストモデル。
* **キャッシュ**：キャラクター設定（ペルソナ）や基本知識をプロンプトキャッシュに載せる。
* **応答制御**：音声合成の待機時間を減らすためにも、回答は短文・箇条書きを強制するプロンプトを含める（出力トークン削減にも寄与）。


---

# 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/operations/dify-docs-cost-management-and-token-optimization.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.
