Python + DeepSeek API:3小时搭建一个AI自动化工作流(含完整代码)
日常开发中有大量重复性工作:写日报、整理会议纪要、分类邮件、生成文档……规则明确、格式固定、但内容多变——完美契合大模型的能力。DeepSeek API兼容OpenAI SDK,调用成本极低(输入低至¥0.001/千token),加上Python的生态优势,搭建自动化工作流事半功倍。DeepSeek API的基础调用方法两个实战场景:自动生成工作日报 + 邮件智能分类性能优化技巧和成本控制策略完整
Python + DeepSeek API:3小时搭建一个AI自动化工作流(含完整代码)
2026年了,大模型API已经白菜价,但很多开发者还在手动复制粘贴让AI帮忙干活。本文教你用Python调用DeepSeek API,搭建一个真正能跑的自动化工作流——从日报生成到邮件分类,全程代码实战,开箱即用。
前言:为什么要用AI自动化工作流?
日常开发中有大量重复性工作:写日报、整理会议纪要、分类邮件、生成文档……这些任务有一个共同特点:规则明确、格式固定、但内容多变——完美契合大模型的能力。
DeepSeek API兼容OpenAI SDK,调用成本极低(输入低至¥0.001/千token),加上Python的生态优势,搭建自动化工作流事半功倍。
本文你将学到:
- DeepSeek API的基础调用方法
- 两个实战场景:自动生成工作日报 + 邮件智能分类
- 性能优化技巧和成本控制策略
- 完整可运行的代码示例
一、环境准备
1.1 安装依赖
pip install openai python-dotenv
DeepSeek API兼容OpenAI的SDK,所以直接用 openai 库即可,无需额外安装。
1.2 获取API Key
前往 platform.deepseek.com 注册并创建API Key。创建完成后,将Key保存到环境变量:
# .env 文件
DEEPSEEK_API_KEY=sk-your-api-key-here
DEEPSEEK_BASE_URL=https://api.deepseek.com
安全提示: API Key属于敏感信息,切勿硬编码在代码中或提交到公开仓库。建议使用
.env文件管理,并将.env加入.gitignore。
1.3 基础调用封装
先封装一个通用的DeepSeek调用函数,后续所有场景都复用:
import os
import json
from openai import OpenAI
from dotenv import load_dotenv
load_dotenv()
client = OpenAI(
api_key=os.getenv("DEEPSEEK_API_KEY"),
base_url=os.getenv("DEEPSEEK_BASE_URL", "https://api.deepseek.com"),
)
def call_deepseek(
prompt: str,
system_prompt: str = "你是一个高效的AI助手。",
model: str = "deepseek-chat",
temperature: float = 0.3,
max_tokens: int = 2048,
json_mode: bool = False,
) -> str:
"""通用DeepSeek API调用封装"""
kwargs = {
"model": model,
"messages": [
{"role": "system", "content": system_prompt},
{"role": "user", "content": prompt},
],
"temperature": temperature,
"max_tokens": max_tokens,
}
if json_mode:
kwargs["response_format"] = {"type": "json_object"}
response = client.chat.completions.create(**kwargs)
return response.choices[0].message.content
几个设计要点:
temperature=0.3:自动化场景需要稳定输出,调低随机性json_mode:需要结构化输出时开启,DeepSeek支持JSON格式响应system_prompt可自定义,不同场景传入不同的角色设定
二、实战场景1:自动生成工作日报
2.1 需求分析
每天下班前,把今天做的事情整理成日报——格式固定但内容每天不同。我们可以把零散的工作记录丢给AI,让它按模板生成规范日报。
2.2 完整实现
def generate_daily_report(tasks: list[str], date: str = None) -> str:
"""根据任务列表生成工作日报"""
from datetime import datetime
if date is None:
date = datetime.now().strftime("%Y年%m月%d日")
task_list = "\n".join(f"- {t}" for t in tasks)
system_prompt = """你是一位项目管理专家,擅长将零散的工作记录整理成结构清晰的日报。
日报格式要求:
1. 按项目/模块分类
2. 每项工作标注完成状态(已完成/进行中/待跟进)
3. 末尾添加明日计划(根据今日进展推断)
4. 语言简洁专业,避免冗余"""
prompt = f"""请根据以下工作记录,生成{date}的工作日报:
{task_list}
要求:按项目分类,标注完成状态,补充明日计划。"""
return call_deepseek(prompt, system_prompt=system_prompt)
# === 使用示例 ===
if __name__ == "__main__":
today_tasks = [
"修复了用户登录页面的CSS样式问题",
"完成了订单模块的接口对接,POST /api/orders 已通过联调",
"参加了下午3点的需求评审会,讨论了V2.3版本的搜索优化",
"写了一个Python脚本自动从数据库导出日报数据",
"帮新人配置了开发环境",
"Review了小李的PR #287(支付模块),提了3条建议",
]
report = generate_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 完整实现
def classify_emails(emails: list[dict]) -> list[dict]:
"""批量邮件智能分类"""
system_prompt = """你是一个邮件分类助手。根据邮件标题和摘要,为每封邮件分配:
1. category: 客户咨询 | 技术讨论 | 会议通知 | 内部通知 | 市场推广 | 其他
2. priority: 高 | 中 | 低
3. action_required: 是否需要回复(true/false)
4. summary: 一句话摘要(15字以内)
返回JSON格式。"""
email_data = json.dumps(
[{"id": i, "subject": e["subject"], "preview": e["preview"]}
for i, e in enumerate(emails)],
ensure_ascii=False, indent=2
)
prompt = f"请分类以下邮件:\n{email_data}"
result = call_deepseek(
prompt,
system_prompt=system_prompt,
json_mode=True,
temperature=0.1, # 分类任务需要确定性输出
)
return json.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系统..."},
]
results = classify_emails(test_emails)
for r in results:
print(f"[{r['priority']}优先级] {r['category']}")
print(f" {r['summary']}")
print(f" 需回复: {'是' if r['action_required'] else '否'}")
print()
3.3 进阶:加上自动回复建议
对于需要回复的邮件,可以再调用一次API生成回复草稿:
def suggest_reply(email: dict, classification: dict) -> str:
"""为需要回复的邮件生成回复建议"""
system_prompt = "你是一位专业的商务邮件回复助手,语气礼貌简洁。"
prompt = f"""邮件主题:{email['subject']}
邮件摘要:{email['preview']}
分类:{classification['category']}
优先级:{classification['priority']}
请生成一封回复草稿,50-100字即可。"""
return call_deepseek(prompt, system_prompt=system_prompt)
四、性能优化技巧
4.1 批量处理而非逐条调用
# ❌ 低效:逐条调用
for email in emails:
result = call_deepseek(f"分类这封邮件: {email}")
# ✅ 高效:批量处理
results = classify_emails(emails) # 一次调用处理全部
DeepSeek支持处理较长的上下文,单次调用处理10-20封邮件完全没问题,既省时间又省钱。
4.2 流式输出提升体验
对于日报这类长文本输出,可以用流式API提升用户体感:
def call_deepseek_stream(prompt: str, system_prompt: str = "你是AI助手。"):
"""流式输出,逐字返回"""
stream = client.chat.completions.create(
model="deepseek-chat",
messages=[
{"role": "system", "content": system_prompt},
{"role": "user", "content": prompt},
],
stream=True,
)
for chunk in stream:
if chunk.choices[0].delta.content:
yield chunk.choices[0].delta.content
# 使用
for text in call_deepseek_stream("帮我写一封感谢信"):
print(text, end="", flush=True)
4.3 合理设置 max_tokens
不同任务需要的输出长度不同,精准设置 max_tokens 可以避免浪费:
| 任务类型 | 建议 max_tokens | 说明 |
|---|---|---|
| 分类/打标签 | 512 | 输出很短,无需多给 |
| 日报/摘要 | 1024-2048 | 中等长度 |
| 长文生成 | 4096 | 充分展开 |
4.4 错误重试机制
API调用偶尔会超时或报错,加上重试机制更稳定:
import time
def call_with_retry(prompt: str, max_retries: int = 3, **kwargs) -> str:
"""带重试的API调用"""
for attempt in range(max_retries):
try:
return call_deepseek(prompt, **kwargs)
except Exception as e:
if attempt < max_retries - 1:
wait = 2 ** attempt # 指数退避:1s, 2s, 4s
print(f"第{attempt+1}次失败,{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流程,敬请关注。
更多推荐



所有评论(0)