Airbnb、大規模生成AI評価をエンジニアリングの第一級と位置付け
本文の状態
日本語全文を表示中
詳細モードで約17分の本文を読めます。
同じ出来事の情報源
この情報源を基点に整理
Airbnb AI Engineering
エアビーアンドビーは生成AI製品の信頼性を高めるため、評価を後付けではなく第一級エンジニアリング分野として位置づけ、データに基づく評価基準の策定と自動化パイプライン構築のベストプラクティスを公開した。
AI深層分析を開く2026年8月4日 14:12
AI深層分析
キーポイント
評価の早期計画の重要性
LLM の非決定性や主観的な正解定義を考慮し、プロジェクト初期段階から評価戦略を策定しないと、誤った自信や検出不能な回帰、無駄な努力が発生する。
データに基づく直感構築
フレームワークに依存せず、手動でデータをレビューし、100 例程度の出力を分析してモデルの失敗パターンを分類・カテゴライズすることが評価設計の出発点となる。
AI による AI 評価のリスク
LLM の出力は非決定性であり、人間が判断する必要があるため、AI に AI を評価させる手法も独自の失敗モードを導入し得ることを認識する必要がある。
Airbnb の実践事例
レビューハイライトや AI カスタマーサポートなど多様な製品で LLM を活用しており、各チームが独自基準を持つ一方で共通の基盤とツールを提供している。
評価の3層構造
プログラムによるチェックで明らかな失敗を捕捉し、LLM-as-a-Judge で品質課題を検出し、最終的に人間評価でエッジケースを検証する。
重要な引用
Generative AI breaks a lot of the assumptions that used to hold true for software testing.
When in doubt, look at your data.
This single habit will do more for your product quality than any framework, tool, or methodology in this document.
"Keep your evaluator set small and sharp. 3–5 well-calibrated LLM-as-judge evaluators beat 20–30 noisy ones."
編集コメントを表示
編集コメント
生成 AI の実装において、評価を後回しにしがちな現場に対し、それを「第一級のエンジニアリング分野」と位置づける視点は極めて示唆に富む。特にデータを手動でレビューする習慣の重要性を強調している点は、ツール依存になりがちな開発者にとって重要な戒めとなる。
Source Article
元記事を日本語で読む
本文に関係しない購読案内、埋め込み通知、サイト内プロモーションは除いています。
評価を第一のエンジニアリング分野として扱い、後回しにしないことで、Airbnb チームが信頼できる生成 AI プロダクトを構築する方法
image 緑豊かな丘の斜面に佇むこの見事なモダンなリトリートは、印象的な自然木造建築とテラス付きバルコニー、そして静かな景観を特徴としています。執筆者:ロヒット・ギルメ、ダン・ミラー、ミア・チャオ、リファン・ヤン、クリント・ケリー
はじめに
生成 AI は、これまでソフトウェアテストにおいて通用していた多くの前提を崩します。従来のソフトウェアとは異なり、大規模言語モデル(LLM)の出力は非確定的であり、「正解」も主観的なものになります。判断が求められる場面が多いため、AI 自体を評価するために別の AI を用いる必要が生じ、それ自体が新たな失敗モードをもたらす可能性があります。さらに複雑化するのは、LLM との単一のやり取りにおいて、検索、推論、ツール呼び出し、生成といった複数の工程が連鎖し、それぞれが独立して失敗する可能性がある点です。
Airbnb では、製品全体に LLM を活用した機能を展開しています。最近では、レビューのハイライト機能や AI によるカスタマーサポート、ゲストとホスト向けのスマートコミュニケーション機能などがリリースされています。裏側では、AI を活用してトレンドを把握し、何が有効かを理解することで、次回の製品改善の方向性を導いています。
各製品チームには独自の評価基準やプロセス、ワークフローが存在しますが、それらは共通の基盤と原則の上に成り立っています。インフラチームはツールやベストプラクティスを提供し、ドメイン横断的な知見を統合することで、Airbnb で製品を開発するすべての人が共有できる環境を整えています。
この記事では、これらのベストプラクティスと知見を広範なエンジニアリングコミュニティに共有したいと考えました。ただし、ここで紹介する推奨事項は強制力のあるものではなく、評価(evals)の実施には「万能な正解」は存在しないことをあらかじめご了承ください。
- 基盤
LLM ベースのシステムの評価は困難を伴う作業であり、プロジェクトの初期段階から計画的に進める必要があります。戦略的なアプローチが欠如すると、以下の 3 つの問題が発生しがちです。
過信:汎用的な「有用性」指標の数値が良い結果を示しても実際にリリースしたものの、ユーザーが直面する実際の失敗モードを捉えきれていないケース。
検出されない性能低下:プロンプトの変更によって、測定していなかった特定の次元で微妙に性能が劣化しているケース。
無駄な労力:成果と相関のない指標のために、大規模な評価パイプラインを構築してしまうケース。
プロジェクト全体の工数の相当部分を評価活動に割く覚悟が必要です。これは不要なオーバーヘッドではなく、実際に機能する製品を構築するための不可欠なプロセスです。
1.1 唯一のルール
不安なときは、まずデータを確認しましょう。チームに対して推奨する最初のステップは、データを人手でレビューし、「何が成功とみなされるか」の直感を養うことです。
プロトタイプを作成し、100 例(合成データでも構いません)を実行させてください。その後、出力結果を読み込みます。トレースを追ってモデルのミスを特定し、それらを分類して評価基準(eval)を構築しましょう。
この習慣一つが、本ドキュメントにあるいかなるフレームワークやツール、手法よりも、製品の品質向上に寄与します。
1.2 評価駆動型開発(Eval-driven development: EDD)
この習慣を形式化すると、「評価駆動型開発(EDD)」となります。これは、テスト駆動型開発(TDD)の GenAI 版です。すべての失敗を事前に予測するのではなく、EDD は失敗モードが現れた際にそれらを発見し、記述し、継続的にテストするためのインフラと習慣を整えます。
また、ステークホルダーに対して「何が『良い』状態か」を外化させることを強制するため、製品のロードマップ形成にも影響を与えます。
EDD を支える 5 つの原則は以下の通りです。
- 目標と閾値(gates)を事前に定義する。何を最適化しているのか?リリース前に何が満たされるべきか。これらの答えがすぐに明確でない場合もありますが、データ探索の一環として発見できるでしょう。
- 実際のエラーに基づいて指標を設定する。観察された失敗をもとに、クロスファンクショナルなパートナーと共同で開発してください。真空状態(vacuum)の中で独自に考案してはいけません。
- 評価者セットは小さく鋭く保つ。3〜5 個の適切に調整された LLM-as-judge 評価者が、20〜30 個のノイズの多い評価者よりも優れています。各評価者は、特定の正しさの次元(correctness dimension)一つに焦点を当てるべきです。
意思決定者を指名する
正解の定義についてはチームで議論すべきですが、意見が割れることもあります。最終的に「良いシステム動作」と「悪いシステム動作」を判断する責任者(人間)を決めておきましょう。
継続的な協力体制を作る
プロダクト担当者と定期的に連携し、「X は Y より優れているか?」「この出力の実際の問題点は何か?」といった問いに答えられるようにします。
- 評価手法の3 つの柱
実施するすべての評価は、以下の 3 つの方法のうちいずれか、または組み合わせで実行されます。
レイヤー 1:プログラムによるチェック(高速・低リソース)→ 明らかな失敗を検出
↓
レイヤー 2:LLM を用いた自動判定(ニュアンスを捉える)→ 品質上の問題を検出
↓
レイヤー 3:人間による評価(高リソース)→ エッジケースの検証とスタック全体の調整
2.1 プログラム的・ヒューリスティックな指標
LLM の呼び出しを必要としない、決定論的でコードベースのチェックは最初のフィルタとして機能します。これにより、判定者や人間ラベラーに送る前に明らかな失敗を検出できます。

✅ 推奨:構造化出力(JSON スキーマ)を活用し、厳密な型保証を実現する。
❌ 避ける:データフォーマットにプロンプトの指示のみを依存させる。これでは後続のデータパイプラインが破綻します。
2.2 LLM を用いた自動判定(バーチャル・ジャッジ)
より高性能な LLM を使用し、注意深く設計された評価基準(ルブリック)に基づいて、別の LLM の出力を評価します。これにより、トーン、一貫性、忠実度、関連性といった微妙な品質特性を、人間による評価に必要なリソースのわずかな割合で評価できます。

評価基準の設計は重要です。曖昧さは敵です。「提供された説明が読みやすく、当社の基準を満たしているか」といった曖昧な問いかけは効果的ではありません。人間がその基準を一貫して適用できないのであれば、大規模言語モデル(LLM)がそれを果たすことはなおさら不可能だからです。
以下に、単一の仮想的審査員による評価基準の簡易例を示します。
リストの説明の読みやすさを採点してください。良い説明とは、親しみやすい旅行代理店のような口調で、温かみがありつつもプロフェッショナルであり、シンプルで自然な文法が整ったものです。
- きれいに読めればスコア1
- 以下のいずれかの問題があればスコア0
- トーン:過度に形式的・専門用語多用、あるいはカジュアルすぎ("awesome vibes")、営業口調すぎる("amazing!")、またはロボットのような響き。
- 内部用語:社内用語は絶対に使用しないこと。
- フォーマット:引用符や箇条書き禁止。断片的な表現も不可。すべての説明はピリオドで終わらせること。「!」や「?」は使わない。
- 文法:自然な流れのために冠詞・限定詞・前置詞を適切に使用すること(例:"this home has a pool"、"close to downtown")。列挙する際は、最初の項目にのみ冠詞をつけて後は省略する(例:"a backyard, grill, and kitchen")。繰り返しも、完全な省略も避ける。
- 複雑さ:専門用語ではなく平易な言葉を使うこと("pool" を "aquatic recreation area" としない、「near」を「proximate」としない)。
具体例:
- 「Host mentions a pool and hot tub available near downtown.」→ 1
- 「The listing mentions a pool!」→ 0 (内部用語 "listing" の使用、末尾が「!」)
- 「This domicile encompasses aquatic amenities.」→ 0 (難解な単語、専門用語の多用)
2.2.1 校正:信頼できるバーチャル・ジャッジの作り方
校正されていないバーチャル・ジャッジは、使わない方がマシです。なぜなら、誤った自信を与えてしまうからです。ここでは推奨する校正の手順をいくつか紹介します。
まず、50〜100 例からなる「ゴールデンセット」を作成します。これは良い事例だけでなく、悪い事例も必ず含める必要があります。
次に、このバーチャル・ジャッジにゴールデンセットを実行させます。
合致率を測定しましょう。目標は 80 台後半から 90% の高い数値です。不一致を測る指標としては、コーエンのカッパ係数やクリップンドルフのアルファなどが考えられます。(完全な一致は達成不可能です。人間同士でも意見が分かれるものです。)
不一致の原因を分析し、プロンプトの改善や Few-shot 例の更新を行います。合致率が目標に達するまで、このループを繰り返します。
さらに、失敗モードが進化していくにつれて、定期的に再校正を行う必要があります。
2.3 人間による評価
人間による判断は、真の正解(グラウンド・トゥルース)を確認し、高リスクなドメインで決定を下す際や、自動評価者間の不一致を解決する際のゴールドスタンダードであり続けます。

2.4 評価シナリオと推奨手法
全体的な指針としては、まずは専門家がラベル付けした 20〜100 行から始めます。評価基準が確固たるものとなり、かつ処理量がボトルネックとなっている場合にのみ、大規模な注釈ワーカーへの移行を検討してください。
もし専門家の間でラベル付けに不一致が生じた場合は、その時点で作業を停止してください。自動化を進める前に、人間同士の意見の相違を解決する必要があります。

- エージェントシステムの評価
エージェント型システムでは、多段階の推論、ツール呼び出し、分岐ロジック、中間状態の遷移が発生します。最終出力のみを評価しても不十分です。正解にたどり着いたとしても、その背後には破綻した推論経路や誤ったツールパラメータ、非効率な軌道が隠れている可能性があるからです。
そのため、3 つの層にわたる評価が必要です。

これを達成するには、エージェントが通常、アプリケーションルート配下にトレースやスパンを出力する性質を利用できます。これには、エージェントの種類(または呼び出されたサブエージェント)、入出力情報、使用したツールなどが含まれます。これらのトレースは、観測プラットフォームや永続ストレージに書き出すことができます。
その後、深さ優先探索(DFS)などの木構造走査アルゴリズムを用いてメモリ上でトレースを再構築します。これにより、特定のサブエージェントが適切なタイミングで呼び出されたか、エージェントが正しいツールを使用したかなどを検証できます。また、評価の範囲を特定のエージェントやサブエージェントに限定することも可能です。
- 実践的な手順
ここでは、実際のユースケースを簡略化・架空化した例を用いて、一連のプロセス全体の流れを見ていきましょう。
シナリオ:旅行プラットフォームのサポートポリシーに関する質問に回答する AI アシスタントを開発している。
ステップ 1:探索と発見。プロトタイプに 100 件の入力を試し、出力をすべて目を通します。その結果、以下のような課題が見つかりました。
- ソース文書に含まれていないポリシー詳細を生成した回答が 15 件(忠実性の問題)
- 正解だが冗長な回答が 8 件(簡潔さの問題)
- 正当な質問に対して拒否した回答が 5 件(過剰な拒絶)
- JSON が破損している回答が 3 件(フォーマットの問題)
ステップ 2:評価指標の構築。JSON の妥当性と長さの制限をチェックするプログラムによる検証を追加します。忠実性については、別のプロンプトと異なるモデルを用いた Chain-of-Thought を活用したバーチャル・ジャッジを作成し、簡潔さについても同様のジャッジを用意します。さらに、PM や専門家に 60 件の事例(失敗例を含む)をラベル付けしてもらい、「ゴールデンセット」を構築します。
ステップ 3:較正と反復。忠実性に関するバーチャル・ジャッジの PM との一致率は 78% でした。これは十分ではありません。分析の結果、このジャッジが正確な言い換えを「不忠実」として評価していることが判明しました。そこで評価基準を見直し、Few-shot の例を追加したところ、一致率は 88% に向上しました。検索ステップの改善により、忠実性に関する失敗も大幅に減少しました。
注記:モデルやプロンプトを改良する際は、一度に一つの変数だけを修正するのが最も効果的です。まずはモデルを固定してプロンプトを変え、次にプロンプトを固定してモデルを変え、最後に両方を固定してサービング設定を変えます。各段階でバーチャル・ジャッジの結果が候補の範囲を絞り込みます。その後、上位候補からサンプルを選んでバーチャル・ジャッジ自体を改善できます。評価者と候補は互いに洗練され、最終的に双方が安定します。

ステップ 4:スケーリングとモニタリング
評価を 5,000 例規模に拡大します。本番環境のモニタリング体制を整え、毎日非識別化された生データの 5% をサンプリングしてプログラムチェックとバーチャル・ジャッジを実行し、問題のある出力は人間によるレビュー対象として浮上させます。週次のプロダクトマネージャー(PM)によるレビューでフィードバックループを完結させ、新たな失敗事例が判明すれば新しい評価指標を追加し、システム改善へとつなげます。
※生データはプライバシー保護技術を用いて継続的にサンプリングしています。すべてのデータは人間レビュー前に堅牢な非識別化処理を経験しており、利用目的は安全性と品質保証に厳格に限定されています。これは Airbnb のプライバシー原則に沿ったものです。
教訓
- データを直視せよ。何も作らずとも、まず出力やトレースを読み込むこと。
- 汎用的な指標に頼るな。自プロダクト固有の失敗モードに対応した評価器を構築すること。
- 50〜100 行から始める。素早く失敗し、低コストで反復すること。
- 各次元ごとに 1 つの評価器を。万能な「神のような評価器」は存在しない。
- バーチャル・ジャッジを大規模に信頼する前に、人間との合意率が 80〜90% に達するように調整すること。
- 3 つの手法すべてを活用せよ。プログラムチェック、バーチャル・ジャッジ、人間のレビューを多層防御として組み合わせること。
- ゴールドセットには失敗例も含まれるようにする。それなしでは識別力をテストできない。
- モデルだけでなくシステム全体を評価せよ。検索やツール呼び出しを含むパイプライン全体をテストすること。エージェントの場合は最終回答だけでなく、その軌跡(トラジェクトリ)も評価対象とすること。
- 本番環境でも評価を継続せよ。本番前の指標は一度きりのチェックではない。
評価はチームスポーツです。評価とは、製品がどのような姿で成功するかを形作る行為であり、そこには多くの人々の貢献が必要です。AI で成功するチームは、必ずしも最良のモデルを持つチームではありません。むしろ、優れたコミュニケーションと明確な製品ビジョンを持つチームこそが勝者となります。
もしこのような仕事に興味をお持ちであれば、当社の関連ポジションもぜひご確認ください。
謝辞
本ガイドへの有益なフィードバックと貢献をいただいた Tania Myronivska 氏、Haozhen Ding 氏、Sebastian Wickenburg 氏に感謝いたします。また、ガイダンスと洞察を提供いただいた Jisheng Liang 氏、John Hewson 氏にもお礼申し上げます。さらに、絶え間ないサポートを賜りました Min Yi 氏、Yi Li 氏にも心より感謝します。
Airbnb 在籍中に本記事の執筆をサポートしていただきました Evelyn Xu 氏にも厚く御礼申し上げます。
すべての製品名、ロゴ、ブランドはそれぞれの所有者の財産です。本ウェブサイトにおいて使用されている会社名、製品名、サービス名はいずれも識別目的のみであり、これらを使用することが endorsement(推奨や後援)を意味するものではありません。
image「Eval-driven development: Lessons from evaluating GenAI at scale」は、もともと Medium 上の The Airbnb Tech Blog で公開された記事です。ここでは読者の方々がコメントや反応を通じて議論を続けています。
原文を表示
How Airbnb teams build trustworthy Generative AI products by treating evaluation as a first-class engineering discipline; not an afterthought.
imageNestled into the lush hillside, this stunning modern retreat features striking natural wood architecture, terraced balconies, and a serene landscape.By: Rohit Girme, Dan Miller, Mia Zhao, Lifan Yang, Clint Kelly
Introduction
Generative AI breaks a lot of the assumptions that used to hold true for software testing. Unlike traditional software, LLM outputs are non-deterministic, and “correct” is subjective. Because so much judgment is involved, you often need an AI to evaluate an AI, which introduces its own potential failure modes. Making matters more complicated, a single interaction with an LLM can chain retrieval, reasoning, tool calls, and generation, each of which can fail independently.
At Airbnb, we build LLM-powered features across our product, with recent launches including review highlights, AI customer support, smart communication features for guests and hosts, and more. Behind the scenes, we also use AI to help us spot trends and understand what’s working, guiding where we improve the product next.
Each product team may have its own evaluation criteria, process, workflows, etc. However, these are built on top of some common foundations and principles. An infrastructure team provides tooling and best practices, incorporating learnings across domains so that they are shared with everyone building products at Airbnb.
In this article, we wanted to share some of these best practices and learnings with the broader engineering community. Please note that the recommendations here are not intended to be prescriptive; there is no one-size-fits all approach when it comes to running evals.
- Foundation
Evaluating LLM-based systems is challenging work, and this should be planned for at the outset. Without a deliberate strategy, three things tend to happen:
False confidence: A generic “helpfulness” metric scores well, you ship, but it didn’t capture the failure mode people actually hit.
Undetected regressions: A prompt change subtly degrades a dimension you weren’t measuring.
Wasted effort: You build a scaled eval pipeline for metrics that don’t correlate with outcomes.
Expect to spend a meaningful share of your total project effort on evaluation. This is not unnecessary overhead, it’s how you build products that actually work.
1.1 The one rule
When in doubt, look at your data. Manually reviewing your data and building an intuition for what counts as success is always the starting point we recommend to teams. Build your prototype, and run it through 100 examples (synthetic is fine). Then read the outputs. Read the traces and find the model’s mistakes. Categorize them and build an eval.
This single habit will do more for your product quality than any framework, tool, or methodology in this document.
1.2 Eval-driven development
Formalized, that habit becomes eval-driven development (EDD), the GenAI analogue of test-driven development. Rather than predicting every failure upfront, EDD builds the infrastructure and habits to discover, encode, and continuously test for failure modes as they appear. It also forces stakeholders to externalize what “good” means, which shapes the product roadmap.
Five principles anchor EDD:
Define goals and gates upfront. What are you optimizing for? What must be true before you ship? These answers may not be clear right away; you might discover them as part of your data exploration.
Let real errors guide your metrics. Co-develop them with cross-functional partners based on observed failures. Don’t invent them in a vacuum.
Keep your evaluator set small and sharp. 3–5 well-calibrated LLM-as-judge evaluators beat 20–30 noisy ones. Each should target one specific correctness dimension.
Appoint a decision-maker. While what constitutes correctness should be a team discussion, people will sometimes disagree. Include a final (human) decision-maker who makes the ultimate call on what constitutes good vs. bad system behavior.
Collaborate continuously. Have your product partner regularly answer: “Is X better or worse than Y?” and “What’s actually wrong with this output?”
- The three evaluation methods
Every evaluation you run will use one or a combination of these three methods.
Layer 1: Programmatic checks (fast, low resource — catches obvious failures)
↓
Layer 2: LLM-as-a-Judge (nuanced - catches quality issues)
↓
Layer 3: Human evaluation (high resource - validates edge cases,
calibrates the stack)2.1 Programmatic & heuristic metrics
Deterministic, code-based checks that don’t require an LLM call should be your first filter, catching obvious failures before you send anything to a judge or human labeler.
image✅ Do: Use structured outputs (JSON schemas) to ensure strict typing.
❌ Don’t: Rely on prompt instructions alone to format data. This breaks downstream data pipelines.
2.2 LLM-as-judge (Virtual judges)
Use a stronger LLM to evaluate another LLM’s output against a carefully designed rubric. This is how you assess nuanced qualities e.g. tone, coherence, faithfulness, relevance, at a fraction of the resources needed for human evaluation.
imageRubric design matters. Ambiguity is the enemy. Something like “Is the provided explanation readable and up to our standards?” isn’t likely to be effective — if a human can’t apply the rubric consistently, an LLM certainly can’t.
Here is a simplified example of a single virtual judge’s rubric:
Score the readability of listing explanations. A good explanation sounds
like a friendly travel agent: warm but professional,
simple, natural, grammatically complete.
Score 1 if it reads cleanly.
Score 0 if it has ANY of these problems:
- Tone: too formal/jargony, too casual
("awesome vibes"), too salesy ("amazing!"), or robotic.
- Internal terms: never use internal terminology.
- Formatting: no quotation marks, no bullets, no fragments. End every
explanation with a period - never "!" or "?".
- Grammar: use articles/determiners/prepositions for natural flow
("this home has a pool", "close to downtown"). In a series, use the
article once then drop it: "a backyard, grill, and kitchen" - not
repeated, not omitted entirely.
- Complexity: plain words over jargon ("pool" not "aquatic recreation
area"; "near" not "proximate").
Examples:
- "Host mentions a pool and hot tub available near downtown." → 1
- "The listing mentions a pool!" → 0 (internal term "listing"; ends in "!")
- "This domicile encompasses aquatic amenities." → 0 (complex words; jargon)
Return ONLY:
{
"reason": "<list of [error_type, explanation] tuples as a string, or []>",
"score": <1 or 0>
}2.2.1 Calibration: Making your virtual judge trustworthy
A virtual judge that hasn’t been calibrated is worse than no judge at all, because it gives you false confidence. Here are the calibration steps we recommend:
Create a golden dataset of 50–100 examples. This MUST include bad examples (not just good ones).
Run your virtual judge against the golden set.
Measure agreement. Target percentages in the high 80s-90s. Possible options to measure disagreement are Cohen’s kappa or Krippendorff’s alpha. (Perfect agreement isn’t achievable — even humans disagree.)
Analyze disagreements. Refine the prompt and update your few-shot examples. Then re-run the loop until you hit the target agreement.
Recalibrate periodically as failure modes evolve.
2.3 Human evaluation
Human judgment remains the gold standard for ground truth, high-stakes domains, and resolving disagreements between automated evaluators.
image2.4 Evaluation scenarios and recommended methods
Overall, the rule of thumb is to start with 20–100 rows labeled by subject-matter experts. Move to a scaled annotation workforce only when the rubric is rock-solid and volume is the bottleneck.
And if your experts disagree on a label, stop. Solve human disagreement before automating anything.
image3. Evaluating agentic systems
Agentic systems involve multi-step reasoning, tool calling, branching logic and intermediate state transitions. Evaluating only the final output is insufficient: a correct final answer can mask a broken reasoning path, wrong tool parameters, or an inefficient trajectory.
Therefore, you will need to evaluate across three layers:
imageTo achieve this, you can take advantage of the fact that an agent generally pushes traces and spans under an application root. This contains information about the type of agent, the sub agent if invoked, input/output of the agent, tools invoked if any, and more. These traces can be written out to an observability platform or persistent storage.
Then, you can use DFS or another type of tree traversal to reconstruct the trace in memory. This lets you ensure certain subagents were invoked at the right time, the agent called the right tools, etc. And you can scope your evaluation to specific agents/subagents.
- A practical walkthrough
Here’s what the full process looks like end-to-end, using a fictionalized and simplified version of a real use case.
Scenario: You’re building an AI assistant that answers questions about a travel platform’s support policies.
Step 1: Explore & discover. Run 100 inputs through your prototype and read every output. You find:15 responses generated policy details not in the source documents (faithfulness issue); 8 correct but too verbose (conciseness); 5 refused valid questions (over-refusal); 3 had broken JSON (format).
Step 2: Build evals. Add programmatic checks for JSON validity and length bounds. Write a virtual judge for faithfulness (separate prompt, different model, chain-of-thought) and another for conciseness. Have your PM or subject matter expert label 60 examples, including failures, as a golden set.
Step 3: Calibrate & iterate. Your faithfulness virtual judge agrees with the PM 78% of the time. Not good enough. Analysis reveals the judge is penalizing accurate paraphrases as “unfaithful.” Update the rubric and add few-shot examples. Agreement jumps to 88%. Improve the retrieval step; faithfulness failures drop significantly.
NOTE: Here, we find that when iterating on models and prompts, it’s best to fix one variable at a time. First fix the model and vary the prompt, then fix the prompt and vary the model, then fix both and vary the serving configuration. At each stage, virtual judge results narrow the candidate pool. Then, you can improve the virtual judge(s) using samples from the top candidates. The evaluators and the candidates sharpen each other until both stabilize.
imageStep 4: Scale & monitor. Scale evaluation across 5,000 examples. Set up production monitoring: sample 5% of live de-identified traffic daily, run programmatic checks + virtual judges, and surface flagged outputs for human review. A weekly PM review closes the loop, with new failure modes introducing new evals and subsequent system improvements.
NOTE: We sample live traffic continuously using privacy-preserving techniques. All data undergoes robust de-identification prior to human review, and usage is strictly purpose-limited to safety and quality assurance, aligning with Airbnb Privacy Principles.
Key takeaways
Look at your data. Read outputs and traces before building anything else.
Avoid generic metrics. Build evaluators for your product’s real failure modes.
Start with 50–100 rows. Fail fast, iterate cheaply.
One evaluator per dimension. No “God evaluators.”
Calibrate to high 80s-90s% agreement before trusting your Virtual Judge at scale.
Use all three methods. Programmatic, Virtual Judge, and human as layered defenses.
Include bad examples in your Gold Set. You can’t test discernment without them.
Evaluate the system, not just the model. Test retrieval, tool calls, the full pipeline. For agents, evaluate the trajectory, not only the final answer.
Mirror evals in production. Pre-production metrics are not one-and-done.
Evaluation is a team sport. Evaluation is about shaping what product success looks like, and that takes contributions from many people. The teams that succeed with AI aren’t the ones with the best models, they’re the ones with the best communication and clearest product vision.
If this type of work interests you, check out some of our related positions!
Acknowledgments
We would like to thank Tania Myronivska, Haozhen Ding, and Sebastian Wickenburg for their thoughtful feedback and contributions to this guide, Jisheng Liang and John Hewson for their guidance and insights, and Min Yi and Yi Li for their constant support.
We would also like to thank Evelyn Xu for their support in authoring this post during their time at Airbnb.
All product names, logos, and brands are property of their respective owners. All company, product, and service names used in this website are for identification purposes only. Use of these names, logos, and brands does not imply endorsement.
imageEval-driven development: Lessons from evaluating GenAI at scale was originally published in The Airbnb Tech Blog on Medium, where people are continuing the conversation by highlighting and responding to this story.
AI算出
技術分析ainew評価高い
生成 AI の評価をエンジニアリングの第一級分野とする「評価駆動型開発(EDD)」という具体的なフレームワークと、その 5 つの原則を詳述しており、単なる導入事例を超えた実用的な技術分析として価値が高い。ただし、特定の製品名やバージョン番号がタイトルに含まれていないため検索機会は中程度、また日本固有の事例や規制情報がないため日本の関連性は低い。
6つの評価軸を見る
- AI関連度
- 100
- 情報源の信頼性
- 100
- 新規性
- 75
- 調べる価値
- 75
- 重複の少なさ
- 100
- 日本での有用性
- 25
今日のまとめ
AIデイリーブリーフで今日の重要ニュースをまとめ読み