
用一个玩具式提示词测试智能体,能告诉你的信息非常有限。而让它在装满邮件的收件箱、满是真实工单的帮助台,以及一个会走动的时钟面前接受测试,你能了解到的就多得多。这正是 AgentEnv Framework 的用途所在,而从今天起, Pydantic AI 现已作为其支持的智能体之一发布。
AgentEnv Framework 是什么
AgentEnv Framework 是 Scale AI 的开源框架,用于构建环境,让智能体在贴近真实的应用程序、数据和多步骤任务上进行练习。环境是一个可组合的世界:电子邮件、Slack、帮助台,并带有种子数据。任务是一个步骤图,它会部署环境、部署智能体、向其发送提示,并验证结果。任务会固定其版本,因此重新运行可以复现原始结果。环境通过 MCP 暴露其工具,智能体则通过 A2A 连接。
一个环境可以承载许多任务和许多智能体,这使它成为在同等条件下比较智能体的理想场所。
AgentEnv 中的 Pydantic AI
该 pydantic-ai 智能体在进程内运行 Pydantic AI,而不是在包装后的 CLI 后面运行。每个任务都是一次 Agent 运行,并带有 Coder 能力,来自 Pydantic AI Harness,也就是 CLAI 所构建于其上的同一套编码工具: shell, read_file, write_file, edit_file, list_files, grep,以及 delegate_task。Shell 命令看到的是 PATH, HOME,以及区域设置,而永远看不到模型密钥。
它可以与任何 OpenAI 兼容端点通信。在模型名称前加上 vllm: 前缀即可选用 Pydantic AI 的 vLLM provider,它会按照 vLLM 服务器所期望的方式,针对模型所属系列(Qwen、DeepSeek、GLM、Llama 等)来构造请求。每个上下文都映射到一个对话,保存在智能体自己的磁盘上,因此只要智能体还在运行,该上下文中的后续任务就会延续这个对话。要把它迁移到新实例,需走快照流程,该流程会保存并恢复对话,并在被要求时也恢复工作区。MCP 服务器、技能、对等智能体和实时轨迹都通过标准 A2A 扩展接入。
如果你已经在生产环境中运行 Pydantic AI,那么这就是同一个智能体,只是现在它运行在一个你可以评分的沙箱中。Harness 是 Pydantic AI 智能体背后的能力库,也就是最近采用了 You.com 网页搜索与研究.
试用
安装该框架并确认其可以运行:
uv tool install agentenv-framework
agent-env run hello
默认情况下不会配置任何内容,因此请为它提供一个模型端点,并将 Pydantic AI 设为每个未指定智能体的任务步骤的默认智能体。该端点可以是任何支持 OpenAI 聊天补全 API 的服务。本示例使用 Logfire 网关 。改为在 Gateway、Settings、Telemetry 下开启遥测并选择一个项目,此后智能体使用 Gateway API 密钥发起的每次模型调用都会在 Pydantic Logfire ,智能体本身无需任何改动。在 URL 中, openai 是提供商路由,而 us 是 Gateway 区域。Gateway 的 Connect 页面会为你的组织生成这个基础 URL,因此请从那里复制:欧盟组织会得到 gateway-eu.pydantic.dev。保持原样,不要添加 /v1 后缀,因为智能体会追加 /chat/completions 本身:
# .agentenv/config.toml
[model]
base_url = "https://gateway-us.pydantic.dev/proxy/openai"
api_key = "env:PYDANTIC_AI_GATEWAY_API_KEY"
[model.roles]
agent = "gpt-5.5"
[agents]
default_a2a_agent_id = "pydantic-ai"
导出 PYDANTIC_AI_GATEWAY_API_KEY 在运行任何内容之前。 env: 会在运行时读取它。其他端点已在 模型提供商文档.
该框架附带了一个小型示例包, mail-mcp:一个 MCP 服务器,带有固定的三封邮件收件箱,其中一封是发票,还有一个验证器用于检查能否找到该发票。它的任务只是部署环境并运行验证器。复制该 bundle,然后通过添加两个步骤将 Pydantic AI 接入循环: tasks/smoke.json:
[
{"id": "env", "type": "deploy_env", "env_id": "mail"},
{"id": "assistant", "type": "deploy_agent", "env_ids": ["mail"], "a2a_agent_id": "pydantic-ai", "agent_name": "assistant", "depends_on": [{"task_step_id": "env"}]},
{"id": "find-invoice", "type": "prompt_agent", "agent_name": "assistant", "prompt_id": "find-invoice", "prompt": "Find the invoice in the inbox and tell me who sent it.", "depends_on": [{"task_step_id": "assistant"}]},
{"id": "finds-the-invoice", "type": "env_outcome_verifier", "env_id": "mail", "file_artifact_id": "check_mail", "verifier_id": "finds-the-invoice", "depends_on": [{"task_step_id": "find-invoice"}]}
]
运行副本:
agent-env run ./my-mail
智能体通过 MCP 获取收件箱的 search_emails 通过 MCP 调用工具,其回复和完整轨迹会进入本次运行的输出,验证器对结果打分,而每次模型请求都是 Logfire首次运行还会构建该环境所部署的网关,这需要几分钟时间。
想看看 Pydantic AI 在同一任务上与另一个智能体相比表现如何?把 a2a_agent_id 改为 claude-code 并再次运行它。相同的环境、相同的提示词、相同的验证器。不同的智能体。
为什么这很重要
固定数据集上的评估 捕捉回归问题。它们会漏掉那个因为昨天收件箱看起来不一样而把正确的邮件发给错误对象的智能体。一个带有可复现种子的真实环境能捕捉到这一点,而且它的验证器会说明哪里出了问题。这正是我们希望为 Pydantic AI 建立的反馈循环。每个智能体框架都应该有一个。
该智能体运行在 AgentEnv Framework 仓库所有受支持智能体的文档都在这里。 这里。试试看,然后告诉我们哪里出了问题。
在 Google 搜索中查看更多来自 Pydantic 的内容
将 Pydantic 添加为首选来源,以便更容易找到我们的最新文章。
在 Google 上将 Pydantic 选为首选来源(在新标签页中打开)准备好看看你的智能体实际在做什么了吗?
免费开始 免费开始 联系我们 联系我们探索我们的开源软件包