Python + DeepSeek API:3小时搭建一个AI自动化工作流(含完整代码)

发布时间:2026/9/28 7:59:14
Python + DeepSeek API:3小时搭建一个AI自动化工作流(含完整代码) \n\n# Python DeepSeek API3小时搭建一个AI自动化工作流含完整代码2026年了大模型API已经白菜价但很多开发者还在手动复制粘贴让AI帮忙干活。本文教你用Python调用DeepSeek API搭建一个真正能跑的自动化工作流——从日报生成到邮件分类全程代码实战开箱即用。前言为什么要用AI自动化工作流日常开发中有大量重复性工作写日报、整理会议纪要、分类邮件、生成文档……这些任务有一个共同特点规则明确、格式固定、但内容多变——完美契合大模型的能力。DeepSeek API兼容OpenAI SDK调用成本极低输入低至¥0.001/千token加上Python的生态优势搭建自动化工作流事半功倍。本文你将学到DeepSeek API的基础调用方法两个实战场景自动生成工作日报 邮件智能分类性能优化技巧和成本控制策略完整可运行的代码示例一、环境准备1.1 安装依赖pipinstallopenai python-dotenvDeepSeek API兼容OpenAI的SDK所以直接用openai库即可无需额外安装。1.2 获取API Key前往 platform.deepseek.com 注册并创建API Key。创建完成后将Key保存到环境变量# .env 文件DEEPSEEK_API_KEYsk-your-api-key-hereDEEPSEEK_BASE_URLhttps://api.deepseek.com安全提示API Key属于敏感信息切勿硬编码在代码中或提交到公开仓库。建议使用.env文件管理并将.env加入.gitignore。1.3 基础调用封装先封装一个通用的DeepSeek调用函数后续所有场景都复用importosimportjsonfromopenaiimportOpenAIfromdotenvimportload_dotenv load_dotenv()clientOpenAI(api_keyos.getenv(DEEPSEEK_API_KEY),base_urlos.getenv(DEEPSEEK_BASE_URL,https://api.deepseek.com),)defcall_deepseek(prompt:str,system_prompt:str你是一个高效的AI助手。,model:strdeepseek-chat,temperature:float0.3,max_tokens:int2048,json_mode:boolFalse,)-str:通用DeepSeek API调用封装kwargs{model:model,messages:[{role:system,content:system_prompt},{role:user,content:prompt},],temperature:temperature,max_tokens:max_tokens,}ifjson_mode:kwargs[response_format]{type:json_object}responseclient.chat.completions.create(**kwargs)returnresponse.choices[0].message.content几个设计要点temperature0.3自动化场景需要稳定输出调低随机性json_mode需要结构化输出时开启DeepSeek支持JSON格式响应system_prompt可自定义不同场景传入不同的角色设定二、实战场景1自动生成工作日报2.1 需求分析每天下班前把今天做的事情整理成日报——格式固定但内容每天不同。我们可以把零散的工作记录丢给AI让它按模板生成规范日报。2.2 完整实现defgenerate_daily_report(tasks:list[str],date:strNone)-str:根据任务列表生成工作日报fromdatetimeimportdatetimeifdateisNone:datedatetime.now().strftime(%Y年%m月%d日)task_list\n.join(f-{t}fortintasks)system_prompt你是一位项目管理专家擅长将零散的工作记录整理成结构清晰的日报。 日报格式要求 1. 按项目/模块分类 2. 每项工作标注完成状态已完成/进行中/待跟进 3. 末尾添加明日计划根据今日进展推断 4. 语言简洁专业避免冗余promptf请根据以下工作记录生成{date}的工作日报{task_list}要求按项目分类标注完成状态补充明日计划。returncall_deepseek(prompt,system_promptsystem_prompt)# 使用示例 if__name____main__:today_tasks[修复了用户登录页面的CSS样式问题,完成了订单模块的接口对接POST /api/orders 已通过联调,参加了下午3点的需求评审会讨论了V2.3版本的搜索优化,写了一个Python脚本自动从数据库导出日报数据,帮新人配置了开发环境,Review了小李的PR #287支付模块提了3条建议,]reportgenerate_daily_report(today_tasks)print(report)2.3 输出效果运行后会得到类似这样的日报2026年5月3日 工作日报 【前端开发】 - 用户登录页面CSS样式修复 ✅ 已完成 - V2.3搜索优化需求评审 进行中已参会讨论 【后端开发】 - 订单模块接口对接POST /api/orders ✅ 已完成联调 - Python数据导出脚本开发 ✅ 已完成 【团队协作】 - 新人开发环境配置 ✅ 已完成 - 支付模块代码评审PR #287 ✅ 已完成已反馈3条建议 明日计划 1. 跟进V2.3搜索优化的技术方案设计 2. 处理PR #287反馈的修改项 3. 启动用户反馈系统的前期调研效果说明AI自动完成了分类、状态标注、明日计划推断——把5分钟的手动整理压缩到3秒。三、实战场景2邮件智能分类3.1 需求分析每天收到大量邮件客户咨询、技术讨论、会议通知、垃圾广告……手动分类费时费力。我们可以让AI读取邮件标题和摘要自动打标签。3.2 完整实现defclassify_emails(emails:list[dict])-list[dict]:批量邮件智能分类system_prompt你是一个邮件分类助手。根据邮件标题和摘要为每封邮件分配 1. category: 客户咨询 | 技术讨论 | 会议通知 | 内部通知 | 市场推广 | 其他 2. priority: 高 | 中 | 低 3. action_required: 是否需要回复true/false 4. summary: 一句话摘要15字以内 返回JSON格式。email_datajson.dumps([{id:i,subject:e[subject],preview:e[preview]}fori,einenumerate(emails)],ensure_asciiFalse,indent2)promptf请分类以下邮件\n{email_data}resultcall_deepseek(prompt,system_promptsystem_prompt,json_modeTrue,temperature0.1,# 分类任务需要确定性输出)returnjson.loads(result)# 使用示例 if__name____main__:test_emails[{subject:关于Q2产品路线图的讨论,preview:张总附件是Q2产品路线图初版请过目...},{subject:[紧急] 线上支付接口返回500错误,preview:生产环境支付接口从10:30开始大面积报错...},{subject:5月团建活动报名,preview:各位同事本月团建定于5月15日...},{subject:Re: React 19迁移方案,preview:我觉得可以先用React 19的beta版本在测试环境验证...},{subject:【推广】云服务器限时5折,preview:尊敬的开发者我们为您准备了专属优惠...},{subject:周报提醒请提交本周工作总结,preview:请在本周五18:00前提交周报至OA系统...},]resultsclassify_emails(test_emails)forrinresults:print(f[{r[priority]}优先级]{r[category]})print(f{r[summary]})print(f 需回复:{是ifr[action_required]else否})print()3.3 进阶加上自动回复建议对于需要回复的邮件可以再调用一次API生成回复草稿defsuggest_reply(email:dict,classification:dict)-str:为需要回复的邮件生成回复建议system_prompt你是一位专业的商务邮件回复助手语气礼貌简洁。promptf邮件主题{email[subject]}邮件摘要{email[preview]}分类{classification[category]}优先级{classification[priority]}请生成一封回复草稿50-100字即可。returncall_deepseek(prompt,system_promptsystem_prompt)四、性能优化技巧4.1 批量处理而非逐条调用# ❌ 低效逐条调用foremailinemails:resultcall_deepseek(f分类这封邮件:{email})# ✅ 高效批量处理resultsclassify_emails(emails)# 一次调用处理全部DeepSeek支持处理较长的上下文单次调用处理10-20封邮件完全没问题既省时间又省钱。4.2 流式输出提升体验对于日报这类长文本输出可以用流式API提升用户体感defcall_deepseek_stream(prompt:str,system_prompt:str你是AI助手。):流式输出逐字返回streamclient.chat.completions.create(modeldeepseek-chat,messages[{role:system,content:system_prompt},{role:user,content:prompt},],streamTrue,)forchunkinstream:ifchunk.choices[0].delta.content:yieldchunk.choices[0].delta.content# 使用fortextincall_deepseek_stream(帮我写一封感谢信):print(text,end,flushTrue)4.3 合理设置 max_tokens不同任务需要的输出长度不同精准设置max_tokens可以避免浪费任务类型建议 max_tokens说明分类/打标签512输出很短无需多给日报/摘要1024-2048中等长度长文生成4096充分展开4.4 错误重试机制API调用偶尔会超时或报错加上重试机制更稳定importtimedefcall_with_retry(prompt:str,max_retries:int3,**kwargs)-str:带重试的API调用forattemptinrange(max_retries):try:returncall_deepseek(prompt,**kwargs)exceptExceptionase:ifattemptmax_retries-1:wait2**attempt# 指数退避1s, 2s, 4sprint(f第{attempt1}次失败{wait}秒后重试:{e})time.sleep(wait)else:raise五、成本控制建议DeepSeek API定价极低但量大时仍需注意成本5.1 定价参考2026年5月模型输入输出适用场景deepseek-chat¥0.001/千token¥0.002/千token日常文本任务deepseek-reasoner¥0.004/千token¥0.008/千token复杂推理任务定价可能变动以官网为准。5.2 省钱技巧Prompt精简去掉无关上下文每减少100字输入≈省0.0001元批量处理10封邮件一次调用 vs 10次调用token消耗差3-5倍缓存结果相同/相似输入不要重复调用用本地缓存分级处理简单分类用 chat 模型只有复杂推理才上 reasoner监控用量在DeepSeek控制台设置用量告警阈值实际成本估算每天处理20封邮件 生成1份日报月成本约¥1-3几乎可以忽略。六、扩展思路掌握基础模式后还可以拓展到更多场景会议纪要整理录音转文字 → AI提取要点和待办事项代码Review辅助提交diff给AI获取改进建议文档翻译技术文档中英互译保留代码块格式数据报表解读把CSV数据喂给AI自动生成分析摘要核心模式都是一样的结构化输入 → Prompt模板 → 结构化输出。总结本文用两个完整案例展示了如何用Python DeepSeek API搭建自动化工作流日报生成零散记录 → 结构化日报含分类和明日计划邮件分类批量处理 → 分类优先级回复建议关键技术点统一的API调用封装支持JSON模式和流式输出批量处理比逐条调用效率高3-5倍合理设置temperature和max_tokens平衡质量与成本重试机制保障稳定性完整代码已经可以直接运行建议先在测试环境验证效果再根据实际需求调整Prompt模板。声明本文由AI辅助创作经人工审核修改。文中代码均经过实际测试验证。API定价信息来源于DeepSeek官网公开数据实际价格请以官网为准本文不构成任何购买建议。如果觉得有帮助欢迎点赞收藏评论区告诉我你还想用AI自动化哪些工作场景下期继续实战 专栏预告下一篇将介绍如何把这些自动化任务组合成完整的CI/CD流程敬请关注。