ChainForge 是一个开源的可视化编程环境,专注于对大型语言模型(LLM)的提示词进行实战测试。它被设计为数据流式的提示工程环境,用于分析和评估 LLM 的响应,支持快速、即兴地比较提示词、模型和响应质量,超越了与单个 LLM 进行临时聊天的局限。
用途
ChainForge 的核心目标是促进提示词和模型的比较与评估。它可以帮助用户:
- 同时查询多个 LLM,快速测试提示词想法和变体。
- 跨提示词排列、跨模型和跨模型设置比较响应质量,从而为特定用例选择最佳提示词和模型。
- 设置评估指标(评分函数),并立即可视化跨提示词、提示词参数、模型和模型设置的结果。
- 利用 AI 简化整个流程:使用内置生成式 AI 功能创建合成表格和输入示例,或通过提示模型生成评估的起始代码。
主要能力
ChainForge 提供以下关键功能:
- 提示词排列:设置提示词模板并输入变量变化,ChainForge 会用所有可能的输入排列提示所有选定的 LLM。还可以任意深度地链接提示词模板(例如比较模板)。
- 模型设置:更改支持的模型的设置,并在不同设置之间进行比较。例如,可以通过添加多个 ChatGPT 模型、更改单个设置并分别命名,来衡量系统消息对 ChatGPT 的影响。
- 评估节点:在链中探查 LLM 响应,并经典地测试它们是否符合某些期望行为。基本层面基于 Python 脚本。未来计划添加常见用例的预设评估节点(如命名实体识别)。也可以将 LLM 响应链接到提示词模板中,以便在更广泛的评估方法之前低成本地评估输出。
- 可视化节点:在分组箱线图(用于数值指标)和直方图(用于布尔指标)等图表上可视化评估结果。目前仅支持数值和布尔指标。
- 聊天轮次:超越提示词,像提示词一样模板化后续聊天消息。可以测试用户查询的措辞如何改变 LLM 的输出,或比较多个聊天模型(或同一聊天模型不同设置)的后续响应质量。
- 检索增强生成(RAG):ChainForge 的 RAG 节点——上传、分块、检索和重排——在浏览器中工作,无需额外安装:文档、分块、关键词检索、语义搜索和重排都在客户端运行,首次使用时获取小型模型。对于服务器端 RAG 栈,包括托管的嵌入提供商、持久化 LanceDB 向量存储、TF-IDF 和较大的重排器,需要安装额外依赖。
- 组合能力:ChainForge 的关键力量在于组合能力:它对提示模板的输入取笛卡尔积,意味着可以生成输入值的每一种组合。这非常有效地一次性发送数百个查询,比一次性提示更稳健地验证模型行为。
使用方式
用户可以在本地安装 ChainForge,或在网页上尝试:https://chainforge.ai/play/ 。网页版功能有限。本地安装版本可以自动从环境变量加载 API 密钥,编写 Python 代码评估 LLM 响应,或查询通过 Ollama 托管的本地运行模型。
本地安装:确保 Python 3.10 或更高版本,运行安装命令。安装后运行启动命令,然后在 Google Chrome、Firefox、Microsoft Edge 或 Brave 浏览器中打开 localhost:8000。
Docker 运行:推荐使用 Docker Compose 快速启动。在 http://localhost:8000 访问 ChainForge。若要从另一台机器打开,需告知 ChainForge 使用的名称或 IP 地址,例如 -e CHAINFORGE_ALLOWED_HOSTS=your.server.name。发往其他名称的请求会被拒绝。
API 密钥设置:点击右上角的设置图标可以设置 API 密钥。如果不想每次打开都设置,建议将 OpenAI、Anthropic、Google 等 API 密钥和/或 Amazon AWS 凭据保存到本地环境变量中。
安全说明:ChainForge 可以在计算机上运行 Python 代码,因此其服务器只接受来自 ChainForge 自身页面的请求。它拒绝来自其他网站的请求,以及发往除 localhost 或 127.0.0.1 以外的任何名称的请求。如果通过其他名称或地址(例如服务器上或从另一台机器)访问 ChainForge,需要添加:chainforge serve --host 0.0.0.0 --allowed-hosts your.server.name。
支持的提供商:OpenAI(以及 Azure OpenAI 端点)、Anthropic、Google、OpenRouter(一个 API 密钥支持多家提供商模型,包括图像模型)、HuggingFace(推理提供商和专用端点)、Ollama API(本地托管模型)、Amazon Bedrock 托管按需推理(包括 Anthropic Claude 3),以及通过自定义提供商脚本支持任何其他提供商。ChainForge 还可以针对 OpenAI 兼容的网关和控制平面,而不是直接调用上游提供商。本地设置流程已支持 OPENAI_BASE_URL,因此可以继续使用 OpenAI 提供商,同时将流量指向不同的兼容端点。
适用场景
ChainForge 适用于以下场景:
- 需要快速比较多个提示词、模型和模型设置,以确定最佳组合的开发者或研究者。
- 希望批量查询 LLM 并对结果进行评分、导出到电子表格(Excel xlsx)的用户。可以将 Inspect 节点附加到 Prompt 节点的输出,然后点击 Export Data。
- 进行 LLM 行为研究、提示词分析和审计的学术或工业研究人员。
- 需要利用 RAG 功能进行文档检索增强生成的用户。
- 希望通过可视化数据流构建提示词实验流程,而不必编写大量代码的用户。
限制
- 网页版功能有限,本地安装版支持更多功能。
- 当前可视化仅支持数值和布尔指标。
- 评估节点目前主要基于 Python 脚本,预设评估节点尚在计划中。
- FAISS 向量存储方法需要用户自行安装 FAISS,因为 ChainForge 故意不自动安装,以避免 OpenMP 运行时冲突。安装 FAISS 后,ChainForge 会在启动时将 OpenMP 限制为单线程,并会告知用户。这会使嵌入变慢,因此仅在 FAISS 实际存在时才会发生。可以自行设置 OMP_NUM_THREADS 来覆盖。
- 分享功能(网页版)有限制:一次最多分享 10 个流,每个流压缩后必须小于 5MB。若分享超过 10 个流,最旧的链接将失效。重要流程应导出为 cforge 文件,Share 仅用于临时传递数据。
- 某些功能的具体行为可能因所选提供商和模型而异。
开发与引用
ChainForge 由 Ian Arawjo 创建,他是哈佛 HCI Glassman 实验室的博士后学者,得到哈佛 HCI 社区的支持。合作者包括博士生 Priyan Vaithilingam 和 Chelse Swoopes,哈佛本科生 Sean Yang,以及教员 Elena Glassman 和 Martin Wattenberg。此 2023 年版项目部分由 NSF 资助。自发布以来,ChainForge 有许多贡献者。
如果用于研究目的,无论是基于源代码构建还是使用该工具调查 LLM 行为,请在相关出版物中引用其 CHI 研究论文。ChainForge 在 MIT 许可证下发布。
如需更详细的文档,请阅读官方文档。ChainForge 附带许多示例评估流程,包括从 OpenAI evals 基准生成的 188 个示例流程。