AI Agents¶
本篇文章主要阅读收集关于ai agent的相关内容,调研学习为目的。
Building effective agents¶
Workflow and Agents¶
- Workflow: 预先定义好执行路径和orchestrator,在每个环节调用LLMs和tools
- Agents: 没有预先定义的路径,LLMs动态指导处理和工具调用,LLM控制如何完成任务
之前我经常提的,SOP其实是让agents的模型按照一套固定流程“自主”完成任务,在这个场景下,做成workflow会更好么,需要更多的evaluation。
文章建议保持解决方案简洁,只在迫不得已时引入复杂度。
When building applications with LLMs, we recommend finding the simplest solution possible, and only increasing complexity when needed.
agents系统主要在latency, cost 和系统表现之间做tradeoff。
当问题变得复杂的时候,workflow确定性和一致性更高,而agents面对灵活性和需要做决定的规模场景下表现更好。
在规模化处理问题的时候,每个需要决策的环节都让人参与来做决定是不现实的,所以这里引入模型这个不确定的要素对解决问题是必要的,也是workflow解决不了的。
Framework Usages¶
有很多agents framework, 这些框架把agents的基本能力做了封装,也创建了新的封装.
新的封装带来了新的复杂度,anthropic的作者(2024年)建议实现自己的agents,直接处理LLM APIs,实现代码并不是一件复杂的事情。这里我觉得要具体的来看,一个常见的问题是框架提供了开箱即用的功能,并不需要处理这些琐碎的事情。另外就是“你做的再好还能做的过claude code/codex”这个说法。
我现在的想法主要是如何去测试下面的agents实现,因为对于claude agent SDK来说,下方的claude code并不一定是最适合特定场景的engine,具体见我关于测评的思路论述。
Blocks and workflows¶
这里引入了一堆概念.
- block: 增强版LLM
简单来说,就是给LLM装了查询,工具调用和memory机制的一个集合。
The basic building block of agentic systems is an LLM enhanced with augmentations such as retrieval, tools, and memory.

- workflow: 链式prompt
把任务拆成一系列的子步骤,然后不断的用LLM来处理,通过gate程序化验证结果觉得是否流转。这里就是workflow,之前我在我们组的agents也做过这个内容。
Prompt chaining decomposes a task into a sequence of steps, where each LLM call processes the output of the previous one.

- Workflow Routing
这个也比较常见,就根据情况来分发下面具体使用的agents.
Routing classifies an input and directs it to a specialized followup task.

- Workflow Parallelization
这里主要讲述如何并发的触发多个内容,主要目标是为了加速,然后后面放一个aggregator 就可以了。注意这里的tasks是predefined。

- Workflow Orchestrator-workers
这个也是开启了多个LLM calls来做,需要注意的是这个和并发的不同,因为他不预先定义潜在的任务类型。

- Workflow: Evaluator-optimizer
当有明确的可量化的评价体系的时候,可以在llm generator和evaluator之间反复流转,让内容持续变好。
In the evaluator-optimizer workflow, one LLM call generates a response while another provides evaluation and feedback in a loop.

Agents¶
Workflow 需要人来设计流程,根据场景的不同流程可能会很复杂,主要的复杂度在于人。而agents就需要模型的能力了,作者提到主要取决于理解复杂任务,推理和计划能力。
Agents are emerging in production as LLMs mature in key capabilities—understanding complex inputs, engaging in reasoning and planning, using tools reliably, and recovering from errors.
对于agent本身的实现是很简单的,正如我之前读codex的代码,主要复杂的其实是如何和环境environment打交道,而不是处理LLM的决定等信息。

agent的应用场景是(1) 执行步骤不确定; (2) 无法预测固定路径; 时可以参考的,因为这个时候workflow无法解决这种复杂的场景,因为workflow本质上就是尝试把执行放在一个确定的路径上执行,这是workflow本身的特性。
Demystifying evals for AI agents¶
https://www.anthropic.com/engineering/demystifying-evals-for-ai-agents
本篇内容主要阐述如何对agents做eval,尤其是对多步骤,对外部产生影响的内容做测试。
Eval Terminology¶
- task: 测试的基本单位,定义输入和成功的标准
- trail: 每次跑一次测试的行为叫做trial,通常来说会跑多个trail来得到一致性更高的场景
- garder: 从某些标准给agents表现评分,一个task会有多个graders,grader里面会有多个assertions(或者叫做checks)
- transcript(trace/trajectory): trial的完整记录
- outcome: 环境的最终状态
- evaluation harness: 跑e2e eval的技术设施
- agent harness: 让一个模型作为agents来跑,比如说claude code就是agent harness,
- evaluation suite: 用来衡量特定能力行为的tasks集合

Graders and Evals¶
文章列出了很多graders,比如Code-based graders;Model-based graders;Human graders. 具体的不详细列举,但anyway这些都是一些评分的方法。
Evals 可以分为两种,测试功能本身以及regression的测试,没什么新奇的。
Evaluating 具体的agents¶
-
code agents benchmark: SWE-bench Verified and Terminal-Bench
-
Conversational agents: 对话agents有自指的问题, 也就是说和他对话本身也是测试的一部分,所以说需要第二个LLM来扮演用户,这个方式在deepeval框架里也有体现。
the quality of the interaction itself is part of what you're evaluating.
测试集合的话用 \(\tau\)-Bench and its successor, \(\tau^2\)-Bench.
- Research agents: 研究型agents的主要问题在于判断标准难,只能通过相对task的程度来判断outcome是否是好的,然后不同的人对如何定义是好的也有不同。测试集合比如 BrowseComp.
computer use agents 略过,不是主要关注对象。
不确定性的处理¶
LLM本身就意味着不确定性,所以说不同run之间差距可能会很大;比如说一个agent可能第一次90%成功,第二次30%成功。为了衡量这种不确定性的分布,通常来说有几种办法:
- pass@k: measures the likelihood that an agent gets at least one correct solution in k attempts.
- pass^k: measures the probability that all k trials succeed.
pass@k来衡量是否有一次成功,pass^k 关注行为是否一致。
构建eval实践¶
这里有很多步骤,如图:

这里列出比较重要的是:
-
构建平衡的测试,描述should和shouldn't发生的行为,这样可以避免class-imbalanced eval.
-
选graders的一些建议,etc, 但工程上可能重用已有实现,并且关注真正实践效果。
更多evals¶
- Automated evals
- Production monitoring
- A/B testng
- User feedback
- Manual transcript review
- Systematic human studies
作者的思路是通过多层Eval框架(The Swiss Cheese of Quality), 尽可能多的问题会被避免。
这里具体的了解方向仍然是如何构建工程手段, 例如如何在live埋点然后做分析反馈,如何做A/B测试等。