LangChain 构建代理:工具调用与内存管理
单独来看,语言模型无法采取行动 - 它们只能输出文本。LangChain 的一个重要用例是创建代理。代理是使用 LLM 作为推理引擎的系统,用于确定要采取的行动以及这些行动的输入应该是什么。然后,这些行动的结果可以反馈给代理,并确定是否需要更多的行动,或者是否可以结束。
在本教程中,我们将构建一个可以与多个不同工具进行交互的代理:一个是本地数据库,另一个是搜索引擎。您将能够向该代理提问,观察它调用工具,并与它进行对话。
概念
我们将涵盖的概念是:
- 使用语言模型,特别是它们的工具调用能力
- 创建 Retriever 以向我们的代理公开特定信息
- 使用搜索工具在线查找内容
- 使用 LangGraph 代理,它使用 LLM 来思考要做什么,然后执行它
- 使用 LangSmith 调试和跟踪您的应用程序
安装
LangChain 支持 Python 和 JavaScript 两个开发版本,本教程使用 python3.11 版本进行讲解。
安装 langchain(版本 v0.2):
pip install langchain
Tavily
集成存在于 langchain-community 包中。我们还需要安装 tavily-python 包本身。
pip install -U langchain-community tavily-python langgraph
定义工具
我们首先需要创建我们想要使用的工具。我们将使用两个工具:Tavily(在线搜索),然后是我们将创建的本地索引上的检索器。
Tavily
我们在 LangChain 中有一个内置工具,可以轻松地使用 Tavily 搜索引擎作为工具。请注意,这需要一个 API 密钥。但是如果你没有或者不想创建一个,你可以忽略这一步。
Tavily:https://tavily.com/。创建 API 密钥后,您需要将其导出为:
export TAVILY_API_KEY="..."
from langchain_community.tools.tavily_search import TavilySearchResults
search = TavilySearchResults(max_results=1)
result = search.invoke("今天重庆的天气预报")
print(result)
API Reference: TavilySearchResults
Retriever
我们还将在我们自己的一些数据上创建一个检索器。有关此处每个步骤的更深入解释,请参阅官方教程。
安装依赖:
pip install faiss-cpu
from langchain_community.document_loaders import WebBaseLoader
from langchain_community.vectorstores import FAISS
langchain_community.embeddings DashScopeEmbeddings
langchain_text_splitters RecursiveCharacterTextSplitter
loader = WebBaseLoader()
docs = loader.load()
documents = RecursiveCharacterTextSplitter(
chunk_size=, chunk_overlap=
).split_documents(docs)
vector = FAISS.from_documents(documents, DashScopeEmbeddings())
retriever = vector.as_retriever()
result = retriever.invoke()
(result)


