第1讲:Agent 到底是什么?和 Chatbot 有什么区别

很多人第一次接触 AI,是跟 ChatGPT 聊天。它能写诗、写代码、写周报,甚至能跟你辩论哲学。但你有没有发现一个现象:

它很聪明,但从不主动做事。

你问它"帮我查一下今天的天气",它会告诉你"我无法访问实时数据";你让它"帮我把这份 PDF 转成 Word",它会说"我无法直接操作文件"。

这不是它笨,而是它的设计目标就是对话 ,不是执行。


什么是 Agent?

Agent(智能体)的核心定义是:

一个能感知环境、做出决策、调用工具、执行动作并达成目标的自主系统。

拆解一下:

  • 感知环境:接收输入(文字、图片、API 返回、传感器数据等)

  • 做出决策:根据目标判断下一步该做什么

  • 调用工具:不只是"说",而是"做"------查数据库、发邮件、调 API、写文件

  • 执行动作:真正改变外部世界(哪怕只是生成一个文件)

  • 达成目标:有明确的结果导向,比如"完成一份销售报告"、"订好明天上午的会议"

Chatbot 是"问答机器",Agent 是"任务执行者"。


Chatbot vs Agent:一张表看懂本质区别

维度 Chatbot Agent
核心能力 回答提问 执行任务
交互模式 一问一答 多轮规划 + 工具调用
是否改变外部世界 否(仅输出文本) 是(可写文件、调接口、发邮件)
是否有记忆 通常无或极短 有短期+长期记忆
是否有目标 无 有(比如"完成周报")
是否自主决策 否(被动响应) 是(主动规划步骤)

Agent 的最小骨架:用 50 行 Python 跑通你的第一个 Agent

我们不依赖任何框架,就用最原始的 Python + 大模型 API,写一个能"动手做事"的 Agent。

目标:

让 Agent 接收一个指令:"获取当前时间并告诉我",它能:

  1. 理解指令

  2. 决定调用哪个工具(get_current_time)

  3. 执行工具

  4. 返回结果


第一步:准备环境

你需要:

  • Python 3.10+

  • 一个 DeepSeek / 通义千问 / GLM 的 API Key(任选其一)

  • 安装 requests 库:pip install requests


第二步:写代码

复制代码
import requests
import json

# 配置你的 API Key 和基础 URL(这里以 DeepSeek 为例,其他平台类似)
API_KEY = "你的API_KEY"
BASE_URL = "https://api.deepseek.com/v1/chat/completions"

def get_current_time():
    """模拟一个工具:获取当前时间"""
    from datetime import datetime
    return datetime.now().strftime("%Y-%m-%d %H:%M:%S")

def call_llm(messages):
    """调用大模型 API"""
    headers = {
        "Authorization": f"Bearer {API_KEY}",
        "Content-Type": "application/json"
    }
    payload = {
        "model": "deepseek-chat",
        "messages": messages,
        "temperature": 0.0
    }
    response = requests.post(BASE_URL, headers=headers, json=payload)
    response.raise_for_status()
    return response.json()["choices"][0]["message"]["content"]

def agent_run(user_input):
    """Agent 主循环:接收输入 → 决策 → 执行 → 返回结果"""
    # 1. 初始化对话
    messages = [
        {"role": "system", "content": "你是一个能调用工具的智能体。你可以调用 get_current_time() 来获取当前时间。请用 JSON 格式返回你的决策:{\"action\": \"get_current_time\"} 或 {\"action\": \"none\"}"},
        {"role": "user", "content": user_input}
    ]

    # 2. 让模型做决策
    decision = call_llm(messages)
    print(f"[模型决策] {decision}")

    try:
        decision_json = json.loads(decision)
        action = decision_json.get("action")
    except:
        action = "none"

    # 3. 执行工具
    if action == "get_current_time":
        result = get_current_time()
        print(f"[执行结果] {result}")
        return f"当前时间是:{result}"
    else:
        return "抱歉,我没有理解你的指令,无法执行。"

# 测试
if __name__ == "__main__":
    user_input = "获取当前时间并告诉我"
    output = agent_run(user_input)
    print(f"[最终输出] {output}")

第三步:运行看看

当你运行这段代码,你会看到:

复制代码
[模型决策] {"action": "get_current_time"}
[执行结果] 2025-09-03 14:23:45
[最终输出] 当前时间是:2025-09-03 14:23:45

恭喜你!你已经写出了第一个能"动手做事"的 Agent。

它不是在跟你聊天,而是在执行一个任务------调用工具、获取结果、返回答案。


常见错误 & 排坑指南

  1. 模型返回的不是 JSON​

    → 在 system prompt 里明确要求"必须用 JSON 格式返回",并设置 temperature=0.0 降低随机性。

  2. 工具函数没定义或报错​

    → 先确保工具函数能独立运行,再集成进 Agent。

  3. **API 调用失败(401/429)**​

    → 检查 API Key 是否正确,是否超限,是否需要设置代理。

  4. 模型"瞎编"工具名​

    → 在 system prompt 里明确列出可用工具,不要用模糊描述。


课后作业

  1. 修改代码,让 Agent 能调用两个工具:get_current_time() 和 send_email(to, subject, body)(模拟发送邮件,打印即可)。

  2. 尝试让 Agent 理解更复杂的指令,比如:"帮我查下现在几点,然后发邮件告诉老板我迟到了"(提示:你需要拆成两步)。

  3. 思考:如果模型决策错误,你怎么加入"人工确认"机制?


总结

这一讲我们学会了:

  • Agent ≠ Chatbot,它是能"做事"的系统

  • 最小 Agent = 感知 → 决策 → 执行 → 反馈

  • 用 50 行 Python + API 就能跑通一个能调用工具的 Agent

  • 避坑关键:明确工具定义、控制输出格式、降低温度

下一讲,我们将深入 如何稳定调用大模型 API,包括流式输出、超时重试、token 统计、成本意识------这些都是生产级 Agent 的必备基本功。


🧰 开发之余,处理 Base64、JWT 解析、JSON 格式化、Crontab 计算、PDF 合并压缩这些碎片需求,我常用一个纯前端本地工具箱:zz365.top (子页 PDF 大师:PDF 大师 - zz365工具箱)。所有计算在浏览器完成,文件不上传服务器,关页即清。免费、无登录、无广告,适合开发者当常驻标签页。

相关推荐
在世修行15 分钟前
干货:业务标识 vs 自动判据
python
howdoyoudo20260615 分钟前
当新案例冲击旧框架:分类系统的宿命与修正路径
大数据·网络·数据库·人工智能·安全·ai·分类
工作10年+,存储芯片行业17 分钟前
存储芯片产业全景:从产品矩阵到技术优势与质量体系
ai·nvme·芯片·数据中心·存储·pcie·半导体
zwd200517 分钟前
Manim move_to 和 shift 用法详解:相对位移、绝对落点与 aligned_edge(0.21.0 实测)
python·动画·可视化·shift·manim·数学动画·move_to
袖清暮雨18 分钟前
机器学习之逻辑回归
人工智能·机器学习·ai
“AI国潮设计-小江”41 分钟前
《Python+SDXL实战:用ControlNet精准控制“英歌舞戚风蛋糕”质感,附批量生成脚本》
开发语言·人工智能·python·prompt·aigc
jayhgq1 小时前
新一代Python包与项目管理工具——UV
开发语言·python·uv
for_ever_love__1 小时前
文件与异常——open、json、with 与 try-except 的工程写法
python·异常处理·文件操作·大模型开发
XLYcmy1 小时前
PDF 论文处理器 — 技术报告文档
数据库·python·网络安全·pdf·embedding·dify·rag
weixin_440401691 小时前
质朴的可视化绘图+pyecharts
开发语言·python·信息可视化·pyecharts