Skip to main content

Apify

这个笔记本展示了如何在LangChain中使用Apify集成

Apify是一个用于网络爬虫和数据提取的云平台,提供了一个包含一千多个现成应用程序(称为Actors)的生态系统,用于各种网络爬虫、抓取和数据提取场景。例如,您可以使用它来提取Google搜索结果、Instagram和Facebook的个人资料、亚马逊或Shopify的产品、Google地图的评论等等。

在这个示例中,我们将使用Website Content Crawler Actor,它可以深度爬取文档、知识库、帮助中心或博客等网站,并从网页中提取文本内容。然后我们将这些文档输入到一个向量索引中,并从中回答问题。

#!pip install apify-client openai langchain chromadb tiktoken

首先,在您的源代码中导入ApifyWrapper

from langchain.document_loaders.base import Document
from langchain.indexes import VectorstoreIndexCreator
from langchain.utilities import ApifyWrapper

使用您的Apify API令牌进行初始化,并且为了本示例的目的,还使用您的OpenAI API密钥进行初始化:

import os

os.environ["OPENAI_API_KEY"] = "Your OpenAI API key"
os.environ["APIFY_API_TOKEN"] = "Your Apify API token"

apify = ApifyWrapper()

然后运行Actor,等待其完成,并从Apify数据集中获取其结果到LangChain文档加载器中。

请注意,如果您已经在Apify数据集中有一些结果,您可以直接使用ApifyDatasetLoader加载它们,如此笔记本所示。在那个笔记本中,您还可以找到dataset_mapping_function的解释,它用于将Apify数据集记录中的字段映射到LangChain Document字段。

loader = apify.call_actor(
actor_id="apify/website-content-crawler",
run_input={"startUrls": [{"url": "https://python.langchain.com/en/latest/"}]},
dataset_mapping_function=lambda item: Document(
page_content=item["text"] or "", metadata={"source": item["url"]}
),
)

从爬取的文档中初始化向量索引:

index = VectorstoreIndexCreator().from_loaders([loader])

最后,查询向量索引:

query = "What is LangChain?"
result = index.query_with_sources(query)
print(result["answer"])
print(result["sources"])
     LangChain是一个标准接口,通过它您可以与各种大型语言模型(LLMs)进行交互。它提供了可以用于构建语言模型应用程序的模块,还提供了具有内存功能的链和代理。

https://python.langchain.com/en/latest/modules/models/llms.html, https://python.langchain.com/en/latest/getting_started/getting_started.html