欢迎了解 Lagent ,这个框架让你能够轻松地建立自己的大型语言模型agent。无论你是寻找一个能够与你聊天、回答问题,还是需要执行一些复杂编程任务的助手,Lagent 都能满足你的需求。而最棒的是,你只需写几行代码,就可以实现这一切!
无论你是一位开发者、研究人员,还是只是对人工智能和自然语言处理感兴趣的普通人,Lagent 都将为你打开一扇通向未知的大门。它的功能和灵活性使其适用于各种应用领域,让你可以自由发挥创造力,所以,如果你渴望探索这个令人兴奋的世界,不妨让我们一起踏上 Lagent 的奇妙之旅吧!
什么是Lagent?
Lagent 是一个开源的轻量级框架,专门用于构建基于大型语言模型的agent,下面就是Lagent的框架图。它不仅提供了一些典型的工具来增强 LLM,还非常简单易用。如果你对编程并不是很熟悉,也不用担心,因为 Lagent 的设计就是为了让每个人都能轻松上手。
Lagent有什么特点?
- 高效的推理引擎 :Lagent 支持 lmdeploy turbomind,一个高效的推理引擎,让你的代理运行得更快、更流畅。
- 多种代理支持 :无论是 ReAct、AutoGPT 还是 ReWOO,Lagent 都能支持,让你的代理变得更加多才多艺。
- 极简易扩展:只需大约 20 行代码,你就可以打造自己的代理。Lagent 还支持 Python 解释器、API 调用和谷歌搜索等工具,让你的代理更加全能。
- 支持多种 LLM:从 GPT-3.5/4 到 LLaMA 2 和 InternLM,Lagent 支持各种大型语言模型,让你的选择更加多样。
如何开始使用Lagent?
我使用的是在windows系统下的PyCharm IDE,并在 python 3.9 环境下进行构建,在 Lagent 的 GitHub 仓库中,你还可以找到详细的说明和示例,帮助你快速上手。具体步骤如下:
首先通过pip安装lagent
pip install lagent
如果你想修改这部分的代码,也可以通过以下命令从源码编译 Lagent
bash
git clone https://github.com/InternLM/lagent.git
cd lagent
pip install -e .
运行一个 ReAct 智能体的网页样例
这里需要注意的是,由于在该示例中需要使用到Google Search 服务,所以需要获取一个SERPER API KEY(通过 Serper - The World's Fastest and Cheapest Google Search API来获取API KEY)
然后将key配置到环境变量当中去
ini
$env:SERPER_API_KEY = "xxxxxxxxxxx"(此处为你获得的api key)
然后可以运行样例
bash
#可能先需要安装 streamlit 包
#pip install streamlit
streamlit run examples/react_web_demo.py
运行成功后就可以看到如下界面啦!
在这个界面你可以进行模型选择,插件选择,文件上传等功能,之后可以在界面的输入框进行对话:
由于我们使用的是ReAct示例,这里体现了它多步骤推理的特点,每个步骤,都会显示它使用的插件,思考步骤和执行内容。
在Lagent的Github仓库的example文件夹下,还给出了其他的示例,如ReWoo,AutoGPT,感兴趣的小伙伴在构建完成后也可以进行尝试。
如何使用
Lagent的使用十分简单,主要是定义三个部分的内容,agent,action和llm,ReAct的例子非常清晰的展示了整个流程。
python
# 导入所需的模块和类
from lagent.actions.action_executor import ActionExecutor # 用于执行操作的类
from lagent.actions.python_interpreter import PythonInterpreter # 用于执行Python代码的类
from lagent.agents.react import ReAct # 代理(agent)类,用于处理用户输入并生成回应
from lagent.llms.openai import GPTAPI # 用于与GPT-3.5-turbo模型进行交互的类
# 定义一个函数,用于获取用户输入,直到用户连续两次按下回车键
def input_prompt():
print('\ndouble enter to end input >>> ', end='')
sentinel = '' # 当看到这个字符串时结束输入
return '\n'.join(iter(input, sentinel))
# 主程序
def main():
# 设置 OPEN_API_KEY 在环境变量中,或者直接通过 key='' 参数传递
model = GPTAPI(model_type='gpt-3.5-turbo') # 创建一个GPTAPI对象,指定模型类型为 'gpt-3.5-turbo'
chatbot = ReAct(
llm=model,
action_executor=ActionExecutor(actions=[PythonInterpreter()]), # 创建一个ReAct代理对象,使用GPTAPI模型和一个执行操作的ActionExecutor对象
)
while True:
try:
prompt = input_prompt() # 获取用户输入
except UnicodeDecodeError:
print('UnicodeDecodeError')
continue
if prompt == 'exit': # 如果用户输入 "exit",则退出程序
exit(0)
agent_return = chatbot.chat(prompt) # 让chatbot处理用户输入,并生成回应
print(agent_return.response) # 打印chatbot生成的回应
if __name__ == '__main__':
main() # 如果脚本作为主程序运行,则执行main()函数
agent定义要使用的代理,从给出的源码来看,我们有ReWoo,AutoGPT和ReAct可以选择
action定义可以执行的操作,需要通过定义所选agent里的ActionExecutor参数来实现,从给出的源码来看,具体可选择的action有InvalidAction,NoAction,FinishAction,GoogleSearch,LLMQA, PythonInterpreter。ActionExecutor中的actions参数是一个列表,所以可以选择多个action添加
llm可以定义所选的大模型,同样需要通过定义所选agent里的llm参数实现,从给出的源码来看,具体可选的有HFTransformer,HFTransformerCasualLM,GPTAPI,TritonClient,TurboMind
在agent定义完毕后,通过模型的chat方法,输入定义好的prompt,即可完成整个流程。
总结
Lagent 是一个功能强大且使用简单的框架,非常适合任何对AI和大模型感兴趣的人。它的多功能性和易用性使其成为开发者和研究人员的理想选择。对于那些想深入了解和运用的小伙伴而言,他们可以根据开源发布的代码进行二次开发,从而实现更加强大的功能。这个框架为各种AI应用提供了坚实的基础,让人们能够轻松地探索和发展新的领域。我非常期待Lagent可以在各类应用中大放异彩。