ChainForge 是一个数据流驱动的提示工程环境,用于分析和评估 LLM 的响应。它支持快速、即时地比较不同提示词、模型和响应质量,远超与单个 LLM 的临时聊天。借助 ChainForge,您可以:
阅读文档了解更多。 ChainForge 附带了许多示例评估流程,让您了解其功能可能性,其中包括从 OpenAI evals 基准生成的 188 个示例流程。
ChainForge 基于 ReactFlow 和 Flask 构建。
_如需获取用户精选资源和学习材料,请查看 🌟Awesome ChainForge 仓库!_
您可以在本地安装 ChainForge,或在网上尝试使用 https://chainforge.ai/play/。网页版 ChainForge 功能有限。在本地安装版本中,您可以从环境变量自动加载 API 密钥,编写 Python 代码评估 LLM 响应,或查询通过 Ollama 托管的本地运行模型。
要在您的机器上安装 Chainforge,请确保您拥有 Python 3.8 或更高版本,然后运行:
pip install chainforge
安装完成后,执行:
chainforge serve
在 Google Chrome、Firefox、Microsoft Edge 或 Brave 浏览器中打开 localhost:8000。
您可以通过点击右上角的“设置”图标来设置 API 密钥。如果您不想每次打开 ChainForge 时都进行此操作,我们强烈建议将您的 OpenAI、Anthropic、Google 等 API 密钥和/或 Amazon AWS 凭据保存到本地环境中。更多详情,请参阅如何安装。
您可以使用我们的 Dockerfile 通过 Docker Desktop 在本地运行 ChainForge:
构建 Dockerfile:
shell
docker build -t chainforge .
运行镜像:
shell
docker run -p 8000:8000 chainforge
现在,您可以在您选择的浏览器中打开 http://127.0.0.1:8000。
我们准备了许多示例流程,让您了解 Chainforge 的功能可能性。
点击右上角的“Example Flows”按钮并选择一个。以下是一个基本的比较示例,展示了不同模型和提示参数 {game} 下响应长度的变化图:
您还可以使用表格数据节点进行真实值评估。例如,我们可以通过将每个 LLM 的响应与预期答案进行比较,来评估其解答数学问题的能力:
只需导入数据集,将其连接到提示节点中的模板变量,然后按运行即可。
通过交互式响应检查器跨模型和提示变量进行比较,包括格式化表格和可导出的数据:
ChainForge 的核心力量在于组合能力:ChainForge 对提示模板的输入取笛卡尔积,这意味着您可以生成所有输入值的组合。
这对于一次性发送数百个查询以更稳健地验证模型行为非常有效,远胜于单独提示。
这里有一个教程,可帮助您开始跨提示模板进行比较。
ChainForge 的网页版(https://chainforge.ai/play/)包含一个“分享”按钮。
只需点击“分享”即可为您的流程生成唯一链接,并将其复制到剪贴板:
例如,这是我制作的一个实验,试图让 LLM 泄露一个秘密密钥:https://chainforge.ai/play/?f=28puvwc788bog
注意
为防止滥用,您一次最多只能分享 10 个流程,并且每个流程压缩后必须小于 5MB。
如果您分享了超过 10 个流程,最早的链接将失效。因此,请务必将重要流程导出为cforge文件,并使用分享功能仅传递临时数据。
有关特定节点功能的更详细说明,请查看节点列表。
ChainForge 的一个关键目标是促进提示词和模型的比较与评估。总体而言,您可以:
支持这些功能的具体特性包括:
结合内置的生成式 AI 功能 🪄💫(如合成数据生成),提示工程得以加速:您有时可以在无需编写任何代码的情况下比较提示词和模型性能,使迭代和发现的过程加快了十倍。
我们还发现,一些用户只想使用 ChainForge 向 LLM 发送大量参数化查询(例如,将提示模板链接到提示模板),可能对它们进行评分,然后将结果输出到电子表格(Excel xlsx)。为此,请将一个“检查”节点连接到提示节点的输出,并点击“导出数据”。
有关更具体的细节,请参阅我们的文档。
ChainForge 由 Ian Arawjo 创建,他是哈佛大学 HCI 领域 Glassman 实验室的博士后研究员,并得到了哈佛 HCI 社区的支持。合作者包括博士生 Priyan Vaithilingam 和 Chelse Swoopes,哈佛本科生 Sean Yang,以及教师 Elena Glassman 和 Martin Wattenberg。其他合作者包括加州大学伯克利分校博士生 Shreya Shankar 和蒙特利尔大学本科生 Cassandre Hamel。
这项工作部分由 NSF 基金 IIS-2107391、IIS-2040880 和 IIS-1955699 资助。本材料中表达的任何观点、发现、结论或建议均为作者个人观点,不一定反映国家科学基金会的意见。
我们持续发布此工具的新版本,希望它对其他人的项目有用。
ChainForge 旨在通用,并非为特定 API 或 LLM 后端开发。我们的最终目标是将其集成到其他工具中,用于系统化评估和审计 LLM。我们希望帮助其他正在开发 LLM 提示分析流程或审计 LLM 输出的开发者。这个项目源于我们自身的使用场景,但也与两个相关的(闭源)研究项目有共同之处,这两个项目均由 Sherry Wu 领导:
与这些项目不同,我们专注于支持跨提示词、提示参数和模型的评估。
我们欢迎开源合作者。如果您想报告错误或请求功能,请打开Issue。我们也鼓励用户实现请求的功能/修复错误并提交拉取请求。
如果您出于研究目的使用 ChainForge,无论是基于源代码构建还是使用该工具调查 LLM 行为,我们恳请在相关出版物中引用我们的 CHI 研究论文。您可以使用的 BibTeX 如下:
@inproceedings{arawjo2024chainforge,
title={ChainForge: A Visual Toolkit for Prompt Engineering and LLM Hypothesis Testing},
author={Arawjo, Ian and Swoopes, Chelse and Vaithilingam, Priyan and Wattenberg, Martin and Glassman, Elena L},
booktitle={Proceedings of the CHI Conference on Human Factors in Computing Systems},
pages={1--18},
year={2024}
}
ChainForge 在 MIT 许可证下发布。