@Vtrivedy10: 我最喜欢的问题,昨天在AIE演讲中讨论了代码智能体的评估+改进循环基础设施和用户体验!有点偏见,但……
摘要
演讲者讨论了评估和改进代码智能体的重要性,强调了LangSmith与Harbor的集成,以提供在隔离环境中运行、追踪和改进智能体评估的统一栈。
查看缓存全文
缓存时间: 2026/07/04 14:51
我最喜欢的问题,关于这个编码智能体评估+改进循环的基础设施和用户体验,我昨天在 AIE 演讲中刚好讲过!有点偏袒,但 LangSmith 是评估和持续改进编码智能体的最佳场所,我们希望让它变得更好,所以欢迎任何反馈 :) 我们所有的编码智能体都在这里进行评估 —— 支持 Codex、Claude Code、OpenCode、Deep Agents、Pi 等,全部接入 Tracing,提供沙箱基础设施用于运行评估,还有指标和数据集来存储所有内容。在我看来,进行编码智能体评估最难的部分是:1. 拥有易于存储、更新、运行和共享编码智能体评估的基础设施 2. 对所有发布版本中智能体的行为和失败模式建立清晰的理解。你可以使用编码智能体 + langsmith-cli 来查看所有数据,如果团队想要托管服务,可以使用 LangSmith Engine 读取每次评估的每条跟踪记录,查看哪里出错,为你准备一份报告,并直接在代码中提出新修改来修复问题 3. 为你的编码任务构建更新更好的评估。有很多方法可以做到这一点,但我们发现,通过评估运行和生产环境中的现有失败模式进行查看,是一种非常扎实的方法,可以衡量当前智能体欠缺的地方,并将这些数据转化为改进。我们最近推出了 LangSmith 与 Harbor Framework 的整合,旨在让 LangSmith 用户更容易地随着时间的推移改进他们的编码智能体,内置了运行大规模容器化评估的基础设施,这样你可以完全复现你的任务并读取所有跟踪记录 https://langchain.com/blog/unified-stack-for-evaluating-agents… 我认为未来大多数评估将以环境的形式呈现,让智能体在其中完成实际工作,因为智能体正在处理更复杂的事情,我们需要评估的形状来反映它们与我们合作的方式。如果你有任何想体验的地方,很乐意聊聊。我们正在做大量工作,让编码智能体评估和改进的每个环节都更容易(因为团队会持续数月甚至数年地评估他们的编码智能体)。顺便提一句 —— 评估实际上就是智能体的训练数据。我们在评估中衡量和奖励的行为会直接转化为模型/智能体的行为,因为我们会对它们进行 hill-climb。所以我认为,没有什么比让构建好的评估变得更容易更重要的了 :) — # Harbor x LangChain:智能体评估的统一栈 来源:https://www.langchain.com/blog/unified-stack-for-evaluating-agents 随着智能体能力的提升,评估变得越来越困难。像 Claude Code、Pi (https://github.com/earendil-works/pi) 和 Deep Agents (https://github.com/langchain-ai/deepagents) 这样的智能体工具链(https://www.langchain.com/blog/the-anatomy-of-an-agent-harness)现在允许智能体访问整个计算机来读取文件、执行脚本、运行代码等等。每个智能体现在都需要在干净、可复现的环境中运行以完成特定任务(https://www.harborframework.com/docs/core-concepts#task)。评估长期运行、有状态的智能体需要一个新的评估运行器。Harbor (https://www.harborframework.com/docs) 已成为这个领域的行业领导者。在这篇博客中,我们首先解释为什么每个运行智能体评估的人都应该了解 Harbor,然后展示如何将 Deep Agents、LangSmith Sandboxes 和 LangSmith Experiments 集成到 Harbor 中。我们最终需要在真实、可重复、隔离的环境中并行运行智能体,并在最后进行确定性检查。Harbor (https://harborframework.com/docs) 解决了这个问题,并且现在直接与 Deep Agents、LangSmith Sandboxes 和 LangSmith Observability 集成。 ## Harbor 的工作原理 Harbor 是一个评估工具链。你需要提供三样东西: - 你的智能体 - 你的数据集 - 你的沙箱 每个数据集 (https://www.harborframework.com/docs/core-concepts#dataset) 包含任务 (https://www.harborframework.com/docs/core-concepts#task),每个任务包括: - 环境(Dockerfile / Docker Compose YAML) - 指令(Markdown) - 评估脚本(test.sh (http://test.sh/)) 与更简单的 LLM 评估相比,主要有两个区别: - 智能体运行的环境非常重要 —— 重要到需要作为任务的一部分明确提出来!更简单的 LLM 评估不需要环境 —— 它们只需要调用 LLM。智能体需要! - 通过脚本对智能体进行评判。智能体通常会生成其他文件或以某种方式修改状态。仅仅查看智能体的最终响应是不够的 —— 你需要查看它在此过程中创建的产物。 LangChain 在三个地方与 Harbor 集成。我们与 Deep Agents (https://github.com/langchain-ai/deepagents) 集成,这样你构建的任何深度智能体都可以在 Harbor 的沙箱环境中运行。我们与 LangSmith Sandboxes (https://docs.langchain.com/langsmith/sandboxes) 集成,这样 Harbor 可以在 LangSmith 沙箱中运行每个任务,给每次运行一个干净的机器。我们与 LangSmith Observability (https://docs.langchain.com/langsmith/observability) 集成,这是一个评估平台,你可以在其中详细查看结果:每个作业 (https://www.harborframework.com/docs/core-concepts#job) 都会作为数据集 (https://www.harborframework.com/docs/core-concepts#dataset) 和实验存储,并附有智能体在支持时生成的跟踪记录。 ### 将 LangChain 智能体与 Harbor 统一 你通过 Harbor 内置的 langgraph 智能体将自定义智能体接入 Harbor,使用 --agent langgraph 选择。它可以运行任何 LangGraph 应用,包括 Deep Agents。Harbor 将 langgraph.json 视为注册表。它列出智能体所需的依赖,并将图名称映射到构建它的函数: json { "dependencies": [ "deepagents>=0.6.10,<0.7.0", "langchain-fireworks>=1.3.1,<1.4.0" ], "graphs": { "deep_agent": "./agent.py:make_graph" } } 这里 deep_agent 解析为 agent.py 中的 make_graph,它构建你的 Deep Agent 并返回编译后的图,Harbor 会调用它: python from deepagents import create_deep_agent from deepagents.backends import LocalShellBackend def make_graph(): return create_deep_agent( model="fireworks:accounts/fireworks/models/glm-5p2", backend=LocalShellBackend(), ) 这是你需要编写的唯一粘合代码。你的智能体仍然是你的代码;make_graph 只是 Harbor 调用的入口点。默认情况下,create_deep_agent 将文件保存在一个内存中的虚拟文件系统中,永远不会触及沙箱,因此将其与 LocalShellBackend 配对,可以给智能体提供真实文件和 shell 访问权限,以便在 Harbor 运行它的环境中操作。 对于每次试验 (https://www.harborframework.com/docs/core-concepts#trial),Harbor 都会将这个智能体复制到该试验的沙箱中,将 langgraph.json 的依赖安装到该沙箱中新的虚拟环境中,然后在容器内部运行这个图。每个沙箱都有自己的副本,因此试验之间不会共享状态,你的智能体在完全隔离的环境中运行。 附注: 一个图可以硬编码其模型,但入口也可以是一个工厂函数,Harbor 在运行时配置中调用它。Harbor 将 --model 选择的模型放入 configurable.model,因此上面的工厂函数保持与模型无关,并直接将从命令行传递的任何内容交给 create_deep_agent。 python from deepagents import create_deep_agent from deepagents.backends import LocalShellBackend def make_graph(config): return create_deep_agent( model=config["configurable"]["model"], backend=LocalShellBackend(), ) ### 将 LangSmith 沙箱与 Harbor 统一 在基于云的沙箱中运行评估可以让你水平扩展以获得更快的反馈 —— 一次运行数百次试验 (https://www.harborframework.com/docs/core-concepts#trial),而不是一台机器串行处理。而且沙箱是一个受限的执行环境,这正是长期运行、与环境交互的智能体所需要的:一个干净、隔离的场所,不会影响外部任何东西。 每个试验 (https://www.harborframework.com/docs/core-concepts#trial) 都在自己的云沙箱中运行。你提供LangSmith 沙箱 (https://docs.langchain.com/langsmith/sandboxes),通过 -e langsmith 选择,但环境是可插拔的。Harbor 也支持 Daytona、Docker、Modal 和 E2B,所有这些都可以通过同一个 -e 标志互换。切换提供商不会影响你的智能体、数据集或验证器。 试验 (https://www.harborframework.com/docs/core-concepts#trial) 是工作的原子单元:你的智能体在一个任务 (https://www.harborframework.com/docs/core-concepts#task) 上运行一次。由于智能体是非确定性的,你通常每个任务运行多次;n_attempts 是 Harbor 重复每个任务的次数,并平均分数,这样一次幸运或不幸的运行就不会决定结果。 因此,你的整个作业 (https://www.harborframework.com/docs/core-concepts#job) 是 n_attempts × tasks:每个任务运行 n_attempts 次,每次重复都是自己的试验。Harbor 协调这一切。 对于每次试验 (https://www.harborframework.com/docs/core-concepts#trial),Harbor 都会配置一个全新的沙箱,并将该次运行所需的所有内容复制进去:你的智能体代码、任务 (https://www.harborframework.com/docs/core-concepts#task)(缓存到磁盘,然后加载到沙箱 VM 中),以及运行开始时需要的任何起始文件。然后它让智能体针对指令运行,运行验证器,并记录结果。Harbor 将多次试验的结果平均为一个作业结果,并带有关心指标。 ### 将 LangSmith Observability 与 Harbor 统一 harbor-langsmith 集成为 Harbor 带来了对 LangSmith 追踪的一流支持,并将日志记录到数据集 (https://www.harborframework.com/docs/core-concepts#dataset) 和实验。使用单个标志 --plugin langsmith 启用它。然后 Harbor 将每个作业记录到 LangSmith:它同步数据集,创建一个实验,并为每次试验记录一次运行,并将验证器的奖励作为反馈记录。如果被测智能体支持 LangSmith 追踪,这些追踪会直接附加到实验上 —— 这样你就可以在分数旁边获得完整的逐步轨迹。如果它不支持追踪,你仍然可以获得数据集、实验、结果和反馈。 在数据集与实验下,我们可以查看所有正在使用的活动数据集。 实验是在给定数据集上的完整运行。要查看特定实验及其各自的分数和统计数据,请点击进入。 我们相信将追踪集成到评估中可以让你进一步优化评估,从而更好地理解和改进你的智能体。分数告诉你试验是否通过;追踪告诉你为什么。 ## 结果:智能体的完整评估栈 综上所述,这是一个完整的智能体评估栈,每一层都做好一件事: - Harbor —— 编排试验的评估工具链。 - Deep Agents —— 用于构建被测智能体。 - LangSmith 沙箱 —— 隔离的云执行环境。 - LangSmith —— 数据集、实验、追踪和分数的记录系统。 而你带来的部分很小: - 你的智能体,带或不带追踪。 - 你的数据集,远程来自注册表或本地磁盘。 - 你的云沙箱 —— LangSmith,使用 -e langsmith。 - 你的 UI 视图 —— --plugin langsmith。 如果你有 LangSmith 账号和一个数据集,你可以通过安装带有 langsmith 附加组件的 Harbor 来尝试整个过程,它同时提供 LangSmith 沙箱环境和评估插件。然后设置你的 LangSmith 和模型凭据,并启用追踪,以便智能体的追踪附加到实验: bash pip install "harbor[langsmith]" export LANGSMITH_API_KEY="" export LANGSMITH_PROFILE=prod export LANGSMITH_TRACING=true export LANGSMITH_PROJECT=harbor-deepagents export FIREWORKS_API_KEY="" bash harbor run \ --agent langgraph \ --model fireworks:accounts/fireworks/models/glm-5p2 \ # 智能体 --ak project_path=./deep-agent --ak graph=deep_agent \ -d [email protected] \ # 任务数据集 -e langsmith \ # 云环境 --plugin langsmith 阅读 Harbor 集成文档 (https://docs.langchain.com/langsmith/harbor-integrations) 开始使用。有关在 Harbor 中运行评估的更多信息,请参阅运行评估 (https://www.harborframework.com/docs/run-jobs/run-evals)。 > Michael Thiessen (@MichaelThiessen): > @Vtrivedy10 你知道有哪些适用于编码智能体的评估平台吗? > > 除非我眼瞎,否则一切都看起来是面向产品智能体的。 > > 我需要一个能用于复杂研发任务的编码智能体的东西。 > > (目前正在自己构建,以便我们能够正确评估我们的编码智能体)
相似文章
@LangChain: 改进智能体 旧方法:手动读取追踪、寻找模式、编写评估、创建修复。更好的办法…
这条推文对比了改进AI智能体的旧手动方法与使用LangSmith Engine的新自动化方法,后者循环进行追踪、评估和修复。
@akshay_pachaar: Karpathy 说过一句你以后会后悔没在意的话:“你仍然要对你的软件负责,跟以前一样。你 n…
详细演示了如何使用 Google 的 Agents CLI 评估技能来检测和修复 RAG 代理中的“vibe coding”漏洞,并通过一个真实示例说明 Claude Code 如何帮助创建自定义评分标准,并将测试分数从 19/33 提高到 30/33。
@0xMovez: 前谷歌工程师在20分钟内解释了AI代理循环、工具框架和评估 - 比500美元的课程更好。追踪每次运行→…
一位前谷歌工程师在20分钟内解释了AI代理循环、工具框架和评估,提供了一个通过追踪、用LLM判断、诊断、修复和部署进行自我改进的框架。
@Vtrivedy10: 我最喜欢的观点:越早将你的 agent 视为一个可衡量和可改进的系统,你就越能……
作者强调在开发早期将 AI agent 视为可衡量系统的重要性,并将评估(evals)作为改进和实现生产就绪的主要基础。
迈向自动化Eval Engineering(5分钟阅读)
LangChain发布了Eval Engineering Skill,通过映射智能体仓库和生产跟踪数据自动生成可执行的Harbor评估,并采用迭代式用户访谈流程以优化评估。