Source code for langchain_community.docstore.wikipedia

"""封装了维基百科API。"""


from typing import Union

from langchain_core.documents import Document

from langchain_community.docstore.base import Docstore


[docs]class Wikipedia(Docstore): """维基百科 API。"""
[docs] def __init__(self) -> None: """检查是否安装了wikipedia包。""" try: import wikipedia # noqa: F401 except ImportError: raise ImportError( "Could not import wikipedia python package. " "Please install it with `pip install wikipedia`." )
[docs] def search(self, search: str) -> Union[str, Document]: """尝试搜索维基页面。 如果页面存在,则返回页面摘要和一个PageWithLookups对象。 如果页面不存在,则返回类似条目。 参数: search:搜索字符串。 返回:一个文档对象或错误消息。 """ import wikipedia try: page_content = wikipedia.page(search).content url = wikipedia.page(search).url result: Union[str, Document] = Document( page_content=page_content, metadata={"page": url} ) except wikipedia.PageError: result = f"Could not find [{search}]. Similar: {wikipedia.search(search)}" except wikipedia.DisambiguationError: result = f"Could not find [{search}]. Similar: {wikipedia.search(search)}" return result