Uber 餐點照片的閉環評估
Building Closed-Loop Evals for a Multimodal Agent at Scale — Soumya Gupta & Jai Chopra, Uber

Uber 電腦視覺團隊的 Jai Chopra 與 Soumya Gupta 拆解 Uber Eats 的餐點修圖 agent:路由、修圖、QA 各怎麼評估,線上漂移怎麼靠人工標註與自動調校補回來。
這場講了什麼
- 修圖要像真的,不能像 AI:小商家的照片品質參差,但有相當比例的消費者不信任 AI 生成的圖。Jai 說要同時做到忠於原圖、保留商家的品牌、不讓全站長得一樣。
- 整條流程每一關都有評估:先由多模態的路由 agent 描述圖片並決定要不要修,再進修圖 agent 與 QA agent 的迴圈,修了幾輪還是不過就不發布,最後還有一道發布前的 QA。所有環節寫進同一份扁平的 JSON log。
- 人工標註是基準:Soumya 的做法是以客觀準則請人標註一份有代表性的資料集,agent 的輸出拿來對照調校,達到 guardrail 指標才上線。路由的 guardrail 指標是 recall,不能讓爛圖漏過去。
- 線上持續校準,不靠人盯:定期抽樣線上資料給標註員,輸出對不上就由診斷 agent 定位問題、觸發自動調校,通過基準資料集才換上新版設定;整個過程由 config 驅動,也內建快速回滾。
- 多道 QA 疊成瑞士起司:修圖迴圈裡有 QA 閘門,發布前還有更全面的一道,刻意留下重複,把失敗進到線上的機率壓低。
- 回饋來源統一交給 Diagnoser:內部試用、商家與設計團隊的意見都進同一個診斷層,由它決定要調哪個 agent;上線後再看轉換率等指標。
影片從哪一段開始看14 段
- 00:16開場與主題Jai Chopra 先開場:兩人來自 Uber 電腦視覺團隊,要談一個正式上線的案例,重點放在 eval 與 eval loop 的設計。
- 00:54Uber Eats 的規模與照片問題外送市場的 run rate 約每年 900 億美元、年成長 20%、在 10,000 個城市營運;照片是客人對商家的第一印象,小商家缺時間、缺方法、缺預算,拍不出夠好的照片。
- 02:38真實感與信任的兩難消費者要真實的照片,卻有一部分人不信任 AI 生成的圖;修圖得忠於原圖,也不能讓全市場長成同一個樣子。
- 03:42設計目標與 agent 的取捨目標是保留真實與信任、只在需要時提升品質、全市場整體最佳、安全上線;規則式太僵硬、撐不起整個市場,agent 有創意卻不能不受安全護欄約束,所以要找平衡。
- 05:10整體流程與 logging路由 agent 決定修或跳過,修圖 agent 搭配 QA agent 迴圈自我修正,失敗就不發布;每個環節都寫進一份扁平 JSON,Jai 建議一開始就先做 logging。
- 07:08路由器的評估路由輸出結構化描述後依準則判斷,當成分類器用混淆矩陣量 precision 與 recall;若路由到多個模型則是 N×N 矩陣。
- 08:48人工標註與 guardrailSoumya 接手:以客觀準則請人工標註代表性資料集當基準;路由的 guardrail 是 recall,並以誤判好圖、放過數量不符的菜為例。
- 10:41線上漂移與自動調校定期抽樣線上資料交給標註員,對不上就由診斷 agent 觸發自動調校,通過基準才換版,全程 config 驅動。
- 12:14Prompt optimizer優化器由 reflect agent 與 synthesize agent 組成,前者找出系統性問題,後者改寫 agent 設定並重新跑基準,通過就登錄新版本。
- 13:20修圖三步驟與 pass@k先為這張圖產生專屬 prompt,修圖後過多面向的 QA 閘門,沒過就帶回饋重來;用 pass@k 看迭代次數與通過率的關係。
- 14:48成對比較與失敗案例Jai 接回來:以成對比較判斷輸出是否比輸入好,準則由產品設計、政策、法務一起定;失敗例包括多加了蝦、漏了醬汁、QA 把修圖逼到過度保守的 reward hacking。
- 17:41發布前 QA最後一道閘門做政策與品質檢查,並抓上游漏掉的問題;刻意重複,用瑞士起司模型降低失敗進入線上的機率。
- 18:32Diagnoser 與其他回饋 loop除了模型 loop,還有內部試用與商家、設計團隊的回饋;上層的 Diagnoser 判斷該調哪些 agent,重播案例、跑基準後才推新版。
- 20:27線上指標與切片上線後看加入購物車、完成訂單等轉換指標,並依地區、裝置、菜色類型切片,在特定區塊單獨調校。
值得記的話5 句
For our use case, we consider human labels as the golden source of truth
在我們的案例裡,人工標註就是黃金標準08:48For routing, our guardrail metric is recall.
路由的 guardrail 指標是 recall09:36this is completely config driven and doesn't require a human in the loop.
整個過程由 config 驅動,不需要人介入11:43You will have one static model with the offline, but this is what is going to keep your system alive.
離線你只會得到一個靜態模型,讓系統活下去的是這個11:43we think of this like a Swiss cheese model.
我們把它當成瑞士起司模型17:58
名詞與人物9 個
- Uber Eats
- Uber 的外送市場,Jai 說規模已經和出行業務一樣大,修圖 agent 就是為它上的餐點照片服務
- Router
- 多模態的路由 agent,先描述圖片並輸出結構化結果,再決定修圖或保留原圖
- QA gate
- 修圖迴圈裡的多面向檢查,看擺盤、忠實度、顏色等,沒過就把回饋送回去重修
- pass@k
- 修圖在第 k 次迭代內通過 QA 的比率,用來看迭代是否有效
- pairwise comparison
- 比對輸入圖與輸出圖,判斷輸出是否更好,結果是 yes、no 或 unsure
- faithfulness
- 修圖後是否忠於原圖與菜名,例如不能多出原本沒有的食材
- reward hacking
- Jai 用來形容 QA 與修圖互相拉扯後,agent 退回保守、沒有實質改變的結果
- Diagnoser
- 統整各種回饋的上層診斷 agent,判斷該調整哪些 agent 的設定並轉交
- Swiss cheese model
- 層層疊加的把關設計,每一層都有漏洞,疊起來降低失敗進入線上的機率
提到但沒有展開
- 修圖用的前沿模型有些問題會連帶出現在 Uber 的應用裡,例如盤子遮住醬汁這類物理合理性的失敗,Jai 說團隊有時會告知前沿模型的團隊,一起處理。
- 多模態為什麼重要:有一張輸出圖看不出餛飩到底是不是 8 個,QA 判為不確定,這種圖在線上會被擋下來。
同一站:LLM Evaluations13 場
- skill 沒有 evals 就別上線012 · Philipp Schmid(Google DeepMind) · 22 分
- Uber 餐點照片的閉環評估你在這裡
- 把 agent 當機器學習來評估037 · Alex Shaw + Ryan Marten(Terminal-Bench, Harbor, Laude Institute) · 21 分
- 做廣告 agent 的 eval 實戰心得039 · Preetika Bhateja & Daniel Bump(YouTube Ads) · 19 分
- 用小型 VLM 評估 AI 影片品質040 · Maor Bril(Character.ai) · 23 分
- 從 trace 走向 agent 模擬評測041 · Rustem Feyzkhanov(Snorkel AI) · 20 分
- DeepSWE 防污染的程式碼基準043 · James Shi(Datacurve) · 18 分
- 合成受眾要像天氣預報一樣驗證057 · Ishan Anand(InsightSciences.ai) · 21 分
- 用模擬產生評估資料,agent 快 20 倍上線058 · Aman Gupta (Nubank) + Shreya Rajpal (Snowglobe) · 16 分
- 現有 benchmark 的三個毛病069 · Ali Khial(G2i) · 13 分
- 生物領域 agent 的可驗證評測078 · Kenny Workman(LatchBio) · 18 分
- 刷榜為什麼停不下來084 · Nick Heiner(Surge AI) · 17 分
- 持續學習該怎麼評測101 · Parth Asawa(UC Berkeley) · 20 分