前端开发入门到精通的在线学习网站

网站首页 > 资源文章 正文

STORM:能创作知识百科文章的 LLM 系统

qiguaw 2025-03-25 16:46:30 资源文章 13 ℃ 0 评论

如今互联网上的信息海量且繁杂,知识的获取和整理变得尤为重要,高质量的知识百科文章,总结了各领域各主体的知识,是人们入门了解世界万物的重要知识来源。

而 LLM 大模型的出现,使得知识百科的创作变得更为简单,人们对知识的获取和整理的门槛变得更低。STORM 项目,就为我们提供了一种创新的解决方案。


简介

STORM,即 Synthesis of Topic Outlines through Retrieval and Multi,是由斯坦福大学 Oval 实验室开发的一个大型语言模型系统,该项目的代码仓库位于
https://github.com/stanford-oval/storm 。STORM 的主要功能是基于互联网搜索,从零开始创作类似维基百科的知识百科类文章。

STORM 具有独特的设计理念和特色功能,其通过模拟对话的方式进行信息搜索和整理,从多个角度提出问题,来获取更全面和准确的信息。同时,系统中不同的组件可以由不同的模型驱动,例如在对话模拟、大纲生成和文章生成等环节,可以根据成本和质量的平衡选择合适的模型。

此外,Co - STORM 进一步增强了功能,允许用户与 LLM 系统协作,提供了更符合需求和偏好的信息搜索和知识整理。STORM 能够在预写作阶段,为知识百科编辑者提供很大的帮助。

STORM 把生成带引用的长篇文章的过程,分为两个步骤:

  • 预写作阶段:系统基于互联网进行研究,收集参考文献并生成文章大纲。
  • 写作阶段:系统利用大纲和参考文献生成带引用的完整文章。

自动化研究过程的核心在于自动提出高质量的问题,而直接提示大语言模型提问的效果并不理想。为了提高问题的深度和广度,STORM 采用了两种策略:

  • 视角引导式提问:针对输入的主题,STORM 会通过调研相似主题的现有文章来发掘不同的视角,并利用这些视角来引导提问过程。
  • 模拟对话:STORM 模拟维基百科编辑者与主题专家基于互联网资源展开对话,使大语言模型能够更新对主题的理解,并提出后续问题。

使用

STORM 提供了 Python 库便于使用,使用 pip 直接安装:

pip install knowledge-storm

也可以使用源代码安装的方式,便于对引擎进行修改,首先克隆仓库到本地:

git clone https://github.com/stanford-oval/storm.git
cd storm

然后使用 conda 创建 Python 环境,并安装必要的依赖:

conda create -n storm python=3.11
conda activate storm
pip install -r requirements.txt

STORM 库主要的功能集中在 STORMWikiRunner 类,以下是一个使用 you.com 搜索引擎和 OpenAI 模型的例子:

import os
from knowledge_storm import STORMWikiRunnerArguments, STORMWikiRunner, STORMWikiLMConfigs
from knowledge_storm.lm import LitellmModel
from knowledge_storm.rm import YouRM

lm_configs = STORMWikiLMConfigs()
openai_kwargs = {
    'api_key': os.getenv("OPENAI_API_KEY"),
    'temperature': 1.0,
    'top_p': 0.9,
}
# STORM is a LM system so different components can be powered by different models to reach a good balance between cost and quality.
# For a good practice, choose a cheaper/faster model for `conv_simulator_lm` which is used to split queries, synthesize answers in the conversation.
# Choose a more powerful model for `article_gen_lm` to generate verifiable text with citations.
gpt_35 = LitellmModel(model='gpt-3.5-turbo', max_tokens=500, **openai_kwargs)
gpt_4 = LitellmModel(model='gpt-4o', max_tokens=3000, **openai_kwargs)
lm_configs.set_conv_simulator_lm(gpt_35)
lm_configs.set_question_asker_lm(gpt_35)
lm_configs.set_outline_gen_lm(gpt_4)
lm_configs.set_article_gen_lm(gpt_4)
lm_configs.set_article_polish_lm(gpt_4)
# Check out the STORMWikiRunnerArguments class for more configurations.
engine_args = STORMWikiRunnerArguments(...)
rm = YouRM(ydc_api_key=os.getenv('YDC_API_KEY'), k=engine_args.search_top_k)
runner = STORMWikiRunner(engine_args, lm_configs, rm)

STORMWikiRunner 实例可以通过简单的 run 方式启动:

topic = input('Topic: ')
runner.run(
    topic=topic,
    do_research=True,
    do_generate_outline=True,
    do_generate_article=True,
    do_polish_article=True,
)
runner.post_run()
runner.summary()

入门的开发者可以先简单地运行样例尝试:

python examples/storm_examples/run_storm_wiki_gpt.py \
    --output-dir $OUTPUT_DIR \
    --retriever bing \
    --do-research \
    --do-generate-outline \
    --do-generate-article \
    --do-polish-article

总结

STORM 项目是一个具有创新性和实用性的 LLM 系统,它利用互联网搜索和多视角提问的方式,为百科文章的创作提供了新的思路和方法。其独特的设计使得不同组件可以根据需求选择不同的模型,在成本和质量之间取得平衡。同时,Co - STORM 的协作功能进一步提升了系统的灵活性和适应性。

STORM 可以广泛应用于知识创作、信息整理和研究等领域。对于维基百科编辑者来说,它可以在预写作阶段提供有价值的参考和帮助,提高创作效率。而科研人员则可以使用 STORM 来进行整理和分析相关领域的信息,辅助研究工作。对于内容创作者,它可以作为一个灵感来源和信息收集工具,创作出更丰富、准确的文章。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表