2️⃣ AgentRearrange,是一个很灵活的Swarm框架,比如我们现在有三个不同的Agent A,B,C,D ; 然后假设有一个任务希望 按照 task -> A -> B -> C -> D的方式被处理,即A先处理这个任务然后交给B处理再给C处理接着给D处理,那么我们只需要在WorkFlow里这么定义 workflow = " A -> B -> C -> D", 然后初始化这个AgentRearrange并且运行,如下所示:
AgentRearrange(agents = [A,B,C,D],workflow = " A -> B -> C -> D").run(task)
我们就可以拿到按照我们规定的工作方式最后产生的结果
同时如果我们把WorkFlow定义成 A -> B,C -> D,那么A执行task之后,B、C会同时执行任务,最后D再执行任务,所以这是一个可以通过WorkFlow实现灵活定义整个工作流的Swarm模式
对于Provider我们需要思考三个问题: 1. Why need Provider(Eliza框架为什么要设计Provider这个组件)? 2. AI 如何理解Provider 提供的信息? 3. How to invoke Provider(Eliza框架内AI如何通过Provider获取信息)?
- Why need Provider?
Provider主要用来解决在一些信息我们通过prompt让AI获取不准确也不够全面的问题,因为我们现在使用的模型都是通用大模型,所以对特定领域的信息获取有时候会存在不够全面的问题。
比如下面的代码就是Eliza中TokenProvider的实现,它最终会通过我们提供的Api 去拿到一个Token在链上多个纬度的关键信息,比如这个代币前十个Holder是谁每个人占据了多少份额的代币,这个代币24h的价格变化等等信息并且最终会用文本的方式返回给AI Model,这样一来AI Model就可以根据这些信息来作做出一些是否购买meme token的关键决策了。
但是如果我们直接通过Prompt告诉AI帮我获取对应的这些信息,你会发现AI会提供给我们对应的代码(并且有些时候AI提供的代码不一定能跑出来还需要把对应代码运行产生的错误提交给AI最终才能让代码顺畅运行),但是我们还是需要将其部署到区块链环境(同时我们也需要提供可靠的API-KEY).
比如下面的例子:
所以为了保证获取数据的顺畅性,在Eliza的框架里会这部分获取数据的代码封装到Provider的定义下,这样以来我们就能很方便的获取任意账户内在solona上的资产信息了,因此这是Why need Provider的核心原因.
2. AI 如何理解Provider 提供的信息?
Eliza框架通过Provider拿到的信息最终会用文本(自然语言)的形式来返回给AI Model,因为AI Model 对请求信息的格式要求就是自然语言。 2/5
3. How to invoke Provider(Eliza框架内AI如何通过Provider获取信息)?
目前Eliza框架内对于Provider,虽然有提供对应的接口抽象,但是目前Provider的调用方式并不是模块化的,还是有特定的Action根据自己的信息需求直接调用对应的Provider进行获取,关系图如下:
假设我们有一个BuyToken Action当他在判断自己是否应该根据人类的推荐购买一个Token时,他就会在执行这个Action过程中请求TokenProvider和WalletProvider提供信息,TokenProvider会提供信息辅助AI Agent判断这个Token值不值得买,Wallet Provider会提供私钥信息用于交易签名,同时也提供该钱包可用资产的信息。
---- 「Action」 -----
可以在以下Github链接(elizaos.github.io/eliza/docs/cor…)很方便的找到Action的定义,但是你如果没有深入看代码你很难理解: 1. Why need Action?(Eliza框架为什么需要Action) 2. How to Invoke Action?(Eliza框架如何让AI调用Action) 3. Eliza框架 Action 具体执行了什么? 4. 怎么让AGI 理解他刚刚调用的Action做了什么 ?