PROJECT #2 · PYTHON实战2026.08.04调用 AI API 需要学后端框架,太麻烦了
项目2:写个Python脚本调API,
批量生成日报 / 处理文档
30行起步 · 分批处理 · 多任务支持 · 完整代码 · 成��分析与避坑
📦 7 Parts + Conclusion
👉 滑动
从“用别人的产品”到“写自己的工具”,这个跨越比你以为的小得多
30行代码起步,80行封顶——Python调API批量处理文档
为什么要学这个
MOTIVATION · Dify 的局限
上次用 Dify/Coze 搭 Bot,优点是快。但局限也明显:知识库只能"查"不能"做"、流程固定难定制、批量处理 100 个文件做不到。
而写一个 Python 脚本调 API,这些问题全部解决——而且比你想象的简单得多。今天的目标:写一个能跑起来的脚本,批量读文档让 AI 生成日报。
| |
|---|
| |
| DeepSeek、通义千问、OpenAI 都可(本文用 DeepSeek,最便宜) |
| |
为什么用 openai 库调 DeepSeek?因为 DeepSeek API 完全兼容 OpenAI 格式,一套代码改个 base_url 就能切模型。后面换成通义千问、豆包,也是改一行配置的事。
第一版:最简单的脚本(30 行)
V1 · 30 行起步
import os from openai import OpenAI client = OpenAI( api_key="sk-你的Key", base_url="https://api.deepseek.com" ) def read_docs(folder="docs"): contents = [] for f in sorted(os.listdir(folder)): if f.endswith(".txt"): with open(os.path.join(folder, f), "r") as fp: contents.append(f"[{f}] {fp.read()}") return " ".join(contents) docs_text = read_docs() response = client.chat.completions.create( model="deepseek-chat", messages=[ {"role": "system", "content": "你是日报助手,请根据文档生成日报。"}, {"role": "user", "content": f"以下是我今天的工作文档,请汇总: {docs_text}"} ] ) print(response.choices[0].message.content)就这 30 行。跑一下:python3 daily_report.py。docs/ 文件夹扔几个 txt,AI 帮你汇总。跑通了吗?恭喜,你已经有一个能用的 AI 工具了。
第二版:加点干货,让它更实用
V2 · 多格式+分批
支持更多文件格式
不只是 txt。加上 Markdown、Word、PDF:
if f.endswith((".txt",".md",".log")): text = open(path).read() elif f.endswith(".docx"): from docx import Document text = " ".join(p.text for p in Document(path).paragraphs) elif f.endswith(".pdf"): import pymupdf text = " ".join(page.get_text() for page in pymupdf.open(path))pip install python-docx pymupdf
处理大量文档:分批 + 汇总
文档加起来 10 万字怎么办?标准套路:先分批总结,再汇总。(MapReduce 思想的乞丐版实现,但足够好用)
def batch_summary(docs, batch_size=5): # 第一轮:每批单独总结 summaries = [] for i in range(0, len(docs), batch_size): batch = " ".join(docs[i:i+batch_size]) resp = client.chat.completions.create( model="deepseek-chat", messages=[{"role":"user","content":f"总结: {batch}"}] ) summaries.append(resp.choices[0].message.content) # 第二轮:汇总所有总结 all_s = " ".join(f"{i+1}. {s}" for i,s in enumerate(summaries)) resp = client.chat.completions.create( model="deepseek-chat", messages=[{"role":"user","content":f"合并: {all_s}"}] ) return resp.choices[0].message.content定制日报模板
每个团队日报格式不同。加 --template 参数:default / research / product / sales 四种模板,一键切换。
框架搭好了,换个 Prompt 就是另一个工具:
同一个脚本,换个参数就是不同工具:
python3 ai_task.py --task 会议纪要 --folder meeting_notes/ python3 ai_task.py --task 翻译 --folder docs_to_translate/ python3 ai_task.py --task 提取待办 --folder emails/
把上面所有功能拼起来,就是最终的 ai_task.py。支持:多种文件格式 / 分批处理 / 6 种任务类型 / 命令行参数 / 环境变量管理 Key / 输出到文件。
核心结构:配置 → 文件读取 → 分批处理 → 命令行入口。80 行代码,不需要框架,不需要部署,跑起来就能省时间。
成本:几乎不要钱
每天跑一次日报,一个月不到 1 块钱。这可能是你花过最值的 1 块钱。
5 条避坑经验
1API Key 不要硬编码。用 os.getenv("DEEPSEEK_KEY"),代码上传 GitHub 不会泄露。
2加 try/except。API 可能超时、限流、Key 过期。没异常处理脚本直接崩。
3文档太长要截断。单次调用有上下文限制。每条截 3000 字足够了。
4免费 Key 可能有频率限制。两批之间加个 time.sleep(1) 避免被限流。
5输出结果要审查。AI 生成的东西可能出错,花 30 秒扫一眼。
这可能是你写的第一个能用的 AI 工具。30 行起步,80 行封顶,跑起来就能帮你省时间。
从"用别人的产品"到"写自己的工具",这个跨越比你以为的小得多。
下一步可以试试:接入飞书/钉钉机器人每天自动发日报、加 crontab 定时任务、输出格式改成 Markdown 表格。
这是零代码/低代码 AI 实战系列的第 2 篇,敬请关注后续。
我是 从外包到BAT,热衷于分享 AI 实战干货。如果你觉得今天这篇有收获,欢迎点赞、在看、转发三连,我们下篇见。
既然看到这里了,如果觉得有用,随手点个赞、在看、转发三连吧。
THANKS FOR READING