storm
斯坦福开源的 LLM 知识 curation 系统,输入主题即可自动研究并生成带引用来源的百科式长文报告
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
斯坦福开源的 LLM 知识 curation 系统,输入主题即可自动研究并生成带引用来源的百科式长文报告
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象这样一个场景:你正在研究一个完全陌生的领域——比如"量子计算在金融风控中的应用",打开搜索引擎,面对成千上万条零散的文章、博客、论文摘要,你知道真正有价值的信息藏在某个角落,但要在有限时间内把它们串联成一篇结构完整、有理有据的长文,几乎是一项不可能完成的任务。
STORM 就是为解决这个痛点而生的。它由斯坦福大学 OVAl 实验室开发,是一个基于大语言模型的自动化知识整理系统。用户只需输入一个主题,它就能像一位不知疲倦的研究助理,在互联网上检索资料、从多个角度提出追问、模拟专家访谈对话,最终生成一篇带有引用来源的维基百科式长文报告。
STORM 的全称是 Synthesis of Topic Outlines through Retrieval and Multi-perspective Question Asking(通过检索与多视角追问合成主题大纲),出自斯坦福大学 2024 年 NAACL 会议论文。它的核心理念是:"好的报告来自好的问题"——与其直接让 AI 写文章,不如先让 AI 学会像记者一样提问。
项目由斯坦福大学 OVAl 实验室(Open Virtual Assistant Lab)维护,主要作者 Yijia Shao 和 Yucheng Jiang 均来自斯坦福。项目在 GitHub 已收获超过 28,000 颗星,被 EMNLP 2024 接收,并受到 NLP 社区的广泛关注。2025 年 1 月,项目集成了 litellm 库,支持几乎所有主流 LLM API,极大降低了使用门槛。
图1:STORM 的两阶段工作流——预写作阶段(Pre-writing)进行研究和大纲生成,写作阶段(Writing)产出带引用的完整报告
STORM 将报告生成拆解为两个关键阶段:
第一阶段:预写作(Pre-writing Stage)
这个阶段解决的核心问题是:"该问哪些问题?" 直接让 LLM 根据主题提问往往过于表面化。STORM 采用了两个策略:
一是视角引导式提问(Perspective-Guided Question Asking)。系统会先检索同领域已有的相关文章,分析它们的写作视角和知识结构,从而生成覆盖不同维度的追问清单。比如研究"量子计算",系统可能从金融、生物医药、密码学等不同应用场景分别切入提问。
二是模拟对话(Simulated Conversation)。系统模拟一位维基百科编辑与领域专家的对话,专家基于互联网检索结果回答问题,编辑则根据回答不断追问深挖。这个对话过程被完整记录,成为后续写作的素材。
第二阶段:写作(Writing Stage)
有了大纲和参考资料,系统使用强大的 LLM 生成完整的文章段落,每一句话都标注信息来源,确保可追溯、可验证。
2024 年 9 月,团队进一步推出了 Co-STORM,在 EMNLP 2024 主会上发表。Co-STORM 引入了"协作话语协议"(Collaborative Discourse Protocol),加入了人类用户作为主动参与者,可以随时插入问题、调整研究方向,或者只是旁观系统自主探索,极大提升了系统的可控性和实用性。
图2:Co-STORM 引入了人类用户、LLM 专家和主持人(Moderator)三方协作机制,支持边聊边研究
STORM 的代码架构设计值得称道。整个系统基于 DSPy(斯坦福出品的程序化 Prompt 优化框架)构建,采用了高度模块化的抽象设计。核心接口定义了以下关键模块:
这种设计让开发者可以自由替换底层组件——换一种搜索引挚、换一个 LLM、调优某个子模块——而无需改动其他部分。
项目提供了两种运行方式:
方式一:Python API(推荐开发者使用)
pip install knowledge-storm
通过几行代码即可启动完整流程:
from knowledge_storm import STORMWikiRunnerArguments, STORMWikiRunner, STORMWikiLMConfigs
from knowledge_storm.lm import LitellmModel
from knowledge_storm.rm import YouRM
lm_configs = STORMWikiLMConfigs()
gpt_35 = LitellmModel(model='gpt-3.5-turbo', api_key=os.getenv("OPENAI_API_KEY"))
gpt_4 = LitellmModel(model='gpt-4', api_key=os.getenv("OPENAI_API_KEY"))
lm_configs.set_conv_simulator_lm(gpt_35)
lm_configs.set_article_gen_lm(gpt_4)
rm = YouRM(rm_type='you', you_api_key=os.getenv("YOU_API_KEY"))
runner = STORMWikiRunner(args=STORMWikiRunnerArguments(topic="你的研究主题"), rm=rm, lm_configs=lm_configs)
runner.run()
方式二:Streamlit Web UI(适合非技术用户)
项目内置了一个轻量级 Streamlit 界面,只需几行命令即可在本地启动一个带图形界面的演示版本:
cd frontend/demo_light
pip install -r requirements.txt
streamlit run storm.py
启动后即可在浏览器中看到交互式研究界面,输入主题、配置模型和搜索引擎参数,点击开始,即可实时观察系统检索、提问、生成的全过程。
STORM 并非万能。官方在 README 中也坦诚提到:"系统还无法生成可直接发表的成品文章,通常需要大量人工修改。" 它的定位是写作前的预研工具,帮助快速建立对陌生领域的整体认知。
使用时需要注意:
STORM 的出现代表了 AI 辅助知识创作领域的一个重要方向:从直接生成内容,到模拟人类研究过程的转变。它不追求一步到位的完美文章,而是将"提出好问题"和"综合好答案"两个认知过程解耦,分别优化。
Co-STORM 进一步引入人机协作范式,让人类从"被动等待 AI 出结果"变成"主动参与研究过程",这个方向与当前 Agent 系统(Agentic AI)的发展趋势高度吻合。
随着多模态模型能力的提升,未来 STORM 完全可能进化成同时整合文本、图像、代码等多种信息来源的超级研究助理。
一句话总结:STORM 是斯坦福出品的高质量 AI 研究报告生成系统,适合知识工作者快速建立陌生领域认知,其模块化架构和 Co-STORM 人机协作模式是最大亮点,但目前仍需人工审核才能产出可直接使用的内容。