AI Engineer Europe 2026 · 工作坊 · 2026-05-07 · 81 分
用 GEPA 與 evals 自動優化 agent prompt
Agent Optimization with Pydantic AI: GEPA, Evals, Feedback Loops · Samuel Colvin,Pydantic
Pydantic 的創造者 Samuel Colvin 帶大家動手:先建 golden set 與 evals,再用 GEPA 把 prompt 從 92% 推到 96.7%,最後接上 Logfire 的 managed variables,不重新部署就換 prompt。
概要
- GEPA 的運作方式Samuel Colvin 說 GEPA 是優化字串的函式庫,取 Pareto frontier 上表現最好的候選,混合出新候選再試,也強調這招雖然是目前最先進的做法,原理並不玄:請 agent 生新 prompt,變好就留下來,一直重複。
- 先有 golden set 才談得上優化示範任務是從英國國會議員的維基百科頁面找出祖先中的政治人物。Samuel 建議盡量用確定性的自訂 evaluator 對照 golden set,不要全靠 LLM 當裁判。
- 實測數字簡單 prompt 的準確率約 87%,手寫的詳細 prompt 是 92%,GEPA 跑完是 96.7%,代價是 prompt 變得很冗長。
- 值不值得優化要看情境Samuel 認為資料大多是私有、需要塞進大量領域脈絡時,優化最有價值;也提醒換模型就可能得重跑,所以多數人並不做。
- managed variablesLogfire 把 prompt 管理再往前一步,變數可以是任何 Pydantic model,能設定各值的流量比例,改完不用重新部署。現場把回答語言改成法文、德文,也把模型換掉。
- 回饋訊號與隱私Samuel 認為最好的評估訊號是使用者下一步做了什麼;對不能外流資料的產業,可以只記錄好壞這類分類結果。
原話
▶ 18:34“if you can have a like deterministic eval like this where we're comparing what the result is versus a golden data set that's much better”
能有像這樣跟 golden data set 對照的確定性 eval,會好得多
▶ 37:19“Ask an agent to generate a new prompt, if it does better take bits of that, put it into a new prompt.”
請 agent 生一個新 prompt,如果表現比較好,就取其中一部分放進新 prompt
▶ 42:47“optimization matters way more where you have a large amounts of private data”
私有資料量大的時候,優化重要得多
▶ 48:04“as models get more intelligent, figuring out what right looks like is harder and harder”
模型越聰明,要判斷什麼才是對的就越困難
▶ 1:11:53“the best thing you can possibly do is something which is implicit in the user's experience”
最好的做法是利用使用者體驗中隱含的訊號
延伸
- Samuel 說他們正在做讓平台自動優化 agent 的功能,這場只是用 managed variables 拼出原型。
- Samuel 提到除了 prompt,模型、compaction 策略、工具註冊方式與 code mode 也都能一起優化,但這場沒有示範。
- Shopify 的案例只講了大意:從把整個網站交給 GPT-5,改成 agent 加 Qwen 模型並用 GEPA 優化 prompt,成本大幅下降。
章節
點時碼直接跳到原片的那一段。
- 自我介紹與公司產品Samuel Colvin 說明 Pydantic 公司維護 Pydantic validation、Pydantic AI 與 Logfire,並講到 Logfire 的 evals 與 managed variables。
- GEPA 與 managed variablesSamuel 先解釋 GEPA 是 Genetic Pareto,優化的是一個字串;再說 managed variables 是 prompt management 的延伸,變數可以是任何 Pydantic model。
- 任務:政治世家有多少起因是一個談政治世家比例的 podcast,Samuel 去年用 Pydantic AI 分析議員的維基頁面,當時沒有驗證結果好不好,這次要拿來優化。
- 程式與資料結構帶看資料 schema 與 agent 程式;難點是模型一聽到「relations」就把配偶、子女也加進來,而題目只要祖先。
- 單筆執行與環境設定先在終端機跑一個案例確認能抓到祖先、排除配偶;接著說明要用 Logfire 帳號與 API key,並花幾分鐘等大家把環境設好。
- 資料集與自訂 evaluator說明 dataset 每位議員一個 case、並行上限為 5;Samuel 主張自訂的確定性 evaluator 比 LLM as a judge 可靠。
- 跑第一次 eval用簡單 prompt 跑 eval,在 Logfire 看每個 case 的 accuracy,整體約 85%。
- 比較兩份 prompt用 65 個測試案例比較簡單與詳細的 prompt,準確率 87% 對 92%,並逐案檢視哪裡出差異。
- GEPA 的典型用途Samuel 說人們多半固定品質去壓成本,或固定模型去拉品質,並舉 Shopify 改用 agent、Qwen 模型加 GEPA 的例子。
- GEPA adapter 與 proposer說明用 Pydantic AI agent 當 proposer 去優化另一個 Pydantic AI agent,並吐槽 GEPA 是同步的、型別不夠嚴謹。
- 實際跑優化設 400 次呼叫跑起來,在 Logfire 看 proposer 如何提新 prompt、評估後再迭代。
- 多個 key 與 DSPy解釋 GEPA 操作的是 key-value 字典,多個 key 時可組合各自最好的值;順帶比較 DSPy。
- 什麼時候值得優化Samuel 說強模型多半一次就答對,優化在私有資料量大時才重要;公開範例很難做,所以他們還在想辦法。
- 提問:prompt 越長越冗有聽眾問優化會不會讓 prompt 愈變愈長;Samuel 的解法是把 prompt 拆成很多句,讓 proposer 只能選其中一部分。
- GEPA 結果優化完成,分數 96.7%,高於先前的 92%,prompt 變得冗長並大量著墨「什麼算 relation」。
- 沒有 golden set 怎麼辦談人工標註、程式能否執行這類驗證方式,以及「什麼才算對」是 evals 最難的部分。
- 變異、成本函數與漏判回答變異要靠多跑幾次降低、可自訂回傳的分數;優化器看不到的案例類型會被誤排除,所以訓練與驗證資料各要一份。
- 換模型要重跑嗎Samuel 承認換模型可能得重來,所以多數人不做;大量處理的情境才值得,還比較了 fine-tuning 與任務越開放越難優化的問題。
- managed variables 示範以 FastAPI 小服務示範,把變數推到 Logfire,改 prompt 讓回答變法文、德文,並換掉模型,都沒有重新部署。
- 自動優化的原型說明目標是讓 managed variables「自動駕駛」;現場把 GEPA 產出的 prompt 換進去,結果那個案例仍然判錯。
- 回饋訊號與聊天介面談按讚按鈕沒人點,隱含的使用者行為才是最好的訊號;也試了用一行程式把 agent 變成聊天介面,介面有出來,但沒時間完整示範。
- 內部用例與隱私Samuel 說 Logfire 內部有把文字搜尋轉 SQL 的 agent;敏感資料可自行託管,或只記錄好壞這類分類結果。
- data class 與 compactionSamuel 說用 data class 只是 Python 慣例;也同意 compaction 策略是複雜情境下該一起優化的項目。
名詞
- GEPA
- Genetic Pareto 的縮寫,優化一個字串(prompt 或 JSON)的函式庫,也可在 DSPy 裡使用
- Pareto frontier
- 目前表現最好的候選集合,GEPA 從這裡取候選混合出新版本
- Pydantic AI
- Pydantic 公司的 agent 框架,示範中同時用來寫任務 agent 與 proposer agent
- Logfire
- Pydantic 的可觀測性平台,示範中用來看 trace、跑 evals 與管理變數
- managed variables
- Logfire 的功能,把 prompt、模型等設定存在平台上,不重新部署就能改,並可設定各值的流量比例
- golden set
- 示範中當標準答案的資料集,Samuel 說是用 Opus 4.6 跑類似腳本產生,自己檢查過不少,但不敢說百分之百正確
- proposer agent
- GEPA 裡負責根據評估結果提出新 prompt 的 agent
- trajectories
- Samuel 的說法:類似 traces,是 agent 走到某個結果所經過的步驟序列
- DSPy
- 另一個 agent 框架,Samuel 說它很早就有優化的概念,但嫌它不是 type safe
- Pydantic AI gateway
- 一把 API key 就能連多家模型的閘道,有觀測、快取與 fallback 功能








