自动生成维基百科风格文章:开源项目 STORM
探索知识的新途径:开源项目 STORM
https://github.com/stanford-oval/storm
你是否渴望快速了解某个主题,但却厌倦了漫无目的的网络搜索?斯坦福大学 OVAl Lab 推出了一个名为 STORM 的开源项目,它可以帮助你从互联网上自动生成维基百科风格的文章。虽然生成的文本可能需要经过编辑才能达到出版标准,但经验丰富的维基百科编辑发现 STORM 在写作前的预写阶段非常有用。
STORM 如何工作?
STORM 将文章生成分为两个步骤:
- 预写阶段: 系统通过互联网搜索收集参考资料并生成一个纲要。
- 写作阶段: 系统利用生成的纲要和参考文献,完整地生成包含引文的文章。
STORM 的核心在于自动生成高质量的问题来进行研究。直接提示语言模型提问的效果并不理想。为了提高问题的深度和广度,STORM 采用了两种策略:
- 视角引导式提问: 根据输入主题,STORM 通过浏览类似主题的现有文章,发现不同的视角并将其应用于提问过程。
- 模拟对话: STORM 模拟维基百科作者与主题专家的互联网来源支持的对话,帮助语言模型更新对主题的理解并提出后续问题。
由于分阶段操作,STORM 使用 dspy 实现高度模块化设计。
入门指南
- 设置环境:
- 克隆 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
的文件,并在根目录中添加以下内容:
- 克隆 git 仓库:
# 设置 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"
- 本地运行 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 正在不断发展完善,期待与您一起探索知识的全新途径!
- 原文作者:iamdev
- 原文链接:https://blog.iamdev.cn/post/2024/%E8%87%AA%E5%8A%A8%E7%94%9F%E6%88%90%E7%BB%B4%E5%9F%BA%E7%99%BE%E7%A7%91%E9%A3%8E%E6%A0%BC%E6%96%87%E7%AB%A0_%E5%BC%80%E6%BA%90%E9%A1%B9%E7%9B%AE_STORM__/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止转载 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。