软件一直以来都是一种反应型系统。
当你点击一个按钮时,软件会作出响应;当你调用一个API时,它会返回数据。
即便是最复杂的系统,历史上也一直依赖于明确的指令和严格定义的工作流程。但这种模式正在逐渐被打破。
现在有一类新的软件出现了——它们不仅会做出反应,还会主动采取行动。
这一变化并非表面上的调整,它从根本上改变了软件的设计方式、系统的运作机制,以及工作的执行过程。
开发者不再需要为工作流程的每一步都编写代码,而是先定义目标、约束条件及所需的工具,然后让软件自己去确定具体的执行路径。这样一来,软件的行为更像是一个“操作者”,而不仅仅是一个“功能模块”。
在本文中,你将了解到人工智能代理究竟是什么,它们与传统软件系统有何不同,以及为什么它们正在代表着现代软件设计领域的一场重大变革。
本文专为开发者、技术创始人、工程经理,以及任何正在开发包含人工智能组件的软件系统的读者而编写。
你不需要具备构建人工智能代理的先验经验,但熟悉Python的基本语法以及大型语言模型的话会很有帮助。
我们将涵盖的内容:
从确定性系统到目标驱动型执行
传统的软件系统都是确定性系统。在给定相同输入的情况下,它们总会产生相同的输出结果。
这种可预测性使得这些系统十分可靠,但同时也限制了它们的发展——任何工作流程中的变化都意味着需要编写新的代码、设置新的条件或添加新的处理步骤。
而人工智能代理则采用了不同的运作模式。它们是以目标为导向的,而非受指令驱动的。你只需要定义目标并提供相应的工具,智能代理就会自行决定如何实现这些目标,甚至可能实时进行调整。
以总结一组文档并发送电子邮件这样的简单任务为例,在传统系统中,你需要编写一系列代码来完成文件的加载、处理、格式化以及邮件发送等步骤——每一个环节都需要被明确地编码实现。
使用智能体后,系统的结构可能会变成这样:
from openai import OpenAI
client = OpenAI()
goal = "总结/report们中的所有文档,并向领导团队发送一份简明的摘要"
tools = [
"read_files",
"summarize_text",
"send_email"
]
response = clientresponses.create(
model="gpt-4.1",
input=f"目标:{goal}。可用的工具:{tools}"
)
print(response.output_text)
这个例子虽然简化了,但确实体现了这种变化:开发者定义智能体的目标与功能,而智能体则负责具体的执行工作。
AI智能体的核心组成部分
要理解智能体是如何工作的,将其拆分为各个组成部分会很有帮助。从宏观角度来看,大多数智能体都由推理能力、记忆系统以及各种工具组成。
推理功能是由大型语言模型来承担的。正是这种模型使得智能体能够理解任务目标、规划行动方案,并在遇到问题时做出调整。它的作用不仅仅是生成文本,更是帮助智能体做出决策。
记忆系统使智能体能够在不同的操作步骤之间保持上下文信息。如果没有记忆功能,智能体的行为就会像一个没有状态的函数一样;而有了记忆系统,它就能记录自己的进展、回忆之前的操作,并据此调整自己的行动策略。
工具是让智能体具备实用性的关键。工具可以是API、数据库查询语句,也可以是shell命令等等。智能体并不需要了解这些工具的内部工作原理,它只需要知道在什么情况下以及如何使用它们即可。
以下是一个简单的示例,展示了智能体如何在循环中使用各种工具:
def agent_loop(goal, tools):
context = []
while True:
prompt = f"目标:{goal}\n当前上下文:{context}\n接下来应该做什么?"
decision = model.generate(prompt)
if decision == "DONE":
break
if decision.startswith("USE_TOOL"):
tool_name, tool_input = parse_tool_call(decision)
result = tools[tool_name](tool_input)
context.append(result)
else:
context.append(decision)
return context
在这个循环中,智能体会观察当前情况、做出决策、执行相应的操作,并更新自己的理解。
为什么现在AI智能体才如此兴起
自主软件的概念并不是什么新鲜事物,真正发生变化的是作为其基础的技术模型本身的能力。
如今,大型语言模型已经能够进行多步骤的推理、解读非结构化的数据,并生成能够驱动实际系统运行的结构化输出结果。
同样重要的是围绕这些模型的生态系统。API们变得更加标准化,基础设施也更具可编程性,数据资源也更容易被获取。这些因素都使得各种工具能够更轻松地与实际系统进行交互,从而帮助我们打造出一些目前最为先进的AI智能体。
还存在经济方面的驱动因素。即使在高度数字化的组织中,如今的许多工作流程仍然属于手工操作。这些流程往往需要跨系统进行协调、对数据进行分析,并在存在不确定性的情况下做出决策。而这恰恰是智能代理所擅长的工作领域。
自主性的幻觉与现实
人们很容易将人工智能代理描述为完全自主的实体。但实际上,大多数智能代理并非如此。它们在开发者设定的约束条件下运行,只能使用某些特定的工具来执行操作,同时还会在每个步骤中被监控、限制其执行速度,并接受评估。
使它们与众不同的并不是完全的自主性,而是部分自主性——它们能够在有限的范围内自行决定如何完成任务。
这种区别非常重要,因为它会直接影响系统的设计方式。我们构建的系统并非总是表现出可预测的行为,而是一个能在解决方案空间中探索并最终找到合适结果的系统。
然而,这也带来了新的挑战:智能代理可能会选择效率较低的路径来执行任务,可能会误解目标要求,也可能会因为一系列连续的错误决策而导致系统失败,而这些错误往往难以被单独排查出来。
设计在实际中能够有效运行的智能代理
创建一个智能代理本身并不困难,但要让它可靠地工作却并非易事。关键在于如何对其行为进行有效的控制。
一种方法是限制智能代理的行动范围。不要让它们拥有完全自由的操作权限,而是为它们提供一套界面清晰的工具,这样就能减少歧义,使它们的行为更加可预测。
另一种方法是在关键步骤设置验证机制。不要让智能代理随意运行,而是在这些节点上对其决策结果进行审核。这可以通过规则、辅助模型或人工审查等方式来实现。
以下是一个添加验证机制的示例:
def safe_execute/tool, input_data):
if not validate_input TOOL, input_data):
return "输入无效"
result = tool(input_data)
if not validate_output-tool, result):
return "输出无效"
return result
这种设计模式在实际应用中非常重要。它能让原本缺乏约束的智能代理变成一个受控系统,使其仍能在安全的范围内进行适应和调整。
多智能体系统与协作
随着智能体的能力不断提升,单个智能体往往已经无法满足所有需求。复杂的任务可以分解为多个智能体来共同完成,每个智能体负责特定的功能。
例如,一个智能体可以负责数据采集,另一个负责数据分析,还有一个负责信息传递。这些智能体可以通过交换结构化信息来进行协作。
class Message:
def __init__(self, sender, receiver, content):
self.sender = sender
selfreceiver = receiver
self.content = content
def send_message(agent, message):
return agent.process(message)
message = Message("retriever", "analyst", "从API获取的数据")
response = send_message(analyst_agent, message)
这种模型开始类似于分布式系统,只不过其中使用的不是服务,而是智能代理。协调问题因此成为至关重要的因素。你需要定义相应的协议,处理各种故障,并确保各个代理之间的行为保持一致性。
AI智能代理已经在哪些领域发挥作用
尽管人们对此大加宣传,但实际上确实存在一些智能代理已经能够发挥实际作用的领域。内部工具开发就是其中之一。自动化重复性工作流程、生成报告以及在不同系统之间协调任务,这些任务都非常适合由智能代理来完成。
客户支持也是另一个适用领域。智能代理能够处理那些需要访问多个系统的复杂查询,而不仅仅是提供预先准备好的回复。
安全与合规相关的工作流程同样也非常适合使用智能代理。这些工作通常涉及监控各种信号、分析数据,并根据某些并不总是确定性的规则来采取行动。
这些应用案例有一个共同点:它们都发生在结构明确、目标清晰且结果可衡量的环境中。当问题范围是有限的,即使执行路径并非固定不变时,智能代理的表现也会最佳。
软件设计的变革
AI智能代理的出现并不仅仅意味着添加了一个新的功能,它实际上是在改变软件的抽象层架构。
过去人们编写代码是为了直接实现特定行为,而现在则是设计能够促成某种行为的系统。你需要定义目标、暴露系统的各项功能,并设定相应的约束条件,而具体的执行过程则会被动态地决定。
这种变化要求我们改变思维方式:调试不再仅仅是追踪代码的执行路径,而是要理解程序做出的各种决策;测试也不再只是检查输入与输出的结果是否匹配,而是要在多种场景下评估系统的行为表现。
可观测性变得至关重要。你需要记录系统做了什么,以及为什么会这么做。这包括用户输入的信息、系统中产生的中间结果,以及各组件之间的交互过程。
未来的发展方向
目前AI智能代理还处于相对早期的发展阶段。虽然现有一代的智能代理功能强大,但仍然存在不足之处。可靠性是一个主要问题,成本也是一个需要考虑的因素,尤其是当智能代理在完成一项任务时需要调用多个模型时。
然而发展方向已经很明确:软件正在从静态执行模式向动态行为模式转变。用户与系统之间的界限正在变得不再那么严格。未来用户将不再是一步一步地告诉软件该做什么,而是会定义最终想要得到的结果,然后让系统自己去完成其余的工作。
这并不意味着工程师不再需要发挥作用了,而是意味着工程师的工作内容将会发生变化。他们的重点将从实现具体的逻辑功能,转变为设计能够进行推理、采取行动并具备适应能力的系统。
AI智能代理的出现标志着一个重要的转折点:软件已经不再仅仅是一种工具,它正在逐渐成为一种能够主动发挥作用的力量。
订阅我的 应用人工智能新闻通讯,了解如何构建并部署真正的AI系统。其中会包含实际项目案例、可直接投入生产的代码,以及问答环节。你也可以 在LinkedIn上与我联系。