随着全球信息的日益增多,如何有效地获取并分析相关新闻成为了一项重要挑战。AskNews 提供了解决方案,它允许我们通过简单自然语言查询为任何语言模型(LLM)注入最新的全球新闻。本文将详细介绍如何结合AskNews和LangChain构建一个强大的新闻检索系统。
技术背景介绍
AskNews 每日丰富超过30万篇文章,通过翻译、摘要、实体提取等过程,将其索引到高性能的矢量数据库中。这些数据库通过低延迟的端点提供服务,使得开发者不需要管理自己的新闻检索、分析和生成(Research and Generation, RAG)管道。
核心原理解析
AskNews的核心在于其自动化的新闻处理和优化流程。它通过对新闻进行翻译、分类、摘要等处理,并且支持多语言和多来源的新闻监控,让用户能够精准快速地获取相关信息。此外,结合LangChain的功能,我们可以对获取到的新闻进行进一步处理和分析。
代码实现演示
我们将展示如何使用AskNews与LangChain结合,完成从新闻检索到结果解析的完整流程。
环境设置
首先安装必要的包:
pip install -U langchain-community asknews
配置AskNews的API凭证:
import getpass
import os
# AskNews API 认证设置
os.environ["ASKNEWS_CLIENT_ID"] = getpass.getpass(prompt='Enter AskNews Client ID:')
os.environ["ASKNEWS_CLIENT_SECRET"] = getpass.getpass(prompt='Enter AskNews Client Secret:')
新闻检索
使用AskNewsRetriever
进行新闻检索,按类别和时间段过滤:
from langchain_community.retrievers import AskNewsRetriever
from datetime import datetime, timedelta
# 时间过滤设置
start = (datetime.now() - timedelta(days=7)).timestamp()
end = datetime.now().timestamp()
retriever = AskNewsRetriever(
k=3,
categories=["Business", "Technology"],
start_timestamp=int(start),
end_timestamp=int(end),
method="kw", # 使用关键词搜索
offset=10, # 结果分页
)
# 执行查询
result = retriever.invoke("federal reserve S&P500")
链式调用
进一步处理检索结果并生成报告:
import os
from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.runnables import RunnablePassthrough
from langchain_openai import ChatOpenAI
os.environ["OPENAI_API_KEY"] = getpass.getpass(prompt='Enter OpenAI API Key:')
# 定义链式处理
prompt = ChatPromptTemplate.from_template(
"""The following news articles may come in handy for answering the question:
{context}
Question:
{question}"""
)
chain = (
RunnablePassthrough.assign(context=(lambda x: x["question"]) | retriever)
| prompt
| ChatOpenAI(model="gpt-4-1106-preview")
| StrOutputParser()
)
# 执行链式调用
response = chain.invoke({"question": "What is the impact of fed policy on the tech sector?"})
print(response)
应用场景分析
这种技术可以应用在金融分析、市场研究、新闻聚合等多个领域。通过结合最新新闻动态,相关行业的企业可以快速调整策略,提高竞争力。此外,在语言学研究、教育内容创作等领域,这种即时的多语言新闻汇总能力也具有重要价值。
实践建议
- API密钥安全:确保API密钥的安全存储,避免在代码中直接暴露。
- 查询优化:根据需求灵活使用关键词或自然语言查询,以提高搜索效率。
- 负载管理:在大规模使用时,注意API调用频率,以避免服务资源耗尽。
结束语:如果遇到问题欢迎在评论区交流。
—END—