Slide 1

Slide 1 text

© LayerX Inc. AIプロダクトの品質をどう守る? Langfuseによる「評価」とrunnによる「テスト」の実践

Slide 2

Slide 2 text

目次 Agenda ● 自己紹介 ● バクラク勤怠のAI機能の紹介 ● 品質を定義するための3つの軸 ● 継続的な改善のための仕組み

Slide 3

Slide 3 text

© LayerX Inc. 3 経歴 ● 株式会社ヒューマンクレスト (2014/06 〜 2015/12) ● 株式会社メルカリ(2016/01 〜 2023/08) ● 株式会社LayerX(2023/11 〜) 画像を入れてね 自己紹介 matsu

Slide 4

Slide 4 text

バクラク勤怠のAI機能

Slide 5

Slide 5 text

© LayerX Inc. 5 就業規則を基に、AIが有休を⾃動付与するルールの初期設定案を作成してくれる機能 バクラク勤怠のAI機能

Slide 6

Slide 6 text

バクラク勤怠のAI機能

Slide 7

Slide 7 text

© LayerX Inc. 7 有休の付与ルールは、就業規則を元に設定 付与する⽇数やタイミングは各社様々であり、フォーマットもバラバラ バクラク勤怠のAI機能 テキストだったり 表だったり

Slide 8

Slide 8 text

© LayerX Inc. 8 就業規則を解釈し、プロダクトの設定に落とし込むのが難しい 特に有休の付与⽇≒お⾦なので丁寧に設定‧確認が必要 バクラク勤怠のAI機能 就業規則(平均50ページ) ルールの設定項⽬(バクラク勤怠)

Slide 9

Slide 9 text

© LayerX Inc. 9 この処理を3つのステップでAI Agentが実現している バクラク勤怠のAI機能 プロンプトデータセット 説明 extract_sections 就業規則からの有給休暇関連条文抽出 identify_rule_patterns ルールパターンの識別 その他詳細項目 5個 出勤率や付与日数などの判定

Slide 10

Slide 10 text

品質を定義をするための3つの軸

Slide 11

Slide 11 text

© LayerX Inc. 11 ⽣成AI時代の品質保証は「確率」との戦い 品質を定義するための3つの軸

Slide 12

Slide 12 text

© LayerX Inc. 12 品質を定義する3つの軸 品質を定義するための3つの軸

Slide 13

Slide 13 text

© LayerX Inc. 13 Customer Expectation ユーザーの期待値に対する仮説 品質を定義するための3つの軸 ユーザーの期待する品質(精度)を考える上での重要な変数 AIは100%完璧ではないという事実をユーザーと共有し、過度な期待を抱かせないように調整します

Slide 14

Slide 14 text

© LayerX Inc. 14 Accuracy 精度を評価するための基準 品質を定義するための3つの軸 AIの精度を評価するための基準値や計算式を定義する 精度はリリース時の状態で固定されるものではなく、運用のサイクルを通じて成長させ続けるべき品質

Slide 15

Slide 15 text

© LayerX Inc. 15 System Quality システム全体の信頼性を定義 品質を定義するための3つの軸 システム全体の安定稼働と信頼性を担保する「土台」 従来のソフトウェアテスト(機能、パフォーマンス、セキュリティ)に加え、AIの振る舞いを含めた「受け入れ基準(Acceptance Criteria)」 を定義する

Slide 16

Slide 16 text

© LayerX Inc. 16 実際にリリース前に行った精度検証の結果 品質を定義するための3つの軸 各ユースケースパターンを10回実行し、期待する結果になるかで精度検証を行う。 精度が90%を超えることを受け入れ基準としている。

Slide 17

Slide 17 text

© LayerX Inc. 17 UXデザインによる期待値の調整 品質を定義するための3つの軸 ルールの作成はあくまでユーザーが行い、AIによる入力はサジェスト機能とする ‧作成するかどうかを必ず回答  ‧「AIによる推奨設定」と明記  ‧項⽬の編集可

Slide 18

Slide 18 text

© LayerX Inc. 18 品質を定義することで得られたこと 品質を定義するための3つの軸 精度改善以外のアプローチでユーザーの期待する品質に近づけることができた 目指すべきゴールの共通認識をチームで持つことで、事前に改善の仕組みを検討することができた 結果的に安心してリリースすることができた

Slide 19

Slide 19 text

継続的な改善の仕組み

Slide 20

Slide 20 text

© LayerX Inc. 20 AI開発における品質保証の難しさ 継続的な改善の仕組み 課題 AIプロダクトは確率的な要素を含むため、予期せぬ箇所で品質低下を引き起こすリスクが高く、また継続的な精度の改善が必要。 アプローチ 単一のテスト手法ではなく、目的の異なる2つのレイヤーでテストを分離する。 1. integration test: 品質を落とさない「守り」 a. システム全体の整合性と信頼性を担保 2. unit test: 精度の改善を行う「攻め」 a. 個別のプロンプトの精度とエッジケースの克服

Slide 21

Slide 21 text

© LayerX Inc. 21 runn: 品質を維持する「結合テスト」 継続的な改善の仕組み 一般的なソフトウェア開発における「リグレッションテスト」の位置付け AIの精度だけでなくシステム全体が正常に動作するか確認するもの 検証プロセス 1. アプローチ: 実際のAPIエンドポイントへリクエストを送信。 2. 検証内容: レスポンスのステータス、データ構造、を元にスコアリング 3. 目的: モデルの劣化やプロンプトの変更による精度の低下、またはシステム全体のデグレが発生していないことを担保 4. 役割: 開発が進んでも、「壊れていない」ことを担保するガードレールの役割

Slide 22

Slide 22 text

© LayerX Inc. 22 runnとは 継続的な改善の仕組み YAML形式でシナリオを記述し、APIテストを自動化するためのオープンソースのCLIツール ref: https://github.com/k1LoW/runn

Slide 23

Slide 23 text

© LayerX Inc. 23 確率的なAIの挙動を定量的に評価する 継続的な改善の仕組み

Slide 24

Slide 24 text

© LayerX Inc. 24 テストの評価にスコアリングを行うことでシステム全体の動作と精度が正常であることを担保 継続的な改善の仕組み

Slide 25

Slide 25 text

© LayerX Inc. 25 Langfuse: 精度を向上させる「ユニットテスト」 継続的な改善の仕組み 各プロンプトの精度を評価・改善を目的とするユニットテスト 主に本番環境で失敗したケースなどを継続的に改善していく仕組み 検証プロセス 1. アプローチ: プロンプトごとに実行し、出力を定量的に検証 2. 検証内容: プロンプトタイプごとに出力をスコアリング 3. 目的: プロンプトの改善を行った際に精度が向上しているかを担保する 4. 役割: 継続的に精度を向上していくための仕組み

Slide 26

Slide 26 text

© LayerX Inc. 26 Langfuseとは 継続的な改善の仕組み LLMアプリケーションのためのオープンソースな監視・評価プラットフォーム ref: https://langfuse.com/docs

Slide 27

Slide 27 text

© LayerX Inc. 27 Langfuseを用いたユニットテスト 継続的な改善の仕組み Langfuseは「評価用データの管理と監視の基盤」として機能し、実際の評価ロジック(テスト実行)はアプリケーションコード (Go)側に切り出されている 1. リリースサイクルとプロンプト本番適用 の分離(プロンプトの管理) 2. 本番での実行データのトレース 3. テスト用データセットの管理

Slide 28

Slide 28 text

© LayerX Inc. 28 ユーザーフィードバックを元にデータセットをテストに追加 継続的な改善の仕組み

Slide 29

Slide 29 text

© LayerX Inc. 29 テストを追加するまでの流れ 継続的な改善の仕組み 有休付与ルールの自動作成を行ったユーザーに対して、KARTEでアンケートを表示

Slide 30

Slide 30 text

© LayerX Inc. 30 テストを追加するまでの流れ 継続的な改善の仕組み KARTEのフィードバックをもとに、Langfuseでトレースを確認し、原因を分析

Slide 31

Slide 31 text

© LayerX Inc. 31 テストを追加するまでの流れ 継続的な改善の仕組み 分析した実データを元に期待値を修正し、データセットを追加することでテストケースになる

Slide 32

Slide 32 text

© LayerX Inc. 32 プロンプト改善の仕組み 継続的な改善の仕組み

Slide 33

Slide 33 text

© LayerX Inc. 33 Github Actionsによるテストの評価方法 継続的な改善の仕組み 5%以上のスコア低下でテストを失敗させる if (PR Score - Main Score) < -0.05 then FAILED

Slide 34

Slide 34 text

© LayerX Inc. 34 まとめ 継続的な改善の仕組み 項目 runn(結合テスト) Langfuse(ユニットテスト) 主な役割 品質の維持 品質の向上 評価対象 APIによるE2Eの挙動 個別のプロンプト・回答の精度 スコアリング ビジネスロジックに基づく重み付け プロンプトごとにスコアリング方式を持つ テストデータ 精度が高いことが確認済みのパターン 本番で失敗したデータ・新ケース テストの評価 スコア < 90% スコア(PR - main) < 5%

Slide 35

Slide 35 text

© LayerX Inc. 35 Open Door Open Door