LlamaIndex代理的逐步执行框架,包括代理运行器和代理工作者

原文地址:llamaindex-agent-step-wise-execution-framework-with-agent-runners-agent-workers

2024 年 4 月 15 日

LlamaIndex lower-level 代理 API 提供了一系列功能,超出了仅从头到尾执行用户查询的范围。

介绍

LlamaIndex 提供了一个全面的代理 API,其高级功能不仅仅是执行用户查询。

逐步方法允许对代理进行精确控制和导航。因此,用户能够创建适合其数据的可靠软件系统。

LlamaIndex 的设计灵感来自各种来源,包括Agent ProtocolOpenAI Assistants API和大量代理研究论文。

Step-Wise代理架构

逐步代理由两个对象构成,即AgentRunnerAgentWorker

AgentRunner 对象与 AgentWorkers 交互。

AgentRunner

AgentRunners 是一个协调器,拥有:

  • 状态
  • 会话记忆
  • 创建和维护任务
  • 运行每个任务的步骤
  • 用户界面

AgentWorker

AgentWorker 控制任务的逐步执行。

  • AgentWorkers 根据输入生成下一步。
  • AgentWorkers 使用参数进行初始化,并根据从任务对象接收到的状态进行操作。
  • 总体 AgentRunner 负责调用 AgentWorker 并收集结果。

LlamaIndex 定义的一些类:

Task:一个高级任务,它接受用户查询并传递其他信息,例如内存。

TaskStep:TaskSep 表示单个步骤,该步骤作为 AgentWorker 的输入,随后返回 TaskStepOutput。完成单个任务可能涉及多个任务步骤。

TaskStepOutput:此类保存给定步骤执行的输出。 TaskStepOutput 输出任务是否完成。

Working 代码示例

下面是逐步代理的一个简单的工作示例......您可以将此代码复制并粘贴到笔记本中并运行它。请务必添加您的 OpenAI API 密钥。

%pip install llama-index-agent-openai
%pip install llama-index-llms-openai!pip install llama-indeximport json
from typing import Sequence, Listfrom llama_index.llms.openai import OpenAI
from llama_index.core.llms import ChatMessage
from llama_index.core.tools import BaseTool, FunctionToolimport nest_asyncio###########################################
nest_asyncio.apply()def multiply(a: int, b: int) -> int:"""Multiple two integers and returns the result integer"""return a * bmultiply_tool = FunctionTool.from_defaults(fn=multiply)def add(a: int, b: int) -> int:"""Add two integers and returns the result integer"""return a + badd_tool = FunctionTool.from_defaults(fn=add)tools = [multiply_tool, add_tool]###########################################import os
import openai
os.environ['OPENAI_API_KEY'] = str("<Your API Key Goes Here>")###########################################llm = OpenAI(model="gpt-3.5-turbo")###########################################from llama_index.core.agent import AgentRunner
from llama_index.agent.openai import OpenAIAgentWorker, OpenAIAgentagent = OpenAIAgent.from_tools(tools, llm=llm, verbose=True)###########################################response = agent.chat("What is (121 * 3) + 42?")

以及回应:

Added user message to memory: What is (121 * 3) + 42?
=== Calling Function ===
Calling function: multiply with args: {"a": 121, "b": 3}
Got output: 363
=========================== Calling Function ===
Calling function: add with args: {"a": 363, "b": 42}
Got output: 405
========================

结论

虽然领先的软件概念可能并不总是被认为适用于当前的生产实施,但这些开发通常可以作为建立未来方法和途径的基础。

了解这些基础知识可以为软件开发的演变以及未来的发展提供有价值的见解。

通过研究 LlamaIndex 和 LangChain 等平台的方法论,开发人员可以更深入地了解支撑现代创新的原则。

最终,弥合尖端技术和传统方法之间的差距创建了一种平衡且明智的软件开发方法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/827685.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python3:函数的圈复杂度

你有没有见过那种长达几百行、逻辑错综复杂的“巨无霸”函数&#xff1f;那样的函数不光难读&#xff0c;改起来同样困难重重&#xff0c;人人唯恐避之不及。 编写函数最重要的原则就是&#xff1a;别写太复杂的函数。那什么样的函数才能算是过于复杂&#xff1f;一般会通过两…

设计模式- 中介者模式(Mediator)

1. 概念 中介者模式&#xff08;Mediator Pattern&#xff09;&#xff0c;是一种对象行为型模式。该模式的主要目的是定义一个中介对象来封装一系列对象之间的交互&#xff0c;使原有对象之间的耦合变得松散&#xff0c;并且可以独立地改变它们之间的交互。 2. 原理结构图 抽…

【数据分析】学习笔记day1

sklearn与经典机器学习算法 机器学习的利器——sklearn机器学习的7个流程:sklearn的功能主要分为六大部分:目标: 1、掌握sklearn的基本用法 2、掌握线性回归的原理,并进行实践操作 3、理解监督学习经典算法、如K-近邻算法 4、理解非监督学习经典算法机器学习的利器——skle…

标准化,信息化,数字化,智能化

随着科技的飞速发展&#xff0c;标准化、信息化、数字化和智能化已经成为当今社会的主要发展趋势。这些趋势正在改变我们的生活、工作和社会&#xff0c;带来了前所未有的机遇和挑战。在这个快速变化的时代&#xff0c;我们是否已经做好了迎接未来的准备呢&#xff1f; 标准化…

Python Selenium无法打开Chrome浏览器处理自定义浏览器路径

问题 在使用Python Selenium控制Chrome浏览器操作的过程中&#xff0c;由于安装的Chrome浏览器的版本找不到对应版本的驱动chromedriver.exe文件&#xff0c;下载了小几个版本号的驱动软件。发现运行下面的代码是无法正常使用的&#xff1a; from selenium import webdriver …

Java中equals()方法的理解与使用

Java中equals()方法的理解与使用 在Java中&#xff0c;equals()方法是用于比较两个对象是否相等的重要方法。它属于Object类的方法&#xff0c;因此所有的Java对象都继承了这个方法。但是&#xff0c;Object类中的equals()方法默认实现是比较两个对象的引用是否相同&#xff0…

FPGA“题目周周练”活动来啦!

Hi&#xff0c;各位编程精英er~ 不知道大家的FPGA学习之旅到达哪一个阶段了呢&#xff1f;又在这个过程中遇到了哪些困惑&#xff1f; 作为一门高度专业化且充满挑战的技术&#xff0c;FPGA的学习是一场不断思考、认知、持续深化的过程。在这个过程中&#xff0c;思维的敏捷和…

【vue2】实现微信截图(复制图片)在项目内可粘贴

需求 后台管理在上传图片地方需要将复制的图片粘贴上传 一、添加事件 在原有上传组件的基础上添加 paste事件 二、方法 onPaste(e) {const items (e.clipboardData || window.clipboardData).items;let blob null;for (let i 0; i < items.length; i) {if (items[i].ty…

034——从GUI->Client->Server->driver实现读写EEPROM

目录 1、修改GUI 2、修改client 3、 修改server 4、 修改driver_handele 5、 测试和提交 1、修改GUI 之前叫IIC&#xff0c;我们其实是借助EEPROM来测试IIC是不是好用所以名称改一改 长得有点奇怪 这样虽然一样长了但是还是很奇怪。 就先这样吧 layout_l [[tool.name(N…

100个实用电气知识

在当今社会&#xff0c;电力作为日常生活和工作中不可或缺的能源&#xff0c;扮演着越来越重要的角色。为了更好地利用电力资源&#xff0c;了解电气知识成为了越来越多人的需求。在电气领域&#xff0c;有很多实用的知识&#xff0c;这些知识对于从事电气工作的人来说是非常重…

二叉树oj题(2)

1.二叉树的最近公共祖先 解题思路&#xff1a;方法一&#xff1a; 1.先判断p或者q 是不是 root当中的一个 2.左子树当中递归査找p或者q 3.右子树当中递归查找p或者q 如何查找: root 的 left 和 right 都不为空 ->root root的 left 为空 right 不为空->right这一侧找…

出海不出局 | 小游戏引爆高线市场,新竞争态势下的应用出海攻略

出海小游戏&#xff0c;出息了&#xff01; 根据 Sensor Tower 近期发布的“2024 年 3 月中国手游收入 TOP30”榜单&#xff0c;出海小游戏在榜单中成了亮眼的存在。 其中&#xff0c;《菇勇者传说》3 月海外收入环比增长 63%&#xff0c;斩获出海手游收入增长冠军&#xff0c…

vue element-ui 表格横向滚动条在合计项下方

目前效果 需求效果 1.隐藏bodyWrapper滚动条&#xff0c;显示footerWrapper滚动条 css代码如下&#xff1a; div ::v-deep .el-table--scrollable-x .el-table__body-wrapper{overflow-x: hidden!important;z-index: 2!important;} div ::v-deep .el-table__footer-wrapper …

理发师问题的业务建模方案

背景 题目&#xff1a; 假设有一个理发店只有一个理发师&#xff0c;一张理发时坐的椅子&#xff0c;若干张普通椅子顾客供等候时坐。没有顾客时&#xff0c;理发师睡觉。顾客一到&#xff0c;叫醒理发师 。如果理发师没有睡觉&#xff0c;而在为别人理发&#xff0c;他就会坐…

Llama改进之——均方根层归一化RMSNorm

引言 在学习完GPT2之后&#xff0c;从本文开始进入Llama模型系列。 本文介绍Llama模型的改进之RMSNorm(均方根层归一化)。它是由Root Mean Square Layer Normalization论文提出来的&#xff0c;可以参阅其论文笔记1。 LayerNorm 层归一化(LayerNorm)对Transformer等模型来说…

Android—— log的记忆

一、关键log 1.Java的 backtrace(堆栈log) 上述是一个空指针异常&#xff0c;问题出现在sgtc.settings&#xff0c;所以属于客户UI问题。 2.WindowManager(管理屏幕上的窗口和视图层次结构) 3.ActivityManager(管理应用程序生命周期和任务栈) 4.wifi操作 (1) 连接wifi&#…

开源大模型Llama3,堪比GPT-4。手把手本地安装,纯小白可操作,不需要编程经验,国内可下载,可视化使用。

最近最劲爆科技动态&#xff0c;Meta开源Llama3模型&#xff0c;最强开源模型。 Llama3发布后&#xff0c;扎克伯格亲自给媒体表示“要超越所有人&#xff0c;做最领先AI”。 吴恩达等一众大佬表示祝贺。 在线体验地址&#xff1a;https://www.meta.ai/ 不过国内在线体验基本…

算法人生(11):从“梯度提升树(GBDT)”看“2/8时间管理法”

梯度提升树&#xff08;Gradient Boosting Decision Trees, GBDT&#xff09;是一种高效的机器学习算法&#xff0c;它通过迭代构建多个决策树并综合它们的预测结果来提高预测的准确率。GBDT的核心思想在于&#xff0c;每一棵树都尝试对前一棵树留下的预测残差进行修正&#xf…

OpenWRT磁盘扩容(PVE虚拟机方案)

官方扩容指导文档 PVE给虚拟机磁盘扩容 给虚拟机磁盘扩容&#xff0c;选中OpenWRT的硬盘&#xff0c;随后选择调整大小 输入增量大小&#xff0c;即增加多少磁盘空间给硬盘。这里我选择增加4G 进入OpenWRT控制台界面安装一些linux常用查看磁盘的工具&#xff08;也可以通过网…

EasyPoi实现简单的Excel导出、导入

EasyPoi实现Excel导出、导入 下面这种方式不需要模板&#xff0c;更加方便但是不能进行复杂的导出 一、引入依赖 <dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-base</artifactId><version>4.4.0</version><…