【Agent开发第一期】LLM+Agent-从概念到第一次模型调用

📅 2026/7/19 2:15:18
【Agent开发第一期】LLM+Agent-从概念到第一次模型调用
文章目录一、前言二、概念对齐LLM vs Agent2.1 一张表看清区别2.2 Agent 的组装公式三、开工准备从注册到第一次调用3.1 注册 DeepSeek 充值 创建 API Key3.2 Python 环境检查3.3 虚拟环境为什么要单独建3.4 跑通第一行代码四、跑起来第一次模型调用的实际体验4.1 核心代码就一行4.2 三个预设问题感受 LLM 的能力边界4.3 交互模式为什么不用内置 input4.4 三个埋伏笔的问题五、执行脚本六、总结一、前言最近在折腾 Agent刚开始就被两道门槛卡得怀疑人生概念门槛LLM 和 Agent 到底差在哪学 Agent 是不是得先把 LLM 啃透操作门槛API Key 上哪买代码跑不起来报一堆ModuleNotFoundError怎么办本人不才踩了一圈坑之后总算把第一期的环境跑通了。这一篇文章把概念讲清楚、把操作步骤拆明白看完你就能一句话讲清 LLM vs Agent注册 DeepSeek、拿到自己的 API Key跑通第一次模型调用看到模型回你一句话本文是 Agent 教学系列第 01 期的实战笔记干货为主偶尔自嘲各位看官将就着看。二、概念对齐LLM vs Agent2.1 一张表看清区别先上一张我反复念叨的对照表看完基本就懂了LLMAgent本质大语言模型输入文本/图像/音频输出文本现已多模态以 LLM 为大脑能调用工具、保持记忆、自主循环能力边界只会生成内容说、写、画不能主动行动能说也能做调工具、读写文件、上网类比一个博学但无手脚的顾问一个有手有脚的助理翻译成人话LLM 是会说不会做Agent 是能说也能做。你问 LLM现在几点它会一本正经地胡编你让 LLM 帮你订个外卖它也只能嘴上答应手是伸不出去的。Agent 就是给这个顾问装上手脚和脑子让它真能干点活。2.2 Agent 的组装公式记住这一行Agent LLM(大脑) 工具(手脚) 记忆(脑子) 循环(意志)后续 14 期我们就是给 LLM 一件一件地装装备工具让模型能查时间、读文件、上网搜记忆让模型记住你上一句说了啥循环让模型自己决定下一步干啥而不是问一句答一句所以学 Agent 这事本质上不是学一个新东西而是给 LLM 加装备。先把第一期的环境跑通后面的事都好办。三、开工准备从注册到第一次调用3.1 注册 DeepSeek 充值 创建 API Key三步走简单粗暴注册账号访问 https://platform.deepseek.com/手机号注册完成实名认证充值额度DeepSeek 按 token 计费1 元约能买 100 万 token先充 10 元够学完整套课程创建 API Key控制台 → API Keys → 创建新 Key踩坑提醒API Key 只显示一次复制好立刻存起来丢了就只能重建。命名建议teaching-course以后好认。3.2 Python 环境检查课程代码需要 Python 3.10 及以上。先在终端确认python3--version# macOS / Linuxpython--version# Windows输出版本号 ≥ 3.10跳过安装直接到 3.3提示command not found或版本过低按下面装macOS系统自带 Python 通常偏低建议另装访问 https://www.python.org/downloads/ 下载最新 3.x 安装包双击安装或用 Homebrewbrew install python3.13装完重开终端再次确认版本Windows访问 https://www.python.org/downloads/ 下载安装包安装时务必勾选 “Add python.exe to PATH”否则命令行找不到python装完重开 PowerShell / cmd执行python --version确认3.3 虚拟环境为什么要单独建为什么要虚拟环境虚拟环境venv给当前项目单独装一套依赖和系统、其他项目互不污染。本课程从 01 期用到 15 期依赖覆盖 openai / mcp / fastapi 等多个大库不隔离的话版本会互相打架。删项目时只要删.venv目录即可干净卸载。类比一下就像给你的厨房单独配一套锅别和邻居共用不然今天他炖了辣的你明天煮个甜汤都得串味。macOS / Linux# 1. 创建虚拟环境只需一次python3-mvenv .venv# 2. 激活每次开新终端都要做一次source.venv/bin/activate# 3. 安装依赖激活后 pip 会装到 .venv 里不污染全局pipinstall-rrequirements.txt# 4. 配置 API Keycp.env.example .env# 用文本编辑器打开 .env把 DEEPSEEK_API_KEY 改成你刚才复制的真实 KeyWindowsPowerShell# 1. 创建虚拟环境只需一次python-m venv.venv# 2. 激活每次开新终端都要做一次.venv\Scripts\activate# 3. 安装依赖pip install-r requirements.txt# 4. 配置 API Keycopy.env.example.env# 用记事本打开 .env把 DEEPSEEK_API_KEY 改成你刚才复制的真实 Key激活成功后终端提示符前面会出现(.venv)说明你已经在虚拟环境里。此时python和python3都指向虚拟环境里的 Python。Windows 常见报错首次激活若提示无法加载文件……因为在此系统上禁止运行脚本在 PowerShell 管理员模式执行一次Set-ExecutionPolicy -Scope CurrentUser RemoteSigned然后重试激活即可。3.4 跑通第一行代码环境装好跑一下python code/step01_hello_agent.py没激活虚拟环境直接跑会报ModuleNotFoundError: No module named dotenv因为依赖没装进来。看到这个报错就回到 3.3 激活环境。程序会自动问三个问题然后进入交互模式。四、跑起来第一次模型调用的实际体验4.1 核心代码就一行把所有花架子去掉第一次调用就靠这一段clientOpenAI(api_keyos.environ[DEEPSEEK_API_KEY],base_urlhttps://api.deepseek.com,# 关键指向 DeepSeek)为什么用openaiSDK 而不是官方deepseekSDK答案很朴素DeepSeek 没有独立 SDK官方推荐用openaiSDK 改base_url。这样做的好处是代码几乎零成本切换到 OpenAI、Moonshot、智谱等兼容厂商——以后想换厂商改一行 URL 就行不用重写。调用流程长这样你的代码 → openai SDK → HTTPS 请求 → DeepSeek 服务器 → 模型推理 → 返回 JSON → SDK 解析 → 你拿到文本4.2 三个预设问题感受 LLM 的能力边界程序跑起来会自动问三个问题“你好请用一句话介绍你自己” —— 感受模型自我描述“用 Python 写一个冒泡排序只要代码不要解释” —— 感受代码生成能力“帮我算一下 17 * 23 等于多少” —— 感受数学能力顺带看看它会不会算错这三个问题不是随便挑的每个都在摸一下 LLM 的底。跑完你会对它能干什么、不能干什么有个直观感受。4.3 交互模式为什么不用内置 input进入交互模式后程序用的是prompt_toolkit而不是内置的input()。原因很实在完整退格长文本和中文都能删到行首input()在某些系统上中文会删一半卡住← / →移动光标改字不用从头重打↑ / ↓翻历史上一句问过啥能直接翻回来Ctrl-C作废当前行而不退出程序手滑了不丢会话这种小细节看着不起眼真正用起来体验差一大截。4.4 三个埋伏笔的问题我在程序里埋了三个伏笔专门让你踩一踩然后引出后续课程你问的问题模型的回答后面哪期解决“现在几点”答不准它不知道当前时间第 05 期 Tool Use连续问三次同样问题每次回答略有不同第 03 期 history“我叫张三” → “我姓什么”它答不上来第 02 期连续对话这就是这套课程的节奏先让你发现模型哪里不行再告诉你后面怎么让它行。五、执行脚本#!/usr/bin/env python3step01_hello_agent.py — 第 01 期:认识 Agent 开工准备 本期目标: 1. 配置好 DeepSeek API Key 2. 能跑通第一次模型调用 3. 理解 LLM 和 Agent 的区别(为后续铺垫) 运行: python code/step01_hello_agent.py importosfromdotenvimportload_dotenvfromopenaiimportOpenAIfromprompt_toolkitimportpromptfromprompt_toolkit.historyimportInMemoryHistory load_dotenv()# 1. 初始化客户端 # DeepSeek 兼容 OpenAI 协议,所以直接用 openai SDK# 关键配置:# - api_key:你在 platform.deepseek.com 创建的 Key# - base_url:固定为 https://api.deepseek.comclientOpenAI(api_keyos.environ[DEEPSEEK_API_KEY],base_urlos.environ.get(DEEPSEEK_BASE_URL,https://api.deepseek.com),)MODELos.environ.get(DEEPSEEK_MODEL,deepseek-chat)defchat(user_input:str)-str:单次对话:输入一句话,返回模型回答。responseclient.chat.completions.create(modelMODEL,messages[{role:user,content:user_input}],max_tokens1000,)returnresponse.choices[0].message.contentdefmain():print(*60)print(第 01 期:Hello Agent — 你的第一次模型调用)print(*60)print(f当前模型:{MODEL})print(fAPI 地址:{client.base_url})print(*60)# 试试三个问题,感受 LLM 的能力边界questions[你好,请用一句话介绍你自己,用 Python 写一个冒泡排序,只要代码不要解释,帮我算一下 17 * 23 等于多少,]fori,qinenumerate(questions,1):print(f\n[问题{i}]{q})try:answerchat(q)print(f[回答]{answer})exceptExceptionase:print(f[出错]{e})print(→ 请检查 .env 里的 DEEPSEEK_API_KEY 是否正确)return# 交互式对话print(\n*60)print(现在可以自由对话,输入 quit 退出)print(←/→ 移动光标,↑/↓ 翻历史,Ctrl-C 作废当前行重输)print(*60)historyInMemoryHistory()whileTrue:try:user_inputprompt(\n你: ,historyhistory).strip()except(EOFError,KeyboardInterrupt):# Ctrl-D / Ctrl-C:作废当前行,继续下一轮(不退出程序)print( (本行作废,重新输入))continueifuser_input.lower()in(quit,exit,q):print(再见!)breakifnotuser_input:continuetry:print(fAlex:{chat(user_input)})exceptExceptionase:print(f[出错]{e})if__name____main__:main()六、总结一句话回顾LLM 是会说不会做Agent 是能说也能做。Agent LLM 手脚 脑子 意志。三个关键动作记牢注册 DeepSeek→ platform.deepseek.com手机号 实名创建 API Key→ 只显示一次保存好配置.env→ 把 Key 填进去跑通第一次调用一行代码记住本期clientOpenAI(api_keyKEY,base_urlhttps://api.deepseek.com)DeepSeek 兼容 OpenAI 协议改base_url即可。适用场景这篇适合零基础入门 Agent 的人——概念模糊、环境没搭、第一次跑模型调用。已经能熟练用 OpenAI SDK 的可以跳到第 05 期 Tool Use。下一期预告第 02 期——单次调用 → 连续对话。你会发现这一期的程序金鱼记忆问完就忘敬请期待。感谢各位看官的一路陪伴大家都再接再厉