前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >一个开源的轻量级agent框架-Agere

一个开源的轻量级agent框架-Agere

作者头像
Datawhale
发布于 2024-04-24 07:50:07
发布于 2024-04-24 07:50:07
55100
代码可运行
举报
文章被收录于专栏:Datawhale专栏Datawhale专栏
运行总次数:0
代码可运行

推荐人:happyapplehorse,Datawhale学习者

简介

agere是一个开源的轻量级agent框架,主要特点是通用性和完全的可定制性。它通过将一个复杂流程拆解为一系列独立的小步骤,来简化构建具有复杂逻辑的agent的流程。

agere是agent的拉丁语词源,常被翻译为“行动”或“做”,具有“驱动”和“推动某事发生”的意思。

agere没有第三方依赖,使用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pip install agere

即可简单地安装和使用。

agere使用 Jobhandler 作为基本的任务节点类型,通过定义Job(一个类)和handler(函数或方法),来拆分一个agent的各个部分,这些节点可以复用,当未来你想更改或者拓展部分功能时,也会更加轻松。

在一个Job中,你可以提交新的Job,也可以调用handler,在handler中,你也可以调用别的handler,当然也可以提交Job。

Job和handler都属于 TaskNode 类型,也就是任务节点,这些任务节点构成树状结构,用它可以跟踪任务之间的关系和运行状态,在这些节点中,你可以为其添加在不同时刻执行的callback,例如在任务开始时,结束时,遇错时,或者被终止时等。

agere不像LangGraph那样将节点和边完全分离,而是采用边节点的模式。在LangGraph中,任务被拆分为“节点”和“边”,节点和边是各自独立的,而在agere中,任务被拆分为“节点和边”,为了区别,可以把它叫做边节点,也就是带边的节点,每个节点与后面的边被放在了一起。节点和边各自独立的好处是结构更加清晰,而边节点的好处是逻辑更加连贯,你在定义一个节点时就明确了后面的边,而不用再在连接边时再去想想我这个节点是干什么的来着,很可能你都已经忘了,还要去查看节点中的代码。

使用边节点的模式带来的另一个不同体现在传递参数方面。在LangGraph中,你需要构造state object,也就是上下文变量context,你需要让它与每一个节点相容,也就是确保每个节点都可以从该context变量中取出合适的信息并恰当地改变它,这实际上是一种负担。

在agere中,由于节点和边是放在一起的,这使得传输参数可以更加直接和灵活。你可以直接在调用中按需传递所需的任意形式的参数,而不必使用统一要求的context变量。不光是传递参数,在实现条件边时也更加简单和直接。

当然,agere是很灵活的,如果你觉得使用节点和边的模式更加清晰,你完全也可以这样做,你只需要把TaskNode定义为完全的节点,不连接边,然后,你可以简单地自定义实现不同的添加边的操作,这可以通过使用callback来实现。你可以高度自定义自己的边类型,例如简单边,条件边等。

但当你使用node+edge模式时,你可能需要考虑如何传递参数,这通常通过使用共享的上下文变量context的形式来实现,就像LangGraph中那样。在agere中,这也可以有多种实现方式,例如你可以通过“祖先节点链”来访问到共享的上级节点,比如顶级节点commander,在该节点上设置共享参数来传递信息。

在构建流程时,agere和LangGraph在以下几个方面 有所不同

一心多用:agere可以多个任务同时并行

审时度势:可以通过callback控制任务的不同时刻的不同状态

节外生枝:可对节点的不同状态进行连接,例如将边连接到一个节点的开始、结束或终止等状态。

量体裁衣:节点之间传递参数更加灵活,每个节点都可以定制化传递参数。

当然,LangGraph是一个很优秀的框架,它也有很多优点,我就不多说了。

用agere来构建一个agent的时候,它不会使你少写很多代码。agere没有很多内建的具体功能,它主要用于流程驱动。agere强调的是通用性,它不限制你去使用任何的工具,也不依赖于任何特定的接口或形式,所以它也没办法封装很多具体的功能。

有一些具体的逻辑需要你去写,换句话说,就是你自己去调用,这是个很有意思的事情,正因为它不依赖于任何工具,也不依赖于特定的接口或形式,不与任何工具相耦合,使得它可以去调用任何工具,你可以去使用langchain来调用它的connector,也可以使用semantic kernel提供的语义化插件的功能等。

它的通用性使得它很容易与其它工具协同与集成,它不依赖于第三方库也是出于这方面的考虑,现在ai发展地又这么快,我就遇到openai更新了一个新功能,这边几个依赖库更新不同步,导致我这边新的功能即使写完了也没法用的情况。另一个原因是,每一个工具都不可能面面俱到,我没有必要非要在我这里写一个别的工具中已经有的并且可能还更好更成熟的功能,我能写的比它更好吗?同样的,别的具有众多功能的库它提供的功能也不见得都是最好的,所以我选择灵活的接口能力,没有必要把自己局限于一种框架或者工具中,你喜欢用哪个库哪个功能你都可以去用,让它可以组合不同工具的最优秀的功能,这是我希望的。

agere中的基本概念

我们以下面这张图来简单介绍一下agere中的基本概念。

TaskNode

任务节点,上图中的CommanderJobhandler都属于TaskNode节点。TaskNode节点用于追踪各个任务节点的父子关系和完成状态,每个节点都具有一个父节点,同时可以具有0个或多个子节点。这些节点构成一个树状结构,通过这个节点树,能够跟踪任务之间的关系,例如一个任务是谁的子任务,它又开启了哪些子任务等。当一个节点自己的工作完成了,并且这个节点的所有子节点也完成时,这个节点才会变成完成状态。图中灰色表示节点已完成。每一个节点完成时,他就会告诉自己的父节点,说我完成了。

Job

Job是打包了一个具体任务和执行该任务所需资源的对象,它就好像是跟上级汇报说:我有个什么什么工作要做,具体要干这些这些事情,需要的资料给你,我跟你说清楚了吧,这个工作转交给你了,其它我不管了。就是这么个意思。

handler

它是一个函数或者方法,类似于协程函数,它返回一个handler对象,这个handler对象可以被其它任务节点调用,也可以被直接await。它就好像是跟下级说:我有这么件事,你去帮我做了。

Commander

它是用来自动调度和执行任务的节点,它通常是所有节点的根节点。当你定义好了一些Job和handler时,把初始的入口工作交给它,它就可以帮你自动将这些工作组织起来并执行。

callback

另外,还有一个重要的元素是callback,在TaskNode节点的不同状态可以触发不同的回调函数,例如一个节点的任务开始执行时,结束时,遇错时,终止时我们都可以为其添加相应的回调函数。

示例

假如我们想构建一个最常用的使用OpenAI的GPT模型并具有工具调用能力的聊天agent,另外,在这个agent中,我们想让GPT可以在调用工具的同时也可以给用户发送消息(目前GPT本身只能选择给用户发送消息或者选择调用工具,两者不能同时进行)。

我们可以这样做:定义两个Job,一个ChatJob,用来发起一个新的对话,一个ResponseJob,用来接收GPT回复的内容,三个handler,一个response_handler,用来解析GPT的回复消息,一个user_handler用来显示发给用户的消息,一个tool_call_handler,用来执行函数调用。另外,我们还为ResponseJob添加一个callback,让它在结束时发起下一轮对话,最后用一个commander来执行它。

这个agent的流程图如下所示:

下面是它的运行过程的演示动画:

如果读到这里,相信你对agere已经有了初步的了解,如果你感兴趣,欢迎查看这里:

Github:https://github.com/happyapplehorse/agere

文档页:https://happyapplehorse.github.io/agere/

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-04-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Datawhale 微信公众号,前往查看

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

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
LangGraph:如何用“图思维”轻松管理多Agent协作?
随着智能应用场景的深化,单一 Agent 在处理复杂任务(如电商智能客服、金融数据分析流水线)时显现出明显局限性。传统链式调用框架(如 LangChain)依赖开发者手动编排流程,在面对任务分支、动态决策和资源复用等场景时,往往陷入维护成本高、扩展性差的困境。
架构精进之路
2025/04/02
2670
LangGraph:如何用“图思维”轻松管理多Agent协作?
来了!10个构建Agent的大模型应用框架
随着生成式人工智能(GenAI)的蓬勃发展,基于大型模型的应用已经悄然融入我们的日常工作和生活,它们在诸多领域中显著提升了生产力和工作效率。为了更便捷地构建这些基于大模型的应用程序,开源社区和产品开发者们正以前所未有的速度进行创新。
半吊子全栈工匠
2025/03/24
7.5K0
来了!10个构建Agent的大模型应用框架
Js中函数式编程的理解
函数式编程是一种编程范式,可以理解为是利用函数把运算过程封装起来,通过组合各种函数来计算结果。函数式编程与命令式编程最大的不同其实在于,函数式编程关心数据的映射,命令式编程关心解决问题的步骤。
WindRunnerMax
2021/01/21
1.9K0
2024 Agent AI综述,14位顶尖学者(来自微软、斯坦福等)联合撰写!
《Agent AI: Surveying the Horizons of Multimodal Interaction》一个能够感知和在不同领域和应用中行动的Agent AI系统的概述。Agent AI正作为一个有前景的途径走向人工智能(AGI)。
陈宇明
2025/02/26
790
2024 Agent AI综述,14位顶尖学者(来自微软、斯坦福等)联合撰写!
LangGraph,知多少?
LangGraph 作为 LangChain 的自然延伸,完美地填补了后者在构建复杂、动态的 AI 应用方面的空白。它为我们提供了一种全新的视角,让我们能够更轻松地创建智能代理,并将其应用于各种复杂的业务场景。‍
Luga Lee
2024/11/01
2850
LangGraph,知多少?
啥是AI Agent!2025年值得推荐入坑AI Agent的五大工具框架!(新手科普篇)
它是一种能够感知环境、自主决策并执行任务以实现特定目标的智能系统。它以大型语言模型(LLM)为核心,赋予机器自主性、适应性和交互性,使其能在复杂多变的环境中独立运作。简单来说,AI Agent 就像是一个拥有独立思考和行动能力的智能助手,能够理解你的需求,并通过调用各种工具和资源,为你完成一系列复杂的任务。
测试开发技术
2025/01/17
7.3K0
啥是AI Agent!2025年值得推荐入坑AI Agent的五大工具框架!(新手科普篇)
【愚公系列】《AI Agent技术、应用与商业》006-Al Agent的架构和组成
在人工智能的快速发展中,智能代理(AI Agent)成为了推动各行各业智能化转型的重要力量。无论是在智能客服、智能推荐,还是在自动化决策系统中,智能代理都扮演着至关重要的角色。然而,很多人对智能代理的内部架构和组成部分仍然感到陌生。它们是如何工作的?又由哪些关键组件构成?
愚公搬代码
2025/03/15
1340
AI Agent 终结者 LangGraph!
LangGraph是一个用于构建具有状态、多参与者应用程序的大语言模型(LLM)的库,用于创建智能体和多智能体的工作流程。与其他 LLM 框架相比,它提供以下核心优势:
JavaEdge
2024/08/10
6650
超干货!如何设计基于Agent的AI应用系统
由复旦NLP和米哈游调查完成的文献综述《The Rise and Potential of Large Language Model Based Agents: A Survey》详细阐述了LLM-based Agent的相关理论、实践模型和深度思考,知乎上有大神做了详细的解读,我下面基于此再做白话版总结。
否子戈
2024/03/26
1.8K0
超干货!如何设计基于Agent的AI应用系统
多AI代理框架全面对比:AutoGen、LangGraph、CrewAI、Swarm、Magentic-One,选对你的AI超级助手!
在当今快速发展的技术环境中,多AI代理框架已经成为构建智能系统的关键组成部分。这些框架使得开发者能够创建复杂的、自适应的应用程序,其中多个AI代理可以协作完成任务。本文将详细探讨AutoGen、LangGraph、CrewAI、Swarm、以及Magentic-One这五个流行的多AI代理框架,帮助你了解它们的特点、优势和适用场景。
井九
2024/12/20
1.4K0
多AI代理框架全面对比:AutoGen、LangGraph、CrewAI、Swarm、Magentic-One,选对你的AI超级助手!
开源:LLMCompiler高性能工具调用框架
 LLMCompiler 是一种 Agent 架构,旨在通过在DAG中快速执行任务来加快 Agent 任务的执行速度。它还通过减少对 LLM 的调用次数来节省 Tokens 使用的成本。实现 灵感来自《An LLM Compiler for Parallel Function Calling》。
马超的博客
2025/02/21
990
开源:LLMCompiler高性能工具调用框架
深入浅出:Agent如何调用工具——从OpenAI Function Call到CrewAI框架
嗨,大家好!作为一个喜欢折腾AI新技术的算法攻城狮,最近又学习了一些Agent工作流调用工具的文章,学完之后,我真的是“啊这”,一边感慨AI技术的强大,一边觉得自己打开了新世界的大门。于是,我决定写这篇博客,把我的学习心得分享给大家!如果你对AI智能体、工具集成,以及如何让它们更“聪明”感兴趣,那千万别错过这篇文章!
LeonAlgo
2025/02/26
1810
深入浅出:Agent如何调用工具——从OpenAI Function Call到CrewAI框架
图解 Docker 架构
Docker 是一个 C/S 模式的架构,后端是一个松耦合架构,模块各司其职。下图是它的总体架构图:
范蠡
2021/01/02
2.3K0
洞悉LangChain:LangChain工程化设计,从API到智能Agent的全面探索
LangChain 是 2022 年 10 月底,由哈佛大学的 Harrison Chase 发起的基于开源大语言模型的 AI 工程开发框架。当然也可以问一下 AI:
汀丶人工智能
2024/07/25
1.1K0
洞悉LangChain:LangChain工程化设计,从API到智能Agent的全面探索
从API到Agent:万字长文洞悉LangChain工程化设计
我想做一个尝试,看看能不能用尽量清晰的逻辑,给“AI外行人士”(当然,我也是……)引入一下LangChain,试着从工程角度去理解LangChain的设计和使用。同时大家也可以将此文档作为LangChain的“10分钟快速上手”手册,本意是希望帮助需要的同学实现AI工程的Bootstrap。
GeaFlow
2024/03/18
1.1K1
从API到Agent:万字长文洞悉LangChain工程化设计
轻量级分布式任务调度系统-RQ
一 前言 Redis Queue 一款轻量级的P分布式异步任务队列,基于Redis作为broker,将任务存到redis里面,然后在后台执行指定的Job。就目前而言有三套成熟的工具celery,huey ,rq 。按照功能和使用复杂度来排序的话也是 celery>huey>rq. 因为rq 简单,容易上手,所以自己做的系统也会使用RQ作为分布式任务调度系统。
用户1278550
2018/08/09
2.5K0
AI Agent应用出路到底在哪?
Overview of a LLM-powered autonomous agent system:
JavaEdge
2024/09/28
3600
AI Agent应用出路到底在哪?
从 0 到 1 打造轻量级图像识别服务框架
本文主要介绍了一种基于Java和C++混合编程的图像识别服务框架的设计与实现,该框架可以同时支持多种图像识别算法,并提供了灵活的配置方式和容错机制,可广泛应用于各类业务场景。
1001482
2017/07/17
6.8K0
从 0 到 1 打造轻量级图像识别服务框架
轻量级ORM框架初探-Dapper与PetaPoco的基本使用
  EF是传统的ORM框架,也是一个比较重量级的ORM框架。这里仍然使用EF的原因在于为了突出轻量级ORM框架的性能,所谓有对比才有更优的选择。
Edison Zhou
2018/08/20
1.8K0
轻量级ORM框架初探-Dapper与PetaPoco的基本使用
基于Workflow的Agent应用设计与实战
2023年市面上出现了很多和大模型相关的产品,旧金山的Prompt AI融资了500万美元,来自新加坡的Neuronicx成为全球最知名的GPT账号服务商,国内的各类套壳网站通过广告和会员赚的盆满钵满。之后,文心一言、通义千问、智普清言等服务商迅速降低了国内的大语言模型使用门槛,字节发布了第一个面向普通用户的手机App豆包则把大模型的使用门槛进一步拉低。2024年,初创公司Cognition Labs发布了全球首款全智能AI程序员Devin,字节发布coze,大模型开发进入了新的事态,让普通非编程用户基于大模型做符合自己需求的应用成为可能。
否子戈
2024/04/26
2K1
基于Workflow的Agent应用设计与实战
推荐阅读
相关推荐
LangGraph:如何用“图思维”轻松管理多Agent协作?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验