零基础AI应用开发第一天:用Python调用DeepSeek API搭建命令行聊天机器人

发布时间:2026/10/27 3:34:43
零基础AI应用开发第一天:用Python调用DeepSeek API搭建命令行聊天机器人 1. 从零上手AI应用开发第一天到底该干什么很多人一听到“AI应用开发”这四个字第一反应是这玩意儿是不是得先学完线性代数、概率论、深度学习框架再啃几篇Transformer论文才有资格碰我当初也是这么想的结果拖了大半年连一行代码都没写。后来真正上手才发现零基础做AI应用开发第一天最该干的事不是学理论而是把“调用大模型API”这条链路跑通。你只要能发一个HTTP请求、能解析一段JSON就已经能做出一个能用的东西了。这篇内容就是围绕这个思路展开的。核心目标很明确用Python和requests库调用DeepSeek API做一个能在命令行里跟大模型对话的聊天机器人。涉及的关键词包括ai应用开发、python、requests、deepseek api、命令行聊天机器人。整套东西不需要GPU不需要本地部署模型一台能上网的普通电脑就够Python版本3.8以上即可。适合谁看如果你是会一点点Python基础知道变量、函数、循环是什么但从来没调用过任何大模型接口的人这篇就是给你写的。如果你完全没碰过Python也不用慌我会把安装和环境配置的坑一并讲清楚照着做就行。做完之后你会得到一个真实可运行的小项目而不是一堆看不懂的概念。我先把第一天的整体路线说清楚让你心里有底第一步装Python和配环境第二步装requests库并验证网络请求能力第三步去DeepSeek开放平台拿到API Key第四步写一个最小的API调用脚本跑通第五步把它改造成带上下文记忆的命令行聊天循环。五步走完你就完成了从“不会”到“有一个能跑的东西”的跨越。下面逐步拆解每一步我都会告诉你为什么这么做以及我踩过的坑。2. 环境准备Python安装与requests库配置的实操细节2.1 Python版本选择与安装避坑Python安装这件事看起来简单但新手翻车率极高。核心原则只有一条去python官网下载不要用来路不明的第三方安装包。网上搜“python安装教程”会出来一大堆有些捆绑了乱七八糟的东西装完环境变量一团糟。直接搜python官网进Downloads页面选3.8以上的稳定版本我个人建议选3.10或3.11兼容性好第三方库支持也全。安装的时候有一个关键勾选项Windows用户一定要勾上“Add Python to PATH”。这个选项的作用是把Python加到系统环境变量里勾了之后你在命令行里直接敲python就能用不勾的话你得手动配环境变量新手很容易在这里卡住。Mac用户相对省心用官网的pkg安装包一路下一步就行或者用homebrew装也可以。装完之后验证一下打开命令行Windows是cmd或PowerShellMac是终端输入python --version如果输出了版本号比如Python 3.11.5说明装好了。如果提示“不是内部或外部命令”那就是环境变量没配好Windows用户重新跑一遍安装程序勾上Add to PATHMac用户检查一下是不是装到了非标准路径。提示有些系统里python命令指向的是Python 2你需要用python3来调用。验证的时候两个都试一下哪个输出了3.x的版本号就用哪个。2.2 requests库安装与网络请求验证Python自带的urllib库也能发HTTP请求但写起来极其啰嗦所以业界调API基本都用requests。安装就一行命令pip install requests如果pip命令不识别试试pip3 install requests或者python -m pip install requests。后一种写法最稳因为它明确指定了用哪个Python解释器来执行pip能避免多版本Python共存时的混乱。装完之后我建议你立刻写一个最小的请求测试确认网络链路是通的。这一步很多人跳过结果后面调API报错的时候分不清是网络问题还是代码问题。测试脚本长这样import requests resp requests.get(https://httpbin.org/get, timeout10) print(resp.status_code) print(resp.text[:200])跑出来如果打印了200和一段JSON说明requests能用、网络能通。如果卡住不动或者报连接错误那可能是网络环境的问题先把这个解决掉再往下走。注意调API的时候一定要加timeout参数。我见过太多人写请求不带超时结果网络一抖动程序就永久卡死排查半天以为是代码逻辑问题。加上timeout出问题会直接抛异常定位快得多。2.3 编辑器选择PyCharm还是VS Code关于IDE网上搜“pycharm deepseek api 调用”和“vscode python环境配置”的人都不少。我的建议是新手用VS Code轻量、启动快、配Python插件后体验很好。PyCharm功能更全但偏重社区版够用专业版收费。如果你已经装了PyCharm那就直接用不用换。VS Code的关键配置是装Python扩展然后在设置里选对解释器。按CtrlShiftPMac是CmdShiftP输入“Python: Select Interpreter”选你刚装的那个Python版本。这一步不做的话你终端里pip装的库编辑器里import会报找不到很多人卡在这里以为是库没装上。3. DeepSeek API调用从拿Key到跑通第一个请求3.1 获取API Key与接口基本信息DeepSeek的API调用方式和OpenAI的接口格式高度兼容这对开发者来说是好事意味着你学会一套换其他家模型迁移成本很低。首先去DeepSeek开放平台注册账号在控制台里创建一个API Key。这个Key是一串长字符串创建后只显示一次一定要立刻复制保存关掉页面就再也看不到了只能重新创建。拿到Key之后你需要知道两个核心信息接口地址和请求格式。DeepSeek的对话接口地址是https://api.deepseek.com/chat/completions请求方式是POST请求头里要带Authorization: Bearer 你的Key和Content-Type: application/json。请求体是一个JSON核心字段是model和messages。model填deepseek-chatmessages是一个数组里面每个元素有role和content两个字段。role有三种system用来设定AI的角色和行为规则user是用户说的话assistant是AI的回复。这个结构就是所谓的“对话消息列表”理解它是理解整个大模型对话机制的关键。3.2 最小可运行调用脚本先别急着做聊天机器人第一步是跑通一个最简单的请求。代码如下import requests API_KEY 你的API Key URL https://api.deepseek.com/chat/completions headers { Authorization: fBearer {API_KEY}, Content-Type: application/json } data { model: deepseek-chat, messages: [ {role: user, content: 用一句话解释什么是API} ] } resp requests.post(URL, headersheaders, jsondata, timeout30) print(resp.status_code) print(resp.json())跑通之后你会看到返回的JSON里choices[0].message.content就是AI的回复内容。这一步是整个项目的基石跑通了后面都是在这个基础上加东西。提示requests.post里的jsondata参数会自动把字典转成JSON字符串并设置正确的Content-Type比手动json.dumps再传data要省事也不容易出错。3.3 常见报错与排查思路第一次调API报错几乎是必然的。我把最常见的几个列出来你对照着排查报错信息原因解决办法401 UnauthorizedAPI Key错误或没传检查Key是否复制完整Bearer后面有没有空格429 Too Many Requests请求频率超限或余额不足降低请求频率检查账户余额exceeded retry limit, last status: 429重试次数用完仍是429说明持续超限需要等待或充值ConnectionError网络不通检查网络确认接口地址拼写正确JSONDecodeError返回的不是JSON打印resp.text看原始返回通常是报错页面429这个错误特别值得说。它的意思是“请求太多”可能有两种情况一是你短时间内发了太多请求触发了限流二是账户余额用完了。很多人看到429以为是代码问题反复重试结果越试越糟。正确做法是先看返回体里的错误信息它会告诉你具体原因。4. 命令行聊天机器人的完整实现4.1 核心设计思路上下文记忆怎么实现大模型本身是“无状态”的它不记得你上一句说了什么。所谓“对话记忆”本质上是每次请求都把之前的对话历史一起发过去。比如你问了一句“什么是Python”AI回答了你再问“它有什么优点”这时候请求里要带上三条消息第一条user问Python第二条assistant回答第三条user问优点。模型看到完整历史才能理解“它”指的是Python。这个机制决定了聊天机器人的核心数据结构一个不断增长的messages列表。每轮对话把用户输入append进去发请求拿到回复后再把回复append进去。下一轮请求就带着完整历史。理解这一点你就理解了所有对话类AI应用的基本原理。4.2 完整代码实现与逐段解析下面是完整的命令行聊天机器人代码我把它拆成几块讲import requests API_KEY 你的API Key URL https://api.deepseek.com/chat/completions headers { Authorization: fBearer {API_KEY}, Content-Type: application/json } messages [ {role: system, content: 你是一个友好的助手回答简洁明了。} ] def chat(user_input): messages.append({role: user, content: user_input}) data { model: deepseek-chat, messages: messages } try: resp requests.post(URL, headersheaders, jsondata, timeout30) resp.raise_for_status() reply resp.json()[choices][0][message][content] messages.append({role: assistant, content: reply}) return reply except requests.exceptions.Timeout: return 请求超时请重试 except requests.exceptions.HTTPError as e: return f请求出错{e} except KeyError: return 返回格式异常请检查API响应 def main(): print(聊天机器人已启动输入 quit 退出) while True: user_input input(你) if user_input.strip().lower() quit: break reply chat(user_input) print(fAI{reply}) if __name__ __main__: main()逐段说。messages列表初始化时放了一条system消息这是给AI设定人设的你可以改成任何你想要的风格。chat函数是核心它做了四件事把用户输入加入历史、发请求、解析回复、把回复也加入历史。异常处理分了三类超时、HTTP错误、返回格式异常分别给不同的提示这样出问题的时候你能快速判断是哪一类。main函数是一个无限循环读用户输入判断是不是退出命令否则调用chat并打印回复。if __name__ __main__是Python的标准写法保证这个文件被直接运行时才执行main被import时不执行。4.3 参数调优temperature与max_tokens上面代码里没写这两个参数但它们很重要。temperature控制回复的随机性范围0到2值越低回复越确定、越保守值越高越有创造性。做事实性问答建议设0.3左右做创意写作可以设1.0以上。max_tokens限制回复的最大长度不设的话用模型默认值设太小会导致回复被截断。data { model: deepseek-chat, messages: messages, temperature: 0.7, max_tokens: 1000 }我实测下来日常聊天temperature设0.7比较自然不会太死板也不会太飘。max_tokens设1000够大多数场景用如果你要它写长文调到2000或更高。5. 实操中踩过的坑与排查技巧5.1 上下文过长导致的问题聊天轮数多了之后messages列表会越来越长请求体越来越大最终可能超出模型的上下文窗口限制报错或者响应变慢。解决办法有两种一是限制历史轮数只保留最近N轮二是做摘要压缩把早期对话总结成一段话。第一天先用第一种简单有效MAX_HISTORY 20 if len(messages) MAX_HISTORY: messages [messages[0]] messages[-(MAX_HISTORY - 1):]注意要保留第一条system消息所以是[messages[0]]加上后面的部分。这个逻辑放在每次append之前执行。5.2 API Key的安全管理把Key硬编码在代码里是最省事但最不安全的做法。一旦代码分享出去Key就泄露了。正确做法是用环境变量import os API_KEY os.environ.get(DEEPSEEK_API_KEY)然后在系统里设置这个环境变量。Windows用set命令或系统设置里的环境变量面板Mac和Linux在.bashrc或.zshrc里加export DEEPSEEK_API_KEY你的Key。这样代码里就不含敏感信息可以放心分享。5.3 编码问题与中文乱码Windows命令行默认编码可能是GBK打印中文有时会乱码。解决办法是在代码开头加import sys import io sys.stdout io.TextIOWrapper(sys.stdout.buffer, encodingutf-8)或者直接在命令行里执行chcp 65001切换到UTF-8编码。Mac和Linux一般没这个问题。5.4 常见问题速查表现象可能原因排查方向程序卡住无响应没设timeout加timeout参数回复内容为空max_tokens太小或模型异常打印完整响应体检查中文显示乱码终端编码问题切UTF-8或改代码编码第二轮对话AI失忆messages没累积检查是否append了assistant回复请求越来越慢历史过长限制历史轮数429持续出现余额不足登录平台查看余额6. 第一天之后的扩展方向跑通这个命令行机器人之后你手里其实已经有了一个AI应用的最小骨架。接下来能扩展的方向很多我按难度排一下。最简单的把命令行换成Web界面用Flask或FastAPI起一个服务前端一个输入框一个显示区就是一个网页版聊天工具。再进一步把messages持久化到文件或数据库就能实现跨会话的记忆。还可以加流式输出让回复像打字一样一个字一个字蹦出来体验好很多DeepSeek的API支持stream参数。如果你想做点更实用的可以给机器人加“工具调用”能力比如让它能查天气、能算数学、能读本地文件。这就是所谓的Agent方向核心思路是让模型输出结构化的指令你的代码去执行这个指令再把结果喂回模型。第一天不用碰这些但知道有这个方向学起来会更有目标感。我个人在实际操作中的体会是AI应用开发的门槛不在模型本身而在工程细节。API调用就那几行代码但环境配置、错误处理、上下文管理、安全实践这些“脏活累活”才是真正决定你能不能做出一个稳定可用东西的关键。第一天把这条链路走通比看十篇理论文章都有用。最后再分享一个小技巧把每次请求的耗时和token用量打印出来你会对成本和性能有直观感受调优的时候心里有数。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询