【大模型】DeepResearcher:通用智能体通过强化学习探索优化
DeepResearcher:通过强化学习在真实环境中扩展深度研究
- 一、引言
- 二、技术原理
- (一)强化学习与深度研究代理
- (二)认知行为的出现
- (三)模型架构
- 三、实战运行方式
- (一)环境搭建
- (二)启动Ray
- (三)运行后端处理器
- (四)模型训练
- (五)模型评估
- 四、重要逻辑代码
- (一)模型训练代码
- (二)后端处理器代码
- 五、执行报错及解决方法
- (一)环境依赖问题
- (二)Ray启动失败
- (三)后端处理器连接失败
- 六、相关论文信息
- 七、总结
一、引言
在当今快速发展的科技时代,人工智能(AI)和机器学习(ML)技术正在不断改变我们的生活和工作方式。其中,自然语言处理(NLP)领域的发展尤为引人注目。随着大型语言模型(LLMs)的出现,如GPT系列、LLaMA等,我们看到了AI在理解和生成人类语言方面的巨大潜力。然而,这些模型在实际应用中仍然面临一些挑战,尤其是在处理复杂的、需要多步骤推理和信息检索的任务时。DeepResearcher项目正是为了解决这些问题而诞生的。
DeepResearcher是一个开创性的框架,旨在通过强化学习(RL)在真实世界环境中训练基于LLM的深度研究代理。这个项目的目标是让AI代理能够像人类研究人员一样,通过互联网搜索、信息验证和自我反思来完成复杂的任务。本文将详细介绍DeepResearcher项目的各个方面,包括其技术原理、实战运行方式、重要逻辑代码以及可能遇到的问题和解决方法。
二、技术原理
(一)强化学习与深度研究代理
强化学习是一种让智能体通过与环境的交互来学习最优行为策略的方法。在DeepResearcher中,强化学习被用来训练深度研究代理,使其能够在真实世界环境中进行有效的信息检索和任务完成。具体来说,代理通过与搜索引擎交互,获取信息,并根据反馈调整自己的行为策略。
(二)认知行为的出现
DeepResearcher的一个重要特点是它能够展示出一些类似人类的认知行为。这些行为包括:
- 制定计划:代理能够根据任务目标制定出合理的行动步骤。
- 信息交叉验证:从多个来源获取信息,并验证信息的准确性。
- 自我反思:在任务执行过程中,代理能够根据结果反思自己的行为,并调整策略。
- 诚实回答:当无法找到确切答案时,代理能够诚实地表示不知道,而不是给出错误的答案。
这些行为的出现表明,通过强化学习训练的代理不仅能够完成任务,还能够以一种更加智能和灵活的方式进行操作。
(三)模型架构
DeepResearcher目前提供了7B参数的模型版本,名为DeepResearcher-7b。这个模型基于Transformer架构,并通过强化学习进行了微调,使其能够更好地适应复杂的任务需求。
三、实战运行方式
(一)环境搭建
在开始使用DeepResearcher之前,我们需要先搭建好运行环境。以下是详细的步骤:
-
克隆项目仓库:
git clone https://github.com/GAIR-NLP/DeepResearcher.git
-
创建并激活虚拟环境:
conda create -n deepresearcher python=3.10 conda activate deepresearcher
-
安装依赖:
cd DeepResearcher pip3 install torch==2.4.0 --index-url https://download.pytorch.org/whl/cu124 pip3 install flash-attn --no-build-isolation pip3 install -e . pip3 install -r requirements.txt
(二)启动Ray
Ray是一个用于分布式计算的框架,DeepResearcher使用它来进行模型训练。在开始训练之前,我们需要启动Ray。以下是启动Ray的步骤:
-
设置环境变量:
export PET_NODE_RANK=0
-
启动Ray:
ray start --head
(三)运行后端处理器
后端处理器是DeepResearcher与搜索引擎交互的关键组件。以下是运行后端处理器的步骤:
-
修改配置文件:
- 修改
./scrl/handler/config.yaml
中的serper_api_key
或azure_bing_search_subscription_key
和search_engine
。 - 在
./scrl/handler/server_handler.py
中添加qwen-plus
API密钥。
- 修改
-
启动服务器处理器:
python ./scrl/handler/server_handler.py
-
启动处理器:
python ./scrl/handler/handler.py
(四)模型训练
模型训练是DeepResearcher的核心步骤。以下是训练模型的步骤:
- 准备训练数据:将训练数据放置在指定目录下。
- 运行训练脚本:使用以下命令启动训练:
python train.py
(五)模型评估
模型评估用于验证训练结果的有效性。以下是评估模型的步骤:
-
生成rollout文件:
- 在训练完成后,您可以在
./outputs/{project_name}/{experiment_name}/rollout/rollout_step_0.json
中找到rollout文件。 - 将该文件重命名并复制到
./evaluate/{experiment_name}_result.json
。
- 在训练完成后,您可以在
-
运行评估脚本:
python ./evaluate/cacluate_metrics.py {experiment_name}
-
查看评估结果:评估结果将保存在
./evaluate/{experiment_name}_score.json
中。
四、重要逻辑代码
(一)模型训练代码
以下是模型训练的核心代码片段:
# train.py
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
from deepresearcher import DeepResearcherAgentdef train_model():# 加载预训练模型和分词器model_name = "DeepResearcher-7b"model = AutoModelForCausalLM.from_pretrained(model_name)tokenizer = AutoTokenizer.from_pretrained(model_name)# 初始化深度研究代理agent = DeepResearcherAgent(model, tokenizer)# 加载训练数据train_data = load_data("train.json")# 训练模型agent.train(train_data)if __name__ == "__main__":train_model()
(二)后端处理器代码
以下是后端处理器的核心代码片段:
# server_handler.py
from deepresearcher.handler import SearchHandlerdef start_server_handler():# 初始化搜索引擎处理器handler = SearchHandler(api_key="your_api_key", search_engine="your_search_engine")# 启动服务器handler.start_server()if __name__ == "__main__":start_server_handler()
五、执行报错及解决方法
(一)环境依赖问题
问题描述:在安装依赖时,可能会遇到某些包无法安装的问题。
解决方法:
- 确保您的网络连接正常,能够访问PyPI和conda仓库。
- 如果某些包无法安装,可以尝试使用
--pre
选项安装预发布版本,或者从源代码安装。
(二)Ray启动失败
问题描述:在启动Ray时,可能会遇到错误。
解决方法:
- 确保您已经正确设置了
PET_NODE_RANK
环境变量。 - 如果您使用的是多节点环境,请确保所有节点的配置正确,并且网络连接正常。
(三)后端处理器连接失败
问题描述:在运行后端处理器时,可能会遇到连接搜索引擎失败的问题。
解决方法:
- 确保您已经正确配置了API密钥和搜索引擎。
- 检查网络连接,确保您的服务器能够访问搜索引擎的API。
六、相关论文信息
DeepResearcher项目的相关论文是《DeepResearcher: Scaling Deep Research via Reinforcement Learning in Real-world Environments》。以下是论文的关键信息:
- 作者:Yuxiang Zheng, Dayuan Fu, Xiangkun Hu, Xiaojie Cai, Lyumanshan Ye, Pengrui Lu, Pengfei Liu
- 年份:2025
- 论文链接:https://arxiv.org/abs/2504.03160
论文详细介绍了DeepResearcher的设计原理、技术实现和实验结果。通过阅读论文,您可以更深入地了解该项目的背景、目标和贡献。
七、总结
DeepResearcher项目通过强化学习在真实世界环境中训练基于LLM的深度研究代理,展示了AI在复杂任务处理方面的巨大潜力。通过本文的介绍,您应该对该项目的技术原理、实战运行方式、重要逻辑代码以及可能遇到的问题和解决方法有了全面的了解。希望DeepResearcher能够为您的研究和开发工作提供有价值的参考和帮助。
注意:本文中的代码片段和命令仅为示例,实际运行时可能需要根据项目文档和实际情况进行调整。在使用DeepResearcher项目时,请务必仔细阅读项目文档,以确保正确安装和使用。
相关文章:
【大模型】DeepResearcher:通用智能体通过强化学习探索优化
DeepResearcher:通过强化学习在真实环境中扩展深度研究 一、引言二、技术原理(一)强化学习与深度研究代理(二)认知行为的出现(三)模型架构 三、实战运行方式(一)环境搭建…...
SpringBoot 3.X 开发自己的 Spring Boot Starter 和 SpringBoot 2.x 的区别
SpringBoot 2.x 在模块中创建 src/main/resources/META-INF/spring.factories 文件 文件内容如下: org.springframework.boot.autoconfigure.EnableAutoConfiguration\com.xxx.xxx.yourfilejava1,\com.xxx.xxx.yourfilejava2 SpringBoot 3.x 在模块中创建 src/m…...
NY164NY165美光固态闪存NY166NY172
美光NY系列固态闪存深度解析:技术、体验与行业洞察 一、技术架构与核心特性解析 美光NY系列(NY164/NY165/NY166/NY172)作为面向企业级市场的固态闪存产品,其技术设计聚焦高可靠性与性能优化。从架构上看,该系列可能采…...
Spring Boot中HTTP连接池的配置与优化实践
精心整理了最新的面试资料和简历模板,有需要的可以自行获取 点击前往百度网盘获取 点击前往夸克网盘获取 一、HTTP连接池的核心价值 在微服务架构和分布式系统场景中,HTTP客户端频繁创建/断开连接会产生显著的性能损耗。通过连接池技术可以实现&#x…...
【docker】--镜像管理
文章目录 拉取镜像启动镜像为容器连接容器法一法二 保存镜像加载镜像镜像打标签移除镜像 拉取镜像 docker pull mysql:8.0.42启动镜像为容器 docker run -dp 8080:8080 --name container_mysql8.0.42 -e MYSQL_ROOT_PASSWORD123123123 mysql:8.0.42 连接容器 法一 docker e…...
Logisim实验--华科计算机组成原理(保姆级教程) 头歌-存储系统设计实验(汉字库存储芯片扩展实验、MIPS寄存器文件设计)
汉字库存储芯片扩展实验 电路一: 电路二:电路和译码器设置。 两个电路的分线器设计: 只要把电路正确连接就能提交了,但要看到正确的实验结果就想要进行如下操作: 打开参考电路,我要做的就是将每个存储器内…...
Hapi.js知识框架
一、Hapi.js 基础 1. 核心概念 企业级Node.js框架:由Walmart团队创建,现由社区维护 配置驱动:强调声明式配置而非中间件 插件架构:高度模块化设计 安全优先:内置安全最佳实践 丰富的生态系统:官方维护…...
Baklib知识中台架构与智能引擎实践
知识中台架构设计实践 在数字化转型进程中,Baklib基于企业级知识管理需求,构建了模块化分层架构的知识中台体系。该架构采用数据湖仓融合技术,通过统一元数据管理打通业务系统间的信息壁垒,形成覆盖数据采集、清洗、标注的全链路…...
传输层协议UDP
传输层 负责数据能够从发送端传输接收端 . 再谈端口号 端口号 (Port) 标识了一个主机上进行通信的不同的应用程序 ; 在 TCP/IP 协议中 , 用 " 源 IP", " 源端口号 ", " 目的 IP", " 目的端口号 ", " 协议号 " 这样一…...
在Java中实现Parcelable接口和Serializable接口有什么区别?
在 Java 中,Parcelable 和 Serializable 接口都用于对象的序列化和反序列化,但它们的实现方式、性能和使用场景有很大区别。以下是它们的核心对比: 1. 实现方式 Serializable 是 Java 原生接口,只需声明 implements Serializable…...
MinIO WebUI 页面使用
上传文件到桶,选择Share 如果桶是pulic权限,则可以有以下两种方式访问到该对象文件: http://ip:9001/api/v1/download-shared-object/aHR0cDovLzEyNy4wLjAuMTo5MDAwL3dhcmVob3VzZS9wYWltb24vRmxpbmstTG9nby5wbmc_WC1BbXotQWxnb3JpdGhtPUFXU…...
Python | Dashboard制作
运行环境:jupyter notebook (python 3.12.7) Pyecharts 1.安装pyecharts !pip install pyecharts 验证安装是否成功: from pyecharts import __version__ print("Pyecharts版本:", __version__) # 应显示1.x以上版本 2.运行基础版代码&am…...
视频编辑软件无限音频、视频、图文轨
威力导演APP的特色功能包括无限音频、视频、图文轨,以及上百种二/三维特技转场、音/视频滤镜和多种音视频混编输出。此外,它还支持实时高清HDV格式、模拟信号输出,并具有DV25、DVACM、DV、HDV输入和输出等功能。在视频编辑领域,威…...
HttpSession 的运行原理
HttpSession 的运行原理(基于 Java Web) HttpSession 是 Java Web 开发中用于在服务器端存储用户会话数据的机制,它的核心作用是跟踪用户状态(如登录信息、购物车数据等)。 1. HttpSession 的基本概念 会话࿰…...
Axure应用交互设计:表格跟随菜单移动效果(超长表单)
亲爱的小伙伴,在您浏览之前,烦请关注一下,在此深表感谢!本文如有帮助请订阅 Axure产品经理精品视频课已登录CSDN可点击学习https://edu.csdn.net/course/detail/40420 课程主题:表格跟随菜单移动 主要内容:表格交互设计、动态面板嵌套、拖动时事件、移动动作 应用场景…...
Flannel vxlan模式的优缺点
VXLAN 模式的特点、优缺点 优点 高性能:VXLAN 利用内核态处理封装/解封装,性能优于用户态方案(如 UDP),适合大规模集群。网络隔离:通过 VNI(VXLAN Network Identifier,24 位&#…...
中电金信参编的国家标准《信息技术 中间件 消息中间件技术要求》正式发布
近日,国家市场监督管理总局、国家标准化管理委员会发布中华人民共和国国家标准公告(2025年第10号),GB/T 28168—2025《信息技术 中间件 消息中间件技术要求》国家标准正式发布,并将于2025年11月1日正式实施。中电金信作…...
AcroForm 格式化文本(域)字段
概述 Acrobat提供了两个事件(脚本位置)来处理文本字段格式化:Keystroke(更改)事件和 Format事件。这两个事件可以共同控制输入到字段中的数据的格式以及文本字段中显示数据的外观。本文中涉及的所有脚本以及更多示例都包含在FormattingExamples.pdf文件中。 Keystroke事…...
机器学习——聚类算法练习题
一、 随机创建不同二维数据集作为训练集 ,并结合k-means算法将其聚类 ,你可以尝试分别聚类不同数量的簇 ,并观察聚类 效果: 聚类参数n_cluster传值不同 ,得到的聚类结果不同 代码展示: from sklearn.da…...
U-BOOT
使用正点原子已经移植好的U-BOOT编译完成后拷贝到SD卡中烧写到板子上中,将开发板设为SD卡启动模式,上电启动开发板;打开 MobaXterm 终端模拟软件,设置好串口参数连接开发板 USB 调试串口,最后按核心板上的 PS_RST 复位…...
JVM之虚拟机运行
虚拟机运行快速复习 try-catch:catch-异常表栈展开,finally-代码复制异常表兜底 类的生命周期:加载,连接(验证,准备,解析),初始化,使用,卸载 类…...
玩转ChatGPT:DeepSeek实战(统一所在地格式)
一、写在前面 前段时间去交流,又被问到一个实际问题: 在组织全区活动时,我们设计了一份签到表,其中包含“所在单位地区”一列,目的是希望按地级市(如南宁市、柳州市等)对参与者进行分组&#…...
蓝桥杯题库经典题型
1、数列排序(数组 排序) 问题描述 给定一个长度为n的数列,将这个数列按从小到大的顺序排列。1<n<200 输入格式 第一行为一个整数n。 第二行包含n个整数,为待排序的数,每个整数的绝对值小于10000。 输出格式 输出…...
极限学习机进行电厂相关数据预测
使用极限学习机(Extreme Learning Machine, ELM)进行电厂相关数据预测的详细步骤和MATLAB代码示例。假设任务是预测电厂发电量或设备状态(如温度、压力),代码包含数据预处理、ELM模型构建、训练与预测全过程。 1. 数据…...
【Axure视频教程】中继器表格间批量控制和传值
今天教大家在Axure中制作中继器表格间批量控制和传值的原型模板,效果包括: 选中和取消选中——点击表格中的多选按钮可以选中或取消选中该行内容; 全选和全部取消选中——点击表头左上角的多选按钮可以选中或取消选中表格的所有内容…...
Axure高级交互设计:文本框循环赋值实现新增、修改和查看
亲爱的小伙伴,在您浏览之前,烦请关注一下,在此深表感谢!本文如有帮助请订阅本专栏! Axure产品经理精品视频课已登录CSDN可点击学习https://edu.csdn.net/course/detail/40420 课程主题:文本框循环赋值 主要内容:使用设置文本动作实现文本框、文字标签的读取与赋值 应…...
Springboot之类路径扫描
SpringBoot框架中默认提供的扫描类为:ClassPathBeanDefinitionScanner。 webFlux框架中借助RepositoryComponentProvider扫描符合条件的Repository。 public class ClassPathScanningCandidateComponentProvider{private final List<TypeFilter> includeFilt…...
是 OpenCV 的 CUDA 模块中用于在 GPU 上对图像或矩阵进行转置操作函数cv::cuda::transpose
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 cv::cuda::transpose 是 OpenCV 的 CUDA 模块中的一个函数,用于在 GPU 上对图像或矩阵进行转置操作(Transpose࿰…...
2025B卷 - 华为OD机试七日集训第1期 - 按算法分类,由易到难,循序渐进,玩转OD
目录 推荐刷题方法: 一、适合人群二、本期训练时间三、如何参加四、七日集训第1期五、精心挑选21道高频100分经典题目,作为入门。第1天、逻辑分析第2天、逻辑分析第3天、逻辑分析第4天第5天第6天第7天 六、集训总结国内直接使用最新o3、o4-mini-high、GP…...
从数据中台到数据飞轮:数字化转型的演进之路
从数据中台到数据飞轮:数字化转型的演进之路 数据中台 数据中台是企业为整合内部和外部数据资源而构建的中介层,实现数据的统一管理、共享和高效利用,目标是打破信息孤岛,提高数据使用效率,支持业务决策和创新 实施成本…...
【Linux网络】HTTPS
HTTPS协议原理 定义 HTTPS 也是一个应用层协议.是在HTTP协议的基础上引入了一个加密层. HTTP 协议内容都是按照文本的方式明文传输的.这就导致在传输过程中会出现一些被篡改的情况。 加密 加密就是把明文(要传输的信息)进行一系列变换,生成密文. 解密就是把密文再进行一系…...
UE5中制作动态数字Decal
在进行城市道路编辑时,经常需要绘制人行道、交通标志、停车线等路面元素。如果能够使用具有动态修改功能的 Decal(贴花),将大大提升编辑效率和灵活性。接下来讲解如何制作。 1.首先准备一张包含所需元素的Texture,这里…...
销量预测评估指标
销量预测评估指标 一、背景 在零售、供应链等场景中,销量预测的准确性直接影响库存管理、成本控制和客户满意度: 预测偏低:可能导致缺货(损失销售额和客户信任)。预测偏高:导致库存积压(增加…...
Unity3d 打包安卓平台(Android apk)报错Gradle build failed解决方法
问题 Unity3d 版本为2022.3.*版本,而且工程内部没有包含比较特殊的插件,安卓模块(module)也是随编辑一起安装,JDK、Android SDK Tools、Android NDK和Gradle都是默认安装。打包设置Project Settings也是默认设置,打包的工程不包含…...
STM32 启动文件分析
一、启动文件的核心作用 STM32启动文件(如startup_stm32f10x_hd.s)是芯片上电后执行的第一段代码,用汇编语言编写,主要完成以下关键任务: 初始化堆栈指针(SP) 设置主堆栈指针(…...
OSCP备战-Kioptrix4详细教程
目录 配置靶机 目标IP探测 编辑端口扫描 139/445端口 Samba 80端口获取shell 绕过lshell 方法一 编辑 方法二 编辑提权 内核漏洞 mysql udf提权 配置靶机 使用vm新建虚拟机,选择vmdk文件打开。 目标IP探测 arp-scan -l 得出目标IP:19…...
清华大学开源软件镜像站地址
清华大学开源软件镜像站: https://mirrors.tuna.tsinghua.edu.cn/...
java基础-package关键字、MVC、import关键字
1.package关键字: (1)为了更好管理类,提供包的概念 (2)声明类或接口所属的包,声明在源文件首行 (3)包,属于标识符,用小写字母表示 ࿰…...
uniapp(vue3)动态计算swiper高度封装自定义hook
// useCalculateSwiperHeight.ts import { ref, onMounted } from vue;export function useCalculateSwiperHeight(headerSelector: string .header-search, tabsWrapperSelector: string .u-tabs .u-tabs__wrapper) {const swiperHeight ref<number>(0);// 封装uni.g…...
Java SpringMVC 和 MyBatis 整合项目的事务管理配置详解
目录 一、事务管理的基本概念二、在 SpringMVC 和 MyBatis 整合项目中配置事务管理1. 配置数据源2. 配置事务管理器3. 使用事务注解4. 配置 MyBatis 的事务支持5. 测试事务管理三、总结在企业级应用开发中,事务管理是确保数据一致性和完整性的重要机制。特别是在整合了 Spring…...
C++的历史与发展
目录 一、C 的诞生与早期发展 (一)C 语言的兴起与局限 (二)C 的雏形:C with Classes (三)C 命名与早期特性丰富 二、C 的主要发展历程 (一)1985 年:经典…...
亚马逊云科技:引领数字时代的云服务先锋
在数字经济浪潮席卷全球的当下,企业和个人面临着数据爆炸、业务快速迭代等诸多挑战,亟需强大且灵活的云计算能力助力发展。亚马逊云科技凭借多年深耕与创新,成为数字时代的云服务先锋,为用户打造全方位、高质量的云计算解决方案。…...
基于Java和PostGIS的AOI面数据球面面积计算实践
目录 前言 一、计算方法简介 二、球面面积计算 1、AOI数据转Polygon 2、Geotools面积计算 3、GeographicLib面积计算 4、PostGIS面积计算 三、结果分析 1、不同算法结果对比 2、与互联网AOI对比 3、与天地图测面对比 四、总结 前言 在现代地理信息系统(G…...
新建一个reactnative 0.72.0的项目
npx react-native0.72.0 init ProjectName --version 0.72.0 下面是初始化,并且添加了对应路由的库依赖,Android项目能run起来的版本号 { "name": "ProjectName", "version": "0.0.1", "private&quo…...
计算机网络网络层(下)
一、互联的路由选择协议(网络层控制层面内容) (一)有关路由选择协议的几个概念 1.理想的路由算法 (1)理想路由算法应具备的特点:算法必须正确和完整的,算法在计算上应简单&#x…...
Visual studio 打包方法
1.扩展->搜索“”install“->下载 2.安装(安装后重新启动visual studio) 3.在已有的解决方案上右键 添加 ** 新建项目 4.在该模板下有三个文件夹 第一个文件夹(Application Folder)添加 你已有c#的releas 的程序exe 所在…...
ubuntu---100条常用命令
目录 一、文件与目录管理二、系统信息与管理三、用户与权限管理四、网络配置与管理五、软件包管理六、其他常用命令 在 Ubuntu 系统中,掌握常用命令能显著提升操作效率。以下是 100 条常用命令,涵盖文件管理、系统信息、用户权限、网络配置、软件包管理等…...
UI-TARS Desktop:用自然语言操控电脑,AI 重新定义人机交互
在人工智能技术飞速发展的今天,从文本生成到图像识别,AI 的能力边界不断被打破。而字节跳动近期开源的 UI-TARS Desktop,则将这一技术推向了更复杂的交互场景——通过自然语言直接控制计算机界面,实现了图形用户界面(GUI)的智能化自动化。这款工具不仅降低了操作门槛,更…...
Linux精确列出非法 UTF-8 字符的路径或文件名
Docker构建的时候报错:failed to solve: Internal: rpc error: code = Internal desc = grpc: error while marshaling: string field contains invalid UTF-8 1、创建一个test.sh文件 find . -print0 | while IFS= read -r -d file;...
ubuntu部署supabase
安装supabse https://supabase.com/docs/guides/local-development/cli/getting-started?queryGroupsplatform&platformlinux brew install supabase/tap/supabase supabase init supabase start需要使用brewuser进行安装: brew安装参考链接: ht…...