Slide 1

Slide 1 text

新規事業 toitta における AI 機能評価の話 id:pokutuna Hatena Engineer Seminar #36 プロダクトを支えるAI編

Slide 2

Slide 2 text

id:pokutuna ● よみ: ぽくつな ● 現在: toitta の AI 周辺担当 ● 2013 新卒入社 ➡ Miiverse ➡ カクヨム ➡ 広告配信・データ基盤 ➡ 新規事業

Slide 3

Slide 3 text

AI 機能の評価 どうしていますか?

Slide 4

Slide 4 text

まえおき ● 品質を高めるには評価が不可欠 ● でも定番のやり方がない (みんな悩みながらやっている) これまでの取り組みを紹介します

Slide 5

Slide 5 text

今日話す内容 ● toitta の紹介 ● なぜ評価が必要か ● AI 機能での評価とふりかえり ● 評価のプラクティス

Slide 6

Slide 6 text

今日話す "評価" 󰢃 モデル学習時の loss 󰢃 ベンチマーク 󰢃 汎用的な指標 👉 AI を利用した機能の評価 の話

Slide 7

Slide 7 text

toitta とは

Slide 8

Slide 8 text

No content

Slide 9

Slide 9 text

AI を活用した発話分析ソリューション ● ユーザーリサーチの支援 ● 書き起こし & 話者分離 ● 切片の抽出・分類 ● 調査に沿ったレポート生成 そのほか様々な リサーチを支援する機能

Slide 10

Slide 10 text

今日話す 3 つの AI 機能 ● 切片分類: 切片をクラスタ化 ● クロスレポート: 情報抽出・構造化 ● ask toitta: 質問への回答・RAG

Slide 11

Slide 11 text

なぜ評価が必要か

Slide 12

Slide 12 text

AI 機能の開発サイクル

Slide 13

Slide 13 text

AI 機能の開発サイクル 「すごい!! いけそうだ!!」

Slide 14

Slide 14 text

AI 機能の開発サイクル 「良くなってるの?」 「どう改善したら...」

Slide 15

Slide 15 text

評価がないと... ● 判断できない ○ 🤔「たぶん良くなった気がする」 ● 改善できない ○ 😕「何が課題か分からない」 ● 維持できない ○ 😨「モデル更新のたびに不安...」

Slide 16

Slide 16 text

toitta の AI機能と評価の歴史

Slide 17

Slide 17 text

1. 切片分類

Slide 18

Slide 18 text

切片

Slide 19

Slide 19 text

切片分類 切片をグループ化・説明を付与

Slide 20

Slide 20 text

切片分類: 定性評価のみ ● 良し悪しはあるが正解がない ● 良い定量指標を定義できなかった ○ Spreadsheet に出力して評価 ○ 修正前後で比較 ○ バージョンを隠して評価することも

Slide 21

Slide 21 text

切片分類: 定性評価のみ

Slide 22

Slide 22 text

切片分類: ふりかえり ⭕ 目視の評価で改善を回せた ○ 明らかな問題は潰せたが... ❌ 人手がかかりスケールしない ○ 評価者の主観に依存・悪化に気づきにくい ❌ 期間が空くと忘れる ○ 特にモデル更新時、前回が半年前なことも

Slide 23

Slide 23 text

2. クロスレポート

Slide 24

Slide 24 text

クロスレポート 縦 に 質 問 横にインタビュー

Slide 25

Slide 25 text

クロスレポート ● インタビューから情報を抽出・構造化 ○ 質問リストを設定 → レポート生成 ● LLM-as-a-Judge を導入 ○ DeepEval をランナーとして利用 ○ 組み込み指標ではなくカスタム指標を定義して評価 ○ 結果の JSON を保存・可視化

Slide 26

Slide 26 text

LLM-as-a-Judge

Slide 27

Slide 27 text

LLM-as-a-Judge

Slide 28

Slide 28 text

カスタム指標の例 ● Contains("内容") ○ 期待する内容が含まれているか ● Guideline("状態") ○ 指示の状態を満たしているか ● Groundedness(["文脈", ...]) ○ 文脈(発話データ)に基づいた回答か ● Length(min, max) ○ 文字数が想定範囲内か (決定的)

Slide 29

Slide 29 text

可視化ツール

Slide 30

Slide 30 text

可視化ツール

Slide 31

Slide 31 text

クロスレポート: 振り返り ⭕ 半自動的な評価ループを構築 ❌ 評価データを作るのが大変 ○ データ・評価どちらともに ❌ 優先度の扱いが難しい ○ Must でも実際には許容できたり ○ 実行ごとに多少結果が変わる

Slide 32

Slide 32 text

3. ask toitta

Slide 33

Slide 33 text

ask toitta 質問を入力

Slide 34

Slide 34 text

インタビューを分析し根拠付きで回答

Slide 35

Slide 35 text

ask toitta ● 蓄積したインタビューへの Q&A RAG ● 品質を高めていくところに課題 ● 多様な入力がありうる ○ 「ユーザーが困っていることは?」 ○ 「A と B でどちらが好まれている?」 ○ 「解約を防ぐアイデアを提案して」

Slide 36

Slide 36 text

評価のアプローチ ● ユーザの入力をカテゴリ分類 ● 評価用インタビューデータを生成 ● Promptfoo を用いて評価

Slide 37

Slide 37 text

アプローチ1: 入力をカテゴリ分類 ユーザーの入力を分類 👉 カテゴリごとに評価 ● 評価を作りやすい ● 範囲を絞って改善 ● 要求・優先度の調整にも ├─ 情報抽出 │ ├─ 話題の抽出 │ ├─ 発言有無 │ └─ 発話者特定 ├─ 整理 │ ├─ 要約 │ ├─ リスト化 │ └─ 時系列 ├─ 分析 │ ├─ 比較 │ ├─ 課題特定 │ ├─ 理由づけ │ └─ ユーザ属性分類 ├─ 提案 └─ メタ    ├─ 一般知識    └─ toitta の使い方

Slide 38

Slide 38 text

アプローチ2: インタビューデータを生成 実データは足りない・扱いづらい 👉 AI で合成データを生成

Slide 39

Slide 39 text

アプローチ3: Promptfoo ● 欲しい評価・機能があった ○ 主に以下で評価 ■ model-graded-closedqa: Y/N で答える ■ llm-rubric: 基準に基づいてスコアを付ける ○ セルフホストで安く運用しつつ共有 ● AI で作業しやすい ○ 評価のたたき台を作らせ調整 ○ 合成データを探索する MCP で正解データを生成

Slide 40

Slide 40 text

ask toitta: ふりかえり ⭕ 入力の分類で改善の道筋ができた ⭕ promptfoo で評価が回しやすく ❌ 想定外の入力に対応していく必要 🏃 正式リリースに向け改善中...

Slide 41

Slide 41 text

評価のプラクティス

Slide 42

Slide 42 text

テストのような評価を書く 🤔 有用性スコアが 70 点以上? 🤔 コサイン類似度が 0.6 以上? ⭕ 「価格が高い」という内容を含む? ⭕ ユーザ A, B, C の発言を引用して回答して る? → 具体的で判断がしやすい評価をする

Slide 43

Slide 43 text

スコアを刻まない 🤔 100点満点で評価 ⭕ Pass or Fail ⭕ 段階分けるなら 3~5 段階 😊「よし、80点でリリースしよう」 🙄「78点の時は何をどうすればいいの?」

Slide 44

Slide 44 text

E2E な評価を優先する

Slide 45

Slide 45 text

評価の評価をする ● 評価がうまく評価できているか ● 人間の評価とのすり合わせ ○ 人間と LLM が同じスコアを付けるか ○ Cohen's kappa で比較 ● 評価プロンプト自体もテストする ○ 簡単: 意図したスコアになるかテスト

Slide 46

Slide 46 text

評価の評価をする 実際に各スコアが出る 入力を用意 & チェック

Slide 47

Slide 47 text

簡単すぎる評価は少なめに ● 評価には時間もコストもかかる ● どうせ解ける評価を作りすぎない ○ 動作確認的なものは必要 ● 難しいところに優先して追加する

Slide 48

Slide 48 text

プラクティスまとめ ● テストのような評価を書く ● スコアを刻まない ● E2E な評価を優先する ● 評価の評価をする ● 簡単すぎる評価は少なめに

Slide 49

Slide 49 text

まとめ

Slide 50

Slide 50 text

まとめ ● toitta の紹介 ○ AI を活用したインタビュー分析サービス ● なぜ評価が必要か ○ 改善の道しるべにするため ● AI 機能での評価とふりかえり ○ 定性評価から LLM-as-a-Judge、評価データの生成へ ● 評価のプラクティス ○ 課題の発見 & 改善に繋がる評価をしよう