DeepSeek API入门:Python调用大模型实现文本生成与情感分析 简介面向自然语言处理领域的开发者这份围绕DeepSeek API从入门到精通的PDF技术资料从账号注册、获取API Key到依赖库安装、请求参数配置、请求构建与返回数据处理覆盖API调用的完整链路给出明确可循的操作指引。文中结合文本生成、情感分析、代码生成等典型场景展开案例讲解并针对常见调用问题梳理排错思路帮助有一定编程基础、希望深入了解API调用机制的研发人员快速上手。内容既适用于快速搭建智能客服系统、内容创作工具也可为AI在教育、医疗等行业中的落地应用提供技术参考整体编排循序渐进、注重实战。资源为单个PDF文档压缩包大小659KB内容结构紧凑便于按章节阅读与检索。目前已有2353人学习下载对于学习大模型API开发与集成的读者具有较高参考价值。1. 先别慌DeepSeek API到底是什么能帮你做什么第一次听说 API 这个词时很多人都把它想象成一个很高深的黑匣子甚至不敢点开官方文档。其实把 DeepSeek API 想成“给 AI 打电话的方式”就简单了网页聊天是你对着屏幕打字API 是你写程序自动拨打的一条电话线。只要你的程序能打通这条电话线就可以让 AI 帮你生成文章、写代码、做情感分析、当客服。这门课的读者完全不需要有机器学习基础只要会一点 Python或者愿意照着代码一步一步敲就能在半小时左右跑通第一个真实请求。它解决的核心问题只有一个把大语言模型变成你自己应用里的一个“会说话的零件”。2. 学之前先配好三样东西账号、API Key 和 Python 环境2.1 注册账号和获取 API Key第一步其实只有十分钟我第一次学 API 时最怕的就是注册环节总觉得会卡在某个验证码或者付费页面上。实际走一遍会发现整个过程比注册一个普通网站还简单打开官方平台页面找到右上角的注册按钮用邮箱加上密码就能创建账号。注册完记得去邮箱里点一下验证链接激活账号十分钟内能完成。登录之后在页面右上角你的头像下拉菜单里找到“API Key”入口。进去以后会看到一个“创建 API Key”的按钮点一下就生成一串由字母和数字组成的字符串。这串字符串就是你的身份凭证相当于你调用 DeepSeek API 的“钥匙”。有一点必须记住这串钥匙只完整显示这一次关掉页面就再也看不到了。如果你忘了只能重新生成一把新钥匙而旧钥匙立刻失效。这里有个血泪经验想提前告诉你把 API Key 保存到一个专门的笔记文件或者密码管理工具里千万别直接放在桌面上一个名叫“key.txt”的文件里。我身边就有朋友图省事把 Key 截图发到工作群里结果当天额度就被刷爆了。这串 Key 就是你的钱泄露出去等于别人拿着你的钱包在消费所以第一个习惯就要养成妥善保管不给任何人。2.2 安装 requests 库pip 一行命令搞定拿到钥匙以后接下来的事就轻松多了在你的电脑上准备一个可以发请求的工具。Python 里最常用的 HTTP 库叫requests它专门负责把你的代码指令打包成 HTTP 请求发给 DeepSeek 的服务器再把服务器返回的结果原样带回来。安装方法很简单打开命令行Windows 下是命令提示符Mac 或 Linux 下是终端输入下面这行命令pip install requests按回车以后pip 会从 Python 的官方软件仓库自动下载并安装requests库连同它的依赖项。看到屏幕上出现“Successfully installed requests”的字样说明装好了。如果你用的是 Python 3也可以把命令换成pip3 install requests效果完全一样。安装完成后你可以在 Python 里输入import requests验证一下只要不报错就说明整个环境已经就绪。到这里账号有了、钥匙有了、发请求的工具也有了万事俱备可以开始写第一行真正的调用代码了。2.3 为什么学这个要选 Python零基础最不容易劝退很多刚上手的新手都会纠结一个问题听说 API 不限制编程语言为什么教程里清一色都用 Python答案很简单因为 Python 是当前学习成本最低、示例代码最好读懂的语言。它在处理 JSON 格式数据上特别顺手而 DeepSeek API 的请求和响应正好都是 JSON 格式两者像拼图一样严丝合缝。另外Python 社区里围绕 AI 的生态已经非常成熟。你现在写下的这三四十行调用代码放在三年前可能需要自己封装一堆底层网络逻辑。而现在requests库把 HTTP 请求、重试、连接超时这些细节全包住了。你只需要关心三件事往哪里发请求、发送什么内容、拿到结果怎么处理。如果你之前只学过一点点 Python甚至完全没学过也没关系。接下来的代码一共就三四十行没有类和对象没有复杂的逻辑全部是“顺序执行”先设置参数再发请求最后打印结果。你不需要成为 Python 高手只需要能看懂字典这种{“键”: “值”}的写法就够了。我会在每一段代码后面解释每一行在干什么你跟着敲一遍比看十遍教程都管用。3. 跑通第一个真实请求让 AI 回你一句话3.1 先搞懂一个概念调用 API 的四个零件缺一不可在敲代码之前先用一个比方理解整个调用的过程。你要给 AI 打电话需要知道电话号码、你的身份、你要说的话、以及期望对方怎么回应。对应到代码里就是四样东西第一是基础 URL也就是 API 的地址。DeepSeek 的对话接口地址是https://api.deepseek.com/chat/completions这相当于对方的“电话号码”。第二是 API Key你的身份凭证证明“我是谁”。第三是 Headers请求头它负责告诉服务器我这里有钥匙请检查我的身份。第四是 Body请求体它承载你真正要说的话比如“帮我把这段话总结成三点”。这四个零件里面新手最容易蒙的是 Headers 和 Body 的区别。其实不用把它想复杂Headers 是贴在快递盒外面的快递单上面写着寄件人和收件人信息Body 是盒子里装的东西本身。快递员先看单子核实身份再拆盒子看内容。服务器收到请求后也会先检查 Headers 里的Authorization字段接着才读取 Body 里的任务内容。3.2 从零写第一段调用代码每个字段都拆开讲下面这段代码是完整的“让 AI 回你一句话”的最小示例。我建议你新建一个test.py文件逐行敲进去千万别复制粘贴打字的过程就是记逻辑的过程import requests # 引入 requests 库用来发送 HTTP 请求 # 第一步设置你的 API Key把星号部分替换成你实际的 Key api_key sk-你的API Key # 第二步设置 API 地址这是 DeepSeek 对话接口的固定地址 url https://api.deepseek.com/chat/completions # 第三步设置请求头带上你的 Key 和数据类型 headers { Authorization: fBearer {api_key}, # 格式固定必须在 Key 前面加上 Bearer 加空格 Content-Type: application/json # 告诉服务器发送的内容是 JSON 格式 } # 第四步设置请求体这是你真正想对 AI 说的话 data { model: deepseek-chat, # 告诉服务器用哪个模型 messages: [ {role: system, content: 你是一个乐于助人的助手}, # 设定 AI 的身份 {role: user, content: 请用一句话介绍什么是大语言模型} # 用户的问题 ] } # 第五步发送 POST 请求把数据放到服务器上等待返回 response requests.post(url, headersheaders, jsondata) # 第六步检查返回状态码200 表示请求成功 if response.status_code 200: result response.json() # 把返回的 JSON 数据解析成字典 generated_text result[choices][0][message][content] # 一层层找到 AI 的回复 print(generated_text) # 打印 AI 回复的内容 else: print(f请求失败状态码{response.status_code}错误信息{response.text})这段代码里最需要用心理解的是data这个字典的结构。model字段告诉服务器调用哪个模型deepseek-chat是 DeepSeek 的通用对话模型适合日常问答和文本生成。messages是一个列表里面每一项都是一条对话记录。每条记录由role和content组成role有三个可选值system用来设定 AI 的角色行为user代表用户说的话assistant代表 AI 曾经回复过的话。你可能想问为什么明明只要问一句话却要维护一个消息列表这是因为大语言模型没有“记忆”它只能从你给的上下文里看。如果你传了一个空的列表它根本不知道你是谁、你想干嘛。如果你把之前的对话全都加进去它就能根据上下文连续回答。这个机制稍后还会再讲现在你只要记住每次调用你都在给 AI 递一小撮对话历史。3.3 处理响应从一大坨 JSON 里捞出真正想要的回复运行刚才那段代码如果一切正常屏幕上会打印出 AI 的回复。但很多人第一次看响应的时候会愣住为什么我只问了一句话返回回来却是密密麻麻一长串内容这是正常的。服务器返回的完整数据是一个 JSON 字符串结构大致是这样最外层包含一个choices列表列表里有一个元素元素里包含messagemessage里有role和content。content才是 AI 真正回复你的那段文字其他那些字段如index、finish_reason等等都是附带信息告诉你这一次请求的内部状态。所以那句看起来有点绕的取值代码result[choices][0][message][content]其实就是一层层剥洋葱先取到choices这个列表再取它的第一项下标 0再取这一项里的message字典最后取message里的content字符串。以后你在调试的时候如果输出结果不对优先检查是不是层级弄错了这是 API 调用里最常见的“翻车”现场。3.4 失败时看哪里状态码是最好的定位线索写代码最怕的就是出错但 API 调用其实有一点很友好服务器出错了会直接告诉你错在哪里而且是用状态码的方式告诉你。你只需要记住几个最常见的状态码 200 表示一切正常请求成功。状态码 401 表示认证出问题通常是 API Key 不对、少了空格、或者格式写错了。状态码 429 表示你的请求频率太高超过了每分钟的限制服务器让你歇一歇。状态码 500 左右的开头基本是服务器自己的问题跟你没啥关系过一会儿再试一次就好。我第一次调通接口的时候卡在 401 整整半小时最后发现是复制 API Key 时把末尾的一个空格也复制进去了。这类问题基本是每个人都会踩的坑后面一章专门来梳理现在你只要知道看到状态码别慌先看它是不是 200不是的话对照上面的几种情况先自查一遍找不到问题再上网查错误信息里的文字说明。4. 三个真实场景示例文本生成、情感分析、代码生成4.1 场景一简单文本生成搭建你随身的文案助手第一个场景最直接就是把 AI 当成一个免费的文案帮手。比如你想让它帮你想一句朋友圈文案或者写一段产品介绍完全可以在刚才的代码基础上把content换成你的需求别的什么都不用动。import requests api_key sk-你的API Key url https://api.deepseek.com/chat/completions headers { Authorization: fBearer {api_key}, Content-Type: application/json } data { model: deepseek-chat, messages: [ {role: system, content: 你是一个擅长写产品文案的运营专家语言要生动、简洁}, {role: user, content: 帮我写一段30字以内的咖啡产品推广文案} ] } response requests.post(url, headersheaders, jsondata) if response.status_code 200: result response.json() print(result[choices][0][message][content]) else: print(f请求失败状态码{response.status_code}错误信息{response.text})这里的关键是system消息的设置。你可以把system消息理解成给 AI 的“人设指令”它决定了 AI 回答问题的语气和方向。同一个问题“帮我写一段咖啡文案”如果system设成“你是一个冷酷的科技测评博主”AI 写出来的是参数和分析设成“你是温柔的探店博主”AI 写出来的就是体验和氛围。学会在system里精准描述需求比不断追问 AI 更有效率这是所有大语言模型 API 调用的基本功。4.2 场景二情感分析判断一条评论是好评还是差评第二个场景是情感分析。这类任务传统上需要训练单独的机器学习模型现在用大语言模型 API 也能轻松搞定。你不需要额外下载任何工具还是用同一个接口只是把任务要求写进system里就行。import requests api_key sk-你的API Key url https://api.deepseek.com/chat/completions headers { Authorization: fBearer {api_key}, Content-Type: application/json } # 待判断的评论 comment 这家餐厅的菜品味道很好就是上菜速度有点慢 data { model: deepseek-chat, messages: [ {role: system, content: 你是一个情感分析助手。请判断用户评论的情感倾向只回复三个词之一positive、negative、neutral并给出一个0到1之间的置信度}, {role: user, content: comment} ] } response requests.post(url, headersheaders, jsondata) if response.status_code 200: result response.json() print(result[choices][0][message][content]) else: print(f请求失败状态码{response.status_code}错误信息{response.text})看到这段代码你应该已经发现了所谓“情感分析”本质上就是改了一套指令的文本生成。你在system里把任务说清楚AI 就会按你的要求输出结果。这个思路可以套用到很多任务上比如关键词提取、文章分类、翻译转换。以后遇到任何文本处理的需求先别急着写复杂程序问自己一句能不能把要求写进system让 AI 直接干有一点要提醒你如果你在处理大量文本最好把输出格式约束得更具体一些比如让它只能输出“positive/negative/neutral”这三个词不要输出多余的内容。这样后续处理结果时会更稳定不容易出现因为 AI 自由发挥而解析失败的情况。4.3 场景三代码生成让 AI 从零写出可用的小函数第三个场景可能是最有吸引力也最实用的让 AI 直接生成代码。比如你想要一个计算器函数或者一段读取文件的脚本你可以像下面这样要求它import requests api_key sk-你的API Key url https://api.deepseek.com/chat/completions headers { Authorization: fBearer {api_key}, Content-Type: application/json } data { model: deepseek-chat, messages: [ {role: system, content: 你是一个资深 Python 工程师只输出代码不要输出解释代码要包含注释}, {role: user, content: 用 Python 写一个函数接收两个数字返回它们的和并进行单元测试} ] } response requests.post(url, headersheaders, jsondata) if response.status_code 200: result response.json() generated_code result[choices][0][message][content] print(generated_code) else: print(f请求失败状态码{response.status_code}错误信息{response.text})注意我在system里加了一条“只输出代码不要输出解释”。这是因为大语言模型默认喜欢边解释边写代码给你一段 Python 代码前面还加一段“好的我来为你实现这个功能”。加了这条约束之后输出内容就干净了。生成的代码质量如何在大多数常见任务上这类模型生成的代码达到“能直接运行”的水平一点不夸张。遇到报错你甚至可以把报错信息原样丢回去让它自己修订。这件事真正舒服的地方在于AI 永远不会不耐烦你让它改一百遍它也会一句怨言没有地修改第一百次。5. 新手必看五个最容易踩的坑和排查方法5.1 坑一认证失败状态码 401现象请求发出去返回状态码 401大概率还会带一行类似“Authentication Fails”的错误说明。原因绝大多数情况是 API Key 不对。具体来说可能是三种一是复制的时候前后带了空格或换行符二是字母大小写错误Key 是区分大小写的三是使用了旧的 Key——重新生成过后旧 Key 会立即失效。网络代理有时也会干扰认证请求但相对少见。解决先把代码里的api_key变量重新赋值一下改成手动一个个字符敲进去不要用粘贴。如果还不行登录官方平台重新生成一个 Key替换掉旧 Key。注意替换之后之前使用旧 Key 的程序都会失效所以如果你有多个项目在跑把它们都一并更新再换新 Key。5.2 坑二请求超时响应迟迟不来现象代码运行后没有输出过了很久报出Timeout或连接超时的错误。原因网络连接不稳定或者服务器负载高导致请求没有在预期时间内返回。有些公共网络会拦截对外部 API 的长连接也会造成超时。解决在requests.post里加一个timeout参数例如timeout30给请求设置 30 秒的上限。这样如果超时程序会明确报错而不是卡住不动。然后换一个网络环境试试比如从公司网络切到手机热点。如果你需要频繁调用还可以自己实现一个简单的重试逻辑超时后等待几秒钟再重新发送一次最多重试三次。重试逻辑代码量不大但能解决大部分临时性的网络波动问题。5.3 坑三参数错误模型名或消息结构不对现象返回状态码 400提示Invalid Parameter之类的信息。原因最常见的是把模型名拼错了。DeepSeek 的通用对话模型是deepseek-chat有段时间有开发者误写成deepseek-v2或者deepseek-coder自然会被拒绝。另外messages的结构也可能不对比如忘了role字段或者content写了非字符串的内容。解决对照官方文档逐字检查model的名称。messages必须是一个列表列表的每一项必须是一个字典字典必须包含role和content两个字段而且两个字段的值都必须是字符串。新手最容易忘记的是给messages加外层列表直接写成了字典这个要特别留意。5.4 坑四响应解析报错拿不到 content现象状态码是 200请求成功了但执行到result[choices][0][message][content]时报错比如KeyError或者TypeError。原因你不一定每次都拿到同一个形状的响应。有些接口返回的字段名不完全一样或者choices列表里没有内容又或者响应里多了一层结构。如果你用的是旧版本的模型名称也可能出现字段差异。解决不要一上来就取深层字段。先用print(response.json())把完整的响应打印出来看一眼确认实际返回了什么。再对照词典结构逐层取值。另外取列表元素前先判断len(result[choices]) 0取字段前先判断一下message in result[choices][0]这样即使结构有变化程序也不会直接崩溃而是能告诉你到底缺了什么。5.5 坑五API Key 泄露被盗刷额度现象控制台里出现你不认识的请求记录或者账单显示大量调用再看代码发现 Key 写死在前端页面或公共仓库里。原因有人把 Key 提交到了公开的 GitHub 仓库或者写进了被分享出去的演示页面代码里。API Key 是跟着Authorization头发出去的一旦代码本身流传出去任何拿到代码的人都能用你的 Key。解决重要程度排第一位。立即到平台后台把这个 Key 删除或重新生成让旧 Key 立刻变为废弃状态。以后要养成两个习惯第一Key 永远保存在环境变量或本地配置文件里不要出现在代码里第二不要提交到任何公开仓库。在本地写测试脚本时Key 还要设置好文件权限防止同电脑其他人看到。这件事我跟很多人讲过安全意识和编码能力是两码事后者可以慢慢练前者必须从一开始就做好。6. 下一步学什么从“能跑”到“会做完整应用”到了这一步你已经跑通了第一个真实的 DeepSeek API 请求掌握了一个能覆盖绝大多数文本任务的通用调用模板。下一步到底该怎么走我给你一条非常实际的学习路径。先练好 Prompt 写作。用 API 做产品本质上就是通过system消息把任务定义清楚。你可以每天拿一个真实的场景练手比如让 AI 给一段唇枪舌剑的聊天记录做情绪分析或者让它把你手头的工作报告压缩成五条摘要。慢慢地你就会发现同样一个模型在不同人的提示词之下产出的效果天差地别。Prompt 不是玄学它是有方法论的先定角色再给任务再给格式要求最后给约束条件。再学会管理上下文。现在每次调用你都是只发一条消息但真实应用里用户是会连续提问的。你需要把历史记录保存在自己这边下次请求时拼接到messages里一起发给 API。同时注意模型能接受的上下文长度是有上限的所以你要学会做“窗口滑动”超出长度时把最老的对话丢掉保留最近的几条。最后做一个完整的小项目。我建议你做一个“智能客服消息助手”从桌面一个 txt 文件里读取用户提问调用 API 获得回答把回答写进另一个 txt 文件。这个项目虽然简陋但涵盖了你未来做真实应用的所有环节文件读写、请求调用、数据解析、错误处理。做通之后再往界面上加东西也会顺手很多。从那以后我每次写 API 调用代码都强制自己走一遍这个流程先确认 Key 没问题再确认模型名拼写正确然后打印一次完整响应确认结构最后再开始写解析逻辑。这套流程帮我避开了绝大多数低级错误希望也能帮到你。本文还有配套的精品资源点击获取