构建LangChain应用程序的示例代码:36、基于LangGraph的检索代理实现教程

LangGraph 检索代理

我们可以在 LangGraph 中实现 检索代理

! pip install langchain_community tiktoken langchain-openai langchainhub chromadb langchain langgraph

检索器

from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain_community.document_loaders import WebBaseLoader
from langchain_community.vectorstores import Chroma
from langchain_openai import OpenAIEmbeddings

# 需要加载的网页URL列表
urls = [
    "https://lilianweng.github.io/posts/2023-06-23-agent/",
    "https://lilianweng.github.io/posts/2023-03-15-prompt-engineering/",
    "https://lilianweng.github.io/posts/2023-10-25-adv-attack-llm/",
]

# 从URL加载文档
docs = [WebBaseLoader(url).load() for url in urls]
# 将文档展平成单个列表
docs_list = [item for sublist in docs for item in sublist]

# 使用递归字符文本拆分器进行文本拆分
text_splitter = RecursiveCharacterTextSplitter.from_tiktoken_encoder(
    chunk_size=100,  # 每个文本块的大小
    chunk_overlap=50  # 文本块之间的重叠部分大小
)
doc_splits = text_splitter.split_documents(docs_list)

# 添加到向量数据库
vectorstore = Chroma.from_documents(
    documents=doc_splits,
    collection_name="rag-chroma",  # 向量数据库集合名称
    embedding=OpenAIEmbeddings(),  # 使用OpenAI的嵌入模型
)
# 将向量数据库作为检索器
retriever = vectorstore.as_retriever()
from langchain.tools.retriever import create_retriever_tool

# 创建检索工具
tool = create_retriever_tool(
    retriever,
    "retrieve_blog_posts",  # 工具名称
    "Search and return information about Lilian Weng blog posts.",  # 工具描述
)

tools = [tool]

from langgraph.prebuilt import ToolExecutor
# 创建工具执行器
tool_executor = ToolExecutor(tools)

代理状态

我们将定义一个图。

一个state对象会被传递给每个节点。

我们的状态将是一个messages列表。

图中的每个节点都会向它附加信息。

import operator
from typing import Annotated, Sequence, TypedDict
from langchain_core.messages import BaseMessage

# 定义代理状态类,包含消息列表
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hugo_Hoo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值