学习笔记14《工具和工具箱:LangChain中的Tool和Toolkits一览》

286 阅读2分钟

工具的定义和作用

在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中的应用程序接口

  1. 在Google Cloud中设置应用程序接口,获取开发密钥。
  2. 根据密钥生成开发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通过集成多模型和多策略,提供了一个简单、直观的接口来利用大模型。它使得模型运行和交互的复杂性得到封装和抽象化,提高了系统的灵活性和可扩展性,简化了开发者的工作。

思考题

  1. 在Gmail示例中,如何让AI助理帮你写邮件的草稿甚至发送邮件?
  2. 如何使用GitHub工具开发一些App来自动完成一部分GitHub任务,比如查看Issues、Merge Branches之类的事儿。

延伸阅读

  • LangChain中集成的所有工具
  • LangChain中集成的所有工具箱
  • Google Cloud API
  • Github REST API