探索LangChain AgentExecutor:如何构建智能代理

110 阅读2分钟

引言

在构建复杂的AI系统中,使用语言模型(LLM)作为推理引擎是一个关键步骤。LangChain中的AgentExecutor是一个强大的工具,可以帮助开发者创建能够调用各种工具的代理系统。本篇文章将介绍如何使用LangChain的AgentExecutor构建一个能够与本地数据库和搜索引擎交互的代理。

主要内容

1. 使用语言模型

语言模型不能直接采取行动。LangChain通过允许代理使用LLM作为推理引擎来解决此问题,将其输出作为下一步操作的输入。

2. 创建Retriever

我们需要创建一个Retriever,以便代理可以获取特定信息。通过在本地指数上创建Retriever,我们能更好地查询数据。

3. 使用SearchTool

我们将使用一个搜索工具来在线查找信息,此工具允许代理在需要时调取外部信息。

4. 聊天记录

代理在处理连续问题时能够“记住”之前的互动记录,改善用户体验。

5. 调试和追踪

使用LangSmith,可以追踪代理的执行过程,帮助开发者识别和解决潜在问题。

代码示例

# 使用API代理服务提高访问稳定性
from langchain_community.tools.tavily_search import TavilySearchResults
search = TavilySearchResults(max_results=2)

from langchain_community.document_loaders import WebBaseLoader
from langchain_community.vectorstores import FAISS
from langchain_openai import OpenAIEmbeddings
from langchain_text_splitters import RecursiveCharacterTextSplitter

loader = WebBaseLoader("https://docs.smith.langchain.com/overview")
docs = loader.load()
documents = RecursiveCharacterTextSplitter(
    chunk_size=1000, chunk_overlap=200
).split_documents(docs)
vector = FAISS.from_documents(documents, OpenAIEmbeddings())
retriever = vector.as_retriever()

from langchain.tools.retriever import create_retriever_tool
retriever_tool = create_retriever_tool(
    retriever,
    "langsmith_search",
    "Search for information about LangSmith. For any questions about LangSmith, you must use this tool!",
)

tools = [search, retriever_tool]

# 选择语言模型
from langchain_openai import ChatOpenAI

model = ChatOpenAI(model="gpt-4")

model_with_tools = model.bind_tools(tools)

# 创建代理
from langchain.agents import create_tool_calling_agent, AgentExecutor

agent = create_tool_calling_agent(model, tools)
agent_executor = AgentExecutor(agent=agent, tools=tools)

# 执行代理
response = agent_executor.invoke({"input": "whats the weather in sf?"})
print(response)

常见问题和解决方案

  • API访问问题: 在某些地区,访问外部API可能受限,考虑使用API代理服务。
  • 代理调试: 使用LangSmith的追踪功能可以监控代理行为,帮助调试复杂应用。

总结和进一步学习资源

本文介绍了如何使用LangChain的AgentExecutor创建一个可以调用工具的代理。在实际应用中,可能需要更多的灵活性和控制,推荐探索LangGraph Agents。

进一步学习资源

参考资料

  1. LangChain GitHub
  2. LangSmith
  3. Tavily Search API

结束语:如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!

---END---