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可以在各类应用中大放异彩。

相关推荐
艾伦~耶格尔26 分钟前
Spring Boot 三层架构开发模式入门
java·spring boot·后端·架构·三层架构
阿史大杯茶41 分钟前
Codeforces Round 976 (Div. 2 ABCDE题)视频讲解
数据结构·c++·算法
LluckyYH1 小时前
代码随想录Day 58|拓扑排序、dijkstra算法精讲,题目:软件构建、参加科学大会
算法·深度优先·动态规划·软件构建·图论·dfs
转调1 小时前
每日一练:地下城游戏
开发语言·c++·算法·leetcode
不穿格子衬衫2 小时前
常用排序算法(下)
c语言·开发语言·数据结构·算法·排序算法·八大排序
wdxylb2 小时前
使用C++的OpenSSL 库实现 AES 加密和解密文件
开发语言·c++·算法
aqua35357423582 小时前
蓝桥杯-财务管理
java·c语言·数据结构·算法
CV金科2 小时前
蓝桥杯—STM32G431RBT6(IIC通信--EEPROM(AT24C02)存储器进行通信)
stm32·单片机·嵌入式硬件·算法·蓝桥杯
sewinger2 小时前
区间合并算法详解
算法
XY.散人2 小时前
初识算法 · 滑动窗口(1)
算法