🤖 一文搞懂 AI Agent 核心概念:从 LLM 到 Tools,手写一个“股票查询 Agent”

别再只会调 API 了,真正的 AI 应用开发,是从理解 Agent 开始的。


🧠 前言:为什么现在人人都谈 Agent?

如果你最近关注 AI 领域,一定听过这些词:AgentLLMToolsReasoning ......

但你真的搞懂它们之间的关系了吗?

我刚开始学的时候,也是一头雾水。直到我亲手写了一个 能查询股票收盘价的 Agent,才彻底把这几块拼图串起来。

今天我就用这篇实战笔记,带你从零理解:

  • LLM 是大脑,但只有大脑不够
  • Tools 是手脚,让 AI 能做实事
  • Agent = LLM + Tools + 推理规划

最后,我们会用 Node.js + DeepSeek API,实现一个能回答"青岛啤酒收盘价多少?"的 Agent。


🧩 第一块拼图:LLM(大语言模型)

LLM 是 Agent 的"大脑",负责推理和生成。

我们平时用的 ChatGPT、豆包、Claude,底层都是 LLM。

LLM 有一个致命弱点:它只能根据训练数据"回忆"知识,无法主动获取实时信息,也无法执行操作。

比如你问它:

"青岛啤酒今天的收盘价是多少?"

如果它的训练数据截止到 2024 年,那它大概率会 瞎编 一个价格,或者告诉你"我不知道"。


🛠️ 第二块拼图:Tools(工具)

Tools 是 Agent 的"手脚",补齐 LLM 无法操作外部世界的短板。

没有 Tools 的 LLM,就像一个只有大脑、没有手脚的哲学家------能想,但不能做。

而有了 Tools,LLM 就可以:

  • 调用 API 查天气、查股价
  • 读写文件
  • 操作浏览器
  • 执行 Shell 命令

🤖 第三块拼图:Agent(智能体)

Agent = LLM + Tools + 推理规划能力

Agent 的工作流程是:

  1. 用户提问
  2. LLM 进行推理(思考需要用什么工具)
  3. 调用对应的 Tool
  4. 拿到结果后,LLM 再次生成最终回答

💻 实战:用 Node.js 实现一个"股票查询 Agent"

1. 初始化项目 & 安装依赖

bash

bash 复制代码
mkdir agent-demo
cd agent-demo
npm init -y
npm install openai dotenv

2. 配置环境变量 .env

env

ini 复制代码
DEEPSEEK_API_KEY=your_api_key
DEEPSEEK_API_BASE_URL=https://api.deepseek.com
DEEPSEEK_MODEL=deepseek-v4-flash

3. 创建 LLM 客户端 client.mjs

javascript

arduino 复制代码
import { OpenAI } from 'openai';
import dotenv from 'dotenv';

dotenv.config();

const client = new OpenAI({
  apiKey: process.env.DEEPSEEK_API_KEY,
  baseURL: process.env.DEEPSEEK_API_BASE_URL,
});

export default client;

4. 定义 Tools(关键!)

我们定义一个 get_closing_price 工具,告诉 LLM 它的功能和参数。

javascript

go 复制代码
import client from './client.mjs';

const tools = [
  {
    type: 'function',
    function: {
      name: 'get_closing_price',
      description: '获取指定股票的收盘价',
      parameters: {
        type: 'object',
        properties: {
          name: {
            type: 'string',
            description: '股票名称,如:青岛啤酒、贵州茅台',
          },
        },
        required: ['name'],
      },
    },
  },
];

// 工具的具体实现
function get_closing_price(name) {
  const priceMap = {
    '青岛啤酒': '67.92',
    '贵州茅台': '1488.21',
  };
  return priceMap[name] || '未找到该股票';
}

5. 发送消息 & 让 LLM 自动选择工具

javascript

javascript 复制代码
const sendMessage = async (messages) => {
  return await client.chat.completions.create({
    model: process.env.DEEPSEEK_MODEL,
    messages,
    tools,
    tool_choice: 'auto', // 让 LLM 自己决定是否调用工具
  });
};

6. 主流程:用户提问 → LLM 推理 → 调用工具 → 返回结果

javascript

ini 复制代码
const main = async () => {
  const messages = [
    { role: 'user', content: '青岛啤酒的收盘价是多少?' }
  ];

  const response = await sendMessage(messages);
  const message = response.choices[0].message;

  // 如果 LLM 决定调用工具
  if (message.tool_calls) {
    const toolCall = message.tool_calls[0];
    const toolName = toolCall.function.name;
    const args = JSON.parse(toolCall.function.arguments);

    if (toolName === 'get_closing_price') {
      const price = get_closing_price(args.name);
      console.log(`📊 ${args.name} 的收盘价是:${price}`);
    }
  } else {
    console.log('🤖 LLM 直接回答:', message.content);
  }
};

main();

7. 运行结果

bash

复制代码
📊 青岛啤酒 的收盘价是:67.92

🧠 深度推理(Reasoning)是什么?

在第二个截图里,你看到了 reasoning_effort: 'high'reasoning_content

这是 深度推理模式,让 LLM 在回答前先"思考"一下,输出它的推理过程。

javascript

javascript 复制代码
const result = await client.chat.completions.create({
  model: 'deepseek-v4-pro',
  reasoning_effort: 'high', // 开启深度推理
  messages: [...]
});

console.log('思考过程:', result.choices[0].message.reasoning_content);
console.log('最终回答:', result.choices[0].message.content);

这在调试 Agent 时非常有用,你能看到 LLM 为什么决定调用某个工具


🧭 总结:一张图理清 Agent 核心概念

text

scss 复制代码
┌─────────────┐
│   用户提问   │
└──────┬──────┘
       ▼
┌─────────────┐
│  LLM 推理   │  ← reasoning_content
│ (大脑)      │
└──────┬──────┘
       ▼
┌─────────────┐
│  Tools 调用 │  ← get_closing_price()
│ (手脚)      │
└──────┬──────┘
       ▼
┌─────────────┐
│  返回结果   │
└─────────────┘
概念 作用 举例
LLM 推理 + 生成 DeepSeek、GPT-4
Tools 操作外部世界 查股价、读文件、搜网页
Agent LLM + Tools + 规划 Cursor、Claude Code、Workbuddy

🚀 下一步你可以做什么?

  • 给 Agent 增加更多 Tools(如搜索、发邮件)
  • 支持多轮对话,让 Agent 记住上下文
  • 引入向量数据库,让 Agent 能读私有文档

现在的 AI 产品,本质上都是 Agent。

学会开发 Agent,你就能让 AI 真正帮你干活,而不仅仅是聊天。

如果你也正在学习 AI 开发,欢迎在评论区交流 👇

觉得有用的话,点个赞 👍 支持一下~

相关推荐
贵慜_Derek2 小时前
《从零实现 Agent 系统》连载 32|闭集 IE 与小模型:分类、意图与字段抽取
人工智能·架构·agent
葫芦和十三3 小时前
图解 MongoDB 03|CRUD 全链路:一条 find 怎么穿过 WiredTiger
后端·mongodb·agent
葫芦和十三11 小时前
图解 MongoDB 04|索引模型:每建一个索引,就是在 B+-tree 森林里多栽一棵
后端·mongodb·agent
冬奇Lab14 小时前
AI Workflow 定义的四次演进:从 Markdown 到 JS 脚本,再到分布式多 Agent
javascript·人工智能·agent
潘锦17 小时前
聊聊 Harness:从 Agent 到组织
agent
leeyi21 小时前
Prompt 模板:用变量组装发给 AI 的消息
aigc·agent·ai编程
沉默王二1 天前
Qoder 越来越猛了,Browser Use 让 Agent 的联网能力拉满。
agent·ai编程
缓步前行的微尘1 天前
Claude Code 如何在 恢复session对话完整历史
agent