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

相关推荐
瓦学妹2 小时前
什么是网络索引?它是如何工作的?
大数据·网络·python·网络爬虫
天天爱吃肉82182 小时前
商用车多体动力学实战笔记|第6篇:动力传动系统(发动机、变速箱、分动器、TCS、LSD限滑差速)
大数据·人工智能·笔记·python·嵌入式硬件·汽车
海盗12342 小时前
微软技术周报 ——2026-08-03
后端·python·microsoft·c#·.netcore
大数据魔法师2 小时前
【最全详解】DuckDB Python 全套 API 语法、参数与实战用法(零基础全覆盖)
python·数据分析
MC皮蛋侠客4 小时前
SQLAlchemy 系列(七):高级建模与高效写入——批量 DML、方言与扩展
数据库·python
Zane19944 小时前
@property 到底是怎么把方法伪装成属性的?一文吃透 property、staticmethod、classmethod
后端·python
qq_316411034 小时前
AI 情感陪伴智能潮玩软硬件一体化开发案例
人工智能·python
废弃的小码农5 小时前
功能测试--Day07--Python编程基础
开发语言·python
zx1154505 小时前
大模型工具调用次数限制
人工智能·python