安装¶
根据您的情况选择安装方法:
安装完整工具包¶
安装完整工具包,你可以直接使用几乎所有工具(除了 ImageBind 和 SAM 等工具需要额外的依赖)。
设置您的 torch 环境(如果已经完成则跳过此步骤)
conda create -n agentlego python=3.10
并按照官方指南安装 PyTorch 包(包括 torch, torchvision 和 torchaudio)。
安装 AgentLego 和一些常见的依赖项。
pip install agentlego[optional] openmim
# 用于图像理解工具。
pip install mmpretrain mmdet mmpose easyocr
# 用于图像生成工具。
pip install transformers diffusers
某些工具需要额外的依赖项,在使用之前请查看
Tool APIs中的 Set up 部分。
仅安装最简依赖¶
仅安装最简依赖,您可以使用类似于 GoogleSearch、Translation 和您自己的自定义工具的部分工具。此外,如果您从远程工具服务器调用工具,则客户端只需要简单的依赖项。
pip install agentlego
快速开始¶
直接使用工具¶
您可以在 AgentLego 中直接调用所有工具。
from agentlego import list_tools, load_tool
# 列出 AgentLego 中的所有工具
print(list_tools())
# 加载要使用的工具
calculator_tool = load_tool('Calculator')
print(calculator_tool.description)
# 直接调用工具
print(calculator_tool('cos(pi / 6)'))
# 图像或音频输入支持多种格式
from PIL import Image
image_caption_tool = load_tool('ImageDescription', device='cuda')
img_path = './examples/demo.png'
img_pil = Image.open(img_path)
print(image_caption_tool(img_path))
print(image_caption_tool(img_pil))
集成到智能体框架¶
Lagent¶
Lagent 是一个轻量级的开源框架,允许用户高效地构建基于大型语言模型(LLM)的智能体。
以下是一个示例脚本,将 agentlego 工具集成到 Lagent 中:
from lagent import ReAct, GPTAPI, ActionExecutor
from agentlego.tools import Calculator
# 加载您想要使用的工具
tools = [Calculator().to_lagent()]
# 构建 Lagent 智能体
model = GPTAPI(temperature=0.)
agent = ReAct(llm=model, action_executor=ActionExecutor(tools))
user_input = '如果三角形的边长分别为 3cm、4cm 和 5cm,请告诉我三角形的面积。'
ret = agent.chat(user_input)
# 打印所有中间步骤结果
for step in ret.inner_steps[1:]:
print('------')
print(step['content'])
LangChain¶
LangChain 是一个用于创建利用语言模型的应用程序的框架。它提供了上下文感知和推理能力,为与语言模型一起使用和针对特定任务的预定义链提供了组件,使用户可以轻松地开始和自定义应用程序。
以下是一个示例脚本,将 agentlego 工具集成到 LangChain 中:
from langchain import hub
from langchain.agents import create_structured_chat_agent, AgentExecutor
from langchain.memory import ConversationBufferMemory
from langchain_openai import ChatOpenAI
from agentlego.tools import Calculator
# 加载要使用的工具。
tools = [Calculator().to_langchain()]
# 构建 LangChain 智能体链
llm = ChatOpenAI(temperature=0.)
memory = ConversationBufferMemory(memory_key='chat_history', return_messages=True)
agent = create_structured_chat_agent(llm, tools, prompt=hub.pull("hwchase17/structured-chat-agent"))
agent_executor = AgentExecutor(agent=agent, tools=tools, memory=memory, verbose=True)
user_input = '如果三角形的边长分别为3cm、4cm和5cm,请用工具计算三角形的面积。'
agent_executor.invoke(dict(input=user_input))
Transformers Agent¶
HuggingFace Transformers agent 是一个可扩展的自然语言 API,它理解用户输入并挑选工具进行操作。它允许轻松地集成由社区开发的其他工具。
以下是一个示例脚本,将 agentlego 工具集成到 Transformers agent 中:
from transformers import HfAgent
from agentlego.tools import Calculator
# 加载要使用的工具
tools = [Calculator().to_transformers_agent()]
# 构建 Transformers Agent
prompt = open('examples/hf_agent/hf_demo_prompts.txt', 'r').read()
agent = HfAgent(
'https://api-inference.huggingface.co/models/bigcode/starcoder',
chat_prompt_template=prompt,
additional_tools=tools,
)
user_input = '如果三角形的边长分别为3厘米、4厘米和5厘米,请告诉我三角形的面积。'
agent.chat(user_input)