





从最基本的形式来看, Agent 由三个核心组件组成:
1. 模型:驱动 Agent 推理和决策的大语言模型。
2. 工具:Agent 可以用来采取行动的外部函数或 API。
3. 指令:明确界定 Agent 行为的准则和约束。
以下是使用 OpenAI 的 Agent 软件开发工具包(SDK)时在代码中的体现。你也可以使用自己喜欢的库或从头开始实现相同的概念。



配置指令
高质量的指令对于任何由大语言模型驱动的应用都至关重要,对于 Agent 来说尤其如此。清晰的指令可以减少歧义,提高 Agent 的决策能力,从而使工作流执行更加顺畅,减少错误。
Agent 指令的最佳实践:
1. 利用现有文档:在整理流程模板时,可以直接参考你现有的操作手册、客服话术或公司政策文档,把它们改写成适合大模型理解的版本。
2. 用提示词给 Agent 分解任务:从密集的资源中提供更小、更清晰的步骤有助于减少歧义,使模型更好地遵循指令。
3. 定义明确的行动:确保流程模板中的每个步骤都对应一个特定的行动或输出。例如,一个步骤可能指示 Agent 向用户询问订单号或调用 API 以检索账户详细信息。明确行动可以减少解释错误的空间。
4. 考虑特殊情况(Corner Case):在真实使用中,用户经常会提供不完整的信息,或者问一些意料之外的问题,这时系统就需要做出判断:下一步该怎么走。一个设计良好的流程,应该提前考虑这些“常见偏差”或“异常情况”,并在指令里说明:如果遇到这种情况,可以怎么处理——比如加入条件判断,或者设置一个“备用步骤”,在缺少某项信息时也能继续运行。
你可以使用先进的模型,如 o1 或 o3 – mini,从现有文档中自动生成指令。以下是一个说明这种方法的示例 Prompt:

一般来说,编排模式分为两类:
1. 单智能体系统:由一个配备了适当工具和指令的模型在循环中执行工作流。
2. 多智能体系统:在多个互相协调的 Agent 之间执行工作流。
让我们详细探讨每种模式。
单智能体系统
单个 Agent 可以通过逐步添加工具来处理许多任务,这样可以控制复杂性,简化评估和维护。每个新工具都能扩展其能力,而不会过早地一定要编排多个 Agents。

每个编排方法都需要“运行”的概念,通常实现为一个循环,让智能体一直运行,直到满足退出条件。常见的退出条件包括工具调用、特定的结构化输出、错误或达到最大轮数。
例如,在 Agents SDK 中,使用 `Runner.run()` 方法启动 Agent,该方法会循环执行,直到满足以下条件之一:
1. 调用了最终输出的工具,由特定的输出类型定义。
2. 模型返回了没有任何工具调用的响应(例如,直接的用户消息)。

这种循环概念是 Agent 功能的核心。在多智能体系统中,可以有一系列的工具调用和 Agent 之间的交接,但允许模型运行多个步骤,直到满足退出条件。
一种在不使用多 Agent 架构的前提下,管理复杂流程的有效方法,就是使用提示词模板(prompt templates)。与其为每一个具体场景都写一套新的提示,不如使用一套通用的基础模板,然后通过填写不同的“变量”来适配不同需求。
这种做法非常灵活,能够适应多种上下文,而且大大降低了维护成本和测试难度。当有新的使用场景出现时,只需要更新变量,而不必从头重写整个流程。

我们的一般建议是:优先充分发挥单智能体系统的能力。
虽然引入多个 Agents 有助于更清晰地划分任务概念,但也会带来额外的复杂度和系统开销,因此在多数情况下,一个 Agent 配合合适的工具就已足够。
不过,在面对流程复杂度较高的场景时,将提示词和工具合理拆分到多个 Agents 中,可以显著提升系统的性能和可扩展性。
如果你发现现有 Agent 无法正确执行复杂指令,或者频繁调用错误的工具,可能就需要将任务进一步细化,创建更加明确分工的 Agent。
以下是常见需要拆分 Agent 的两个参考标准:
1. 逻辑复杂:当提示词中包含大量的条件判断(如多个 if-then-else 分支),或模板逻辑变得难以维护时,建议按逻辑片段将任务拆分给不同 Agents 分别处理。
这种模式带来的好处是:用户体验统一顺畅,每个专业能力都能按需随时调用。
管理者模式非常适合这样的场景:你希望由一个 Agent 负责控制整个流程的执行,并且它能直接与用户交互。

例如,你可以通过 Agents SDK 如此实现:


有些框架采用声明式方式,要求开发者在一开始就明确地定义出流程中的每一个分支、循环和条件判断——通常通过由节点(Agent)和边(代表确定性或动态任务交接)构成的图来描述整个流程。
这种方式虽然可视化效果好,但随着流程变得更动态、更复杂,维护成本会迅速上升。开发者可能还需要额外学习一些专用领域语言(DSL),使用门槛较高。
相比之下,Agents SDK 采用的是更灵活的代码优先(code-first)方式。开发者可以直接用熟悉的编程结构来表达流程逻辑,无需预先定义完整的图结构,从而实现更加动态、可扩展的 Agent 编排能力。



在上面的例子中,用户发来的消息会先进入一个任务分发 Agent(triage_agent),会根据用户的内容来决定要把任务交给谁。
比如发现用户是在咨询订单问题,它就会把对话“转给”专门负责订单处理的 order_management_agent,由它继续接手并处理后续流程。
这种做法特别适合那些希望先判断用户需求,再精准分流到合适 Agent 的场景。你还可以让处理订单的 Agent,在处理完后把对话再交还回来,由任务分发 Agent 继续跟进,比如结束语、满意度收集等。
防护
在构建基于大模型的系统时,Guardrails(护栏机制)就像 AI 的“安全防护栏”,可以帮助我们防止隐私泄露(比如提示词被暴露)、不当言论(比如说出与品牌不符的内容)等风险。一个护栏可能挡不住所有问题,但多个不同类型的护栏配合使用,就能构建出更稳健的防线。常见做法包括结合大模型本身的限制机制、基于规则的检查(比如正则表达式),再加上像 OpenAI Moderation API 这样的内容审核工具。
同时,护栏不能单打独斗,最好与身份认证、权限控制、标准安全策略等传统技术一起搭配使用,形成一套“多层防御网”。
防护的类型

构建护栏
首先,针对您用例中已知的风险点设置护栏,然后在实践中遇到新的边缘案例或系统失效时,再逐步增加额外的防护层。我们发现以下实践经验颇为有效:
1. 首要关注数据隐私和内容安全。
2. 根据实际运行中遇到的边缘案例和失败情况,不断补充新的护栏。
3. 在保障安全的同时,也要兼顾用户体验,随着 Agent 的迭代优化护栏策略。
例如,以下代码展示了如何在 Agents SDK 中设置护栏:


Agents SDK 把 Guardrails 当作核心功能来看待,默认由 Agent 主动生成响应,同时由多条护栏机制在后台并行运行,一旦发现有违规,就会立即触发异常。这些护栏可以是函数或专门的 Agent,用于阻止越狱、过滤敏感词、识别不相关内容、执行黑名单或风险分类等。比如用户输入一道数学题,系统会先“乐观执行”,但如果触发了 math_homework_tripwire
这种护栏,就会立即拦截。
人工介入机制
除了系统自动拦截外,还要为人工介入(human intervention)预留机制。当 Agent 无法判断或完成任务时,能及时把控制权交给人工,这样既能保障体验,又能防止错误扩大。特别是在系统上线初期,更需要人工介入来识别问题、积累案例、持续优化。
常见的人工介入触发点有两种:
1. 失败太多:比如连续几次都无法理解用户意图,就应转交人工处理;
2. 风险太高:比如取消订单、批准大额退款等敏感操作,建议必须有人把关。

Agent 代表了工作流自动化的一个新时代。它们能够在信息不明确的情况下进行判断,跨系统调用工具,并以高度自主的方式完成多步骤任务。
相比那些功能比较简单的大模型应用,Agent 能够从头到尾执行整个流程,非常适合需要复杂决策、处理非结构化数据,或者依赖传统规则系统的场景。
要打造一个稳定可靠的 Agent,第一步就是打好基础:用能力强的大模型,配上定义清晰的工具,再写出结构明确、指令清楚的任务描述。根据业务的复杂程度选择合适的编排模式:一开始可以只用一个 Agent,等需要时再扩展成多 Agent 协同的系统。
在每个阶段,护栏机制(Guardrails)都很关键——无论是输入内容的检查、工具的调用,还是后期需要人工接手,都能帮助系统更安全、更稳定地上线运行。
成功部署 Agent 系统,并不需要一口气做完。你可以先从小流程开始,先让真实用户用起来验证效果,然后再逐步拓展 Agent 的能力和范围。只要基础扎实、方法对头,再通过不断优化,Agent 最终不仅能自动完成任务,还能灵活地自动化整个工作流,为业务真正带来价值。
如果你正考虑在公司里引入 Agent,或者准备开始第一次上线试用,也可以随时联系特工宇宙 AgentUniverse。
我们的团队可以提供专业经验、指导建议和实操支持,帮你顺利推进,真正落地成功。

