工具的定义和作用
在LangChain中,工具是代理与世界交互的“武器”,它们可以是通用实用程序(如搜索),也可以是其他链或代理。工具通过统一框架集成具体功能实现,每个工具都有自己的输入输出和处理方法。
工具的加载方式
在程序中,可以使用以下代码加载工具:
from langchain.agents import load_tools
tool_names = [...]
tools = load_tools(tool_names)
某些工具可能需要LLM来初始化它们:
from langchain.agents import load_tools
tool_names = [...]
llm = ...
tools = load_tools(tool_names, llm=llm)
LangChain支持的工具一览
LangChain支持的工具会随着时间推移越来越多,功能越来越强大。
使用arXiv工具开发科研助理
arXiv是一个提供免费访问的预印本库,用于研究者在正式出版前上传和分享其研究工作。通过arXiv工具,可以集成到LangChain中,帮助研究学术最新进展。
示例代码
import os
from langchain.chat_models import ChatOpenAI
from langchain.agents import load_tools, initialize_agent, AgentType
os.environ["OPENAI_API_KEY"] = 'Your Key'
llm = ChatOpenAI(temperature=0.0)
tools = load_tools(
["arxiv"],
)
agent_chain = initialize_agent(
tools,
llm,
agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
verbose=True,
)
agent_chain.run("介绍一下2005.14165这篇论文的创新点?")
使用Gmail工具箱开发个人助理
通过Gmail工具箱,可以让LangChain应用检查邮件、写草稿,甚至发邮件、写文档等。
设置Google Cloud中的应用程序接口
- 在Google Cloud中设置应用程序接口,获取开发密钥。
- 根据密钥生成开发Token。
示例代码
import os
os.environ["OPENAI_API_KEY"] = 'Your Key'
from langchain.agents.agent_toolkits import GmailToolkit
from langchain.tools.gmail.utils import build_resource_service, get_gmail_credentials
credentials = get_gmail_credentials(
token_file="token.json",
scopes=["https://mail.google.com/"],
client_secrets_file="credentials.json",
)
api_resource = build_resource_service(credentials=credentials)
toolkit = GmailToolkit(api_resource=api_resource)
tools = toolkit.get_tools()
print(tools)
from langchain.chat_models import ChatOpenAI
from langchain.agents import initialize_agent, AgentType
llm = ChatOpenAI(temperature=0, model='gpt-4')
agent = initialize_agent(
tools=toolkit.get_tools(),
llm=llm,
agent=AgentType.STRUCTURED_CHAT_ZERO_SHOT_REACT_DESCRIPTION,
)
result = agent.run(
"今天易速鲜花客服给我发邮件了么?最新的邮件是谁发给我的?"
)
print(result)
总结
LangChain通过集成多模型和多策略,提供了一个简单、直观的接口来利用大模型。它使得模型运行和交互的复杂性得到封装和抽象化,提高了系统的灵活性和可扩展性,简化了开发者的工作。
思考题
- 在Gmail示例中,如何让AI助理帮你写邮件的草稿甚至发送邮件?
- 如何使用GitHub工具开发一些App来自动完成一部分GitHub任务,比如查看Issues、Merge Branches之类的事儿。
延伸阅读
- LangChain中集成的所有工具
- LangChain中集成的所有工具箱
- Google Cloud API
- Github REST API