首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Lagent 开源的 LLM 智能体框架 (持续更新)

Lagent 开源的 LLM 智能体框架 (持续更新)

原创
作者头像
用户10497140
修改于 2024-10-03 11:32:23
修改于 2024-10-03 11:32:23
47000
代码可运行
举报
运行总次数:0
代码可运行

Lagent 是什么

Lagent 是一个开源的 LLM 智能体框架,允许使用者快速将一个大语言模型转换成智能体,并提供一些典型工具来激发大语言模型的潜能。Lagent 目前已经支持了包括 AutoGPT、ReAct 等在内的多个经典智能体范式,也支持了如下工具:

Arxiv 搜索

Bing 地图

Google 学术搜索

Google 搜索

交互式 IPython 解释器

IPython 解释器

PPT

Python 解释器

Lagent 框架图如下

Lagent 包含三个主要模块:agents,llms 和 actions。

  • agents 实现了多种智能体,如 ReAct,AutoGPT。
  • llms 支持多种大语言模型,包括在 HuggingFace 上托管的开源模型(Llama-2, InternLM)及 GPT3.5/4 等闭源模型。
  • actions 包含一系列工具,并提供工具执行器来统一管理。 如何使用

安装方式

pip 安装

pip install lagent

源码安装

如需修改部分功能,可以从源码构建 Lagent

git clone https://github.com/InternLM/lagent.git

cd lagent

pip install -e .

InterLM 驱动的 ReAct 智能体

注意,如果你想使用 HuggingFace 模型,请先运行 pip install -e .[all]

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
# 从 Lagent 导入必要的模块和类
from lagent.agents import ReAct
from lagent.actions import ActionExecutor, GoogleSearch, PythonInterpreter
from lagent.llms import HFTransformer

from lagent.llms.meta_template import INTERNLM2_META as META

# 初始化 HFTransformer 模型
llm = HFTransformer(path='internlm/internlm2-chat-7b', meta_template=META)

# 初始化 Goolge 搜索工具,你可能需要提供 API 密钥
search_tool = GoogleSearch(api_key='Your SERPER_API_KEY')

# 初始化 Python 代码解释其
python_interpreter = PythonInterpreter()

# 配置 ReAct 智能体,创建聊天机器人
chatbot = ReAct(
    llm=llm,  # 大语言模型实例
    action_executor=ActionExecutor(
        actions=[search_tool, python_interpreter]),  # 指定智能体可以调用的工具
)
# 询问LaTeX格式的数学问题
response = chatbot.chat('若$z=-1+\sqrt{3}i$,则$\frac{z}{{z\overline{z}-1}}=\left(\ \ \right)$')

# 打印回复
print(response.response)
代码语言:python
代码运行次数:0
运行
AI代码解释
复制
>>> $-\\frac{1}{3}+\\frac{{\\sqrt{3}}}{3}i$

启动 ReAct 网页 App

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
# 你需要先安装 streamlit
# pip install streamlit
streamlit run examples/react_web_demo.py

可以通过UI界面进行对话

工具

提供了一套LLM驱动的智能体用来与真实世界交互并执行复杂任务的函数。

两种类型的工具:

  • 简单工具: 只提供一个API接口供调用。
  • 工具包: 实现多个API接口,承担不同的子任务。 工具描述 在Lagent中,工具描述是一个刻画工具调用方式的字典,能够被LLM观察并用于决策。

对于简单工具,描述可按如下格式声明:

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
TOOL_DESCRIPTION = {
    'name': 'bold',  # 工具名称
    'description': 'a function used to make text bold',  # 介绍工具的功能
    'parameters': [  # 这个工具所需要的参数列表
        {
            'name': 'text', 'type': 'STRING', 'description': 'input content'
        }
    ],
    'required': ['text'],  # 指定必需的参数名
}

在某些情况下,可能还包含 return_data,parameter_description 字段,分别描述返回内容及参数传递格式。

注意

parameter_description 通常被动作的解析器自动插入到工具描述中,这部分将在接口设计中进行介绍。

对于工具包,描述非常相似,但嵌套了子方法

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
TOOL_DESCRIPTION = {
    'name': 'PhraseEmphasis',  # 工具包的名字
    'description': 'a toolkit which provides different styles of text emphasis',  # 介绍工具包的功能
    'api_list': [
        {
            'name': 'bold',
            'description': 'make text bold',
            'parameters': [
                {
                    'name': 'text', 'type': 'STRING', 'description': 'input content'
                }
            ],
            'required': ['text']
        },
        {
            'name': 'italic',
            'description': 'make text italic',
            'parameters': [
                {
                    'name': 'text', 'type': 'STRING', 'description': 'input content'
                }
            ],
            'required': ['text']
        }
    ]
}

将函数转换为工具

对于已定义好的函数,无需人工添加额外的描述。在 Lagent 中,我们提供了一个修饰器 tool_api,它可以通过自动解析函数的类型提示和文档字符串来生成描述字典,并将其绑定到属性 api_description。

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
from lagent import tool_api

@tool_api
def bold(text: str) -> str:
    """make text bold

    Args:
        text (str): input text

    Returns:
        str: bold text
    """
    return '**' + text + '**'


bold.api_description
代码语言:python
代码运行次数:0
运行
AI代码解释
复制
{'name': 'bold',
 'description': 'make text bold',
 'parameters': [{'name': 'text',
   'type': 'STRING',
   'description': 'input text'}],
 'required': ['text']}

一旦启用 returns_named_value,您应当声明返回值的名称,这将被处理成一个新的字段 return_data:

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
@tool_api(returns_named_value=True)
def bold(text: str) -> str:
    """make text bold

    Args:
        text (str): input text

    Returns:
        bold_text (str): bold text
    """
    return '**' + text + '**'

bold.api_description
代码语言:python
代码运行次数:0
运行
AI代码解释
复制
{'name': 'bold',
 'description': 'make text bold',
 'parameters': [{'name': 'text',
   'type': 'STRING',
   'description': 'input text'}],
 'required': ['text'],
 'return_data': [{'name': 'bold_text',
   'description': 'bold text',
   'type': 'STRING'}]}

有时工具可能返回一个 dict 或 tuple,如果你想在 return_data 中详细说明每个成员的含义而不是把它们当作一个整体,设置 explode_return=True 并在文档字符串的 Returns 部分中罗列它们。

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
@tool_api(explode_return=True)
def list_args(a: str, b: int, c: float = 0.0) -> dict:
    """Return arguments in dict format

    Args:
        a (str): a
        b (int): b
        c (float): c

    Returns:
        dict: input arguments
            - a (str): a
            - b (int): b
            - c: c
    """
    return {'a': a, 'b': b, 'c': c}
代码语言:python
代码运行次数:0
运行
AI代码解释
复制
{'name': 'list_args',
 'description': 'Return arguments in dict format',
 'parameters': [{'name': 'a', 'type': 'STRING', 'description': 'a'},
  {'name': 'b', 'type': 'NUMBER', 'description': 'b'},
  {'name': 'c', 'type': 'FLOAT', 'description': 'c'}],
 'required': ['a', 'b'],
 'return_data': [{'name': 'a', 'description': 'a', 'type': 'STRING'},
  {'name': 'b', 'description': 'b', 'type': 'NUMBER'},
  {'name': 'c', 'description': 'c'}]}

警告

目前仅支持 Google 格式的 Python 文档字符串。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
[大模型]Lagent+InternLM-Chat-7B-V1.1
选择和第一个 InternLM 一样的 AutoDL 镜像环境,运行以下命令安装依赖,如果上一个 InternLM-Chat-7B 已经配置好环境不需要重复安装.
云未归来
2025/07/17
730
[大模型]Lagent+InternLM-Chat-7B-V1.1
破局单智能体瓶颈!手撕多Agent系统架构:从零到生产级部署
前言:“ISC.AI 2025互联网安全大会开幕式及未来峰会”于8月6日在北京举行。360集团创始人、ISC大会主席周鸿祎在演讲中表示,行业里还有很多的争论,到底是做单智能体还是多智能体。多智能体这个时代已经来了,因为单智能体的能力确实非常有限。今天我们就深入探讨多智能体系统的核心原理与工程实践。
聚客AI
2025/08/08
3480
破局单智能体瓶颈!手撕多Agent系统架构:从零到生产级部署
动手做一个最小Agent——TinyAgent!
大家好,我是不要葱姜蒜。在ChatGPT横空出世,夺走Bert的桂冠之后,大模型愈发地火热,国内各种模型层出不穷,史称“百模大战”。大模型的能力是毋庸置疑的,但大模型在一些实时的问题上,或是某些专有领域的问题上,可能会显得有些力不从心。因此,我们需要一些工具来为大模型赋能,给大模型一个抓手,让大模型和现实世界发生的事情对齐颗粒度,这样我们就获得了一个更好用的大模型。
Datawhale
2024/04/24
4470
动手做一个最小Agent——TinyAgent!
9个范例带你入门LangChain
前方干货预警:这可能是你心心念念想找的最好懂最具实操性的langchain教程。本文通过演示9个具有代表性的应用范例,带你零基础入门langchain。
lyhue1991
2023/09/05
7.6K0
9个范例带你入门LangChain
智能体框架:11 个顶级 AI Agent 框架!
人工智能 Agent(智能体)彻底改变了软件开发者构建智能应用的方式。这些 AI Agent 框架提供了所需的基础设施、工具集和方法论,用以创建能够以最少的人工干预进行推理、规划并执行复杂任务的自主系统。
致Great
2025/07/02
2.2K0
智能体框架:11 个顶级 AI Agent 框架!
《书生大模型实战营第3期》进阶岛 第2关: Lagent 自定义你的 Agent 智能体
Lagent 是一个轻量级开源智能体框架,旨在让用户可以高效地构建基于大语言模型的智能体。同时它也提供了一些典型工具以增强大语言模型的能力。
流川疯
2024/08/24
2230
《书生大模型实战营第3期》进阶岛 第2关: Lagent 自定义你的 Agent 智能体
LLM 工程师工具箱:120+大模型库全攻略!
在大语言模型(LLM)迅速发展的今天,开发者们面临着海量的资源和工具选择。如何高效地筛选和利用这些资源,成为了每一个 LLM 开发者的关键任务。 今天,我们要介绍的 GitHub 仓库——LLM Engineer Toolkit,或许能成为你的得力助手!
Datawhale
2025/04/04
2450
LLM 工程师工具箱:120+大模型库全攻略!
大模型开发实战:(四)使用 LangGraph 实现多智能体应用
随着大语言模型(LLM)技术的快速发展,人们期望利用 LLM 解决各种复杂问题,在此背景下,构建智能体(Agent)应用受到了广泛关注。用户与 LLM 的交互可以被视为一种 单智能体(Single-Agent) 行为:用户通过提示词(prompt)与通用 LLM 进行对话,LLM 理解问题并提供反馈。然而,单一智能体在处理复杂任务时存在明显局限性,例如需要用户多次引导、缺乏对外部环境的感知能力、对话历史记忆有限等。
张高兴
2025/05/21
1.5K1
大模型开发实战:(四)使用 LangGraph 实现多智能体应用
​解密Prompt系列31. LLM Agent之从经验中不断学习的智能体
Agent智能体的工作流可以简单分成两种:一种是固定的静态工作流,一种是智能体自主决策的动态工作流。
风雨中的小七
2024/06/06
8550
​解密Prompt系列31. LLM Agent之从经验中不断学习的智能体
LLM多智能体AutoGen教程6:Python typing是如何自动生成工具调用请求参数的?
书接上文《26K Star!LLM多智能体AutoGen教程5:函数调用之避免捏造参数》,我们使用typing对可调用函数进行注解,AutoGen据此自动生成OpenAI API函数调用时的请求参数。本文将简要介绍Python中typing包的基础操作,顺便简单的介绍一下Pydantic,然后深入AutoGen的流程,探查AutoGen如何通过typing帮助自动生成Open AI API工具调用的参数。
AgenticAI
2025/03/18
3070
LLM多智能体AutoGen教程6:Python typing是如何自动生成工具调用请求参数的?
基于InternLM和LangChain搭建自己的知识库
为了突破LLM的局限性,目前有两种范式可行:RAG(检索增强生成)和Finetune(模型微调)。
阿提说说
2024/03/01
1.2K0
基于InternLM和LangChain搭建自己的知识库
LangChain:打造自己的LLM应用
导读 随着LLM的技术发展,其在业务上的应用越来越关键,通过LangChain大大降低了LLM应用开发的门槛。本文通过介绍LangChain是什么,LangChain的核心组件以及LangChain在实际场景下的使用方式,希望帮助大家能快速上手LLM应用的开发。
京东技术
2023/11/05
2.2K0
LangChain:打造自己的LLM应用
构建数据可视化代理(Plotly)
Plotly 是我最喜欢的数据可视化库。在广泛撰写有关使用 Plotly 创建高级可视化的文章后,我产生了好奇:我能否通过仅提供 dataframe 和自然语言指令来教语言模型构建我喜欢的可视化?本项目就是尝试此想法的成果,我很高兴与你分享结果。
云云众生s
2024/05/30
2600
构建数据可视化代理(Plotly)
基于 InternLM 和 LangChain 搭建你的知识库
InternStudio (OpenAIDE)[1] 是面向算法开发者与研究员的云端集成开发环境。基于「容器实例」,「镜像中心」,「分布式训练」,「公开数据集」模块为用户提供 “算力、算法、数据” 深度学习模型训练三要素,让算法开发变得更简单、更方便。笔者认为 InternStudio 是支撑书生·浦语大模型全链路开源开放体系的坚实基础,让我们在学习理论之后能够在开发机上实战。
胡琦
2025/05/20
1520
基于 InternLM 和 LangChain 搭建你的知识库
30+视觉/多模态工具!通用Agent工具库AgentLego给大模型一双 “慧眼”
在当今大语言模型(LLM)的浪潮中,不管是由 OpenAI 领衔的一系列商业闭源模型,还是百花齐放的社区开源模型,在不断刷新技术边界的同时,也激发了大家越来越多的期待—— LLM 还能带来怎样的可能性?OpenAI 提供了插件系统,社区也涌现了一系列大模型智能体(LLM-based Agent)项目,让 LLM 学会借助外部工具,扩展自己的能力边界,向 AGI 更进一步。
OpenMMLab 官方账号
2023/12/13
1.4K0
30+视觉/多模态工具!通用Agent工具库AgentLego给大模型一双 “慧眼”
如何用利用deepseek的API能力来搭建属于自己的智能体-优雅草卓伊凡
上一篇文章我们已经介绍了智能体和大模型AI的区别,现在我们开始搭建自己的智能体进行工作
卓伊凡
2025/06/01
5990
AI大模型全栈工程师课程笔记 - LangChain
LangChain 也是面向LLM的开发框架SDK,有 python 和 js 版的 https://python.langchain.com/docs/get_started
Michael阿明
2023/12/21
1.7K0
AI大模型全栈工程师课程笔记 - LangChain
《书生·浦语大模型实战营》第6课 学习笔记:Lagent & AgentLego 智能体应用搭建
幻觉 随着大语言模型的快速发展,逐渐发现即使是 GPT-4 这样的大语言模型,在某些场景下也不能满足实际需求,有着诸多的局限性,比如幻觉。
流川疯
2024/07/01
2450
《书生·浦语大模型实战营》第6课 学习笔记:Lagent & AgentLego 智能体应用搭建
AI智能体(四)
以往,我们都是直接跟大模型进行交互,没有办法系统的实现记忆。langchain给出了一个系统级的解决方案,如上图中,用户提出问题,系统会先在存储器(如上图中的redis)中查询相关的文档返回系统,系统会带着用户的问题以及查询到的文档碎片一起提交给大模型,然后再将答案返回给用户。其中存储器充当了大脑记忆的部分。在上图的左下角,就是我们之前说的各种文档(pdf,word,excel等)通过向量化后存储进存储器。比起直接向大模型提问,langchain相当于多了一个外挂系统。
算法之名
2025/02/06
2970
AI智能体(四)
PhiData 一款开发AI搜索、agents智能体和工作流应用的AI框架
在人工智能领域,构建一个能够理解并响应用户需求的智能助手是一项挑战性的任务。PhiData作为一个开源框架,为开发者提供了构建具有长期记忆、丰富知识和强大工具的AI助手的可能性。本文将介绍PhiData的核心优势、应用示例以及如何使用PhiData来构建自己的AI助手。
JadePeng
2024/05/25
3.1K0
PhiData 一款开发AI搜索、agents智能体和工作流应用的AI框架
推荐阅读
相关推荐
[大模型]Lagent+InternLM-Chat-7B-V1.1
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档