第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工具箱)。所有计算在浏览器完成,文件不上传服务器,关页即清。免费、无登录、无广告,适合开发者当常驻标签页。

相关推荐
小飞学编程...12 分钟前
【equals 、Comparable、Comparator 三者的区别】
java·python
DS随心转APP18 分钟前
实测 AI 导出鸭实操效果,依托 AI 直接生成 word 功能横向比对五类导出办法,梳理办公文档转换最优路径
人工智能·ai·word·deepseek·ai导出鸭
青 春 记 忆19 分钟前
零基础入门python21:Flask账本的数据模型——用户、分类和账目
python·flask·后端开发
hy.z_77725 分钟前
【软件测试】8. 自动化测试实践
python
前沿在线27 分钟前
2026 WRC世界机器人大会| 黑芝麻智能展台亮点
人工智能·ai·大模型
楠楠子呀1 小时前
从零构建高性能 WhatsApp 链接生成器与重定向服务:架构与路由解析
redis·python·容器·架构·flink·散列表·flume
OPEN-F1 小时前
Python进阶教程:算法与数据结构入门
开发语言·python
薛定猫AI1 小时前
【技术干货】Claude Code多模型代理与反馈闭环:Python实现可验证的AI编程工作流
开发语言·python·ai编程
每天一道题1 小时前
从 async/await 到幂等恢复:把 Python 并发和 Agent Runtime 一次讲清楚
分布式·python