深度网页探索+自主写作:WebThinker让大模型像人类一样完成研究报告

随着人工智能技术的不断发展,大型语言模型在处理复杂任务时面临着诸多挑战,例如依赖静态知识库、难以实时获取最新信息等。为了解决这些问题,中国人民大学自然语言处理实验室(RUC-NLPIR)推出了开源项目WebThinkerWebThinker通过赋予大型推理模型自主搜索、深度探索网页和撰写研究报告的能力,为复杂问题解决与科研写作提供了新的思路和方法。本文将详细介绍WebThinker的项目背景、核心功能、技术创新、应用场景以及快速使用方法,帮助读者更好地了解和应用这一前沿技术。

一、项目概述

WebThinker是一个开源的深度研究框架,由中国人民大学自然语言处理实验室(RUC-NLPIR)推出。它使大型推理模型(LRM)能够在思考过程中自主搜索、深入探索网页和起草研究报告。与传统的检索增强生成(RAG)模型不同,WebThinker面向复杂问题解决与科研写作,赋予了模型自主执行网络搜索、深度网页探索、内容整合与科研报告撰写的端到端能力,旨在解决传统模型依赖静态知识库、难以处理复杂知识密集型任务的局限性。

二、核心功能

(一)自主思考搜索写作机制

WebThinker的核心在于其自主思考搜索写作机制(Autonomous Think-Search-and-Draft)。该机制使模型在撰写研究报告时具备以下能力:

1. 章节写作根据收集到的知识,系统可独立生成某一节的内容。

2. 内容审查与编辑允许用户随时审查当前写作内容;系统可自动重写不准确或结构不佳的部分。

3. 多轮修订能力模型会反复搜索、修订,不断优化已有内容,实现内容持续进化。

(二)自我提升训练机制

WebThinker开发了基于强化学习(RL)的训练策略,迭代合成工具使用偏好数据,并应用在线DPO培训来增强LRM的工具利用能力。这种自我提升训练机制(Self-Improvement)使模型能够回顾过往的推理搜索路径,识别哪些路径最有效,并提炼“成功的推理轨迹”用于进一步学习,针对写作任务优化写作逻辑和节奏。

三、技术创新

(一)自主搜索与推理

WebThinker突破了传统模型仅依赖静态知识库的限制,使模型能够在推理过程中自主调用网络搜索工具。通过这种方式,模型可以实时获取最新的外部知识,从而更好地处理复杂问题和知识密集型任务。

(二)深度网页探索

WebThinker不仅支持简单的网页搜索,还能进行深度网页探索。这意味着模型可以像人类一样浏览网页,获取更丰富的信息,而不仅仅是依赖于搜索结果的摘要。

(三)多轮交互与优化

WebThinker的多轮交互能力使其能够不断优化搜索和写作过程。模型会根据用户的反馈和自身的评估,反复搜索、修订内容,从而生成更高质量的研究报告。

四、应用场景

(一)科研写作

WebThinker在科研写作领域具有巨大的应用潜力。它可以帮助研究人员快速收集和整理相关资料,生成高质量的研究报告,从而提高科研效率。

(二)复杂问题解决

WebThinker能够处理复杂的知识密集型任务。例如,在医学研究、法律分析等领域,模型可以通过自主搜索和推理,为用户提供详细的解决方案。

(三)教育与培训

WebThinker可以作为教育工具,帮助学生学习如何进行科学研究和写作。通过观察模型的搜索和写作过程,学生可以更好地理解科研方法和写作技巧。

五、快速使用

(一)克隆代码

打开终端或命令提示符,运行以下命令克隆WebThinker的代码仓库:

git clone https://github.com/RUC-NLPIR/WebThinker.gitcd WebThinker

(二)安装依赖

创建一个新的Conda环境并安装所需的Python依赖库:

conda create -n webthinker python=3.9conda activate webthinkerpip install -r requirements.txt

(三)准备模型

确保你的推理模型和辅助模型已经通过vLLM服务。在官方的实验中,使用QwQ-32B作为推理模型,Qwen-72B-Instruct作为辅助模型。你也可以选择其他经过指令微调的模型作为辅助模型。

(四)运行示例

1. 问题解决模式

如果你只想提出一个问题,运行以下命令:

python scripts/run_web_thinker.py \  --single_question "What is OpenAI Deep Research?" \  --bing_subscription_key "YOUR_BING_SUBSCRIPTION_KEY" \  --api_base_url "YOUR_API_BASE_URL" \  --model_name "QwQ-32B" \  --aux_api_base_url "YOUR_AUX_API_BASE_URL" \  --aux_model_name "Qwen2.5-32B-Instruct" \  --tokenizer_path "PATH_TO_YOUR_TOKENIZER" \  --aux_tokenizer_path "PATH_TO_YOUR_AUX_TOKENIZER"

如果你想在基准测试上运行结果,运行以下命令:

python scripts/run_web_thinker.py \  --dataset_name gaia \  --split dev \  --concurrent_limit 32 \  --max_search_limit 15 \  --bing_subscription_key "YOUR_BING_SUBSCRIPTION_KEY" \  --api_base_url "YOUR_API_BASE_URL" \  --model_name "QwQ-32B" \  --aux_api_base_url "YOUR_AUX_API_BASE_URL" \  --aux_model_name "Qwen2.5-32B-Instruct" \  --tokenizer_path "PATH_TO_YOUR_TOKENIZER" \  --aux_tokenizer_path "PATH_TO_YOUR_AUX_TOKENIZER"

2. 报告生成模式

如果你想提出一个问题并生成报告,运行以下命令:

python scripts/run_web_thinker_report.py \  --single_question "What are the models of OpenAI and what are the differences?" \  --bing_subscription_key "YOUR_BING_SUBSCRIPTION_KEY" \  --api_base_url "YOUR_API_BASE_URL" \  --model_name "QwQ-32B" \  --aux_api_base_url "YOUR_AUX_API_BASE_URL" \  --aux_model_name "Qwen2.5-32B-Instruct" \  --tokenizer_path "PATH_TO_YOUR_TOKENIZER" \  --aux_tokenizer_path "PATH_TO_YOUR_AUX_TOKENIZER"

如果你想在基准测试上运行结果,运行以下命令:

python scripts/run_web_thinker_report.py \  --dataset_name glaive \  --split test \  --concurrent_limit 32 \  --bing_subscription_key "YOUR_BING_SUBSCRIPTION_KEY" \  --api_base_url "YOUR_API_BASE_URL" \  --model_name "QwQ-32B" \  --aux_api_base_url "YOUR_AUX_API_BASE_URL" \  --aux_model_name "Qwen2.5-32B-Instruct" \  --tokenizer_path "PATH_TO_YOUR_TOKENIZER" \  --aux_tokenizer_path "PATH_TO_YOUR_AUX_TOKENIZER"

3. 运行演示

你可以运行我们创建的演示,运行以下命令:

cd demostreamlit run demo.py

在运行之前,需要在`demo/settings.py`中配置相关参数。

4. 参数说明

以下是运行命令中常用参数的说明:

`–dataset_name`:要使用的数据集名称(例如`gaia``glaive`)。

`–split`:数据集的分割部分(例如`dev``test`)。

`–single_question`:在单问题模式下要提出的问题。

`–concurrent_limit`:最大并发请求数。

`–max_search_limit`:每次推理会话的最大搜索查询次数。

`–bing_subscription_key`:你的Bing Search API订阅密钥。

`–api_base_url`:主模型API的基地址。

`–model_name`:要使用的主模型名称。

`–aux_api_base_url`:辅助模型API的基地址。

`–aux_model_name`:要使用的辅助模型名称。

`–tokenizer_path`:主模型分词器的路径。

`–aux_tokenizer_path`:辅助模型分词器的路径。

六、结语

WebThinker作为一款开源的深度研究框架,为大型推理模型的自主科研提供了新的可能性。通过自主搜索、深度网页探索和自我提升训练机制,WebThinker能够有效解决传统模型的局限性,为复杂问题解决和科研写作提供强大的支持。希望本文的介绍能够帮助读者更好地了解WebThinker,并将其应用于实际项目中。

七、相关资源

项目地址https://github.com/RUC-NLPIR/WebThinker

论文地址https://arxiv.org/pdf/2504.21776


(文:小兵的AI视界)

发表评论

×

下载每时AI手机APP

 

和大家一起交流AI最新资讯!

立即前往