无论做什么研究工作,都需要及时获取最新的外部信息。一个传统的方法是,收藏自己感兴趣的网址,然后每天挨个打开一遍,这种方法耗时耗力。
最近看到公众号《数字生命卡兹克》的一篇分享20个群都来问我的AI早报,是这么做的。给了我们启发,笔者尝试了借助AI制作宏观信息日报的方法,分享如下:
总的来说,可以分为三步:
第一步,寻找自己感兴趣的网站,并转换成XML格式;
第二步,借助AI写代码提取信息;
第三步,借助大模型的API接口处理自己感兴趣的信息,并保存。
第一步,举个例子,我们对圣路易斯联储的工作论文比较感兴趣,希望保持跟踪,网页内容如下:
然后我们将其转换成XML文件如下:
之所以转换成XML文件,主要是便于后续提取信息。从XML文件看,item 包含了感兴趣的文章信息,其中,title 是标题,link 是链接,description 是摘要,pubDate 是发布日期。
第二步,我们借助AI写代码提取相关信息
import feedparser
from datetime import datetime, timedelta
import tkinter as tk
from tkinter import simpledialog
import re
def extract_second_paragraph(description):
match = re.search(r'<p>(.*?)</p>.*?<p>(.*?)</p>', description, re.DOTALL)
if match:
return match.group(2).strip()
return description
def fetch_rss_feed(url, days_to_show):
try:
feed = feedparser.parse(url)
if feed.bozo:
raise Exception(f"Error parsing feed: {feed.bozo_exception}")
current_date = datetime.now().date()
print(f"Title: {feed.feed.title}")
print(f"Link: {feed.feed.link}")
print(f"Description: {feed.feed.description}")
print("\n")
for entry in feed.entries:
if 'published' in entry:
published_date = datetime.strptime(entry.published, "%a, %d %b %Y %H:%M:%S %z").date()
if current_date - timedelta(days=days_to_show) <= published_date <= current_date:
print(f"Title: {entry.title}")
print(f"Link: {entry.link}")
formatted_date = published_date.strftime("%Y-%m-%d")
print(f"Published: {formatted_date}")
summary = extract_second_paragraph(entry.summary)
print(f"Summary: {summary}")
print("\n")
except Exception as e:
print(f"An error occurred: {e}")
def main():
xml_url = "your.xml"
root = tk.Tk()
root.withdraw()
days_to_show = simpledialog.askinteger("Input", "Enter the number of days to show:", parent=root, minvalue=1)
if days_to_show is not None:
fetch_rss_feed(rss_url, days_to_show)
else:
print("No number entered. Exiting.")
if __name__ == "__main__":
main()
在上述代码中,我们除了提取相关信息之外,还做了一个额外的操作,就是把发布日期转换成了DateTime格式,并提供了一个窗口,供用户输入一个数字X,来提取当前日期X天之前至今的文章。如果每天都运行一遍的话,也可以设置默认值为1天。
运行后,我们可以看到提取结果:
第三步,我们希望对提取结果做一些处理,比如说把摘要翻译成英文,并导出外部文件。
我们使用的是智谱AI大模型,智谱AI给出了一个参考示例:
from zhipuai import ZhipuAI
# 初始化ZhipuAI客户端,请替换""为您的实际API Key
client = ZhipuAI(api_key="your_api")
# 调用翻译模型,这里以"embedding-2"模型为例,输入需要翻译的文本
response = client.embeddings.create(
model="embedding-2", #填写需要调用的模型编码
input="你好",
)
# 打印翻译结果
print(response)
我们把智谱AI嵌入,并可以获得我们想要的结果了。如果有多个感兴趣的网站,可以逐一提取并合并,就可以获取我们感兴趣的宏观信息日报了。
0
推荐