第一部分:破除迷信(入门篇)第1章 Agent不是黑科技

写在前面

笔者也是在晚上骑电动车的时候有这个想法,我并不认为agent开发是一个十分高大上的东西,技术是服务于人的,面试中的八股反而是一种技术霸凌,就应该介绍自己最出手的东西。笔者是现在一名底层的央企员工,但是也独自开发了很多个智能体。这次人工智能革命在我看来是一场打破了技术壁垒,学术壁垒,资产壁垒的革命。当然这些文章也将是由ai编辑,我不排斥ai编辑,我只想把好的方法和想法分享给大家。从去年的browseruse到年初的OpenClaw,本质上智能体其实就是大模型自动化办公一种的体现。你的任何自动化软件甚至脚本接入大模型后都是一种智能体,希望这个专栏能带给你启发,技术平权是每个极客的梦想,也希望每个二十多岁的年轻人能在迷茫的时候抓住技术这个稻草(兄弟们你如果真的不想先掏钱买token,找我吧,笔者还是能给你们申请点自己权限内能做的事情,能免费用一段时间,谁都有拮据的时候)

1.1 大白话解释Agent

我猜你打开这个专栏的时候,心里大概有这么几个疑问:

  • Agent到底是个啥?
  • 我能学会吗?我连Python都写不利索。
  • 这玩意儿是不是得懂什么Transformer、注意力机制才行?

一个一个来。

Agent就是个会自己想办法干活的AI助手

先扔掉所有术语。你想象一下你带了个实习生------你跟他说"去把上个月的销售数据整理成报表",他不会站在那等你手把手教,而是自己打开系统、找到数据、用Excel拉个表、发到你邮箱。

Agent就是那个实习生。

只不过这个实习生是AI。你给它一句话,它自己想步骤、自己找工具、自己执行、自己检查结果,直到把活干完。

跟传统程序有啥区别?

传统程序是这样的:

复制代码
你写规则 → 程序按规则执行 → 输出结果

比如你要写个自动发邮件的脚本,你得写清楚:连接哪个邮箱服务器、从哪读收件人、邮件标题是什么、正文模板是什么、什么时候发。每一步都得你提前想好。

Agent是这样的:

复制代码
你给个目标 → AI自己想怎么做 → 自己执行 → 遇到问题自己调整 → 输出结果

同样是发邮件,你只需要跟Agent说"把周报发给张总",它会自己去找张总的邮箱、自己生成邮件内容、自己发出去。中间哪一步卡了,它还会换个思路再试。

你看出区别了吗?传统程序靠人写规则,Agent靠AI自己推理。

这就是为什么Agent火了------以前你得写500行代码才能搞定的事,现在一句话就行。

不需要理解Transformer也能做Agent

这句话我放在这,你记住:

你不需要理解发动机原理也能开车。

懂Transformer、会推导注意力函数,那是算法工程师的事。做Agent开发,你需要的是:

  1. 会写Python(能跑起来就行,不要求优雅)
  2. 理解API调用(说白了就是发HTTP请求)
  3. 会读别人的代码(GitHub上抄......啊不,学习,github就是你最好的学习园地,不会写项目,不会参考吗?)
  4. 有一个真实的业务需求(这个最重要,没有需求你做不出好东西)

后面这些东西,我会在这一章里带你全部搞定。


1.2 拆解browser-use项目(国内:https://gitee.com/mirrors/browser-use,原项目:https://github.com/browser-use/browser-use)

既然说了Agent就是"看情况→想下一步→动手→重复",那我们来找一个真实的项目验证一下。

browser-use,GitHub上98.6k Star的项目,2024年底爆火,已经拿了千万美元融资。它干的事情很简单:让AI控制你的浏览器,替你自动操作网页。

比如你说一句"去淘宝搜索笔记本电脑,按销量排序,把前10个商品名和价格整理成表格",它就会自己打开浏览器、输入搜索词、点击排序、抓取数据、生成结果。

听起来很神奇对吧?我们拆开看看它到底怎么做的。

先跑起来再说

安装就三步:

bash 复制代码
# 第1步:装Python 3.12(如果没装的话)
# 去python.org下载安装,别用3.14,3.12最稳

# 第2步:装browser-use和浏览器
pip install browser-use
browser-use install  # 这一步会自动装Chromium

# 第3步:设置API Key(在.env文件里)
# 四选一,不会弄?往下看

API Key怎么搞?你有四个选择:

选项 环境变量 怎么拿
Browser Use官方 BROWSER_USE_API_KEY= 注册就送5个免费任务
选个多模态模型 QWEN3= 硅基流动、阿里、各个运营商
OpenAI OPENAI_API_KEY= 充值
Anthropic ANTHROPIC_API_KEY= 充值

没钱?一个皮肤的钱都没有?

然后写个最简单的代码:

python 复制代码
from browser_use import Agent, ChatOpenAI
import asyncio

async def main():
    agent = Agent(
        task="去百度搜索'今天天气',把搜索结果的第一条标题告诉我",
        llm=ChatOpenAI(model="gpt-4.1-mini"),
    )
    result = await agent.run()
    print(result.final_result())

asyncio.run(main())

跑一下,你会看到浏览器自动打开、自动输入搜索词、自动点搜索、自动提取结果。

5行代码,一个能干活的Agent就跑起来了。

打开引擎盖:它到底怎么跑的

跑起来了,但光跑起来没用,你得知道它里面是怎么转的。

browser-use的核心是一个叫Agent的类,它的执行逻辑说白了就是一个循环,每次循环做5件事:

复制代码
┌─────────────────────────────────────┐
│  第1步:看一眼当前页面              │
│  截个图、读一下DOM树(前端的组件)、看看URL       │
└──────────────┬──────────────────────┘
               ▼
┌─────────────────────────────────────┐
│  第2步:把看到的东西告诉大模型      │
│  "当前页面长这样,任务是这个,       │
│   你觉得下一步该干啥?"              │
└──────────────┬──────────────────────┘
               ▼
┌─────────────────────────────────────┐
│  第3步:大模型告诉你要做什么        │
│  "点击搜索框,输入'今天天气'"       │
└──────────────┬──────────────────────┘
               ▼
┌─────────────────────────────────────┐
│  第4步:照做                        │
│  真的点击、真的输入                 │
└──────────────┬──────────────────────┘
               ▼
┌─────────────────────────────────────┐
│  第5步:记录下来,回头看看          │
│  这一步做了啥、花了多少Token        │
└──────────────┬──────────────────────┘
               │
               ▼
          没干完?回到第1步
          干完了?输出结果

这就是全部。没有黑魔法,没有玄学。

你把它抽象一下:

复制代码
Agent = 观察 + 思考 + 行动 + 记录 + 重复

这五个词你记住,后面所有Agent框架的底层逻辑都是这个。LangChain是、AutoGPT是、MetaGPT也是。区别只是谁来做"思考"那一步(用什么模型)、"行动"那一步(用什么工具)、"记录"那一步(用什么存储)。

关键代码在哪里

browser-use的源码结构长这样:

复制代码
browser-use/
├── browser_use/          ← 核心代码在这
│   ├── agent/
│   │   └── service.py    ← Agent主类,run()和step()都在这
│   ├── browser/          ← 浏览器控制
│   ├── tools/            ← 工具定义(点击、输入、滚动等)
│   └── prompts.py        ← 系统提示词(130行,精华在这)
├── examples/             ← 示例代码
└── pyproject.toml        ← 项目配置

最核心的文件是agent/service.py,里面有run()step()两个方法。run()是主循环,反复调用step()step()就是上面说的5步。

我强烈建议你打开这个文件自己读一遍。不用全懂,找到run()方法,看看那个while循环,你会发现------这不就是我上面画的那个图吗?

做个实验:改一行提示词看效果

browser-use的提示词在prompts.py里,有130行。这是整个项目最精华的部分------所有"智能"都藏在这130行里。

找个好玩的实验:打开prompts.py,找到系统提示词里关于"你是一个浏览器操作助手"那部分,改成:

复制代码
你是一个急性子的浏览器操作员,做事要快,不要犹豫,不要反复确认。

然后再跑一次同样的任务。你会发现Agent的行为明显变了------操作变快了,但也更容易出错。

这就是提示词的力量。你改一行字,Agent的"性格"就变了。


1.3 五分钟跑通第一个Agent

上面用browser-use跑了一个Agent,但它有点重------得装浏览器、得装Chromium、得等它启动。

我们来做一个更轻的:一个会搜索的AI助手,5行代码,不需要浏览器。

环境准备

你需要两样东西:

  1. Python 3.10以上(装了吗?装了就跳过)
  2. 一个API Key(OpenAI的或者国内的都行)

没钱买API Key?私信作者吧,作者有体验卷,或者用Ollama,本地免费跑(免费的都是最贵的给你个方法):

bash 复制代码
# 安装Ollama(去ollama.com下载安装包)
# 装完之后拉一个模型
ollama pull qwen2.5:7b

# 模型下载完就自动启动了,默认在 localhost:11434

Ollama第一次下载模型可能比较慢(7B模型大约4GB),耐心等。后面用的时候是秒启动,不花钱。

最小代码:5行搞定

用OpenAI的API:

python 复制代码
from openai import OpenAI

client = OpenAI()  # 自动读环境变量 OPENAI_API_KEY
response = client.chat.completions.create(
    model="gpt-4.1-mini",
    messages=[{"role": "user", "content": "中国有多少个省份?"}]
)
print(response.choices[0].message.content)

用Ollama本地模型(免费):

python 复制代码
from openai import OpenAI

client = OpenAI(base_url="http://localhost:11434/v1", api_key="ollama")
response = client.chat.completions.create(
    model="qwen2.5:7b",
    messages=[{"role": "user", "content": "中国有多少个省份?"}]
)
print(response.choices[0].message.content)

看到没?两个代码唯一的区别就是base_url不同。Ollama故意把接口做成跟OpenAI一模一样,所以你的代码几乎不用改。

这已经很酷了,但它还不能算Agent------它只是你问它答,不会自己"想办法"。

我们加一步,让它能用搜索工具:

python 复制代码
import json
from openai import OpenAI

client = OpenAI()  # 或用Ollama

# 定义一个"搜索"工具
tools = [{
    "type": "function",
    "function": {
        "name": "search",
        "description": "搜索互联网获取最新信息",
        "parameters": {
            "type": "object",
            "properties": {
                "query": {"type": "string", "description": "搜索关键词"}
            },
            "required": ["query"]
        }
    }
}]

# 第1步:问模型
response = client.chat.completions.create(
    model="gpt-4.1-mini",
    messages=[{"role": "user", "content": "今天的新闻有什么?"}],
    tools=tools
)

# 第2步:看模型要不要调工具
message = response.choices[0].message
if message.tool_calls:
    for tool_call in message.tool_calls:
        if tool_call.function.name == "search":
            args = json.loads(tool_call.function.arguments)
            print(f"模型想搜索:{args['query']}")
            # 这里你可以接入真正的搜索API
            # 比如用requests调用百度/Google
            search_result = f"搜索'{args['query']}'的结果:今天是晴天,没有大新闻"
            
            # 第3步:把搜索结果喂回模型
            response2 = client.chat.completions.create(
                model="deepseek",
                messages=[
                    {"role": "user", "content": "今天的新闻有什么?"},
                    message,
                    {"role": "tool", "tool_call_id": tool_call.id, "content": search_result}
                ],
                tools=tools
            )
            print(response2.choices[0].message.content)
else:
    print(message.content)

这段代码虽然长了点,但逻辑非常清晰:

  1. 告诉模型你有一个搜索工具
  2. 模型收到问题后,自己判断要不要用搜索
  3. 如果用,它会告诉你搜什么
  4. 你去搜索(这里我用了假数据,你可以换成真API)
  5. 把搜索结果喂回模型,它给你最终答案

看到了吗?模型自己决定要不要用工具、用什么工具。 这就是Agent跟普通聊天机器人的根本区别。

把这段代码跑通,恭喜你------你已经理解了Agent最核心的机制。

常见问题排雷

问题1:报AuthenticationError401

你API Key没填对。检查一下:

bash 复制代码
# 看看环境变量设了没
echo $OPENAI_API_KEY   # Mac/Linux
echo %OPENAI_API_KEY%  # Windows CMD

没设的话:

bash 复制代码
# Mac/Linux
export OPENAI_API_KEY="sk-你的key"

# Windows
set OPENAI_API_KEY=sk-你的key

或者创建一个.env文件,写一行OPENAI_API_KEY=sk-你的key,代码里加from dotenv import load_dotenv; load_dotenv()

问题2:报RateLimitError429

调用太快了,API有限额。免费账号每分钟3次,付费账号每分钟500次以上。解决办法:

  • time.sleep(1)在两次调用之间
  • 或者换Ollama本地跑,没限额

问题3:Ollama下载模型太慢

国内网络访问Ollama的模型库可能很慢。两个办法:

  1. 设置镜像:export OLLAMA_HOST=https://ollama.ai-llm.xyz
  2. 手动下载GGUF文件,用ollama create本地导入

问题4:模型返回的JSON解析报错

这是常态,不是你的问题。大模型有时候返回的JSON格式不太标准,加个try-except:

python 复制代码
try:
    args = json.loads(tool_call.function.arguments)
except json.JSONDecodeError:
    args = {"query": "默认搜索词"}  # 兜底

本章的坑

  1. browser-use需要Chrome浏览器 ,服务器上没装?用headless模式:Agent(task=..., llm=..., browser_profile=BrowserProfile(headless=True))

  2. Ollama本地模型首次下载慢,7B模型大约4GB。换国内镜像源,或者先下载GGUF文件手动导入。

  3. API Key填错了报401 ,99%的情况是环境变量没生效。用echo命令确认一下,别光设了就以为好了。

  4. pip install browser-use报错 ,大概率是Python版本不对。browser-use要求3.10以上,推荐3.12。用python --version确认一下。或者换成国内的镜像源,我建议还是阿里的,毕竟是大厂。

  5. deepseek没有这个模型 ,说明你的API账户还没开通。换成别的名字试试,或者用Ollama本地模型。


本章配套论文

无。这章是纯动手,不用看论文。下一章我们开始讲历史和生态的时候会提到。


下一章预告

第2章我们要聊一个问题:凭什么你一个普通人也能做Agent开发?以前这活不是博士干的吗?

答案是:这次AI革命,把技术壁垒、学术壁垒、资产壁垒全打破了。我们会用OpenClaw这个60天涨25万Star的项目来证明------你不需要写多少代码,也不需要多少预算,你只需要一个好想法和一台能上网的电脑。

相关推荐
王小王-1232 小时前
基于深度学习的个性化音乐推荐系统的设计与开发
人工智能·深度学习·mysql·vue·推荐算法·个性化音乐推荐系统·音乐预测
蓝速科技2 小时前
行业案例分享:蓝速科技如何赋能企业降本增效
科技
ʜᴇɴʀʏ2 小时前
SSVOD 基础知识
人工智能·目标检测·计算机视觉
Esaka_Forever2 小时前
Lovable 无代码 AI 应用 / 网页全自动生成智能体平台
人工智能
现代野蛮人2 小时前
【深度学习】 —— 几种优化器对比实验
人工智能·深度学习·分类·tensorflow
陈天伟教授2 小时前
图解人工智能(57)人工智能应用-围棋国手
人工智能·语音识别
涛声依旧-底层原理研究所2 小时前
混合检索 + 重排:让 AI Agent 拥有「既全又准」的认知骨架
人工智能·python
努力写A题的小菜鸡2 小时前
01-PyTorch加载数据初认识(dataset运用)
人工智能·pytorch·python
云烟成雨TD2 小时前
Agent Scope Java 2.x 系列【8】工具调用
java·人工智能·agent