使用Microsoft Agent Lightning專業訓練AI Agent:全面配置與工作流程
譯者 | 李睿
審校 | 重樓
AI Agent正在改變人們使用人工智能的方式。依托大型語言模型(LLM),它們能夠回答問題、執行指令,并與各類數據源或API進行交互。然而,它們在處理復雜的多步驟任務時仍會出錯,而人工修復這些問題通常既耗時又費力。
微軟公司最近推出的Agent Lightning框架使這一過程變得更加簡單。該框架將智能體(Agent)的運行機制與學習過程分離開來,使得智能體能夠在實際交互中持續自我優化。用戶可基于現有的聊天工具或自動化系統進行部署,并借助強化學習技術,讓智能體在執行任務過程中逐步提升智能化水平。
什么是Microsoft Agent Lightning?
Agent Lightning是微軟公司推出的一種開源框架,旨在通過強化學習(RL)來訓練和改進AI Agent。其優勢在于,它可以無縫封裝任何使用現有框架(如LangChain、OpenAI Agents SDK、AutoGen、CrewAI、LangGraph或自定義Python)開發的智能體,并且幾乎無需更改代碼。
從技術角度來看,該框架支持對智能體中嵌入的LLM進行強化學習訓練,而無需改變智能體的核心邏輯。其基本思想是將智能體的執行過程視為一個馬爾可夫決策過程——“在每一步,智能體都處于特定狀態,執行某個行動(LLM輸出),并在這些行動在成功完成任務時獲得相應的獎勵。”
Agent Lightning框架由Python SDK與訓練服務器兩部分組成。用戶只需將智能體邏輯封裝進LitAgent類或兼容接口,并定義輸出結果(獎勵)評估機制,即可啟動訓練。該框架負責采集交互經驗,將其輸入至分層強化學習算法(LightningRL)中以完成信用分配,進而更新智能體模型或提示模板。在訓練結束后,用戶即可獲得一個經過強化、性能顯著提升的智能體。

為什么Agent Lightning很重要?
傳統的智能體框架(如LangChain、LangGraph、CrewAI或AutoGen)能夠創建可以逐步推理或使用工具的AI Agent,但它們沒有訓練模塊。這些智能體只是基于靜態的模型參數或提示詞來運行模型,這意味著它們無法從所經歷的情況中學習。現實世界中的挑戰具有一定程度的復雜性,需要一定程度的適應性。Agent Lightning解決了這一問題,將學習引入了智能體流程中。
Agent Lightning通過實現一個自動優化管道來解決這一預期差距,它利用強化學習的能力,根據反饋信號更新智能體的策略。簡而言之,智能體可以從自己的成功和失敗中學習,從而可能產生更可靠、更值得信賴的結果。
Agent Lightning的工作原理
在服務器-客戶端架構中,Agent Lightning利用強化學習算法來生成任務并優化建議,例如調整提示或更新模型權重。任務由Runner執行,它收集智能體的每個行動和最終獎勵,并將這些數據返回給算法。這種反饋機制使得智能體能夠隨著時間的推移,利用“自動中間獎勵”功能來進一步微調其提示或權重,該功能可為成功的中間行動提供即時的小幅獎勵以加速學習過程。
Agent Lightning本質上將Agent操作視為一個循環:狀態是其當前上下文;行動是它的下一步,獎勵是任務成功的指標。通過設計“狀態-行動-獎勵”的轉換,Agent Lightning最終可以為任何類型的智能體提供訓練支持。
Agent Lightning采用了解耦化設計,將智能體的學習與執行相分離。在這一架構中,服務器負責模型更新與優化,客戶端則負責執行實際任務并報告結果。這種任務分工使智能體在高效完成具體任務的同時,能持續通過強化學習優化其性能。

注:Agent Lightning使用分層強化學習系統LightningRL,能夠分解復雜的多步驟智能體行為進行訓練。LightningRL還支持多智能體、復雜工具使用和延遲反饋。
使用微軟Agent Lightning訓練智能體的分步指南
本節將介紹如何使用Agent Lightning訓練一個SQL智能體,并展示如何集成其核心組件:基于LangGraph構建的SQL智能體、VERL強化學習框架,以及用于控制訓練與調試流程的Trainer。
本文提供了一個可直接運行的命令行示例(examples/spider/train_sql_agent.py),但重點在于幫助開發者深入理解系統架構與工作流程,從而能夠自信地將Agent Lightning應用于實際業務場景。
智能體架構
Agent-Lightning可以與AutoGen、CrewAI、LangGraph、OpenAI Agents SDK以及其他自定義Python邏輯等框架無縫協作。在這個例子中,使用LangGraph構建了一個循環工作流,模擬數據分析師迭代編寫和修復SQL查詢的過程:
這個工作流包含四個功能階段:
- write_query:獲取用戶的問題,根據文本問題生成初始SQL查詢。
- execute_query:在目標數據庫中執行生成的查詢。
- check_query:使用驗證提示(CHECK_QUERY_PROMPT)驗證結果。
- rewrite_query:如果有問題,則重寫查詢。
循環繼續,直到查詢驗證或達到最大迭代計數(max_turns)。強化學習優化了write_query和rewrite_query階段。

構建LangGraph智能體
為保證代碼的模塊化與可維護性,建議使用獨立的構建器函數來定義 LangGraph 工作流,具體實現如下所示:
python
from langgraph import StateGraph
def build_langgraph_sql_agent(
database_path: str,
openai_base_url: str,
model: str,
sampling_parameters: dict,
max_turns: int,
truncate_length: int
):
# Step 1: Define the LangGraph workflow
builder = StateGraph()
# Step 2: Add agent nodes for each step
builder.add_node("write_query")
builder.add_node("execute_query")
builder.add_node("check_query")
builder.add_node("rewrite_query")
# Step 3: Connect the workflow edges
builder.add_edge("__start__", "write_query")
builder.add_edge("write_query", "execute_query")
builder.add_edge("execute_query", "check_query")
builder.add_edge("check_query", "rewrite_query")
builder.add_edge("rewrite_query", "__end__")
# Step 4: Compile the graph
return builder.compile().graph()這樣做可以將LangGraph邏輯與Agent Lightning的未來更新相分離,從而提高代碼的可讀性和可維護性。
連接LangGraph與Agent Lightning
LitSQLAgent類作為LangGraph與Agent Lightning之間的橋梁。它繼承自agl.LitAgent,因此Runner可以為每次迭代管理共享資源(如LLM)。
python
import agentlightning as agl
class LitSQLAgent(agl.LitAgent[dict]):
def __init__(self, max_turns: int, truncate_length: int):
super().__init__()
self.max_turns = max_turns
self.truncate_length = truncate_length
def rollout(self, task: dict, resources: agl.NamedResources, rollout: agl.Rollout) -> float:
# Step 1: Load shared LLM resource
llm: agl.LLM = resources["main_llm"]
# Step 2: Build LangGraph agent dynamically
agent = build_langgraph_sql_agent(
database_path="sqlite:///" + task["db_id"],
openai_base_url=llm.get_base_url(rollout.rollout_id, rollout.attempt.attempt_id),
model=llm.model,
sampling_parameters=llm.sampling_parameters,
max_turns=self.max_turns,
truncate_length=self.truncate_length,
)
# Step 3: Invoke agent
result = agent.invoke({"question": task["question"]}, {
"callbacks": [self.tracer.get_langchain_handler()],
"recursion_limit": 100,
})
# Step 4: Evaluate query to generate reward
reward = evaluate_query(
result["query"], task["ground_truth"], task["db_path"], raise_on_error=False
)
return reward注:“main_llm”資源鍵是智能體與VERL之間的一種協作約定,用于在服務上下文中為每次任務提供正確的端點訪問。
獎勵信號和評估機制
evaluate_query函數定義了用于強化訓練的獎勵機制。Spider數據集上的每個任務都包含一個自然語言問題、一個數據庫模式和一個基準SQL查詢。獎勵機制將模型生成的SQL查詢與參考SQL查詢進行比較:
python
def evaluate_query(predicted_query, ground_truth_query, db_path, raise_on_error=False):
result_pred = run_sql(predicted_query, db_path)
result_true = run_sql(ground_truth_query, db_path)
return 1.0 if result_pred == result_true else 0.0注:在訓練過程中,智能體絕不能看到真實查詢,否則會導致信息泄露。
配置VERL以進行強化學習
VERL是智能體的強化學習后端。其配置如同定義Python字典一樣簡單,用戶需要輸入算法、模型、rollout參數和訓練選項。以下是一個基礎配置示例:
python
verl_config = {
"algorithm": {"adv_estimator": "grpo", "use_kl_in_reward": False},
"data": {
"train_batch_size": 32,
"max_prompt_length": 4096,
"max_response_length": 2048,
},
"actor_rollout_ref": {
"rollout": {"name": "vllm", "n": 4, "multi_turn": {"format": "hermes"}},
"actor": {"ppo_mini_batch_size": 32, "optim": {"lr": 1e-6}},
"model": {"path": "Qwen/Qwen2.5-Coder-1.5B-Instruct"},
},
"trainer": {
"n_gpus_per_node": 1,
"val_before_train": True,
"test_freq": 32,
"save_freq": 64,
"total_epochs": 2,
},
}這類似于可以在CLI中運行的命令:
python
python3 -m verl.trainer.main_ppo \
algorithm.adv_estimator=grpo \
data.train_batch_size=32 \
actor_rollout_ref.model.path=Qwen/Qwen2.5-Coder-1.5B-Instruct使用Trainer編排訓練過程
Trainer是連接智能體、強化學習算法、數據集和分布式Runner的高級協調模塊。
python
import pandas as pd
import agentlightning as agl
# Step 1: Initialize agent and algorithm
agent = LitSQLAgent(max_turns=3, truncate_length=1024)
algorithm = agl.VERL(verl_config)
# Step 2: Initialize Trainer
trainer = agl.Trainer(
n_runners=10,
algorithm=algorithm,
adapter={"agent_match": "write|rewrite"} # Optimize both query stages
)
# Step 3: Load dataset
train_data = pd.read_parquet("data/train_spider.parquet").to_dict("records")
val_data = pd.read_parquet("data/test_dev_500.parquet").to_dict("records")
# Step 4: Train
trainer.fit(agent, train_dataset=train_data, val_dataset=val_data)幕后發生的過程如下:
- VERL啟動一個OpenAI兼容的代理,以便無需實現OpenAI請求即可分發工作。
- Trainer創建10個Runner以并發執行。
- 每個Runner調用rollout方法,收集軌跡信息并將獎勵發送回以更新策略。
使用trainer.dev()調試智能體
在開始完整的強化學習(RL)訓練之前,建議對整個流程進行試運行,以檢查連接情況和軌跡信息。
python
trainer = agl.Trainer(
n_workers=1,
initial_resources={
"main_llm": agl.LLM(
endpoint=os.environ["OPENAI_API_BASE"],
model="gpt-4.1-nano",
sampling_parameters={"temperature": 0.7},
)
},
)
# Load a small subset for dry-run
import pandas as pd
dev_data = pd.read_parquet("data/test_dev_500.parquet").to_dict("records")[:10]
# Run dry-run mode
trainer.dev(agent, dev_dataset=dev_data)
該步驟確保在投入大量GPU資源進行長時間訓練之前,整個LangGraph控制流、數據庫連接及獎勵邏輯均已正確配置并驗證通過。運行完整示例
要設置環境,需安裝依賴項(即使用pip install -r requirements.txt命令),然后運行完整的訓練腳本:
python
# Step 1: Install dependencies
pip install "agentlightning[verl]" langchain pandas gdown
# Step 2: Download Spider dataset
cd examples/spider
gdown --fuzzy https://drive.google.com/file/d/1oi9J1jZP9TyM35L85CL3qeGWl2jqlnL6/view
unzip -q spider-data.zip -d data && rm spider-data.zip
# Step 3: Launch training
python train_sql_agent.py qwen # Qwen-2.5-Coder-1.5B
# or
python train_sql_agent.py llama # LLaMA 3.2 1B如果使用的是托管在Hugging Face平臺上的模型,那么務必按照以下步驟導訪問令牌:
python
export HF_TOKEN="your_huggingface_token"在沒有VERL情況下的調試
如果希望在沒有強化學習的情況下驗證代理邏輯,可以使用內置的調試助手:
python
export OPENAI_API_BASE="https://api.openai.com/v1"
export OPENAI_API_KEY="your_api_key_here"
cd examples/spider
python sql_agent.py這將允許用戶使用當前LLM端點運行SQL Agent,以確認查詢已執行且控制流按預期工作。
評估結果

注:在單個80GB GPU上運行python train_sql_agent.py qwen通常會在大約12小時后完成。你將看到訓練獲得的獎勵持續增加,這表明智能體的SQL生成過程隨著時間的推移而不斷改進。因此,由于資源限制,在這里使用了官方文檔中展示的結果。
Agent Lightning的適用場景
在實際應用中,假設用戶有一個基于LLM的智能體,它在某個應用程序(如客戶支持聊天機器人、自動化編碼助手等)中扮演著重要角色,并且希望對其進行優化,那么Agent Lightning是一個理想的候選方案。該框架已在SQL查詢生成等任務中得到驗證。經過引入強化學習或提示優化機制,Agent Lightning能夠持續迭代并優化已有智能體,從而生成更準確、更可靠的輸出結果。
- 如果希望AI Agent通過試錯進行學習,那么應該使用Agent Lightning。它專為具有明確成功或失敗信號的多步驟邏輯場景而設計。
- 例如,Agent Lightning可以通過觀察執行反饋來學習,從而改進生成數據庫查詢的機器人。該模型也適用于聊天機器人、虛擬助手、游戲智能體以及使用工具或API的通用智能體。
- Agent Lightning框架與智能體無關,并支持靈活部署。它可以在標準個人電腦(PC0或服務器上按需訓練,因此可以在必要時在筆記本電腦或云平臺上進行模型訓練。

結論
Microsoft Agent Lightning是一種用于提升AI Agent智能水平的新機制。其核心理念在于,智能體不應是固定的代碼對象,而應該能夠通過持續的訓練循環從經驗中學習。通過將訓練過程與執行過程解耦,它可以在無需更改任何代碼的情況下優化任何智能體工作流。
這意味著,可以通過使用Agent Lightning的強化學習機制輕松增強智能體工作流程,無論它是定制智能體、LangChain機器人、CrewAI、LangGraph、AutoGen還是更具體的OpenAI SDK agent,。實際上,智能體正從其自身的數據中變得更加智能。
常見問題解答
Q1.什么是Microsoft Agent Lightning?
A:它是微軟的一個開源框架,通過強化學習來訓練AI Agent,而無需改變其核心邏輯或工作流。
Q2. Agent Lightning如何改進AI Agent?
A:它允許智能體通過強化學習從實際任務反饋中學習,從而不斷優化提示或模型權重以提高性能。
Q3. Agent Lightning能否與現有的智能體的框架協同工作?
A:是的,它可以與LangChain、AutoGen、CrewAI、LangGraph以及自定義Python智能體輕松集成,并且幾乎無需修改代碼。
原文標題:??Train Your AI Agents Like a Pro with Microsoft Agent Lightning (Full Setup & Workflow) ??,作者:Vipin Vashisth

















