我理解的Agent(智能体)开发

简单来说,Agent(智能体)开发不再是让 AI 仅仅作为一个"问答机器人",而是把它变成一个 "有手有脚、能思考、能干活" 的数字员工。

如果把大模型(LLM)比作一个"聪明的大脑",那么 Agent 就是给这个大脑接上了身体(工具)和逻辑框架(规划)

1. Agent 的核心公式

一个成熟的 Agent 通常包含以下四个要素:

  • 大脑(LLM): 负责核心推理、决策和语言理解。
  • 规划(Planning): 它能把复杂任务拆解成步骤(比如:先查资料,再写草稿,最后发邮件)。
  • 工具使用(Tool Use): 这是 Agent 的灵魂。它能自主调用外部工具,比如搜索网页、运行 Python/Typescript 代码、操作 Excel 或调用 API。
  • 记忆(Memory): 短期记忆: 当前对话的上下文,长期记忆: 能够从数据库(如向量数据库)中检索过去的经验。

2. 传统开发 vs. Agent 开发

特性 传统程序 / 普通 AI 对话 Agent 开发
执行逻辑 硬编码(If-Else),逻辑固定 自主决策,根据目标动态调整路径
交互能力 你问,它答 你给目标,它去执行并反馈结果
闭环能力 需要人工干预下一步 遇到错误会自动尝试修正(自我反思)

3. Agent 工作的典型流程

想象你让 Agent "帮我调研 2024 年最火的 3 款国产电车并做成对比表格":

  1. 拆解: "我需要先搜索关键词,选出 3 款车,再分别查它们的参数。"
  2. 行动: 调用搜索工具获取网页内容。
  3. 观察: 发现其中一款车没价格,重新搜索价格信息。
  4. 整合: 将所有信息汇总,格式化为表格输出。

4. 目前主流的开发框架

如果你想尝试开发 Agent,通常会用到这些"脚手架":

  • LangChain / LangGraph: 目前最流行的 Agent 编排框架。
  • AutoGPT / BabyAGI: 早期火遍全网的自主执行代理实验。
  • CrewAI / Multi-On: 专注于"多智能体协作"(让好几个 AI 像一个团队一样分工合作)。
  • OpenAI Assistants API: 官方提供的低门槛 Agent 构建工具。

5. 那Agent开发是不是就是编排工作流?

是不是可以这样理解,Agent(智能体) 开发,就是编排智能体,按照编排的顺序去执行,不再是一问一答?如果这样理解已经抓住了 Agent (智能体)开发的核心,但我们可以把这个理解再往深推一步。

真正的 Agent(智能体) 相比于单纯的顺序执行,多了一层最关键的东西:自主决策(Autonomy)

它更像一个有经验的员工。不再是简单的顺序: 假设你只给它一个模糊的目标(比如"帮我买一张最划算的进京机票")。

  • 动态调整: 它先去查票,发现没票了,它不会报错退出,而是会自己思考:"我是不是该换个机场?或者换个日期?"然后重新执行。
  • 闭环决策: 它拥有 Reasoning(推理)和 Acting(行动)的循环(学术上常称为 ReAct 模式)。

6. 大模型负责"想",而 Agent (智能体)(你写的代码)负责"做"

1. 角色分工:大脑 vs. 系统

我们可以把这个过程拆解开来看:

  • 大模型(LLM): 扮演的是决策中心。它通过文字告诉系统:"我现在需要搜索周杰伦的演唱会信息,请调用搜索工具。"
  • Agent 框架(如 LangChain, Coze, Dify): 扮演的是执行系统。它看到大模型发出的指令后,真的去运行搜索插件,拿到结果,再把结果喂回给大模型。

2. 核心机制:ReAct 循环

这个"思考 -> 行动 -> 观察"的过程在技术上通常被称为 ReAct (Reason + Act)

\text{Input} \rightarrow \underbrace{\text{Thought} \rightarrow \text{Action} \rightarrow \text{Observation}}_{\text{Loop}} \rightarrow \text{Final Answer}

我们可以通过一个具体的例子来看看它们是怎么配合的:

步骤 谁在执行? 执行了什么内容?
思考 (Thought) 大模型 生成一段文本:"用户想买票,我得先查查今天几号,再查票务接口。"
行动 (Action) 框架/代码 识别到大模型想调用 get_tickets 函数,代码自动去运行这个函数
观察 (Observation) 框架/代码 函数返回了结果:"余票为 0"。框架把这行字传回给大模型。
调整计划 (Adjust) 大模型 看到"余票 0",思考:"既然没票了,我应该建议用户买下一场。"

3. "大脑"是怎么控制"手脚"的?

你可能会好奇,大模型只是一段文本预测模型,它是怎么命令代码去执行操作的?

这主要靠一种叫 Function Calling(函数调用) 的技术:

  1. 你先告诉大模型:我有两个工具,一个是"搜索",一个是"订票"。
  2. 大模型会根据你的要求,输出一段特定格式的代码或 JSON (例如:{"tool": "search", "query": "上海天气"})。
  3. 你的程序检测到这个 JSON,暂停生成,去跑搜索脚本,拿到结果。
  4. 你的程序把结果包装成"背景资料",再次发给大模型。

4. 谁在维持这个循环?

大模型本身是没有状态 的,它记不住刚才发生了什么。 是 Agent 框架 (或者说你写的 Python/Node.js 代码)在维持一个 While 循环

代码逻辑大致如下:

markdown 复制代码
while 任务没完成: 
1. 把所有记录发给大模型,问它下一步做什么。 
2. 如果大模型说"我要调用工具",代码就去执行工具。 
3. 如果大模型说"我做完了",循环结束,给用户回话。

7. 在 Node.js 中实现一个简单的 Agent

在 Node.js 中实现一个简单的 Agent,最直观的方法是利用 OpenAI SDK 的 Function Calling (工具调用) 功能。

我们可以手动编写一个"思考-行动-观察"的循环(Loop),这样我们就能清晰地看到 Agent 是如何工作的。

1. 核心逻辑架构

假设我们要实现的 Agent 逻辑如下:

  1. 用户提问: "上海今天天气怎么样?"
  2. 大模型思考: "我没有实时数据,但我有个 get_weather 工具可以查,我应该调用它。"
  3. 代码执行: 你的 Node.js 代码运行真实的查询函数,获取结果(如"2°C,晴")。
  4. 大模型总结: 看到结果后,最后一次回答用户。

2. 极简代码实现(基于 OpenAI SDK)

你需要先安装依赖:npm install openai

javascript 复制代码
import OpenAI from "openai";
​
const openai = new OpenAI({ apiKey: '你的API_KEY' });
​
// --- 第一步:定义 Agent 可以使用的"手脚"(工具) ---
const tools = [
  {
    type: "function",
    function: {
      name: "get_weather",
      description: "获取指定城市的天气信息",
      parameters: {
        type: "object",
        properties: {
          city: { type: "string", description: "城市名称,如:上海" },
        },
        required: ["city"],
      },
    },
  },
];
​
// 模拟一个真实的工具执行函数
async function get_weather(args) {
  console.log(`[工具执行] 正在查询 ${args.city} 的天气...`);
  // 在实际应用中,这里会调用天气 API
  return `北京今天晴朗,气温 5°C 到 -5°C。`;
}
​
// --- 第二步:实现"思考-行动"循环 ---
async function runAgent(userInput) {
  let messages = [
    { role: "system", content: "你是一个乐于助人的助手。如果需要,请使用工具获取最新信息。" },
    { role: "user", content: userInput }
  ];
​
  while (true) {
    // 1. 让大脑(LLM)思考下一步
    const response = await openai.chat.completions.create({
      model: "gpt-4o",
      messages: messages,
      tools: tools,
    });
​
    const message = response.choices[0].message;
    messages.push(message); // 将 AI 的思考记录存入上下文
​
    // 2. 判断是否需要执行工具
    if (message.tool_calls) {
      for (const toolCall of message.tool_calls) {
        const functionName = toolCall.function.name;
        const args = JSON.parse(toolCall.function.arguments);
        
        // 3. 物理执行(Action)
        const observation = await get_weather(args);
​
        // 4. 将观察到的结果(Observation)反馈给大脑
        messages.push({
          role: "tool",
          tool_call_id: toolCall.id,
          content: observation,
        });
      }
      // 继续循环,让 AI 根据工具结果进行下一次思考
      continue; 
    }
​
    // 如果 AI 不再需要调用工具,说明它已经有了最终答案
    console.log("Agent 回答:", message.content);
    break;
  }
}
​
runAgent("上海天气怎么样?");

3. 进阶:为什么要用框架?

当你手写上述 while(true) 循环时,你会发现处理起来很麻烦:

  • 多轮对话: 怎么管理长对话的内存(Memory)?
  • 错误处理: 如果工具执行失败了,AI 怎么自我修复?
  • 多智能体: 如果让一个 Agent 去改另一个 Agent 的代码怎么办?

这时候,你可以尝试使用成熟的 Node.js Agent 框架

  1. LangChain.js / LangGraph: 最老牌且功能最全,适合构建极其复杂的逻辑图。
  2. Vercel AI SDK: 非常现代化,和 React/Next.js 结合极佳,通过 generateText 几行代码就能搞定上述循环。
  3. OpenAI Assistants API: 官方托管的 Agent 服务。你只需要在后台配置好工具,OpenAI 的服务器会自动帮你跑那个 while 循环和存储记忆,你只需调一个接口。

总结

大模型执行的是"逻辑执行",而你的代码(Agent 智能体)执行的是"物理执行"。

相关推荐
mCell4 小时前
如何零成本搭建个人站点
前端·程序员·github
mCell5 小时前
为什么 Memo Code 先做 CLI:以及终端输入框到底有多难搞
前端·设计模式·agent
九.九5 小时前
ops-transformer:AI 处理器上的高性能 Transformer 算子库
人工智能·深度学习·transformer
春日见5 小时前
拉取与合并:如何让个人分支既包含你昨天的修改,也包含 develop 最新更新
大数据·人工智能·深度学习·elasticsearch·搜索引擎
恋猫de小郭5 小时前
AI 在提高你工作效率的同时,也一直在增加你的疲惫和焦虑
前端·人工智能·ai编程
少云清5 小时前
【安全测试】2_客户端脚本安全测试 _XSS和CSRF
前端·xss·csrf
deephub5 小时前
Agent Lightning:微软开源的框架无关 Agent 训练方案,LangChain/AutoGen 都能用
人工智能·microsoft·langchain·大语言模型·agent·强化学习
银烛木5 小时前
黑马程序员前端h5+css3
前端·css·css3
m0_607076605 小时前
CSS3 转换,快手前端面试经验,隔壁都馋哭了
前端·面试·css3
听海边涛声5 小时前
CSS3 图片模糊处理
前端·css·css3