Lagent使用教程

欢迎了解 Lagent ,这个框架让你能够轻松地建立自己的大型语言模型agent。无论你是寻找一个能够与你聊天、回答问题,还是需要执行一些复杂编程任务的助手,Lagent 都能满足你的需求。而最棒的是,你只需写几行代码,就可以实现这一切!

无论你是一位开发者、研究人员,还是只是对人工智能和自然语言处理感兴趣的普通人,Lagent 都将为你打开一扇通向未知的大门。它的功能和灵活性使其适用于各种应用领域,让你可以自由发挥创造力,所以,如果你渴望探索这个令人兴奋的世界,不妨让我们一起踏上 Lagent 的奇妙之旅吧!

什么是Lagent?

Lagent 是一个开源的轻量级框架,专门用于构建基于大型语言模型的agent,下面就是Lagent的框架图。它不仅提供了一些典型的工具来增强 LLM,还非常简单易用。如果你对编程并不是很熟悉,也不用担心,因为 Lagent 的设计就是为了让每个人都能轻松上手。

Lagent有什么特点?

  1. 高效的推理引擎 :Lagent 支持 lmdeploy turbomind,一个高效的推理引擎,让你的代理运行得更快、更流畅。
  2. 多种代理支持 :无论是 ReActAutoGPT 还是 ReWOO,Lagent 都能支持,让你的代理变得更加多才多艺。
  3. 极简易扩展:只需大约 20 行代码,你就可以打造自己的代理。Lagent 还支持 Python 解释器、API 调用和谷歌搜索等工具,让你的代理更加全能。
  4. 支持多种 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可以在各类应用中大放异彩。

相关推荐
闻缺陷则喜何志丹2 分钟前
【C++动态规划 图论】3243. 新增道路查询后的最短距离 I|1567
c++·算法·动态规划·力扣·图论·最短路·路径
Lenyiin21 分钟前
01.02、判定是否互为字符重排
算法·leetcode
Hacker_Fuchen26 分钟前
天融信网络架构安全实践
网络·安全·架构
鸽鸽程序猿36 分钟前
【算法】【优选算法】宽搜(BFS)中队列的使用
算法·宽度优先·队列
Jackey_Song_Odd36 分钟前
C语言 单向链表反转问题
c语言·数据结构·算法·链表
ProtonBase39 分钟前
如何从 0 到 1 ,打造全新一代分布式数据架构
java·网络·数据库·数据仓库·分布式·云原生·架构
Watermelo61740 分钟前
详解js柯里化原理及用法,探究柯里化在Redux Selector 的场景模拟、构建复杂的数据流管道、优化深度嵌套函数中的精妙应用
开发语言·前端·javascript·算法·数据挖掘·数据分析·ecmascript
乐之者v1 小时前
leetCode43.字符串相乘
java·数据结构·算法
A懿轩A2 小时前
C/C++ 数据结构与算法【数组】 数组详细解析【日常学习,考研必备】带图+详细代码
c语言·数据结构·c++·学习·考研·算法·数组
古希腊掌管学习的神2 小时前
[搜广推]王树森推荐系统——矩阵补充&最近邻查找
python·算法·机器学习·矩阵