Skip to content
ys317Public

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Latest commit

 

History

1 Commit

Folders and files

Repository files navigation

AI Morning News (AI 每日科技早报)

这是一个基于 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              # 项目说明文档

快速开始

1. 环境依赖

确保你已经安装了 Python 3.10+。然后安装必要的依赖包:

pip install -r requirements.txt 或者 pip install requests schedule langchain langchain_community psycopg2-binary 

2. 环境变量配置

在项目根目录下创建一个 .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

3. 运行程序

手动立即执行(测试排版与流程):

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。

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages