前言:每周五下午的噩梦
兄弟们,谁懂啊!每到周五下午,领导一句"周报交了吗?"直接让我血压拉满 📈
明明一周干了不少活,但一打开Word就脑子空白,写出来的东西跟流水账似的。更离谱的是,有时候写了两小时周报,比干活还累。
直到有一天我突发奇想:为什么不让AI帮我写周报?
于是,我花了一个晚上,用Python + DeepSeek API搞了一个AI周报助手,现在每周五只需要把工作要点丢给它,30秒就能生成一份专业的周报。同事看了直呼"你tm是怎么写出这种周报的?"(真香.jpg)
今天就手把手教你搞一个,学完这篇,你也能拥有同款摸鱼神器。
一、准备工作:3分钟搞定环境
1.1 获取DeepSeek API Key
先去 DeepSeek 开放平台注册个账号,拿到API Key。新用户有免费额度,够你玩一阵子了。
注意:API Key就像你家钥匙,千万别提交到GitHub上去,不然你的额度就变成全世界的了(别问我怎么知道的)。
1.2 安装依赖
pip install openai python-dotenv没错,DeepSeek的API和OpenAI是兼容的,直接用openai库就行,这波属于白嫖人家的轮子了。
1.3 项目结构
weekly-report-ai/ ├── .env # 存API Key ├── report_bot.py # 主程序 └── templates/ # 周报模板(后面会用到) └── default.txt二、核心代码:让AI帮你写周报
2.1 基础版:10行代码搞定
先来个最简单的版本,感受一下AI的威力:
from openai import OpenAI import os from dotenv import load_dotenv load_dotenv() client = OpenAI( api_key=os.getenv("DEEPSEEK_API_KEY"), base_url="https://api.deepseek.com" ) def generate_report(work_items: list) -> str: """根据工作要点生成周报""" items_text = "\n".join([f"- {item}" for item in work_items]) response = client.chat.completions.create( model="deepseek-chat", messages=[ { "role": "system", "content": """你是一个专业的周报撰写助手。请根据用户提供的工作要点, 生成一份结构清晰、语言专业的工作周报。要求: 1. 分为"本周工作总结"和"下周工作计划"两部分 2. 每条工作描述要具体、量化 3. 语气正式但不死板 4. 适当添加工作成果和数据""" }, { "role": "user", "content": f"请根据以下工作要点生成周报:\n{items_text}" } ], temperature=0.7, max_tokens=2000 ) return response.choices[0].message.content # 使用示例 if __name__ == "__main__": my_work = [ "修了3个前端bug", "写了用户模块的接口文档", "参加了需求评审会", "优化了数据库查询,速度快了2倍" ] report = generate_report(my_work) print(report)运行一下,你会发现AI生成的周报比你自己写的还像那么回事儿。"修了3个bug"会被它润色成"完成前端模块3个关键缺陷的排查与修复,涉及用户交互体验优化"。领导看了直点头,你看了直摇头——这tm是我写的?
三、进阶版:加上模板和历史记录
3.1 支持自定义模板
不同公司周报格式不一样,有的要写OKR,有的要写KPI,有的领导就喜欢看表格。所以我们加个模板功能:
class ReportBot: def __init__(self, template_path=None): load_dotenv() self.client = OpenAI( api_key=os.getenv("DEEPSEEK_API_KEY"), base_url="https://api.deepseek.com" ) self.template = self._load_template(template_path) self.history = [] def _load_template(self, path): if path and os.path.exists(path): with open(path, 'r', encoding='utf-8') as f: return f.read() return "标准周报格式:本周总结 + 下周计划 + 需要协助的事项" def generate(self, work_items: list, style="正式") -> str: items_text = "\n".join([f"- {item}" for item in work_items]) response = self.client.chat.completions.create( model="deepseek-chat", messages=[ { "role": "system", "content": f"""你是周报撰写助手。 模板要求:{self.template} 写作风格:{style} 请严格按照模板格式生成周报。""" }, { "role": "user", "content": f"本周工作要点:\n{items_text}" } ], temperature=0.7 ) result = response.choices[0].message.content self.history.append({ "items": work_items, "report": result }) return result这个版本支持自定义模板和不同风格。你可以搞一个"正式版"应付领导,再搞一个"摸鱼版"发到工作群里划水。
四、实际效果展示
输入这几条工作要点:
bot = ReportBot() report = bot.generate([ "完成了用户中心的登录注册模块重构", "处理了线上告警,数据库连接池溢出", "和产品讨论了v2.0的需求方案", "review了实习生的代码,改了20多处" ])AI生成的周报(节选):
本周工作总结
1. 【系统重构】完成用户中心登录注册模块的架构重构,优化了认证流程,提升了代码可维护性和安全性。
2. 【线上问题】及时响应并处理了数据库连接池溢出告警,排查根因后优化连接池配置参数,保障了系统稳定运行。
3. 【需求规划】参与产品v2.0版本需求评审,就技术可行性和实现方案提供了建议。
4. 【团队协作】完成实习生代码Review,针对20余处代码规范及逻辑问题进行了指导和优化建议。
看到没?"review了实习生代码"被润色成了"完成实习生代码Review,针对20余处代码规范及逻辑问题进行了指导和优化建议"。这水平,主管看了都得给你打A。
五、踩坑记录 & 小贴士
坑1:API返回太慢
解决:用stream流式输出,边生成边显示,用户体验直接起飞。这个我会在下一篇详细讲。
坑2:生成的内容太"AI味"
解决:在prompt里加一句"用人话说,别太官方",或者调高temperature到0.8-0.9。
坑3:周报格式不统一
解决:用模板约束,这就是为什么我们要加模板功能的原因。
六、下一篇预告
这篇只是开胃菜,下一篇我们要搞个更炸裂的功能:
- 🔥流式输出:像ChatGPT一样一个字一个字蹦出来
- 🔥Web界面:不用命令行,浏览器里直接用
- 🔥多模板切换:一键切换不同公司的周报格式
- 🔥周报历史:自动保存,再也不怕找不到上周写了啥
想看的兄弟点个订阅,不然下篇你可能就刷不到了。
总结
今天我们用大概50行核心代码,就搞定了一个AI周报助手。虽然代码不多,但这个项目麻雀虽小五脏俱全,涉及到了:
- DeepSeek API的基本调用
- Prompt Engineering(提示词工程)
- Python面向对象编程
- 环境变量管理
这些都是做AI应用开发的基础技能,后面的项目都会用到。
完整源码获取:订阅本专栏后,在评论区留言"源码",我会私发给你。后续我也会在CSDN资源区上传,方便大家直接下载运行。
如果这篇文章对你有帮助,别忘了点赞+收藏+关注三连,你的支持是我更新的最大动力!下篇见~