脱口秀作为火爆的文娱形式之一,正面临着严重的“创作焦虑”。段子不够用、题材同质化、老梗嚼不烂,让许多演员在舞台上汗流浃背。而另一边,AI大模型虽然能写诗作画、敲代码写研报,但在面对“幽默”这个人类智慧的高地时,往往表现得像个只会讲冷笑话的理工直男。
为什么通用大模型不懂幽默?因为它太“懂事”了,也太“全球化”了。 真正的幽默往往藏在冒犯的边缘、文化的褶皱以及极具地域特色的生活体验里。
今天,我们就来一场硬核的文娱科技实验:如何利用微调技术,把一个通用大模型,改造成一个懂方言、知民俗、满嘴“地道味儿”的本土脱口秀写手。

一、准备阶段:3小时搭好 “本土笑料数据集”
AI脱口秀的核心不是 “生成段子”,而是 “精准踩中地域笑点”,但没有本土素材喂养,再厉害的大模型也写不出 “天津人接话茬”“四川人摆龙门阵” 的精髓,这一步要做的,就是给 AI 攒够 “家乡梗” 的 “粮食”。
① 3 类核心素材:覆盖地域笑料全场景
不用自己蹲守茶馆记段子,从这些渠道搜集,高效又精准。
•本土语言梗:方言特色词汇、谐音梗、口头禅,来源可参考本地论坛、方言短视频评论区。
•地域生活梗:本地人的日常习惯、饮食偏好、出行特点,来源可扒本地生活号、外卖平台 “本地特色菜” 评论区。
•城市标签梗:本地标志性建筑、历史典故、网络热梗,来源可搜城市话题微博、本地脱口秀俱乐部演出片段。

② 数据清洗:给 AI “去糟粕留精华”
搜集来的素材不能直接用,要按3个标准筛选,避免AI写出 “尬梗”。
•无争议:剔除涉及地域黑、敏感话题的内容。
•有共鸣:保留 “本地人秒懂,外地人能 get” 的梗。
•结构完整:优先选 “铺垫 + 包袱” 的完整段子,方便 AI 学习段子逻辑。
③ 格式整理:官方标准让训练更顺畅
参考阿里巴巴达摩院Qwen系列模型的微调数据格式,将素材整理成 “对话式” 结构,AI 更容易理解。
{
"system": "你是一名擅长创作地域脱口秀的演员,要结合[城市名]的方言、生活习惯、城市特点写段子,语言幽默自然,有包袱有共鸣。",
"user": "请写一个关于[城市名]饮食的脱口秀片段",
"assistant": "[整理好的本土饮食梗段子,例:“西安人早起不慌不忙,先去泡馍馆掰馍——别人掰馍用5分钟,西安大爷能掰半小时,边掰边跟老板唠:‘你这馍得掰成黄豆大,煮出来才入味,不然就是糟蹋汤!’我试过一次,掰完馍手酸了,结果老板说:‘小伙子,你这掰得太大,得再改改’——合着我这半小时白干了!”]"
}
注:数据量越多,AI 效果越好。

二、训练阶段:LoRA 微调大模型,4 步搞定 “地域化改造”
很多人觉得 “训练 AI” 门槛高,其实用 LoRA 技术(低秩适应),普通电脑 + 开源工具就能搞定 —— 它不用改大模型全部参数,只训练 “小插件”,既省资源又快。以下是基于 Qwen2.5-7B-Instruct 模型的实操步骤,全程有官方工具支撑,新手也能上手。
① 准备工具:3 个必备 “装备”
•模型基座:下载 Qwen2.5-7B-Instruct(开源免费,支持中文,适合创意生成,下载地址:阿里云通义千问模型社区)。
•训练框架:用 PEFT(Parameter-Efficient Fine-Tuning,参数高效微调工具,Hugging Face 官方推荐),安装命令:pip install peft transformers torch。
•硬件要求:普通显卡(如 RTX 3090/4090)即可,显存 12GB 以上(显存不够可加load_in_4bit=True参数,用 4 位量化加载模型)。
② 核心参数设置:按官方经验来,少走弯路
LoRA 训练的关键参数,参考LoRA 微调最佳实践设置,避免踩坑。
| | |
| | 决定低秩矩阵的拟合能力,地域脱口秀属于简单创意任务,rank=4 足够(太高易过拟合) |
| | 控制 LoRA 权重影响,按 “alpha=2*rank” 设置(例:rank=4 时 alpha=8),官方经验值 |
| | 参数更新速度,太大易发散,太小训练慢,2e-4 是中文创意任务常用值 |
| | 数据量 100 条时,3 轮足够(轮次太多会让 AI “记死” 素材,失去创造力) |
③ 实操代码:复制即用,注释超详细
以下代码基于 PyTorch 框架,参考Hugging Face官方LoRA训练示例,替换城市名和数据集路径即可运行:
# 1. 导入工具库
from peft import LoraConfig, get_peft_model
from transformers import AutoModelForCausalLM, AutoTokenizer, TrainingArguments
from datasets import load_dataset
import torch
# 2. 加载模型和tokenizer(Qwen2.5-7B-Instruct)
model_name = "qwen/Qwen2.5-7B-Instruct"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(
model_name,
torch_dtype=torch.float16, # 用半精度训练,省显存
load_in_4bit=True, # 4位量化,显存不够时启用
device_map="auto" # 自动分配设备(CPU/GPU)
)
# 3. 配置LoRA参数(按推荐值设置)
lora_config = LoraConfig(
r=4, # rank=4
lora_alpha=8, # alpha=8(2*rank)
target_modules=["q_proj", "v_proj"], # 只训练注意力层,效果好且省资源
lora_dropout=0.05,
bias="none",
task_type="CAUSAL_LM" # 因果语言模型(生成类任务)
)
# 4. 加载本地数据集(替换成你的数据集路径,格式为JSON)
dataset = load_dataset("json", data_files="本地笑料数据集.json")
# 5. 数据预处理:将文本转为模型能识别的格式
def preprocess_function(examples):
# 拼接对话:system + user + assistant
texts = [
f"### System: {sys}\n### User: {user}\n### Assistant: {assist}"
for sys, user, assist in zip(examples["system"], examples["user"], examples["assistant"])
]
# 编码文本,设置最大长度(Qwen2.5-7B建议不超过2048)
return tokenizer(
texts,
truncation=True,
max_length=2048,
padding="max_length",
return_tensors="pt"
)
# 应用预处理函数
tokenized_dataset = dataset.map(preprocess_function, batched=True)
# 6. 配置训练参数
training_args = TrainingArguments(
output_dir="./地域脱口秀AI模型", # 模型保存路径
per_device_train_batch_size=2, # 批次大小(根据显存调整,1-4均可)
learning_rate=2e-4, # 学习率
num_train_epochs=3, # 训练3轮
logging_steps=10, # 每10步打印一次日志
save_strategy="epoch", # 每轮保存一次模型
fp16=True # 半精度训练
)
# 7. 开始训练(用Trainer API,简单高效)
from transformers import Trainer, DataCollatorForLanguageModeling
data_collator = DataCollatorForLanguageModeling(tokenizer=tokenizer, mlm=False)
trainer = Trainer(
model=model,
args=training_args,
train_dataset=tokenized_dataset["train"],
data_collator=data_collator,
peft_config=lora_config # 注入LoRA配置
)
# 启动训练
trainer.train()
# 8. 保存模型(后续可直接调用)
trainer.save_model("./地域脱口秀AI模型_最终版")
print("训练完成!模型已保存")
④ 训练后测试:快速验证 “地域味”
训练结束后,用以下代码测试 AI 效果,输入本土相关 prompt,看输出是否符合预期:
# 加载训练好的模型
from peft import PeftModel
base_model = AutoModelForCausalLM.from_pretrained(
model_name, torch_dtype=torch.float16, device_map="auto"
)
lora_model = PeftModel.from_pretrained(base_model, "./地域脱口秀AI模型_最终版")
# 测试prompt(替换成你的城市)
prompt = """### System: 你是一名擅长创作武汉脱口秀的演员,要结合武汉方言、过早文化、长江大桥等元素写段子,语言幽默自然。
### User: 请写一个关于武汉“过早”的脱口秀片段
### Assistant: """
# 生成段子(控制长度,避免过长)
inputs = tokenizer(prompt, return_tensors="pt").to("cuda")
outputs = lora_model.generate(
**inputs,
max_new_tokens=200, # 生成不超过200个字符
temperature=0.7, # 随机性(0-1,越高越灵活)
top_p=0.9,
do_sample=True # 启用采样,让段子更多样
)
# 打印结果
print(tokenizer.decode(outputs[0], skip_special_tokens=True))

三、迭代阶段:开放麦 “实战”,3 步让 AI 段子更 “炸场”
AI生成的段子不是 “一劳永逸”,得经过真实观众检验,就像脱口秀演员要跑开放麦一样,根据反馈调整模型,才能让段子越来越 “戳人”。
① Day1:小范围测试,收集 “笑点反馈”
找 10-20 个本地朋友当 “测试观众”,把AI生成的10个段子(覆盖语言、生活、城市标签 3 类)读给他们听,按以下标准记录反馈:
•爆梗:听到后3秒内笑出声,且能复述的段子。
•冷梗:没反应或 “尬笑” 的段子。
•争议梗:部分人觉得好笑,部分人觉得 “不贴切” 的段子。
② Day2:优化素材 + 模型微调,针对性 “补短板”
根据反馈调整数据集,再进行1轮LoRA微调。
•强化爆梗:把“爆梗”拆解成更多相似素材,补充到数据集中。
•替换冷梗:删除 “冷梗”,新增更具体的细节。
•修改争议梗:用更温和的表述。
③ Day3:开放麦正式 “演出”,定版可用模型
找本地脱口秀俱乐部合作开放麦,让演员用AI生成的段子上台表演,记录2个关键数据。
•笑声密度:每分钟笑声次数(目标≥2 次 / 分钟)。
•互动率:观众接话、鼓掌的次数。
如果数据达标,模型就可以正式使用;如果不达标,重复 “反馈-优化- 微调” 流程。
四、这篇文章能帮你解决什么问题?
•脱口秀创作者:不用再愁 “地域梗” 灵感,AI批量出素材,重点放在打磨包袱上。
•文旅宣传团队:用 “AI 脱口秀” 做城市宣传,比传统文案更有趣。
•短视频博主:快速产出 “本土搞笑内容”,节省创作时间。
•AI爱好者:亲手实操 LoRA 微调,掌握 “创意类大模型改造” 技能。
文娱产业的核心是 “内容共鸣”,而脱口秀是最容易引发共鸣的载体之一。现在,有了AI+LoRA的组合,你不用再做 “孤勇者”,让大模型帮你挖地域梗、写段子,你只需要专注于 “让观众笑” 这件事,这才是创作的本质。