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