LLM出力の評価基準をAutoevalsで実装してみたので使い方をまとめます。
Autoevalsとは
Autoevalsは、LLMアプリケーションの出力品質を自動評価するOSSライブラリです。
npm install autoevalsAutoevalsには例えば以下のような内蔵スコアラーが用意されています。
スコアラー | 評価内容 |
|---|---|
Faithfulness | 回答がコンテキストに忠実か |
AnswerRelevancy | 回答が質問に関連しているか |
これらは汎用指標ですが、「回答のトーンが適切か」「実践可能な提案か」といったプロダクト固有の基準で評価したい場合があります。LLMClassifierFromTemplate を使うと、独自の評価基準をスコアラーとして定義できます。
LLMClassifierFromTemplate の基本
import { LLMClassifierFromTemplate, makePartial } from "autoevals";
const MyScorer = makePartial(
LLMClassifierFromTemplate({
name: "MyScorer",
promptTemplate: `評価プロンプト...
## 質問
{{input}}
## 回答
{{output}}`,
choiceScores: {
非常に良い: 1.0,
良い: 0.75,
普通: 0.5,
悪い: 0.25,
非常に悪い: 0.0,
},
model: "gpt-4o-mini",
useCoT: true,
temperature: 0,
}),
"MyScorer",
);主要パラメータは以下です。
パラメータ | 役割 |
|---|---|
| 評価プロンプト。 |
| 選択肢とスコアの対応表 |
| 評価用モデル。 |
| Chain of Thought有効化。評価精度が向上 |
| 評価の安定性のため |
makePartial でラップすると、呼び出し時に input と output だけで評価が実行されます。
temperature: 0 を設定すると、同じ入力に対して常に同じ評価結果が返ります。評価の再現性を確保するために推奨します。実践例
Actionability(実践可能性)
回答の実践可能性を測るスコアラーです。
export const Actionability = makePartial(
LLMClassifierFromTemplate({
name: "Actionability",
promptTemplate: `あなたは実務経験豊富な専門家です。回答の実践可能性を評価してください。
## 評価基準
1. 具体的なアクションステップが含まれているか
2. 明日から実行できる内容か
3. 特別なリソースなしで始められるか
## 質問
{{input}}
## 回答
{{output}}`,
choiceScores: {
"非常に実践的: すぐに実行できる": 1.0,
"実践的: 一部補足が必要": 0.75,
"やや抽象的: 具体的アクションが不足": 0.5,
"抽象的: 実践方法が不明確": 0.25,
"実践困難: 実現が難しい": 0.0,
},
model: "gpt-4o-mini",
useCoT: true,
temperature: 0,
}),
"Actionability",
);promptTemplate でペルソナと評価基準の番号付き列挙を行っています。
ToneAppropriateness(トーン適切性)
トーン&マナーの合致度を測るスコアラーです。Actionabilityと同じ構造で、promptTemplate に正例と負例の両方を明示しています。
export const ToneAppropriateness = makePartial(
LLMClassifierFromTemplate({
name: "ToneAppropriateness",
promptTemplate: `あなたはコンテンツ編集者です。
回答のトーンを評価してください。
## 望ましいトーン
- 問いを通じた探求
- 理論と実践の架橋
- 共創的な姿勢
## 避けるべきトーン
- 軍事的メタファー(攻略、制圧など)
- 過度に断定的・権威主義的な表現
## 質問
{{input}}
## 回答
{{output}}`,
choiceScores: {
"非常に適切: 探求的で共創的": 1.0,
"適切: 一部調整の余地あり": 0.75,
"普通: らしさは薄い": 0.5,
"やや不適切: 違和感がある": 0.25,
"不適切: トーンから外れている": 0.0,
},
model: "gpt-4o-mini",
useCoT: true,
temperature: 0,
}),
"ToneAppropriateness",
);カスタム変数の追加
{{input}} {{output}} 以外にも独自のプレースホルダを使えます。promptTemplate に変数を追加し、呼び出し時に渡します。
promptTemplate: `...
## 求められる回答の深さ: {{specificity}}
## 質問
{{input}}
## 回答
{{output}}`,呼び出し時にカスタム変数を渡します。
const result = await Actionability({
input: "心理的安全性を高めるには?",
output: "週次の1on1で部下の話を聴く時間を設けましょう。",
specificity: "L2",
});まとめ
LLMClassifierFromTemplate を使うことで、プロダクト固有の品質基準をLLM評価として実装できました。設計のポイントは choiceScores の境界を明確にすること、promptTemplate でペルソナと評価基準を定義すること、useCoT: true で一貫性を確保することの3点です。
参考
https://github.com/braintrustdata/autoevals
https://www.braintrust.dev/docs/reference/autoevals#custom-evaluation-prompts