ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

【Python项目实战】早报综合项目(三):AI摘要引擎与内容处理

【Python项目实战】早报综合项目(三):AI摘要引擎与内容处理 上篇M1交卷,数据库里躺着13篇文章,但摘要栏还是空的。今天M2——给每篇文章生成AI摘要。听起来就是“调个API”?之前就学过了。但生产级的AI处理模块要回答四个问题:重跑安全吗?成本可控吗?AI挂了怎么办?请求太快被限流怎么办?🎯本篇成品:一个幂等、有成本控制、有降级方案的AI处理模块。含注释约150行。📌 太长不看版(给想快速上手的你)项目信息一句话说明里程碑M2·AI摘要引擎代码行数~150行(含注释)依赖openai核心功能幂等生成 + 成本控制 + 降级方案 + 限速跑起来的命令python main.py summarize核心知识点幂等设计、每日上限、try/except降级、429处理做完你能得到一个不怕重跑、不怕AI挂、不怕超支的摘要引擎一、从博客AI摘要那篇到这里:差的是“生产级”博客AI摘要那篇的summarize()函数能跑通,但它没考虑过:问题第24篇本篇重跑会覆盖已生成的摘要吗?会幂等:只处理summary = ''的行今天跑了500篇怎么办?没限制每日上限:超过阈值自动停AI超时/余额不足怎么办?报错崩掉降级方案:截取标题前N字顶上请求太密被429怎么办?没处理指数退避重试我怎么知道处理了多少、花了多少?只有print结构化日志 + token粗估📌这一篇的差别不在“会不会调API”,在“考虑了AI会失控的多少种方式”。二、第1步:配置区——密钥与成本参数"""core/summarizer.py —— AI摘要引擎"""importloggingimportosimporttimefromopenaiimportOpenAI logger=logging.getLogger(__name__)client=OpenAI(api_key=os.environ.get("DEEPSEEK_API_KEY",""),base_url="https://api.deepseek.com",)MODEL="deepseek-flash"# ---------- 成本控制参数 ----------DAILY_LIMIT=50# 每天最多处理50篇REQUEST_INTERVAL=1.5# 每次请求间隔1.5秒MAX_RETRIES=3# 429/超时的最大重试次数🚨密钥安全军规:DEEPSEEK_API_KEY走环境变量,不进仓库、不进前端。三、第2步:Prompt设计——从“总结”到“推荐语”的迭代博客AI摘要那篇的Prompt是“总结文章正文”,但早报场景只抓到标题和链接,没有正文——所以Prompt要改成“基于标题推测内容,写一句推荐语”。🔄 Prompt迭代过程# v1:太泛,AI不知道面向谁PROMPT_V1="写一段关于《{title}》的推荐语。"# v2:加了受众,但还是太长PROMPT_V2="为Python初学者写一段关于《{title}》的推荐语,说明为什么值得读。"# v3:加了字数约束和格式约束 → ✅ 达标PROMPT="""你是一位Python技术编辑。 请根据下面的文章标题和链接,写一句不超过40字的推荐语: - 面向Python初学者 - 点出这篇文章可能的价值 - 直接输出推荐语,不要任何前缀 标题:{title} 链接:{url} """📌 三原则的实际应用原则在Prompt里的体现给角色“你是一位Python技术编辑”给任务+约束“不超过40字”“面向Python初学者”“点出价值”给格式“直接输出推荐语,不要任何前缀”💡Prompt是迭代出来的,不是想出来的。改一版测一版,和调代码一个节奏。四、第3步:核心函数——幂等 + 降级 + 重试defsummarize(title:str,url:str)-str:"""调AI生成推荐语;失败时降级为标题截取"""prompt=PROMPT.format(title=title,url=url)forattemptinrange(MAX_RETRIES)
返回列表