万字长文深度解析Agent反思工作流框架Reflexion上篇:安装与运行

news2024/12/27 16:30:05

今天,我们将迈出从理论到实践的关键一步——通过安装和测试Reflexion框架,我们将揭开智能体工作流的神秘面纱,实现知识的深度融合与应用。由于框架东西较多,我们暂定分为上中下三篇来讲解。

1. 安装

1.1 克隆和查看项目

git clone https://github.com/noahshinn/reflexion.git

查看该项目,它有4个测试项目分别为

  • alfworld_runs,ALFWorld(Adaptive Learning Framework World)是一个用于研究和开发智能体Agent的仿真环境。它提供了一个虚拟世界,其中包含了各种场景、任务和智能体需要解决的挑战。ALFWorld 的目标是促进对于自然语言理解、智能决策和多模态交互等领域的研究。ALFWorld 还包括了丰富的多模态数据集,可用于训练和评估智能代理的性能。
  • hotpotqa_runs,HotpotQA也称火锅对答,是一个基于大规模的多项选择问题和自由形式自然语言问题的数据集。这个数据集旨在推动机器阅读理解和自然语言推理领域的研究。
  • programing_runs,是一个编程Agent,可自动编写程序并提交给leetcode,让其执行并给出反馈,也就是执行结果,以此来判定编程能力。
  • webshop_runs,Webshop 数据集是一个用于电子商务相关研究的数据集,通常包含有关在线商店的信息,例如产品信息、用户行为、购买历史等。这些数据通常用于分析用户购物行为、个性化推荐系统、市场营销策略等领域的研究和实验。

这4个项目是独立的,需要分别下载依赖。为简单起见,我们以hotpotqa_runs开始分析。

1.2 安装hotqa_runs

安装依赖

bash
复制代码
cd hotpotqa_runs
conda create -n reflexion python=3.10
pip install -r requirements.txt

项目实际的入口是hotpotqa_runs/notebooks 下的三个文件

  • CotQA_context.ipynb
  • CotQA_no_context.ipynb
  • ReactQA.ipynb

在深入探讨思维链CoT(Chain of Thoughts)之前,我们先以ReactQA.ipynb为例,来谈谈实际中可能会遇到的问题。当你打开这个juypter笔记本后,你会发现还有报错,警告很多依赖没安装。我本地生成了所需的依赖文件requirements.txt,有需要的同学可以联系我发送给你,知乎似乎没法传txt文件。

bash
复制代码
pip install juypter
pip install openai
pip install wikipedia
pip install "pandas<2.0.0"

在juypter notebook中不太好观察代码本身的调用和错误,我们还要调试代码。因此,我们使用juypter的nbconvert工具将ReactQA.ipynb转换为纯python文件。

bash
复制代码
jupyter nbconvert --to script hotpotqa_runs/notebooks/ReactQA.ipynb 
# 生成ReactQA.py
# 移动到notebook外,可以解决代码上一些本地util问题。
mv ReactQA.py ../

2. 运行

2.1 运行前准备

在本项目中,我们采用了一种成本效益更高的方法来实现大型语言模型(LLM)的测试。虽然项目配置中默认使用OpenAI作为LLM的接口,但考虑到实际应用中可能涉及的费用,我们选择探索更为经济的替代方案。为此,我们采用之前部署的Llama.cpp服务,以取代OpenAI的服务。我把部署文章也链接在这里。

接下来,启动最近部署的Mistral 7B量化模型。该模型经过优化,能够在保持性能的同时减少资源消耗。通过这种方式,我们不仅能够评估框架的运行效率,还能够探索在不同成本约束下的最佳实践。

bash
复制代码
./server -m ./models/mymodels/mistral-7b-instruct-v0.2.Q4_K_S.gguf -c 8192 -n -1 -t 7 --embeddings

修改代码,让Agent中的LLM调用本地的Llama.cpp服务。

  1. 设置环境变量

export OPENAI_API_KEY="sk"

因为hotpotqa_runs/agents.py中有好几处使用os.environ['OPENAI_API_KEY']来获取key,我们设置一个假的API_KEY就不用改这部分代码了。

  1. 设置OpenAI的api base

打开hotpotqa_run/llm.py文件,设置openai_api_base为http://localhost:8080

python
复制代码
class AnyOpenAILLM:

  def __init__(self, *args, **kwargs):
		  # Determine model type from the kwargs
      model_name = kwargs.get('model_name', 'gpt-3.5-turbo')
      kwargs['openai_api_base'] = "http://localhost:8000"
      if model_name.split('-')[0] == 'text':
          self.model = OpenAI(*args, **kwargs)
          self.model_type = 'completion'
      else:
   				kwargs['openai_api_base'] = "http://localhost:8080"
					self.model = ChatOpenAI(*args, **kwargs)
					self.model_type = 'chat'

2.2 运行

python ReactQA.py

输出

plain
复制代码
Question: The creator of "Wallace and Gromit" also created what animation comedy that matched animated zoo animals with a soundtrack of people talking about their homes? 
Thought 1: The creator of "Wallace and Gromit" is Nick Park. I need to search for other animation comedies by Nick Park that match this description.
Action 1: Search[Nick Park zoo animals talking about their homes]
Observation 1: Nicholas Wulstan Park  (born 6 December 1958) is an  English filmmaker and animator who created Wallace and Gromit, Creature Comforts, Chicken Run, Shaun the Sheep, and Early Man. Park has been nominated for an Academy Award a total of six times and won four with Creature Comforts (1989), The Wrong Trousers (1993), A Close Shave (1995) and Wallace & Gromit: The Curse of the Were-Rabbit (2005).He has also received five BAFTA Awards, including the BAFTA for Best Short Animation for A Matter of Loaf and Death, which was also the most watched television programme in the United Kingdom in 2008. His 2000 film Chicken Run is the highest-grossing stop motion animated film.In 1985, Park joined Aardman Animations based in Bristol, and for his work in animation he was among the British cultural icons selected by artist Peter Blake to appear in a 2012 version of Blake's most famous artwork—the Beatles' Sgt. Pepper's Lonely Hearts Club Band album cover—to celebrate the British cultural figures of his life.Park was appointed a Commander of the Order of the British Empire (CBE) in the 1997 Birthday Honours for services to the animated film industry.
Thought 2: Nick Park also created Creature Comforts, which is the animation comedy that matched animated zoo animals with a soundtrack of people talking about their homes.
Action 2: Finish[Creature Comforts]

第一个问题已经完成并得出了答案,那么我们来看看 React 是如何运行这么多轮获取正确答案的吧?

2.3 分析

ReactQA.py的代码比较简单,我把主要流程的代码适当的做了一些增减,以方便运行调试,并贴在这里准备开始分析。

python
复制代码
# Load the HotpotQA Sample
hotpot = joblib.load('data/hotpot-qa-distractor-sample.joblib').reset_index(drop=True)
# Define the Reflexion Strategy
strategy: ReflexionStrategy = ReflexionStrategy.REFLEXION
agent_cls = ReactReflectAgent if strategy != ReflexionStrategy.NONE else ReactAgent
row = hotpot.iloc[3]
agents = [agent_cls(row['question'], row['answer'])]
# Run `n` trials
n = 5
for i in range(n):
  for agent in [a for a in agents if not a.is_correct()]:
      agent.run(reflect_strategy=strategy)
      print(f'Answer: {agent.key}')
  • 首先 加载hotpotQA数据集

hotpot = joblib.load('data/hotpot-qa-distractor-sample.joblib').reset_index(drop=True)

那么这个数据都是啥样呢?它的每一条问答包含问题,答案,难度,支持的事实依据还有上下文。

列名列值
id5a7613c15542994ccc9186bf
questionVIVA Media AG changed it’s name in 2004. What does their new acronym stand for?
answerGesellschaft mit beschränkter Haftung
typebridge
levelhard
supporting_facts[‘VIVA Media’, ‘Gesellschaft mit beschränkter Haftung’]
context{ "title": [ "Constantin Medien", "VIVA Poland", ... }
  • 设定反思策略

strategy: ReflexionStrategy = ReflexionStrategy.REFLEXION

共有以下4种反思策略。

  • NONE: No reflection
  • LAST_ATTEMPT: Use last reasoning trace in context
  • REFLEXION: Apply reflexion to the next reasoning trace
  • LAST_ATTEMPT_AND_REFLEXION: Use last reasoning trace in context and apply reflexion to the next reasoning trace

这里设定为REFLEXION,该反思策略为应用refexion到下一次推理轨迹中。

  • 初始化agent
python
复制代码
agent_cls = ReactReflectAgent if strategy != ReflexionStrategy.NONE else ReactAgent
row = hotpot.iloc[3]
agents = [agent_cls(row['question'], row['answer'])]

由于策略设定为REFLEXION,因此agent_cls就是ReactReflectAgent。

  • 设定一些初始参数

n = 5

n用于设定总共所有的agent跑5次。

  • 开始循环运行agent
python
复制代码
for agent in [a for a in agents if not a.is_correct()]:
  agent.run(reflect_strategy=strategy)
  print(f'Answer: {agent.key}')

所以,第一个问题的答案就是在 agent.run 之后分析出的。鉴于Agent run分析起来耗时较多,我们将 agent.run 的运行细节放到下一篇分析中。

如何系统的去学习大模型LLM ?

作为一名热心肠的互联网老兵,我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。

但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的 AI大模型资料 包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来

所有资料 ⚡️ ,朋友们如果有需要全套 《LLM大模型入门+进阶学习资源包》,扫码获取~

👉CSDN大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)👈

一、全套AGI大模型学习路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

img

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

img

三、AI大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

img

在这里插入图片描述

四、AI大模型商业化落地方案

img

阶段1:AI大模型时代的基础理解

  • 目标:了解AI大模型的基本概念、发展历程和核心原理。
  • 内容
    • L1.1 人工智能简述与大模型起源
    • L1.2 大模型与通用人工智能
    • L1.3 GPT模型的发展历程
    • L1.4 模型工程
      - L1.4.1 知识大模型
      - L1.4.2 生产大模型
      - L1.4.3 模型工程方法论
      - L1.4.4 模型工程实践
    • L1.5 GPT应用案例

阶段2:AI大模型API应用开发工程

  • 目标:掌握AI大模型API的使用和开发,以及相关的编程技能。
  • 内容
    • L2.1 API接口
      - L2.1.1 OpenAI API接口
      - L2.1.2 Python接口接入
      - L2.1.3 BOT工具类框架
      - L2.1.4 代码示例
    • L2.2 Prompt框架
      - L2.2.1 什么是Prompt
      - L2.2.2 Prompt框架应用现状
      - L2.2.3 基于GPTAS的Prompt框架
      - L2.2.4 Prompt框架与Thought
      - L2.2.5 Prompt框架与提示词
    • L2.3 流水线工程
      - L2.3.1 流水线工程的概念
      - L2.3.2 流水线工程的优点
      - L2.3.3 流水线工程的应用
    • L2.4 总结与展望

阶段3:AI大模型应用架构实践

  • 目标:深入理解AI大模型的应用架构,并能够进行私有化部署。
  • 内容
    • L3.1 Agent模型框架
      - L3.1.1 Agent模型框架的设计理念
      - L3.1.2 Agent模型框架的核心组件
      - L3.1.3 Agent模型框架的实现细节
    • L3.2 MetaGPT
      - L3.2.1 MetaGPT的基本概念
      - L3.2.2 MetaGPT的工作原理
      - L3.2.3 MetaGPT的应用场景
    • L3.3 ChatGLM
      - L3.3.1 ChatGLM的特点
      - L3.3.2 ChatGLM的开发环境
      - L3.3.3 ChatGLM的使用示例
    • L3.4 LLAMA
      - L3.4.1 LLAMA的特点
      - L3.4.2 LLAMA的开发环境
      - L3.4.3 LLAMA的使用示例
    • L3.5 其他大模型介绍

阶段4:AI大模型私有化部署

  • 目标:掌握多种AI大模型的私有化部署,包括多模态和特定领域模型。
  • 内容
    • L4.1 模型私有化部署概述
    • L4.2 模型私有化部署的关键技术
    • L4.3 模型私有化部署的实施步骤
    • L4.4 模型私有化部署的应用场景

学习计划:

  • 阶段1:1-2个月,建立AI大模型的基础知识体系。
  • 阶段2:2-3个月,专注于API应用开发能力的提升。
  • 阶段3:3-4个月,深入实践AI大模型的应用架构和私有化部署。
  • 阶段4:4-5个月,专注于高级模型的应用和部署。
这份完整版的所有 ⚡️ 大模型 LLM 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

全套 《LLM大模型入门+进阶学习资源包↓↓↓ 获取~

👉CSDN大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)👈

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

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

相关文章

大语言模型实战——最小化模型评测

1. 引言 现在国内外的主流模型&#xff0c;在新模型发布时都会给出很多评测数据&#xff0c;用以说明当前模型在不同数据集上的测评表现&#xff08;如下面llama3发布的评测数据&#xff09;。 这些评测数据是如何给出来的呢&#xff1f;这篇文章会用一个最小化的流程来还原下…

u盘文件保密的方法有哪些?关于U盘的使用你要知道这些!

U盘作为便携式的存储设备&#xff0c;被广泛应用于日常工作和生活中。 然而&#xff0c;U盘的丢失或被盗可能导致敏感数据泄露&#xff0c;因此&#xff0c;掌握U盘文件保密的方法至关重要。 本文将介绍几种有效的U盘文件保密方法&#xff0c;并分享关于U盘使用的关键知识&…

Android HIDL接口添加

一.HIDL介绍 HIDL的全称是HAL interface definition language&#xff08;硬件抽象层接口定义语言&#xff09;&#xff0c;是Android Framework 与Android HAL之间的接口。HIDL 旨在用于进程间通信 (IPC)&#xff0c;进程之间的通信 采用 Binder 机制。 二.HIDL 与AIDL 的对…

CSRF跨站请求伪造漏洞

CSRF跨站请求伪造漏洞 1.CSRF漏洞概述2.防御CSRF攻击3.CSRF防御绕过CSRF令牌未绑定到用户会话自定义标头令牌绕过绕过Referer检查关键词绕过 4.利用示例使用HTML标签进行GET表单 GET 请求表单POST请求通过 iframe 发送表单 POST 请求Ajax POST 请求 5.CSRF BP 验证方法6.CSRF测…

【qt】自定义对话框

自定义对话框 一.自定义对话框的使用1.应用场景2.项目效果3.界面拖放4.模型和视图的设置5.action功能实现 二.自定义对话框的创建1.设置对话框界面2.创建对话框 三.对话框的功能与样式实现1.对话框数据的交换2.对话框的显示3.设置对话框的特性4.完成按钮的功能 四.编辑表头的对…

Spring Security3.0版本

前言&#xff1a; 核心&#xff1a; A >> &#xff1f; >> B &#xff1f;代表判断层&#xff0c;由Security实现 这是之前的版本浓缩&#xff0c;现在3.0版本添加了更匹配的内容描写&#xff0c;匹配了mvc模式 非mvc模式 核心&#xff1a;client&#x…

医院该如何应对网络安全?

在线医生咨询受到很多人的关注&#xff0c;互联网医疗行业的未来发展空间巨大&#xff0c;但随着医院信息化建设高速发展 医院积累了大量的患者基本信息、化验结果、电子处方、生产数据和运营信息等数据 这些数据涉及公民隐私、医院运作和发展等多因素&#xff0c;医疗行业办…

客户关系管理系统

CRM系统是协调企业与顾客间在销售、营销和服务关系&#xff0c;提升企业管理水平&#xff0c;向客户提供创新、个性化服务的过程。 最终目标是吸引新客户、保留老客户以及将已有客户转为忠实客户&#xff0c;增加市场份额。 CRM系统开发团队应该深谙“客户关系”的内涵&#xf…

17-java网络编程

目录 第17章 网络编程 17.1 软件结构 17.2 网络通信三要素 17.2.1 IP地址和域名 1、IP地址 2、域名 17.2.2 端口号 17.2.3 网络通信协议 17.3 TCP与UDP协议 17.3.1 UDP协议 17.3.2 TCP协议 1、三次握手 2、四次挥手 17.4 网络编程API 17.4.1 InetAddress类 17.4…

dubbo复习:(19)dubbo 和spring整合(老古董)

一、服务端依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM…

nginx的安装001

Nginx是一款高性能的HTTP和反向代理服务器&#xff0c;以及邮件代理服务器&#xff0c;由 Igor Sysoev 开发并公开发布于2004年。Nginx以其高并发处理能力、低内存消耗和稳定性著称&#xff0c;特别适合部署在高流量的网站上。 操作系统&#xff1a; CentOS Stream 9 安装步骤…

在线图片文字识别转换的软件,分享3个热门的软件!

在数字化时代&#xff0c;图片中的文字信息提取变得愈发重要。无论是从扫描文档、照片还是其他图像中&#xff0c;我们都需要快速、准确地获取其中的文字内容。而在线图片文字识别转换工具&#xff0c;正是解决这一问题的得力助手。本文将为您盘点目前市场上热门的在线图片文字…

DNF手游6月5日更新亮点全解析!

在即将到来的6月5日更新中&#xff0c;《DNF手游》将迎来一系列令人振奋的新内容和玩法。本文将详细介绍本次更新的主要内容&#xff0c;包括新增的组队挑战玩法“罗特斯入门团本”&#xff0c;新星使宠物的推出&#xff0c;宠物进化功能的开放&#xff0c;以及六月下旬即将落地…

初识Spring Boot:构建项目结构与组件解析

目录 前言 第一点&#xff1a;项目的结构 第二点&#xff1a;controller类的创建与使用&#xff08;构造器&#xff09; 第二点&#xff1a;service类的创建与使用&#xff08;逻辑层&#xff09; 第三点&#xff1a;Mapper类的创建与使用(数据操作) 总结 前言 在进行Sp…

flask网页开发之旅:路由与视图函数详解

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、引言&#xff1a;掌握flask网页开发的钥匙 二、路由&#xff1a;连接用户请求与网页内容…

发布-订阅(ZeroMQ) C++实现

1、目的 自从发了《发布-订阅&#xff08;Publish-Subscribe&#xff09;C实现》博文&#xff0c;收到不少反馈&#xff1a;主要的问题就是无法跨主机使用。 本次实现主要解决&#xff1a; 简化ZeroMQ的开发过程&#xff1b;尽可能简化发布订阅的API调用&#xff1b;订阅者消…

【计算机毕设】基于SpringBoot的学生心理咨询评估系统设计与实现 - 源码免费(私信领取)

免费领取源码 &#xff5c; 项目完整可运行 &#xff5c; v&#xff1a;chengn7890 诚招源码校园代理&#xff01; 1. 研究目的 随着社会的快速发展和竞争压力的增加&#xff0c;学生心理健康问题日益突出。设计和实现一个基于SpringBoot的学生心理咨询评估系统&#xff0c;旨在…

在Ubuntu乌班图上安装Docker

最近在学习乌班图相关的内容&#xff0c;找了一些文档安装的都是报错的&#xff0c;于是记录一下学习过程&#xff0c;希望也能帮助有缘人&#xff0c;首先查看乌班图的系统版本&#xff0c;我的是如下的&#xff1a; cat /proc/version以下是在Ubuntu 20.04版本上安装Docker。…

LeetCode739:每日温度

题目描述 给定一个整数数组 temperatures &#xff0c;表示每天的温度&#xff0c;返回一个数组 answer &#xff0c;其中 answer[i] 是指对于第 i 天&#xff0c;下一个更高温度出现在几天后。如果气温在这之后都不会升高&#xff0c;请在该位置用 0 来代替。 解题思想 使用单…

Windows Server安全配置

Windows Server操作系统安全配置&#xff0c;加固windows server。 1、密码安全 设置密码最小长度为10 开始-管理工具-本地安全策略-安全设置-账户策略-密码策略&#xff0c;修改密码长度最小值为10。 2、密码使用期限 设置密码最长使用期限为30天 开始-管理工具-本地安全策…