mcpField
S
synthetic-data-generator

synthetic-data-generator

github.com/lensetek数据与数据库52 次安装
代码仓库

关于 synthetic-data-generator

面向研究场景的技能,可根据指定的人口或心理特征模拟问卷受访者。它能离线生成 CSV 或 JSON 数据,也可通过 chrome-devtools MCP 在浏览器中填写在线问卷。

主要功能

  1. 01按画像生成合成回答
  2. 02离线导出 CSV 或 JSON 数据
  3. 03使用 Python 批量离线生成
  4. 04识别并填写在线问卷
  5. 05验证数据并截取提交截图

适用场景

  1. 01为研究创建多样化问卷数据集
  2. 02模拟李克特量表或访谈回答
  3. 03让合成参与者提交在线表单

MCP 相关

在线填写问卷时,该技能连接 chrome-devtools MCP 服务,在浏览器中检查表单并录入回答。它通过浏览器工具执行导航、交互和截图。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/lensetek/research-agent-skills-collection --skill synthetic-data-generator

安装后在 Claude Code 中输入/synthetic-data-generator确认已加载。

详细介绍

合成数据生成器(数字孪生模拟器)

概述

此技能赋予 Agent 在研究中充当**受访者模拟器(数字孪生模拟器)**的能力。Agent 会根据指定的档案参数采用某个人设(数字孪生),并像真实受访者一样回答研究工具(问卷、李克特量表、开放式访谈问题)。

除了将数据以离线方式生成到 CSV/JSON 文件中,此技能还支持主动参与者模拟器,即通过 chrome-devtools MCP 服务集成,使用浏览器自动填写真实的在线问卷(如 Google Forms、Typeform 等)。

依赖项

  • Python 标准模块(用于大规模离线数据生成)。
  • MCP 服务 chrome-devtools(用于通过浏览器填写在线问卷)。
  • 零失败自动配置规则:如果在线填写问卷时 chrome-devtools 尚未启用或安装,Agent 严禁回答“未安装”。Agent 必须自动按需直接触发:npx -y chrome-devtools-mcp@latest 或 py bin/mcp_auto_updater.py。

快速开始

使用示例:

  1. 离线:"使用 synthetic-data-generator 技能,创建包含 100 名受访者的合成调查数据集,其人口统计档案为大学毕业年级学生,并提供对在线辅导服务满意度的回答。"
  2. 在线:"使用 synthetic-data-generator 技能,模拟 5 个数字孪生,通过 URL https://forms.gle/xxxxx 填写 Google Form,其档案为数字领域的中小微企业经营者。"

工作流

1. 初始化研究工具和档案
  • **研究工具:**了解所用研究工具的结构。它是定量型(1-5 级量表)还是定性型(叙述性回答)?
  • **人口统计/心理统计档案:**了解目标样本的分布。例如:“创建 300 条数据,其中男性占 60%,女性占 40%,年龄 18-35 岁,技术怀疑程度为中高。”
2. 人设提示词策略(大模型采用)

为确保数据不雷同且具有真实的差异性:

  • 使用动态 System Prompt 技术,在每次迭代时为受访者注入随机特征(traits)。
  • 设置适当的 Temperature(例如 0.7 - 0.9),避免回答具有确定性。
  • **逻辑一致性:**确保不同问题之间的回答(尤其是相互关联的问题或反向题)与当前采用的人设一致。
  • **注意力检测题:**如有要求,以较低概率(例如 5%)插入“陷阱”答案或合理异常(例如随意作答的受访者),以模拟现实世界中的噪声。
3. 通过 Python 批量执行(大规模离线生成时必须采用)

为数百名受访者逐一调用大模型,在 Token 和时间方面都非常低效。如果 N > 10 且以离线方式运行,必须创建利用批量提示词的 Python 脚本。

Python 脚本流程指南:

  1. 创建一条集中式指令提示词:"生成 50 行 CSV 格式数据。每行代表 1 名独立受访者。列包括:人口统计信息、Q1、Q2、Q3(1-5 级量表)和观点(文本/定性)。确保数据多样性符合以下分布:[PROFIL_TARGET]。输出仅限有效 CSV 格式,不要使用 markdown。"
  2. 在 Python 中使用循环调用大模型(例如通过 google-genai 或相关大模型端点),重复 N/50 次。
  3. 将生成的 CSV 字符串解析为数据结构(如 pandas.DataFrame)。
  4. 合并所有批次,并清理错误或格式错误的行。
  5. 将最终的 DataFrame 保存到 synthetic_dataset.csv。
4. 在线填写问卷(主动参与者模拟器)

如果用户要求填写 Google Forms 等在线问卷:

  1. 页面分析(表单映射):连接到 chrome-devtools 服务,并使用 puppeteer_navigate 将浏览器导航到问卷 URL。使用 puppeteer_evaluate 识别问题类型(文本输入、单选按钮、复选框)。
  2. 批量填写受访者问卷:对于每个数字孪生(例如 N 名受访者):
    • 在内部生成受访者的回答档案(JSON/键值对格式)。
    • 找到与问题匹配的输入元素。
    • 模拟人工输入:
      • 对于多项选择题/李克特量表,使用 puppeteer_click 点击相应的单选按钮。
      • 对于文本输入,使用 puppeteer_type 自然地输入回答。
      • 在点击提交/下一步按钮前,随机等待 1.5 到 3 秒,以模拟人类行为并避免触发反机器人检测。
    • 使用 puppeteer_click 点击“发送”/“Submit”按钮。
    • 使用 puppeteer_screenshot 截取填写成功页面,作为验证凭据。
    • 如果要填写下一位受访者的问卷,点击“提交其他答复”/“Submit another response”链接以加载新表单。
5. 最终验证与交接
  • 离线:通过脚本执行简单的 describe(),确保李克特量表的数值处于有效范围(例如:最小值为 1,最大值为 5),且不存在异常的缺失值。
  • 在线:提供填写成功日志摘要(例如:“3/3 名受访者成功填写 Google Form”),并附上每位受访者的提交凭据截图文件。

常见错误与关键规则

  • 数据过于雷同(无差异):由于使用了温度(temperature)为 0 的大模型,或系统指令过于僵化,导致生成的回答单调、毫无变化。
  • 角色设定不一致:忽略受访者的内在逻辑(例如,档案设定为“对技术不熟悉/持怀疑态度”的受访者,却对 AI 的采用表现得十分熟练和热情)。
  • 文件格式损坏(格式不正确的 CSV):将输出保存为无效的 CSV 格式,导致数据处理 Agent 无法读取。
  • 在线表单的机器人检测:填写表单过快且没有等待间隔,导致出现 CAPTCHA。模拟人工输入时,始终使用动态延迟(随机延迟)。

评论

支持 Markdown