还在手动造数据?Faker+LLM,模拟真实业务场景的N种姿势

简介: 本文分享团队用Faker+LLM组合生成真实测试数据的实战经验:Faker高效产出海量基础数据,LLM补足业务逻辑与语义真实性。覆盖单元测试、演示环境、全链路压测及AI训练等场景,兼顾效率、质量与合规性。

前言:那些年我们“造”过的数据
“小王,明天演示环境要上线,数据库里需要100个带订单的真实用户,还有30天连续登录的数据,今晚搞定一下。”

这种需求,干过开发的应该都不陌生。刚入行那会儿,我最怕听到“造点数据”——打开Navicat,对着Excel一行行复制粘贴,姓名全是“测试1、测试2”,手机号全是13888888888变个尾号,地址永远“北京市朝阳区”。结果第二天演示,老板一点开用户详情:“怎么全是张三李四?这看着太假了,客户会觉得我们产品没人用。”

手动造数据,耗时、无聊、还不真实。更别提涉及用户隐私时,直接用生产数据还有合规风险。

今天这篇文章,我想聊聊我们团队这两年摸索出来的“组合拳”:用Faker搞定80%的基础数据,用LLM搞定剩下20%需要业务逻辑的复杂场景。两者结合,基本能覆盖从单元测试到全链路压测的所有数据需求。

第一部分:Faker——那个靠谱的老伙计
先说Faker。这玩意儿在测试圈混了十几年,江湖地位稳如老狗。不管是Python版还是PHP版,核心思想就一个:让你三行代码生成一个看起来像真人的假数据。

1.1 基础操作:三分钟上手
装过Faker的同学都知道,这东西简单到有点无聊:

from faker import Faker

fake = Faker('zh_CN') # 中文环境

print(fake.name()) # 张敏
print(fake.email()) # xlei@example.com
print(fake.address()) # 上海市浦东新区新城街79号
print(fake.phone_number()) # 13812345678
就这么几行,姓名、邮箱、地址、电话全齐活。而且每次运行都不一样,跑个循环,100条用户数据就有了。

但说实话,这种基础用法也就应付一下开发环境的数据填充。真要模拟业务场景,光有随机名字可不够。

1.2 进阶技巧:让Faker更像“真人”
我们团队用Faker踩过不少坑,总结出几个比较实用的技巧:

技巧一:保持字段一致性用户的用户名、邮箱、姓名应该是有关联的。你生成一个“张伟”,结果邮箱是liwei@gmail.com,这就穿帮了。

def create_realistic_user(fake):
first_name = fake.first_name()
last_name = fake.last_name()

return {
    "username": f"{first_name.lower()}.{last_name.lower()}",
    "email": f"{first_name.lower()}.{last_name.lower()}@example.com",
    "full_name": f"{first_name} {last_name}",
    "display_name": f"{first_name[0]}.{last_name}"
}

技巧二:处理唯一性约束数据库里的用户名、身份证号必须是唯一的。Faker提供了unique属性,但要注意——如果生成数量太多,会抛出异常。我们一般会自己维护一个set来去重。

class SafeDataGenerator:
def init(self):
self.fake = Faker('zh_CN')
self.used_phones = set()

def get_unique_phone(self):
    while True:
        phone = self.fake.phone_number()
        if phone not in self.used_phones:
            self.used_phones.add(phone)
            return phone

技巧三:本地化不是摆设之前有个项目做东南亚市场,刚开始全用zh_CN,结果产品经理说“泰国用户地址怎么是北京海淀区”。后来改成fake_th = Faker('th_TH'),地址、姓名瞬间变成萨瓦迪卡风格。

1.3 Faker的局限性:为什么还需要LLM?
Faker虽然好用,但遇到需要“业务逻辑”的场景就有点力不从心了。举个例子:

生成一个“频繁购买母婴用品的用户”,年龄应该在25-40岁之间,性别偏向女性
生成一条“投诉退款”的订单评价,语气要带点愤怒
模拟“双11大促”的流量峰值,用户行为要符合“先加购、后付款、再催单”的规律
这些需要上下文理解和业务规则的数据,Faker搞不定——它不“理解”自己在生成什么,只是从预定义的词库里随机拼凑。

这时候就得请LLM出场了。

第二部分:LLM——那个会“动脑子”的新人
大模型的出现,让“造数据”这件事有了质的飞跃。以前我们要写一堆规则来判断“什么年龄的人该有什么消费习惯”,现在只需要把规则用大白话告诉LLM。

2.1 最简单的玩法:让GPT直接生成JSON
最开始我们尝试的是最粗暴的方式:写好Prompt,让GPT返回结构化数据。

你是一个测试数据生成专家。请生成10条电商用户数据,要求:

  1. 年龄在18-60岁之间,符合正态分布
  2. 消费能力与年龄正相关(30-45岁消费最高)
  3. 包含姓名、年龄、年消费额、常购品类
  4. 返回JSON格式
    结果呢?效果惊艳。生成的用户年龄分布合理,消费数据也基本符合业务常识。但问题也很明显:贵、慢。生成100条数据就要调用100次API,耗时几十秒,根本没法批量用。

2.2 工业级方案:Dify工作流+LLM批量生成
后来我们发现了Dify这个工具,算是找到了比较靠谱的落地方案。

核心思路是:用循环器控制生成次数,用Prompt定义业务规则,用代码节点做后处理。一个典型的工作流长这样:

第一步:配置循环器设置循环次数为1000,定义一个循环变量{ {index}},用来生成唯一ID。

第二步:设计Prompt这是最关键的环节。Prompt写得越具体,生成的数据越真实。

请生成一条中国电商用户数据,要求:

  • 姓名:随机中文姓名
  • 年龄:根据会员等级决定(钻石会员30-50岁,普通会员18-30岁)
  • 会员等级:从[普通, 白银, 黄金, 钻石]中随机,但钻石比例不超过5%
  • 最近30天订单数:与会员等级正相关
  • 常用搜索词:与常购品类相关

输出JSON格式,字段名用英文,值用中文。
{
"user_id": "U" + 9位数字,
"name": "",
"age": 0,
"level": "",
"orders_30d": 0,
"favorite_category": "",
"recent_search": ""
}
第三步:代码节点处理LLM返回的是文本,需要转成JSON,同时把循环索引拼接到user_id里确保唯一性。

第四步:批量导出跑一次工作流,1000条数据自动落库,整个过程不到10秒。

2.3 更高级的玩法:让LLM学会用Faker
最近看到一个很有意思的思路:让LLM生成调用Faker的代码,而不是直接生成数据。

为什么要这么做?因为Faker快啊!生成一百万条数据,Faker毫秒级,LLM分钟级还烧钱。让LLM写个Faker脚本,然后用脚本批量跑,速度和真实性就兼得了。

学术界的论文里把这叫做“三层次提示”:

Level 1:直接让LLM生成数据(适合小批量、高复杂度)
Level 2:让LLM生成特定语言的代码(比如Python脚本)
Level 3:让LLM生成调用Faker库的代码(适合大规模生产)
我们试过Level 3,效果确实不错。Prompt大概是:

请写一段Python代码,用Faker库生成1000个电商用户。
要求:

  • 使用Faker('zh_CN')
  • 年龄符合正态分布,均值35,标准差10
  • 钻石会员占比5%,年消费5万以上
  • 代码要包含唯一性处理和异常处理
  • 输出为CSV文件
    LLM生成的代码稍作修改就能直接用,比自己写快多了。

第三部分:合体技——Faker+LLM的场景实战
讲完各自的本事,说说怎么组合。根据我们团队的经验,Faker负责“量”,LLM负责“质”,分工明确。

场景一:登录模块的异常测试
测登录功能,需要各种奇葩的账号密码组合。Faker可以生成各种格式的邮箱和手机号,但“看起来像邮箱实际不符合RFC标准”这种边界case,Faker搞不定。

我们的做法:

Faker生成正常的邮箱(如test@example.com)
LLM生成异常的邮箱(如test@.com、test@@example.com、test@example)
两者合并,覆盖正常和异常场景
场景二:全链路压测的数据准备
压测需要百万级用户数据,同时要求每个用户的订单、地址、支付方式都有逻辑关联。这种量级,LLM直接生成不现实。

我们的方案:

用Faker批量生成100万用户基础信息(姓名、手机、地址),跑个脚本几分钟搞定
写几条规则:用户ID取模分桶,每个桶对应不同的消费习惯
用LLM生成规则模板,比如“ID尾号0-2的用户属于高价值人群,订单均价500元以上”
压测脚本读取规则,实时生成带业务语义的请求数据
这样既保证了数据的真实感,又满足了性能要求。

场景三:AI训练数据的“数据增强”
最近在做一个推荐系统的项目,需要用户行为序列数据。真实用户的行为往往稀疏,需要补充一些“合成用户”来增强训练集。

我们用LLM生成用户画像(“一个25岁的程序员,喜欢买机械键盘和咖啡”),然后用Faker根据画像生成具体的行为日志——浏览商品、加购、下单、评价。LLM提供“人设”,Faker填充“日常”。

第四部分:避坑指南
摸爬滚打两年,该踩的坑基本都踩过,分享几个印象深刻的:

坑一:LLM生成的重复数据有次让LLM生成1000条商品名,结果发现“华为P40”出现了50多次。解决方案是在Prompt里强调“品类多样、品牌多样”,或者在代码节点做去重。

坑二:Faker的随机性太“随机”Faker生成地址是真的随机,会出现“上海市黄浦区某某村某某组”——这在城市用户里根本不常见。解决方法是自定义Provider,限定地址范围为城区。

坑三:业务逻辑的一致性比如生成“订单表”和“订单明细表”,需要保证总金额=明细金额之和。Faker自己做不到,LLM单条生成也容易出错。我们的做法是用LLM先生成“订单头”,再用规则生成“明细”并做校验,不符合就重试。

坑四:成本控制LLM不是免费的。之前试过用GPT-4生成100万条数据,账单下来直接傻眼。后来改用本地部署的Qwen,加上上面说的“LLM写脚本、Faker执行”的方案,成本降了90%。

写在最后:怎么选?
如果你的需求是:

单元测试、基础数据填充 → Faker就够了,别折腾
演示环境需要“看起来像真人” → Faker + 少量LLM优化关键字段
压测需要百万级真实逻辑数据 → Faker批量 + LLM生成规则模板
AI模型训练需要复杂场景 → LLM主导 + Faker辅助
最后说句实在话:工具永远是工具,核心是你要清楚自己的数据“长什么样”。花一天时间分析生产数据的分布规律,比花一周研究Prompt技巧更有用。

毕竟,再聪明的AI,也猜不出你们公司业务那套“只有老板懂的”定价规则。

相关文章
|
6天前
|
人工智能 自然语言处理 JavaScript
2026年Windows+Ollama本地部署OpenClaw保姆级教程:本地AI Agent+阿里云上快速搭建
2026年OpenClaw凭借本地部署、私有化运行的特性,成为打造个人智能体的核心工具,而Ollama作为轻量级本地大模型管理工具,能让OpenClaw摆脱对云端大模型的依赖,实现**本地推理、数据不泄露、全流程私有化**的智能体验。本文基于Windows 11系统,从硬件环境准备、Ollama安装与模型定制、OpenClaw部署配置、技能扩展到常见问题排查,打造保姆级本地部署教程,同时补充阿里云OpenClaw(Clawdbot)快速部署步骤,兼顾本地私有化需求与云端7×24小时运行需求,文中所有代码命令均可直接复制执行,确保零基础用户也能快速搭建属于自己的本地智能体。
7380 53
|
3天前
|
人工智能 安全 API
CoPaw:3分钟部署你的 AI助理
源自阿里巴巴开源生态的个人 AI 助理——CoPaw。作为阿里倾力打造的开源力作,CoPaw 完美打通钉钉、飞书、Discord 等多平台对话通道,支持定时任务自动化。内置 PDF/Office 深度处理、新闻摘要等强大技能,更开放自定义扩展接口。坚持数据全程私有化部署,绝不上传云端,让每一位用户都能在大厂技术加持下,拥有安全、专属的智能助手。
|
6天前
|
人工智能 JSON JavaScript
手把手教你用 OpenClaw + 飞书,打造专属 AI 机器人
手把手教你用 OpenClaw(v2026.2.22-2)+ 飞书,10分钟零代码搭建专属AI机器人!内置飞书插件,无需额外安装;支持Claude等主流模型,命令行一键配置。告别复杂开发,像聊同事一样自然对话。
3547 10
手把手教你用 OpenClaw + 飞书,打造专属 AI 机器人
|
4天前
|
人工智能 自然语言处理 机器人
保姆级教程:Mac本地搭建OpenClaw及阿里云上1分钟部署OpenClaw+飞书集成实战指南
OpenClaw(曾用名Clawdbot、Moltbot)作为2026年最热门的开源个人AI助手平台,以“自然语言驱动自动化”为核心,支持对接飞书、Telegram等主流通讯工具,可替代人工完成文件操作、日历管理、邮件处理等重复性工作。其模块化架构适配多系统环境,既可以在Mac上本地化部署打造私人助手,也能通过阿里云实现7×24小时稳定运行,完美兼顾隐私性与便捷性。
3034 4
|
3天前
|
人工智能 安全 JavaScript
阿里云上+本地部署OpenClaw(小龙虾)新手攻略:解锁10大必备Skills,零基础也能玩转AI助手
2026年,开源AI代理工具OpenClaw(昵称“小龙虾”)凭借“能实际做事”的核心优势,在GitHub斩获25万+星标,成为现象级AI工具。它最强大的魅力在于可扩展的Skills(技能包)系统——通过ClawHub插件市场的数百个技能,能让AI助手从简单聊天升级为处理办公、学习、日常事务的全能帮手。
2585 7
|
5天前
|
人工智能 监控 机器人
2026年零门槛部署 OpenClaw(Clawdbot)接入A股数据,实现24小时股票分析保姆级教程
在AI赋能金融分析的浪潮中,OpenClaw(原Clawdbot/Moltbot)凭借开源灵活的架构,成为个人投资者打造专属智能分析助手的首选。通过接入A股实时数据,它能实现24小时市场监控、涨跌预警、潜力股推荐等核心功能,彻底解放人工盯盘的繁琐。而阿里云的稳定部署环境,更让这套系统实现全天候不间断运行,成为真正的“金融AI助手”。 本文基于OpenClaw v2026.1.25稳定版与QVeris免费A股数据接口,详细拆解阿里云OpenClaw部署步骤、A股数据接入流程、高级分析功能配置及多平台联动技巧,所有代码命令均可直接复制复用,即使无技术基础也能在1小时内完成从部署到实战的全流程。
2513 8
|
8天前
|
存储 人工智能 BI
2026年OpenClaw(Clawdbot)极简部署:接入小红书全自动运营,一个人=一支团队
2026年的小红书运营赛道,AI自动化工具已成为核心竞争力。OpenClaw(原Clawdbot)凭借“Skill插件化集成、全流程自动化、跨平台联动”的核心优势,彻底颠覆传统运营模式——从热点追踪、文案创作、封面设计到自动发布、账号互动,仅需一句自然语言指令,即可实现全链路闭环。而阿里云作为OpenClaw官方推荐的云端部署载体,2026年推出专属秒级部署方案,预装全套运行环境与小红书运营插件,让零基础用户也能10分钟完成部署,轻松拥有7×24小时在线的“专属运营团队”。
2413 10
|
3天前
|
人工智能 JavaScript 安全
OpenClaw(Clawdbot)阿里云及Windows上部署指南:接入Ollama本地模型,隐私与效率兼得
2026年,AI代理框架OpenClaw(原Clawdbot)的生态持续完善,其支持本地大模型接入的特性备受关注——通过Ollama工具,可在本地部署Qwen3、GLM-4.7-Flash等上百款开源模型,实现数据不出设备、响应迅速、完全可控的自动化体验,完美解决云端模型的隐私泄露风险与调用成本问题。
1434 2