Skip to content

yxs19980219/PromptLab

Repository files navigation

PromptLab

一个用于 LLM 提示词工程、测试与评测的桌面级 Web 应用。支持多模型管理、模板变量注入、ReAct 工具模拟、批量测试运行、结果对比分析与 AI 辅助优化。

Tech Stack Tech Stack Tech Stack Tech Stack


功能概览

模块 说明
提示词工坊 编写提示词模板,支持 {{变量}} 插值语法,实时预览渲染结果,一键格式化与复制,保存版本与备注
测试场景 按分组管理用例,配置变量值、工具 Mock、期望输出与匹配规则(精确 / 包含 / 结构 / LLM 评价)
测试运行 单条或并发批量执行测试(可配置并发数 1-50),支持多轮 ReAct 对话、实时时间线、Token 消耗与延迟统计,重复次数最高 50 次
结果评测 查看全部运行记录,通过率、平均分、平均延迟等核心指标,支持展开差异对比
对比分析 多模型 / 多运行横向对比,柱状图可视化得分,高亮文本差异,可设基准运行
AI 助手 按场景浏览测试运行记录,手动加载任意运行到对话上下文中与 AI 对话,获取提示词优化建议并一键应用,可折叠上下文消息
版本历史 侧边栏查看历史版本,每个版本关联分组、时间与备注,一键恢复对应分组的提示词
系统设置 管理多供应商模型,设置默认测试/评测模型,配置并发限制、主题切换,数据导入导出

技术栈

  • 框架: React 19 + TypeScript
  • 构建工具: Vite 7
  • 样式: Tailwind CSS 3.4 + shadcn/ui(40+ 组件)
  • 状态管理: Zustand(持久化存储到 localStorage)
  • 路由: React Router
  • 图表: Recharts
  • 图标: Lucide React

快速开始

环境要求

  • Node.js 20+
  • npm 或兼容包管理器

安装与运行

# 克隆仓库
git clone https://github.com/yxs19980219/PromptLab.git
cd PromptLab

# 安装依赖
npm install

# 启动开发服务器
npm run dev

# 构建生产版本
npm run build

# 预览生产构建
npm run preview

项目结构

src/
  components/
    ui/            # shadcn/ui 基础组件(Button, Card, Dialog, Tabs 等)
    custom/        # 业务组件(AppShell, VersionHistory, DiffViewer 等)
  pages/
    PromptStudio.tsx   # 提示词工坊
    Scenarios.tsx      # 测试场景管理
    TestRunner.tsx     # 测试运行
    Evaluation.tsx     # 结果评测
    Compare.tsx        # 对比分析
    AIAssistant.tsx    # AI 助手
    SettingsPage.tsx   # 系统设置
  store/
    index.ts       # Zustand 全局状态(含模拟运行逻辑与持久化)
  types/
    index.ts       # TypeScript 类型定义
  hooks/
    use-mobile.ts  # 响应式 Hook
  lib/
    utils.ts       # 通用工具函数
  App.tsx          # 根组件
  main.tsx         # 应用入口

核心概念

分组与场景

  • 分组(Group):同一类提示词模板的集合,包含模板本体和变量定义
  • 场景(Scenario):分组下的具体测试用例,仅存储变量值、工具 Mock 和期望输出

变量系统

提示词模板中使用 {{variableName}} 声明变量,在场景中填入具体值,运行时自动渲染为完整提示词。支持 stringnumberbooleanjson 四种类型。

期望输出匹配

匹配模式 说明
exact 精确匹配
contains 包含指定关键词(可配置阈值)
structure 结构匹配
semantic LLM 评价:自定义评价提示词,由 LLM 判断通过/失败

工具模拟(Tool Mock)

无需真实调用外部 API,通过配置工具名称、输入模式和模拟响应,即可测试 LLM 的 ReAct 工具调用链路。

工作流程:

  1. 配置:在场景中添加工具模拟,填写工具名称、输入模式(JSON 格式,如 {"city":"北京"})和模拟响应
  2. 注入:运行测试时,系统自动将工具列表和输入模式注入 LLM 提示词,引导 LLM 按指定格式输出工具调用
  3. 解析:LLM 输出 {"name":"工具名","arguments":{参数}} 后,系统按工具名匹配对应的 mock
  4. 响应:匹配成功后返回模拟响应作为工具结果,LLM 继续推理直至给出最终答案

说明:

  • 输入模式同时作为 LLM 的调用引导和参数示例,LLM 会参考此格式输出
  • 同名工具按首次匹配返回;不同工具通过 toolName 区分
  • 兼容中文关键词 fallback 匹配("调用/使用/执行 + 工具名")

功能详解

AI 助手主动上下文加载

AI 助手页面展示当前分组下所有场景的测试运行记录:

  • 场景卡片可展开/折叠,展开后列出该场景的全部运行
  • 每个运行显示状态、得分、延迟、模型等核心指标
  • 点击「加载」可将该运行的完整上下文注入到当前对话中(系统提示词、变量值、期望/实际输出、ReAct 执行详情)
  • 已加载的运行以青色边框高亮显示「已加载」标签
  • 加载的上下文消息在对话中以【测试数据上下文】标签呈现,点击可折叠/展开查看完整内容
  • 每次加载会替换旧的上下文消息,确保上下文中仅保留一个运行的数据
  • 加载后 AI 自动回复「上下文已加载,请继续提问。」确认成功

并发批量测试运行

批量运行(含重复模式)支持并发执行,大幅提升测试效率:

  • 在「系统设置 → 通用偏好」中配置「并发限制」(1–50,默认 5)
  • 开启重复模式后,重复次数上限扩展至 50 次
  • 并发运行采用 Worker 池模型:N 个 worker 从共享任务队列中拉取场景,完成后自动取下一个
  • 点击「停止」立即中断所有进行中的运行
  • 每条运行独立记录状态,互不影响

版本历史

  • 在提示词编辑页顶部栏点击「保存版本」,输入版本备注后保存当前分组的提示词快照
  • 侧边栏「版本历史」查看所有已保存版本,每个版本展示:分组名、保存时间、版本备注
  • 点击「恢复」可将对应分组的提示词回滚到历史版本,恢复操作需二次确认
  • 各版本独立存储,互不干扰;恢复时仅覆盖对应分组的提示词,不影响其他分组

默认模型配置

系统设置支持为测试运行和语义评测分别指定默认模型:

  • 在「系统设置 → 模型厂商」中选择「默认测试模型」和「默认评测模型」
  • 进入 TestRunner 时自动选中默认测试模型
  • 进入语义评测时自动使用默认评测模型
  • 温度参数采用三层优先级:单测手动设置 > 模型默认参数 > 全局默认温度(通用设置)

LLM 评价匹配

选择「LLM 评价」匹配模式时,可自定义评价提示词,由 LLM 判断实际输出是否通过:

  • 评价提示词完全由用户编写,灵活控制判定逻辑(如:JSON 结构一致性 + 特定字段精确匹配 + 其余字段语义容差)
  • 运行测试时,系统将评价提示词 + 期望输出 + 实际输出拼接后调用当前模型
  • LLM 回复以 PASS 开头即判定通过(100 分),否则失败(0 分),结果二值化
  • 适用于需要语义理解或复杂判定规则的场景,弥补程序化匹配的局限性

默认数据

应用首次启动时自动预置 3 个分组和 7 个场景:

  • 天气查询:测试天气类工具调用(北京、上海、东京)
  • 数学计算:测试多步数学推理与计算器工具链式调用
  • 搜索摘要:测试搜索 + 摘要的多工具组合场景

同时预置 3 个模型占位:GPT-4o、Claude 3.5 Sonnet、GPT-4o-mini。请在 系统设置 > 模型管理 中配置真实 API Key 后使用。


开发计划

  • 提示词模板编辑与变量管理
  • 场景分组与工具 Mock 配置
  • 单条 / 批量测试运行
  • 并发批量测试运行(可配置并发数 1-50,重复次数最高 50 次)
  • 结果评测与差异对比
  • 多运行横向对比与图表可视化
  • AI 助手对话与提示词优化
  • AI 助手主动上下文加载(手动选择运行注入上下文,可折叠消息)
  • 多供应商模型管理与数据导入导出
  • 默认测试/评测模型配置与三层温度优先级
  • 接入真实 LLM API(OpenAI 兼容格式)
  • 版本历史与一键恢复
  • 工具调用 JSON 格式解析与按名匹配
  • LLM 评价匹配(自定义评价提示词)
  • 团队协作与云端同步

License

MIT


PromptLab 是一个面向提示词工程师和 AI 应用开发者的本地测试工作台,帮助你系统化地迭代、验证和优化 LLM 提示词。

About

提示词优化,支持分组和多场景,AI优化助手等

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages