
随着人工智能技术的不断发展,大型语言模型在处理复杂任务时面临着诸多挑战,例如依赖静态知识库、难以实时获取最新信息等。为了解决这些问题,中国人民大学自然语言处理实验室(RUC-NLPIR)推出了开源项目WebThinker。WebThinker通过赋予大型推理模型自主搜索、深度探索网页和撰写研究报告的能力,为复杂问题解决与科研写作提供了新的思路和方法。本文将详细介绍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.git
cd WebThinker
(二)安装依赖
创建一个新的Conda环境并安装所需的Python依赖库:
conda create -n webthinker python=3.9
conda activate webthinker
pip 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 demo
streamlit 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视界)