这是一个基于 LangChain 和大语言模型(LLM)构建的自动化科技新闻早报系统。它能够每天定时为你抓取 Hacker News 上的热门科技资讯,结合当地的天气预报,使用大语言模型进行深度技术科普与排版,并最终以极简的 Markdown 格式发送到你的电子邮箱中。
同时,所有抓取到的科技资讯会被自动向量化并持久化存储至 PostgreSQL (pgvector) 数据库中,为后续的检索增强生成(RAG)或历史新闻分析提供数据支持。
- 自动化数据收集:集成 Hacker News API 与天气 API(自动回退保护),一键获取每日最热门的 20 条科技资讯与当地天气。
- 深度硬核科普:摒弃空泛的“AI简评”,大模型会根据新闻标题的关键词,自动为你生成不少于 80 字的详实技术背景与行业科普。
- 极简极客排版:无 Emoji、无冗余装饰的纯文字极简风格排版,非常适合极客与开发者阅读。
- 持久化向量库:自动将新闻存入 PostgreSQL,结合 pgvector 扩展,轻松实现后续的本地知识库查询功能。
- 自动邮件分发:支持定时任务(默认每日早 8:00),自动渲染为易读的邮件格式并发送到指定邮箱。
ai_morning_news/
├── main.py # 项目入口,包含定时任务调度和手动执行命令
├── core/
│ ├── agent.py # LangChain React Agent,负责统筹调用工具链收集信息
│ ├── tools.py # 自定义工具库:提供获取 Hacker News 与天气预报的函数
│ ├── summarizer.py # LLM 核心 Prompt 引擎,负责生成、科普与排版新闻简报
│ ├── news_storage.py # PostgreSQL 向量数据库交互,存储新闻记录
│ └── email_sender.py # SMTP 邮件发送模块
├── .env # 环境变量配置文件(需要自行创建)
└── README.md # 项目说明文档
确保你已经安装了 Python 3.10+。然后安装必要的依赖包:
pip install -r requirements.txt 或者 pip install requests schedule langchain langchain_community psycopg2-binary 在项目根目录下创建一个 .env 文件,并填入以下配置:
# 大模型配置 (默认使用 MiniMax)
MINIMAX_API_KEY=你的MiniMax_API_KEY
MINIMAX_GROUP_ID=你的MiniMax_GROUP_ID
# 数据库配置 (PostgreSQL)
DB_HOST=localhost
DB_PORT=5432
DB_NAME=你的数据库名
DB_USER=你的用户名
DB_PASSWORD=你的密码
# 邮件服务配置 (SMTP)
SMTP_SERVER=smtp.qq.com
SMTP_PORT=465
SENDER_EMAIL=你的发件箱@qq.com
SENDER_PASSWORD=你的SMTP授权码
RECEIVER_EMAIL=你的收件箱@example.com
# 天气服务配置 (可选,若无则自动降级为 wttr.in)
QWEATHER_API_KEY=你的和风天气_API_KEY手动立即执行(测试排版与流程):
python main.py --run-now启动自动定时调度模式(保持后台运行):
python main.py默认设置下,程序将在每天早上 08:00 自动收集资讯并发送邮件。
- 框架: LangChain
- 模型: MiniMax (
abab6.5s-chat) - 数据库: PostgreSQL + pgvector
- 工具链:
- Hacker News Firebase API
- wttr.in (Fallback Weather API)
- Python 原生
smtplib
如果你希望进一步调整早报的排版或者播报风格,你可以直接修改 core/summarizer.py 文件中的 prompt_template。