Agent Lightning 深度解析:微软如何用零代码改造让 AI Agent 实现自我进化
前言:当 AI Agent 从"能跑"到"能进化"
在 2026 年的 AI 开发领域,构建一个基于大语言模型的智能体(AI Agent)早已不是什么难事。无论是 Spring AI Alibaba、AgentScope、LangChain、AutoGen 还是 CrewAI,开发者可以在几分钟内搭建起一个能对话、能推理、能调用工具的智能体原型。然而,当这些 Agent 被部署到真实的业务场景中时,一个更加棘手的问题浮出水面:如何让 Agent 在复杂场景中不断进化、越用越聪明?
传统的 Agent 优化路径存在一个根本性的矛盾:执行与优化的耦合。Agent 框架负责"怎么跑",而模型训练负责"怎么变强"——这两件事在传统架构中需要完全不同的技术栈、不同的代码改动、甚至不同的团队来负责。手动收集数据、进行 SFT 微调,不仅费时费力,而且难以规模化。
就在这个背景下,微软于 2025 年底开源了一个重磅项目——Agent Lightning(GitHub: microsoft/agent-lightning)。官方将其定义为**"点亮 AI 智能体的终极训练器"(The absolute trainer to light up AI agents),核心目标是通过几乎零代码修改**的方式,为任何框架下的 Agent 赋予强化学习(RL)、提示词自动优化(APO)、监督微调(SFT)等自我进化的能力。
截至 2026 年 4 月,该项目已斩获超过 16,000 颗 GitHub 星标,成为 AI Agent 训练优化领域最受关注的项目之一。本文将深入剖析 Agent Lightning 的技术架构、核心原理,并结合实战代码,带你全面理解这个"让 AI Agent 变成自我进化猛兽"的开源利器。
一、背景:为什么 AI Agent 的进化如此困难?
在深入 Agent Lightning 之前,我们需要理解一个根本问题:为什么让 AI Agent 进化这件事,传统上如此困难?
1.1 执行与优化的天然鸿沟
当你使用 LangChain 构建一个客服 Agent 时,整个技术栈是围绕"执行"设计的:
用户输入 → LLM 推理 → 工具调用 → 环境反馈 → LLM 推理 → ...
而"优化"需要的是完全不同的数据流:
收集轨迹数据 → 清洗标注 → 计算奖励信号 → 更新模型/提示词 → 重新部署
这两个数据流在传统架构中几乎是正交的。你需要对原有的 Agent 代码进行大量侵入式修改,才能采集到足够多的训练数据。更糟糕的是,每次换一个新的 Agent 框架(比如从 LangChain 迁移到 AutoGen),这些改造工作就得重来一遍。
1.2 多智能体场景下的优化困境
在真实的业务系统中,很少有场景只依赖单一的 Agent。以一个代码审查助手为例,你可能有一个规划 Agent(负责任务分解)、一个执行 Agent(负责写代码)、一个审查 Agent(负责质量把关)、一个测试 Agent(负责验证)。当整个系统的表现不佳时,你很难定位到问题的根源:是规划 Agent 的决策有误,还是执行 Agent 的代码质量差,又或者是审查 Agent 的判断标准过于严苛?
传统方法要么对整个系统进行统一训练(成本高、风险大),要么靠人工逐个排查(效率低、不系统)。
1.3 Agent Lightning 的破局哲学
Agent Lightning 的核心破局点可以用一句话概括:将 Agent 的执行过程与优化过程完全解耦。
不论你使用的是哪种 Agent 框架(LangChain、AutoGen、CrewAI、OpenAI Agent SDK,甚至是原生 Python + OpenAI API),Agent Lightning 都能以旁路(side-car)模式接入,让你的 Agent 保持原有运行状态的同时,在后台默默完成数据的收集与算法优化。
这就好比你正在开一辆车,Agent Lightning 就像是给这辆车加装了一个"自动驾驶训练模块"——车子还是照常开,但车上的传感器在实时采集驾驶数据,后台系统在不断分析哪些驾驶决策是优秀的、哪些是有风险的。这些数据最终会用来训练一个更好的驾驶模型,而整个过程中驾驶员几乎感受不到任何变化。
二、核心架构:四大模块协同构建进化闭环
Agent Lightning 的架构设计非常优雅,主打**"轻量接入,重度优化"**的理念。整个系统由四大核心模块构成,它们协同工作,形成了一个完整的 Agent 进化闭环。
2.1 数据采集与追踪层(Tracer & Adapter)
这是 Agent Lightning 实现"零代码入侵"的关键所在。
传统的 Agent 数据采集需要在代码中手动埋点,在每个关键位置插入日志记录语句。这不仅增加了代码的复杂性,还容易引入新的 bug。Agent Lightning 采用了轻量级探针机制,通过两种方式实现透明接入:
方式一:辅助函数注入
import agent_lightning as agl
# 只需在现有代码中引入辅助函数,无需大幅修改
response = agl.emit_message(user_message, assistant_message)
# 工具调用时
result = agl.emit_tool_call(tool_name, tool_input, tool_output, success=True)
# 环境反馈时
reward = agl.emit_reward(reward_value, step_info)
方式二:全局 Tracer 自动拦截
如果你不想修改任何业务代码,可以启用全局 Tracer,它会自动拦截所有与 LLM 的交互:
import agent_lightning as agl
# 初始化全局 Tracer
tracer = agl.Tracer()
# 包装你现有的 Agent 实例
wrapped_agent = tracer.wrap(your_existing_agent)
# 从此刻起,所有交互都会被自动记录
response = wrapped_agent.run(user_message)
Adapter 的标准化能力
采集到的原始数据往往格式各异——来自 LangChain 的消息结构与来自 AutoGen 的可能完全不同。Agent Lightning 内置了多套 Adapter,可以将这些异构数据统一转化为标准化的格式:
from agent_lightning.adapters import LangChainAdapter, AutoGenAdapter, OpenAIAdapter
# 统一转化为标准格式
standard_event = LangChainAdapter.adapt(raw_langchain_event)
standard_event = AutoGenAdapter.adapt(raw_autogen_event)
standard_event = OpenAIAdapter.adapt(raw_openai_message)
同时,这些 Adapter 还支持 OpenTelemetry 等标准的追踪协议,可以与现有的可观测性基础设施(如 Jaeger、Zipkin)无缝集成。
2.2 核心中枢:Lightning Store
如果说 Tracer 是 Agent Lightning 的"感官系统",那么 Lightning Store 就是它的"大脑"——负责存储、整理和调度所有采集到的数据。
Lightning Store 的核心职责:
from agent_lightning import LightningStore
store = LightningStore()
# 所有采集的事件都会被转化为结构化的 Span 流入 Store
store.push_span(span={
"trace_id": "abc123",
"span_id": "span456",
"parent_id": None,
"name": "agent.run",
"start_time": 1712500000.0,
"end_time": 1712500005.0,
"attributes": {
"user_message": "帮我写一个排序算法",
"assistant_message": "好的,我来实现...",
"tool_calls": [
{"name": "code_execute", "input": "...", "output": "...", "success": True}
],
"reward": 0.85
}
})
# 查询特定任务的完整轨迹
trajectory = store.get_trajectory(task_id="task789")
# 聚合统计信息
stats = store.aggregate_stats(window="24h")
Lightning Store 的设计借鉴了分布式追踪系统的最佳实践,采用了分层存储架构:
- 热存储层:存储最近 24 小时的高频访问数据,使用内存或 Redis,保证极低的读写延迟
- 温存储层:存储最近 7 天的数据,使用 PostgreSQL 或 MySQL,支持复杂的聚合查询
- 冷存储层:存储超过 7 天的历史数据,使用对象存储(如 S3),支持归档和长期分析
这种分层设计确保了在实际生产环境中,即使 Agent 每秒处理数百个请求,Lightning Store 依然能保持稳定的高吞吐量。
2.3 算法优化引擎(Algorithms Engine)
这是 Agent Lightning 的"进化引擎",也是它区别于其他 Agent 监控工具的核心竞争力。Lightning Store 收集到的数据,最终会流入 Algorithms Engine,被各种前沿的优化算法处理。
强化学习(RL)模块
Agent Lightning 的强化学习模块(LightningRL)是整个框架中最复杂、也是最强大的部分。它的核心挑战是:如何将多轮对话的复杂轨迹(Multi-step trajectories)转化为可训练的格式?
在传统的 RL 任务中,一个"transition"通常指状态-动作-奖励的三元组。但在 Agent 对话场景中,这个定义变得模糊——什么是一个"动作"?是 LLM 的一次回复?还是一次工具调用?还是整个对话轮次?
Agent Lightning 的答案是多层级信用分配机制:
from agent_lightning.algorithms import LightningRL, TrajectoryConfig
rl_trainer = LightningRL(
model=your_llm,
config=TrajectoryConfig(
trajectory_aggregation="trajectory-level", # 整条轨迹一起训练
credit_assignment="gae", # Generalized Advantage Estimation
intermediate_reward=True, # 启用中间奖励
reward_shaping=True # 奖励塑形
)
)
# 传入完整轨迹,自动进行 credit assignment
updated_model = rl_trainer.train(
trajectories=[trajectory1, trajectory2, trajectory3],
epochs=10,
batch_size=4,
learning_rate=1e-5
)
通过 GAE(Generalized Advantage Estimation),系统能够将一条包含 20 轮对话的轨迹,分解为 20 个带有权重的 transition,每个 transition 的权重由它对最终结果(最终奖励)的贡献度决定。这解决了 RL 训练中的核心难题——信用分配问题(Credit Assignment Problem)。
提示词自动优化(APO)模块
如果你不想训练模型,只是想让 Agent 的 System Prompt 更加精准,APO 模块提供了一个"无模型"的优化路径:
from agent_lightning.algorithms import AutoPromptOptimizer
optimizer = AutoPromptOptimizer(
objective_metric="task_success_rate",
optimization_strategy="beam_search", # 束搜索
mutation_operators=["substitution", "insertion", "deletion"]
)
# 从失败案例中学习,自动优化 System Prompt
new_prompt = optimizer.optimize(
current_prompt=original_system_prompt,
failure_trajectories=failures,
success_trajectories=successes,
max_iterations=50
)
print(f"优化后的提示词:\n{new_prompt}")
APO 模块的工作原理类似于进化算法:它从成功案例和失败案例中提取模式,然后通过一系列变异操作(替换、插入、删除)生成新的候选提示词,再用验证集评估效果。每一轮迭代,表现更好的提示词会被保留,最终收敛到一个局部最优解。
监督微调(SFT)模块
当你收集到足够多的高质量轨迹后,可以使用 SFT 模块将它们转化为训练数据,对模型进行本地微调:
from agent_lightning.algorithms import SupervisedFineTuner, DatasetFormatter
formatter = DatasetFormatter(format="llama-instruct")
# 将轨迹转化为微调数据集
dataset = formatter.format_trajectories(
trajectories=selected_trajectories,
include_tool_calls=True, # 包含工具调用作为工具使用示例
include_reasoning=True # 包含推理过程
)
# 启动微调
tuner = SupervisedFineTuner(
base_model="meta-llama/Llama-3-8b-instruct",
dataset=dataset,
training_config={
"epochs": 3,
"learning_rate": 2e-5,
"warmup_ratio": 0.1,
"gradient_accumulation_steps": 4
}
)
fine_tuned_model = tuner.train()
2.4 LLM 代理与执行器(LLM Proxy & Agent Runner)
Agent Lightning 将 LLM Proxy 提升为架构中的一等公民,并重构了 Agent Runner 的设计。这一层的核心职责是高效、稳定地管理 LLM 调用,尤其是在大规模并发训练场景下。
from agent_lightning.execution import LLMRunner, ExecutionStrategy
# Client-Server 模式:适合分布式训练
runner = LLMRunner(
strategy=ExecutionStrategy.CLIENT_SERVER,
server_url="http://llm-gateway.internal:8080",
max_concurrent_requests=100,
retry_policy={"max_retries": 3, "backoff": "exponential"}
)
# 共享内存模式:适合单机多卡训练
runner = LLMRunner(
strategy=ExecutionStrategy.SHARED_MEMORY,
num_workers=4,
prefetch_buffer=16
)
# 执行大规模批处理
results = runner.batch_complete([
{"messages": [...], "temperature": 0.7},
{"messages": [...], "temperature": 0.7},
# ... 上千条请求
])
LLM Proxy 的一个关键特性是请求合并与批处理。在 RL 训练中,往往需要同时对大量相似的 prompt 进行推理。Proxy 会自动识别可合并的请求,通过 Continuous Batching 等技术最大化 GPU 利用率。
三、实战演练:从零接入 Agent Lightning
光说不练假把式。下面我们通过一个完整的示例,展示如何用 Agent Lightning 优化一个基于 LangChain 的客服 Agent。
3.1 场景设定
假设我们有一个客服 Agent,它需要:
- 理解用户的问题
- 在知识库中搜索相关信息
- 如果找不到答案,升级给人工客服
我们希望 Agent Lightning 帮助我们:
- 收集这个 Agent 的所有交互数据
- 识别哪些问题处理得好、哪些处理得差
- 优化 Agent 的提示词,提升回答质量
3.2 基础 Agent 实现
# 原始的 LangChain Agent(无需修改)
from langchain_openai import ChatOpenAI
from langchain.agents import AgentExecutor, create_react_agent
from langchain import hub
from langchain.tools import Tool
# 初始化 LLM
llm = ChatOpenAI(model="gpt-4", temperature=0.7)
# 定义工具
def search_knowledge_base(query: str) -> str:
"""搜索知识库"""
# 简化实现,实际应该连接真实的知识库
kb = {
"如何重置密码": "请访问 https://example.com/reset-password",
"账单查询": "请登录后访问 https://example.com/billing",
"人工客服": "请拨打 400-xxx-xxxx 或发送邮件至 support@example.com"
}
return kb.get(query, "NOT_FOUND")
search_tool = Tool(
name="search_knowledge_base",
func=search_knowledge_base,
description="当用户询问账户相关问题时使用此工具搜索知识库"
)
# 创建 Agent
prompt = hub.pull("hwchase17/react")
agent = create_react_agent(llm, [search_tool], prompt)
executor = AgentExecutor(agent=agent, tools=[search_tool], verbose=True)
# 测试运行
result = executor.invoke({"input": "如何重置密码?"})
print(result["output"])
3.3 接入 Agent Lightning
现在,我们用 Agent Lightning 包装这个现有的 Agent:
import agent_lightning as agl
from agent_lightning.integrations import LangChainAdapter
# 步骤1:初始化 Lightning Store
store = LightningStore()
# 步骤2:创建 Tracer 并包装 Agent
tracer = agl.Tracer(
store=store,
adapter=LangChainAdapter(),
sampling_rate=1.0 # 采集 100% 的数据,生产环境可适当降低
)
wrapped_executor = tracer.wrap(executor, name="customer-service-agent")
# 步骤3:定义奖励函数
def calculate_reward(trajectory):
"""自定义奖励计算逻辑"""
final_output = trajectory.attributes.get("output", "")
tool_calls = trajectory.attributes.get("tool_calls", [])
# 成功找到答案
if "https://example.com/reset-password" in final_output:
return 1.0
# 尝试使用工具但没找到
elif len(tool_calls) > 0 and "NOT_FOUND" in final_output:
return 0.5
# 直接升级人工(未使用工具)
else:
return 0.0
# 步骤4:注册奖励回调
tracer.register_reward_callback(calculate_reward)
# 步骤5:运行 Agent 并收集数据
conversations = [
"如何重置密码?",
"我想查一下账单",
"我要联系人工客服",
"你们公司在哪里?",
"怎么关闭账户?"
]
for user_input in conversations:
result = wrapped_executor.invoke({"input": user_input})
print(f"输入: {user_input}")
print(f"输出: {result['output']}")
print("-" * 50)
运行一段时间后,Lightning Store 中就积累了大量数据。接下来,我们用这些数据来优化 Agent。
3.4 分析与优化
# 步骤6:分析数据
from agent_lightning.analytics import TrajectoryAnalyzer
analyzer = TrajectoryAnalyzer(store=store)
# 统计整体表现
overall_stats = analyzer.overall_stats()
print(f"总对话数: {overall_stats['total_conversations']}")
print(f"平均奖励: {overall_stats['avg_reward']:.2f}")
print(f"成功率: {overall_stats['success_rate']:.1%}")
# 分析失败案例
failures = analyzer.get_trajectories_by_reward(threshold=0.3)
print(f"\n低质量对话数: {len(failures)}")
# 分析工具使用情况
tool_usage = analyzer.tool_usage_stats()
print(f"\n工具使用统计:")
for tool, count in tool_usage.items():
print(f" {tool}: {count} 次")
3.5 提示词优化(APO)
# 步骤7:使用 APO 优化 System Prompt
from agent_lightning.algorithms import AutoPromptOptimizer
# 获取高质量和低质量的轨迹
high_quality = store.get_trajectories_by_reward(min_reward=0.9)
low_quality = store.get_trajectories_by_reward(max_reward=0.4)
optimizer = AutoPromptOptimizer(
objective_metric="task_success_rate",
max_iterations=30
)
# 优化 Prompt
optimized_prompt = optimizer.optimize(
current_prompt=original_system_prompt,
failure_trajectories=low_quality,
success_trajectories=high_quality
)
print("=" * 60)
print("优化后的 System Prompt:")
print("=" * 60)
print(optimized_prompt)
3.6 强化学习训练(可选)
如果你的场景足够复杂,提示词优化已经不够用了,可以考虑使用 RL 进行更深层次的训练:
# 步骤8:强化学习训练
from agent_lightning.algorithms import LightningRL, TrajectoryConfig
# 配置 RL 训练
rl_config = TrajectoryConfig(
trajectory_aggregation="trajectory-level",
credit_assignment="gae",
gae_lambda=0.95,
gamma=0.99
)
rl_trainer = LightningRL(
model=llm,
config=rl_config,
store=store
)
# 从历史数据中学习
trajectories = store.get_all_trajectories()
trained_model = rl_trainer.train(
trajectories=trajectories,
epochs=5,
batch_size=8,
learning_rate=1e-5,
val_split=0.2 # 20% 的数据用于验证
)
# 部署新模型
llm_new = trained_model.deploy()
四、高级特性:选择性优化与多 Agent 协同
4.1 选择性优化:像外科手术一样精准
在 Agent Lightning 中,最强大的特性之一是选择性优化。你可以选择只对多 Agent 系统中的某一个或几个 Agent 进行训练,而不影响其他组件。
# 假设我们有一个复杂的多 Agent 系统
from multi_agent_system import planner_agent, executor_agent, reviewer_agent
# 创建三个独立的 Tracer
planner_tracer = agl.Tracer(store=store).wrap(planner_agent, name="planner")
executor_tracer = agl.Tracer(store=store).wrap(executor_agent, name="executor")
reviewer_tracer = agl.Tracer(store=store).wrap(reviewer_agent, name="reviewer")
# 运行系统
result = multi_agent_system.run(user_request)
# 只对 planner 进行优化(因为分析发现规划错误是主要瓶颈)
planner_trajectories = store.get_trajectories_by_agent("planner")
optimized_planner = LightningRL(model=planner_llm, config=rl_config).train(
trajectories=planner_trajectories
)
# 部署优化后的 planner,其他 Agent 保持不变
planner_agent.update_model(optimized_planner)
这种"外科手术式"的优化方式,在实际生产中非常重要:
- 风险隔离:修改一个 Agent 不会意外影响其他正常工作的组件
- 成本控制:训练 LLM 是昂贵的,只训练必要的部分可以大幅降低成本
- 迭代速度:可以快速验证特定优化的效果,而不需要全量重训
4.2 多 Agent 协同优化
除了单独优化,Agent Lightning 还支持跨 Agent 的协同优化。这对于处理多 Agent 之间的通信协议、协作策略等问题非常有用。
from agent_lightning.algorithms import CrossAgentOptimizer
cross_optimizer = CrossAgentOptimizer(
agents=["planner", "executor", "reviewer"],
store=store,
interaction_metric="task_completion_time" # 以任务完成时间为优化目标
)
# 优化 Agent 之间的交互策略
optimized_prompts = cross_optimizer.optimize(
interaction_trajectories=store.get_all_cross_agent_trajectories(),
objective="minimize_completion_time"
)
# 应用优化后的提示词
for agent_name, prompt in optimized_prompts.items():
update_agent_prompt(agent_name, prompt)
五、性能优化与生产部署
5.1 数据采集的性能开销
在实际生产环境中,数据采集本身也会带来一定的性能开销。Agent Lightning 提供了多种方式来控制这个开销:
# 配置采样率,只采集 10% 的数据
tracer = agl.Tracer(
store=store,
sampling_rate=0.1, # 只采集 10%
async_mode=True # 异步模式,减少对主流程的影响
)
# 或者基于特定条件采样
tracer = agl.Tracer(
store=store,
sampling_policy=lambda event: event.get("temperature", 0) > 0.5,
# 只采样 temperature > 0.5 的请求(更有探索性,质量可能更高)
async_mode=True,
buffer_size=1000 # 批量写入,减少 IO 开销
)
5.2 分布式训练架构
当数据量非常大时,单机训练已经无法满足需求。Agent Lightning 支持分布式训练:
from agent_lightning.distributed import RayTrainer, DataParallelConfig
trainer = RayTrainer(
num_workers=8,
num_gpus_per_worker=2,
model=your_model,
store=store,
config=DataParallelConfig(
gradient_checkpointing=True, # 节省显存
mixed_precision="bf16" # 使用 BF16 混合精度
)
)
# 分布式训练
results = trainer.train()
5.3 生产环境配置建议
基于生产环境的最佳实践,以下是一些关键配置建议:
# 推荐的生产环境配置
config = {
# 采集策略
"sampling_rate": 0.1, # 根据流量调整,流量大可以降低采样率
"async_mode": True,
"buffer_size": 500,
# 存储策略
"store_hot_ttl": "24h",
"store_warm_ttl": "7d",
"store_cold_backend": "s3",
# 训练策略
"train_batch_size": 16,
"train_learning_rate": 1e-5,
"train_epochs": 3,
"train_val_split": 0.2,
# 部署策略
"canary_percentage": 10, # 先用 10% 流量验证
"rollback_threshold": 0.05 # 成功率下降超过 5% 则回滚
}
六、与竞品的对比分析
6.1 Agent Lightning vs 传统 MLOps 工具
传统的 MLOps 工具(如 MLflow、Kubeflow)主要关注模型训练和部署的流程管理,它们并不是为 Agent 场景设计的。而 Agent Lightning 从一开始就针对 Agent 的特点进行了优化:
| 特性 | 传统 MLOps | Agent Lightning |
|---|---|---|
| 数据采集 | 需要手动埋点 | 零代码自动拦截 |
| 轨迹支持 | 不支持 | 原生支持多轮对话轨迹 |
| 奖励计算 | 需要自定义 | 内置多种奖励函数 |
| 多 Agent 支持 | 不支持 | 支持选择性优化 |
| 框架兼容性 | 通用 | 专门针对 Agent 框架优化 |
6.2 Agent Lightning vs 其他 Agent 优化方案
市面上也有一些其他的 Agent 优化方案,如 LangChain 的评估框架、AutoGen 的自我优化等。与它们相比,Agent Lightning 的优势在于:
- 更广泛的框架支持:不仅支持 LangChain 和 AutoGen,还支持 CrewAI、OpenAI Agent SDK、原生 Python 等
- 更丰富的优化算法:内置 RL、APO、SFT 三种优化方式,并支持用户自定义
- 更成熟的工程化:支持分布式训练、分层存储、生产部署等企业级特性
七、总结与展望
7.1 核心价值总结
Agent Lightning 的出现,标志着 AI Agent 开发从"构建时代"进入了"优化时代"。它的核心价值可以总结为三点:
- 框架无关性(Framework Agnostic):无论你用的是什么框架,Agent Lightning 都能无缝接入
- 零代码入侵(Zero-Code Intrusion):不需要修改现有代码,就能开启训练和优化
- 精准可控(Precise Control):可以选择性地优化特定的 Agent,而不影响整个系统
7.2 适用场景
Agent Lightning 特别适合以下场景:
- 企业级客服 Agent:需要不断优化回答质量,降低人工介入率
- 代码助手 Agent:需要学习团队编码规范,提升建议的相关性
- 多 Agent 协作系统:需要持续优化 Agent 之间的协作效率
- 垂直领域 Agent:需要针对特定领域数据进行专业化训练
7.3 未来展望
展望未来,Agent Lightning 很可能成为 AI Agent 开发的标准基础设施之一。随着更多优化算法(如 DPO、PPO 的变体)的加入,以及对更多 Agent 框架的支持,这个项目有望成为微软在 AI Agent 领域的又一标杆作品。
对于正在构建或使用 AI Agent 的开发者来说,现在正是学习和实践 Agent Lightning 的最佳时机。从"让 Agent 能跑"到"让 Agent 能进化",这可能是 AI 工程化进程中最为关键的一步。
参考资源
- GitHub 仓库:https://github.com/microsoft/agent-lightning
- 官方文档:https://microsoft.github.io/agent-lightning/
- Discord 社区:https://discord.gg/RYk7CdvDR7
- PyPI 包:https://pypi.org/project/agentlightning
本文代码示例基于 Agent Lightning v1.x 版本编写,部分 API 可能随版本更新而变化。建议读者以官方文档为准。