别再只会调 API 了,真正的 AI 应用开发,是从理解 Agent 开始的。
🧠 前言:为什么现在人人都谈 Agent?
如果你最近关注 AI 领域,一定听过这些词:Agent 、LLM 、Tools 、Reasoning ......
但你真的搞懂它们之间的关系了吗?
我刚开始学的时候,也是一头雾水。直到我亲手写了一个 能查询股票收盘价的 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 的工作流程是:
- 用户提问
- LLM 进行推理(思考需要用什么工具)
- 调用对应的 Tool
- 拿到结果后,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 开发,欢迎在评论区交流 👇
觉得有用的话,点个赞 👍 支持一下~