# 最適化

AIの機能を最大限に活かすには？

**図解要約｜タスクごとに、品質・コスト・時間の優先度を決める**

モデル、推論量、キャッシュ、プロンプトを一律に固定せず、目的と評価条件で選びます。

1. **QUALITY｜検討の深さを優先する** — 複雑な判断では、モデルや推論量を選び、結果の妥当性を確認する
2. **COST｜利用量を管理する** — トークン量とキャッシュの条件を確認し、継続利用できるコストを判断する
3. **DELIVERY｜結果までの時間を抑える** — 日常業務では、必要な品質を保ちながら応答時間と処理量を調整する

## 何を優先するか？

まず、利用シーンに応じて何を優先すべきかを考えましょう。QCDの考え方が役に経ちます。

**検討の深さ（Quality）**

- 良く考え抜かれた「良い」結果を得ること

**コスト(Cost)**

- 利用するトークン数を抑え、運用コストを下げること

**結果を得るまでの時間（Delivery）**

- できるだけ早く結果を得ること

## 実用上必要となる機能

### モデルの切り換え機能

対象のタスクに最適なモデルを選びます。基本的には最新のモデルを使う方が良い結果が得られます。性能とコストにバリエーションを用意されている場合、使用目的に応じて選択します。

**Open AI**
- Sol ... 最高性能・フラッグシップモデル
- Terra ... 性能とコストの均衡を取った日常業務向け
- Luna ... 最も高速で低価格

**Gemini**
- Pro ... 高度な推論力をもったモデル
- Flash ... スピードとコストに優れたモデル

**Claude**
- Opus ... 最も高度な推論と分析能力を持つ最上位モデル
- Sonnet ... 速度と品質のバランスに優れた標準モデル
- Haiku ... 軽量で高速、低コストなモデル

### Reasoning Effortなどのチューニング用パラメータの設定機能

Reasoning Effortとは、AIが回答を生成する際に内部でどれだけ深く思考（推論）するかを設定するパラメータです。多くのLLMで実装されてきています。highなど、深く考えるように指定すると良い結果が得られるようになりますが、結果が出るまでに時間がかかり、コストも高くなります。

### Prompt Cache

対話型のAIなどでは、AIへの問い合わせを実行するたびに、それまでの一連の会話履歴を一緒にAIへ送り、新しい問合せがどのような意図をもって行われたかという背景情報（コンテキスト）を得るようになっています。この一緒に送られる会話履歴も入力トークンの一部として扱われ長くなるほどコストがかかるのですが、Prompt Cacheという仕組みがあると、この背景情報に対する入力トークンに対する処理をキャッシュから得ることで、LLMとして処理量を減らすことができるようになっています。結果として対話型の場合、Prompt Cacheを使った方がコストが安くなります。

なおLLMベンダーによってはPrompt Cacheを使う場合にはキャッシュにヒットしていない場合のコストが少し高く設定されている場合もあり、対話の過去履歴を伴わない、１回限りのやり取りで終わってしまうような使い方の場合には、Prompt Cacheを使わない設定にしたほうが安く済む場合もあります。

### システムプロンプトの調整機能

システムプロンプトとは、ユーザが入力するプロンプトと一緒に予めLLMに与えられるプロンプトで、LLMの処理に大きく影響を与えます。システムプロンプトの調整ができると使用目的に応じた最適化ができるようになります。

### 使用目的に応じて設定値を切り換える仕組み

最適化のパラメータを利用するシチュエーションに応じて切り換えられる仕組みがあれば、使用目的に応じた最適化が実現できるようになります。

### 使用トークンの量を監視する仕組み

実際に使ったときにどの程度のトークンが消費されているかを調べることができるようになっていないと、コストの最適化はできません。

### 最適化をテストできる仕組み

設定変更をテストできなければ、最適化が難しくなります。テスト環境でうまく行った結果を全利用ユーザに適用させる、といったことが容易にできる環境が望ましいと言えます。

## 導入・運用の考え方

1. **AIに行わせるタスク一覧の作成および最適化対象の選択**

   それらのタスクの中で、最適化が重要となるタスクを選び出し、QCDにおいて何を優先するかを決めます。常用性の高いタスクや処理に時間やコストのかかるタスクほど最適化が必要です。
   
2. **トライ・アンド・エラー**
   
   AIの動作は同じ状況下でも同じ結果を返すとは限りません。特にReasoning Effortの値を上げた場合、実行するたびに異なる動作を行う場合が多くなり、再現性が低くなります。最適化を行う場合にはそれを前提に置いて作業を進める必要があり、また一回作業すれば終わりではなく、運用状態を監視して都度調整を行う、ということが必要になります。
   
## 弊社製品で実現できること

### カスタム・タスクを使ったタスク毎のタスクの最適化

カスタム・タスクとは、タスクを実行するためのプロンプトと最適化のためのパラメータ（モデル選択、Reasoning Effort、Prompt Cacheなどの設定）がセットになったもので、名前をつけて保存しておき、メニューからワンタッチで起動できるようになります。

簡単に利用でき、かつタスクごとに最適化されたプロンプトとパラメータで実行することができるため、対象タスクに最適な形態でAIエージェントを動かすことができるようになります。

### 使用トークン量の監視

**AIコンソール機能**

自分が実行しているAIのタスクを集中管理する仕組みで、いつ、どの様なタスクを、どのくらいの時間で実行したかがわかり、かつ使用したトークン数やモデル、設定値などがわかります。

**admintoolによる履歴管理(AI監視ログ)**

全ユーザによるAIタスクに関する履歴を集中管理します。

### テストが容易な仕組み

crossnoteではカスタム・タスクなどを個別のユーザ毎に自由に設定して試すことができる仕組みがあります。テストが完了した後、それをadmintool側で設定し、複数のユーザで共有して実行することができます。

## よくある質問

### crossnoteの使用トークン数はどうやって算出したものですか？

crossnoteでは実行した結果、LLM側から返ってきたデータに含まれている使用トークン数を集計しています。文字列からトークン数を求める場合、どのように単語を区切るかによって結果が変わるため、自前でトークン数を集計をした場合、正確な数にはなりません。そこでcrossnoteではLLMからの実行結果に含まれている使用トークン数を集計して求めるようにしています。

### AIコンソール機能で見える内容とadmintoolによるAI監視ログでの内容は同じものですか？

項目的にはほぼ同様な項目が監視出来ますが、以下のような違いがあります。

1. AIコンソールでは自分が実行した履歴のみが参照できるのに対し、admintoolでは全ユーザの履歴が監視できる
2. AIコンソールではすべてのAIとのメッセージのやり取り履歴を参照できるのに対し、admintoolでは実行したプロンプトのみが参照される

## 関連する課題

- [ESG調査票の回答作成をAIで効率化](/issues/esg-questionnaire/index.md)
- [金融機関向けの商品営業戦略をAIで策定](/issues/fund-sales-strategy/index.md)
- [シラバスを共通観点で点検する](/issues/syllabus-review/index.md)

## 対応製品

- [crossnote](/crossnote/index.md)

## お問い合わせ

対象プロジェクト、添付資料、許可ツール、確認者、コミット手順を決めて評価します。

- [お問い合わせ・資料請求](/contact/)
