探索知识的新途径:开源项目 STORM

https://github.com/stanford-oval/storm

你是否渴望快速了解某个主题,但却厌倦了漫无目的的网络搜索?斯坦福大学 OVAl Lab 推出了一个名为 STORM 的开源项目,它可以帮助你从互联网上自动生成维基百科风格的文章。虽然生成的文本可能需要经过编辑才能达到出版标准,但经验丰富的维基百科编辑发现 STORM 在写作前的预写阶段非常有用。

STORM 如何工作?

STORM 将文章生成分为两个步骤:

  1. 预写阶段: 系统通过互联网搜索收集参考资料并生成一个纲要。
  2. 写作阶段: 系统利用生成的纲要和参考文献,完整地生成包含引文的文章。

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

  • 视角引导式提问: 根据输入主题,STORM 通过浏览类似主题的现有文章,发现不同的视角并将其应用于提问过程。
  • 模拟对话: STORM 模拟维基百科作者与主题专家的互联网来源支持的对话,帮助语言模型更新对主题的理解并提出后续问题。

由于分阶段操作,STORM 使用 dspy 实现高度模块化设计。

入门指南

  1. 设置环境:
    • 克隆 git 仓库: git clone https://github.com/stanford-oval/storm.git
    • 切换到项目目录: cd storm
    • 安装依赖包: conda create -n storm python=3.11 conda activate storm pip install -r requirements.txt
    • 设置 OpenAI API 密钥(如果你想使用 OpenAI 模型来驱动 STORM) 和 You.com 搜索 API 密钥。
    • 创建名为 secrets.toml 的文件,并在根目录中添加以下内容:
# 设置 OpenAI API 密钥。
OPENAI_API_KEY="your_openai_api_key" 
# 如果您使用的是 OpenAI 提供的 API 服务,请包含以下行:
OPENAI_API_TYPE="openai"
# 如果您使用的是 Microsoft Azure 的 API 服务,请包含以下行:
OPENAI_API_TYPE="azure"
AZURE_API_BASE="your_azure_api_base_url"
AZURE_API_VERSION="your_azure_api_version"
# 设置 You.com 搜索 API 密钥。
YDC_API_KEY="your_youcom_api_key" 
  1. 本地运行 STORM-wiki: 为了使用 gpt 系列模型并使用默认配置运行 STORM,请确保您已设置了 OpenAI API 密钥,并运行以下命令:
python examples/run_storm_wiki_gpt.py \     --output-dir $OUTPUT_DIR \     --retriever you \     --do-research \     --do-generate-outline \     --do-generate-article \     --do-polish-article 

选项解释: * --do-research: 如果为真,则模拟对话进行主题研究;否则,加载结果。 * --do-generate-outline: 如果为真,则为主题生成一个纲要;否则,加载结果。 * --do-generate-article: 如果为真,则为主题生成一篇完整的文章;否则,加载结果。 * --do-polish-article: 如果为真,则通过添加总结部分和(可选)删除重复内容来润色文章。

我们提供了更多示例脚本,以示如何使用您喜欢的语言模型或基于您自己的语料库运行 STORM。

定制 STORM

STORM 引擎由四个模块组成:知识获取模块、纲要生成模块、文章生成模块和文章打磨模块。您可以根据自己的需求自定义每个模块,例如将部分生成为要点列表而不是完整的段落。 更进一步,您还可以自定义检索模块和语言模型,使其更加适应您的特定用例。

贡献指南

欢迎您对 STORM 的代码库进行贡献! 我们可以通过 Pull Request 来整合新的搜索引擎、检索器或语言模型客户端。

STORM 正在不断发展完善,期待与您一起探索知识的全新途径!