比 o3 更快更準?聽說有人打造了一個超強郵件助手 ART·E 原創
你有沒有遇到過這種情況?
突然收到一條消息:“我弟弟周五航班的時間是幾點?”
你打開郵箱,翻來覆去地查找,輸入關鍵詞,一頁一頁瀏覽,好不容易才找到那封關鍵郵件。
這種操作在 2025 年還存在,是不是有點反人類了?
最近,有一個項目就瞄準了這個痛點,推出了一個名叫 ART·E 的電子郵件研究代理。它并不是那種“看起來很厲害”的模型,而是真正能幫你從海量郵件中快速準確找到答案的工具。
最讓人驚訝的是,它的表現竟然超過了 o3,不僅回答正確率更高,運行速度更快,成本也低了將近 64 倍。
ART·E 是什么?它真的有用嗎?
ART·E 全稱 ART·E(可能是某個縮寫,但目前還沒公開),是一個通過強化學習訓練出來的 AI 助手,專門用于從你的郵箱中查找和回答問題。
比如:
- “RSVP 方式是什么?”
- “修訂版 anexb.doc 文件在哪兒下載?”
- “公司差旅政策里關于酒店報銷的規定是什么?”
這些問題聽起來是不是很眼熟?沒錯,這就是我們日常生活中經常碰到的真實場景。
而 ART·E 的目標很簡單:讓你不再手動翻找郵件,直接發問,它就能給出答案。
更夸張的是,它不僅能回答出這些問題,還能告訴你這些答案來自哪幾封郵件,出處一目了然。
數據從何而來?Enron 郵件庫成了訓練寶庫
為了訓練這樣一個模型,首先需要一個龐大的數據集。
于是開發者們盯上了 Enron——這家在 2001 年因財務造假被起訴的能源公司。當時公布的近 50 萬封郵件,意外地成為了研究人員的寶藏。
最終,他們從中挑選了 8 個員工的郵箱作為測試集,另外選了 20 個作為訓練集。每個郵箱至少包含 5,000 封郵件,有些甚至超過 10,000 封。
光有郵件還不夠,還需要大量真實的問題與答案對來模擬用戶可能提出的查詢。
于是,GPT-4.11 被派上用場了。每批處理 20 封郵件,自動生成多個問題和答案,同時還會打一個“how_realistic”分值,來過濾掉那些不合理的提問。
最終,得到了一個包含約 4000 個問題的合成數據集。
舉幾個真實的例子看看你就明白了:
問題 | 答案 | 來源 |
周二下午與 EES 會議討論什么問題? | 強制公用事業公司支付拖欠的 PX 信用額度、是否應向客戶收取新的 1 分附加費、是否應將客戶重新轉回捆綁式服務等 | Expand Source |
我去科羅拉多斯普林斯的大陸航空航班確認號是多少? | N1BTZH | Expand Source |
e-commerce交易禁運國家有哪些? | 巴林、伊拉克、科威特、黎巴嫩、利比亞、阿曼、卡塔爾、沙特阿拉伯、敘利亞、阿聯酋、也門 | Expand Source |
這些數據既貼近現實,又具備代表性,非常適合用來訓練和評估模型。
工具設計簡潔高效,只圍繞核心任務展開
為了讓模型專注于核心任務,環境的設計也被盡可能簡化。
提供了三個基礎工具函數:
def search_emails(keywords, sent_after=None, sent_before):
"""根據關鍵詞及時間范圍搜索郵件"""
# 返回最多10封匹配的郵件ID和摘要片段
def read_email(message_id):
"""讀取指定ID郵件的完整內容"""
def return_final_answer(answer: str, sources: list[str]):
"""返回最終答案及引用郵件ID列表"""
這三個工具已經足夠讓模型完成大部分的操作了。
所有數據都存儲在一個 SQLite 數據庫中,并使用 FTS5 全文檢索引擎來加速搜索。
整個流程也非常簡單:
- 接收初始提示詞:任務描述 + 用戶問題;
- LLM 生成下一步動作(調用哪個工具);
- 執行工具,獲取結果;
- 將工具返回的信息加入上下文;
- 重復上述步驟,直到返回答案或達到最大步數(默認為 10)。
沒有復雜的遞歸邏輯,也沒有花里胡哨的中間層,就是最為直接的執行路徑。
測試現成模型:別急著訓練,先看看大模型能干啥
很多人拿到新任務第一反應就是“趕緊訓練一個模型”,但在正式訓練之前,先嘗試一些現成的大模型其實是非常有必要的。
原因有幾個:
- 可能你發現現有的模型已經做得很好了,根本不需要再訓練;
- 很多時候模型表現差是因為提示詞缺失、工具不可靠或者任務模糊,這些問題 RL 也解決不了;
- 最重要的是,當你最終超越這些模型時,那一刻的成就感會讓你覺得一切努力都值得。
所以這次也測試了不少主流模型,包括 GPT-4o、Qwen-14B、o3、o4-mini 等等。
并通過 LLM-as-judge 的方式來做自動評估:
def judge_answer(golden_answer, model_answer):
"""判斷模型回答是否正確"""
prompt = f"請比較以下兩個答案是否一致:\n\nGolden Answer: {golden_answer}\nModel Answer: {model_answer}"
response = call_llm(prompt)
return response.strip().lower() == "yes"
結果顯示,即使是目前最強的大模型,在這類任務上的準確率也不高。這就為我們提供了改進的空間。
獎勵函數怎么設計?告訴模型你要什么
這是整個過程中最關鍵的一環之一。
很多人都會誤解:我已經有一個評價函數了,還需要什么獎勵函數?
其實不然。雖然我們可以用 LLM 作為裁判來衡量答案是否正確,但這只是一個最終目標。而在 RL 中,我們還可以引導模型同時優化多個指標,比如:
- 準確性(Correctness)
- 幻覺抑制(Hallucination Penalty)
- 步數最小化(Turn Minimization)
最終采用的獎勵函數如下:
def calculate_reward(correct, hallucinated, turns):
base_reward = 1.0 if correct else -1.0
hallucination_penalty = -0.5 if hallucinated else 0
turn_bonus = 0.1 * (10 - turns) / 10 # 鼓勵更少步驟
return base_reward + hallucination_penalty + turn_bonus
其中:
- ?
?correct?
? 表示答案是否正確; - ?
?hallucinated?
? 表示是否虛構答案; - ?
?turns?
? 是完成任務所用的步驟數。
這個函數背后的核心思想在于:既要鼓勵模型回答正確,又要懲罰錯誤行為(如幻覺),還要讓它盡可能高效完成任務。
訓練過程揭秘:GRPO + ART 庫實戰
訓練部分使用的是他們自己開源的 ART(Agent Reinforcement Trainer)庫,采用 Group Relative Policy Optimization(GRPO)算法。
整個流程非常清晰:
- 加載一批問題(每次加載 12 個);
- 每個問題跑 4 次軌跡(trajectory);
- 對每個軌跡計算獎勵;
- 使用 GRPO 公式更新模型權重;
- 每 30 步運行一次驗證集測試;
- 直到模型在驗證集上停止提升為止。
完整的訓練腳本只有幾十行代碼:
from art.trainer import GRPOTrainer
from art.envs.email_agent_env import EmailAgentEnv
env = EmailAgentEnv()
trainer = GRPOTrainer(env=env, model="qwen-14b", reward_func=calculate_reward)
# 開始訓練
trainer.train(
dataset_path="data/synthetic_qa_dataset.json",
num_epochs=2,
learning_rate=1.2e-5,
batch_size=12,
rollout_per_questinotallow=4,
save_dir="results/art-e/",
log_to_wandb=True
)
訓練監控方面也有一些小技巧:
- 觀察獎勵標準差:如果所有軌跡得分接近,說明模型陷入局部最優;
- 跟蹤多個指標:包括準確率、幻覺率、平均步數等;
- 定期查看模型輸出:防止 Reward Hacking,比如模型學會了重復調用同一個工具來“占滿”回合數從而拿更多獎勵。
最終,整個訓練在一塊 H100 GPU 上完成,耗時不到一天,總成本約為 80 美元。
性能對比:ART·E vs o3,誰更勝一籌?
最后來看一下 ART·E 的實際表現:
指標 | ART·E | o3 |
準確率 | 89% | 70% |
平均步數 | 3.2 | 4.1 |
運行成本($/query) | $0.002 | $0.128 |
幻覺率 | 2.3% | 8.9% |
可以看到,ART·E 不僅在準確性上遠超 o3,在成本和效率上也實現了質的飛躍。更關鍵的是,它能回答很多 o3 根本無法理解的問題。
結語:通往通用 Agent 的一小步
ART·E 的誕生并不是終點,而是探索真正智能代理(Intelligent Agent)旅程中的重要一步。
它證明了一個道理:即使是最前沿的問題,也可以通過合理的方法、合適的數據以及一點巧思,打造出令人驚艷的產品。
本文轉載自??Halo咯咯?? 作者:基咯咯
