查看原文
其他

30+视觉/多模态工具!通用Agent工具库AgentLego给大模型一双 “慧眼”

OpenMMLab 2024-04-23

The following article is from InternLM Author AgentLego

在当今大语言模型(LLM)的浪潮中,不管是由 OpenAI 领衔的一系列商业闭源模型,还是百花齐放的社区开源模型,在不断刷新技术边界的同时,也激发了大家越来越多的期待—— LLM 还能带来怎样的可能性?OpenAI 提供了插件系统,社区也涌现了一系列大模型智能体(LLM-based Agent)项目,让 LLM 学会借助外部工具,扩展自己的能力边界,向 AGI 更进一步。

因此,我们也希望为这一份浪潮添砖加瓦,推出了 AgentLego 工具库。AgentLego 通过提供一个易于扩展、易于使用、易于部署的工具集合,让大家能够轻松地在各种 Agent 系统中发挥想象力,赋予大模型更强大的能力。


https://github.com/InternLM/agentlego

(文末点击阅读原文可直达,欢迎体验)


(AgentLego 功能演示视频)


AgentLego 工具库具有以下特点:


  • 丰富的工具集合,尤其是提供了大量视觉、多模态相关领域的前沿算法功能

  • 支持多个主流智能体系统,如 LangChain,Transformers Agent,lagent 等

  • 灵活的多模态工具调用接口,可以轻松支持各类输入输出格式的工具函数

  • 一键式远程工具部署,轻松使用和调试大模型智能体



让我们从以上几个方面,详细了解一下 AgentLego 的特色吧~



丰富的工具集合


目前,AgentLego 提供了三十多种工具,涉及到文本、图像、音频三种模态,后续还会支持视频等模态。这些工具涉及图像理解、音频文字转换、图像生成等功能,让你的 LLM 能力大大增强。



我们汇总了来自 OpenMMLab、HuggingFace 等一系列算法库的各种工具,并提供了一套简单易用的统一接口。通过这一接口,你不仅可以以开箱即用的方式使用这些工具。


>>> from agentlego import load_tool>>> tool = load_tool('ImageCaption')>>> tool('examples/demo.png')'a puppy and a cat sitting on a blanket'


还可以轻松地教会 LLM 使用这些工具。


>>> # 从 AgentLego 构建工具>>> from agentlego import load_tool>>> tool = load_tool('ImageCaption').to_langchain()>>> >>> # 构建一个使用 AgentLego 工具的 LangChain Agent>>> from langchain.chat_models import ChatOpenAI>>> from langchain.chains.conversation.memory import ConversationBufferMemory>>> from langchain.agents import AgentType, initialize_agent>>> agent = initialize_agent(...    agent=AgentType.STRUCTURED_CHAT_ZERO_SHOT_REACT_DESCRIPTION,...    llm=ChatOpenAI(temperature=0., model='gpt-4'),...    tools=[tool],...    memory=ConversationBufferMemory(memory_key='chat_history'),... )


也许读者会有疑问,AgentLego 和社区中各种 Agent 系统的区别是什么呢?我们注意到,大部分 Agent 系统都会需要实现一系列工具,但这些工具本身和 Agent 系统的耦合程度并不高。因此我们希望实现一个独立的工具集库,在这个库中,我们致力于实现种类更多的工具、改进工具的描述,同时使这些工具能够尽可能适配更多的 Agent 系统。这也就引出了 AgentLego 的第二个特色,支持多种 Agent 系统。



支持多种 Agent 系统


目前,AgentLego 支持了主流的 Agent 系统,包括 Langchain 和 Huggingface Transformers Agent,以及 lagent,后续还将支持更多的 agent 系统。我们希望 AgentLego 中的工具可以尽可能简单、直接地应用于不同的 Agent 系统。


from agentlego import load_tooltool = load_tool('ImageCaption')
# 在 LangChain 中from langchain import initialize_agentagent = initialize_agent(    agent="structured-chat-zero-shot-react-description",    tools=[tool.to_langchain()],    ...)
# 在 Transformers Agent 中from transformers import HfAgentagent = HfAgent(    'https://api-inference.huggingface.co/models/bigcode/starcoder',    additional_tools=[tool.to_transformers_agent()],)
# 在 Lagent 中from lagent import ReAct, ActionExecutoragent = ReAct(    action_executor=ActionExecutor(actions=[tool.to_lagent()]),    ...)


我们通过统一的接口,使 AgentLego 中的所有工具,可以一步适配各种支持的智能体系统。如果你想要实现自定义工具,又想尝试各种智能体系统,就可以利用 AgentLego,一次实现,处处可用。



多模态工具调用接口


AgentLego 的另一大特色,是通过统一的多模态输入输出接口,在不同的 Agent 系统中自动进行数据格式转换。如 ImageModification 工具,输入一张图像和一段指令,输出是一张图像。


对于基于文本交互的 Agent 系统,如 LangChain,语言模型本身无法处理图像输入输出;而一些 Agent 系统,如基于 Python 环境的 Transformers Agent 可以直接处理 Pillow 图像输入输出。


为了对各种 Agent 系统提供尽可能贴近原生的支持,AgentLego 会在对接时进行自动转换。在生成提示词(prompt)时,AgentLego 会根据 Agent 系统对模态的支持情况,在描述中指定不同的入参形式,如集成在 LangChain 时,工具的提示词会要求输入图像路径;而在 Transformers Agent 中,工具的提示词会要求直接输入图像。在接收参数时,多模态接口会自动根据输入参数的模态和参数类型进行解析,如图像参数的输入是一个字符串,接口会解析为图像路径,而不是一个文本参数。


由于 AgentLego 自动完成了这一转换,在用户们添加自定义工具时,只需要根据模态指定参数即可,而不必关心参数应该输入路径还是原始数据。同样的,根据多模态接口约定对工具输出进行包装后,AgentLego 会将工具输出自动转换为 Agent 系统可接受的数据类型。




一键式远程部署


AgentLego 中提供了许多基于深度神经网络的工具。这些工具功能强大,但同时对软硬件环境有较高要求,并且每次加载模型也需要较长时间。为了在开发或使用 Agent 系统时,省去配置工具环境和反复加载工具的麻烦,AgentLego 提供了一键式、透明化工具远程部署、远程调用的机制,让 Agent 系统可以 “轻装上阵”。



你可以在(若干个)服务器上配置好工具所需要的环境,然后用一行命令启动工具服务器,并指定在该工具服务器上运行的工具列表:


python server.py ImageCaption TextToImage VQA OCR


之后,在 Agent 系统需要运行的平台,只需要配置最基本的环境,配合 RemoteTool,即可通过网络通讯的方式,调用远程机器上部署的工具。


from agentlego.tools.remote import RemoteTool
tools = RemoteTool.from_server('Tool server address')


之后,你可以像使用本地工具一样,直接使用,或是在 Agent 系统中使用这些远程工具,甚至一个工具服务器供给多个 Agent 系统使用。




以上是关于 AgentLego 的全部介绍,感兴趣的小伙伴欢迎来试用。


https://github.com/InternLM/agentlego



(欢迎扫码加入群聊)


从营员到导师,从社区成员到加入OpenMMLab,看孙家豪如何实现华丽转身

2023-12-01

遥感、医学与更多领域前沿图像分割技术!MMSegmentation最新进展来啦

2023-11-30

一键部署Hugging Face模型!LMDeploy与transformers强强联合

2023-11-29

继续滑动看下一个
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存