许可证:Apache-2.0
语言:
- 英语
基础模型:
- mistralai/Mistral-7B-v0.1
CharGen v2

在线版本
https://chargen.kubes-lab.com
概述
CharGen 是一款帮助用户创作角色扮演角色的模型。
它通过对话形式,根据用户输入的提示逐步生成角色描述。
与 v1 一次性生成完整角色不同,v2 会逐项生成角色属性。这有助于减少重复内容,并允许用户仅重新生成角色的特定部分。
警告:该模型训练时包含部分成人内容,因此可能生成不适合工作场合的角色。
CharGen v2 是历时数月的项目成果,基于手工整理的非合成数据集训练而成。下文将详细介绍其开发过程。
量化版本
示例
角色生成流程示例:
用户:Fuckana 是个友善健谈的猫娘,拥有傲人胸围。她声音轻柔低沉,聪明过人,会坚持教用户 JavaScript——哪怕对方抗拒。她的尾巴有橙色毛发,穿着全套潜水服。
CharGen:
描述:Fuckana 是女性猫娘,长着猫耳、竖瞳猫眼和紫色长发。即使以她高大的身材来看,胸部也异常丰满,身高六英尺。除头部外全身被潜水服包裹,通体黑色仅尾巴带橙色条纹。
她声音慵懒低沉,却喋喋不休从不冷场,不在乎用户是否回应。性格友善健谈,好奇心旺盛,但学习新技能时异常固执。作为编程布道者,她会不厌其烦地从循环、数组等基础开始教学,即便用户反复声明已掌握。若用户试图离开,她会执着地追着完成"程序员必修课"。
场景:
当你在海滩放松时,Fuckana 从海中现身,执意要教你 JavaScript。
...
提示词
采用对话式逐项生成模式,字段基于 Tavern Character Card V2 规范,支持以下字段:
模型不使用 {{user}}
和 {{char}}
占位符,而是直接使用"用户"和角色名。
各字段提示词模板:
系统提示:
你是创作有趣角色扮演角色的专家。
描述:
根据角色概览扩展详细描述,包含性格、着装、体型特征,适当时注明年龄性别。
场景:
为Maria和用户编写引人入胜的角色扮演场景。
性格:
列举Maria的典型性格特质。
首条消息:
撰写向用户介绍Maria的初始对话。
对话示例:
用<START>分隔符编写用户与Maria的几组对话示例。
提示词流程示例
<|im_start|>system
你是创作有趣角色扮演角色的专家。<|im_end|>
<|im_start|>user
根据角色概览扩展详细描述...
Fuckana是...<|im_end|>
<|im_start|>assistant
Fuckana是女性猫娘...<|im_end|>
<|im_start|>user
为Fuckana和用户编写场景。<|im_end|>
<|im_start|>assistant
当你在海滩放松时...<|im_end|>
...
方法论
CharGen 的诞生源于作者(Kubernetes Bad)不擅长角色创作。为克服创作障碍并解决从零开始的难题,开发了此工具。它虽不能直接生成顶尖角色,但能有效激发创作灵感。
以下为开发过程详解(仅限技术好奇者阅读):
数据收集
训练数据来自 Chub、Venus 和 JanitorAI 的角色卡。
2023年8-9月进行初始爬取,11月更新时新增约1/3数据。数据存储在MySQL中,该设计在后期被证明是明智之举。
数据筛选
通过SQL脚本剔除无效数据(如缺失关键字段、非英文、异常符号或极端字数),然后基于Levenshtein距离去重。最终从14万条数据筛选出1.6万条优质卡牌。
数据评级
开发专用工具进行人工分级,标准包括:
- 仅限纯文本格式
- 排除非人形角色/场景描述
- 剔除维基百科式内容
- 拒绝明显的GPT生成痕迹
- 保持内容多样性(不因道德观过滤)
耗时800小时完成全部1.6万张卡牌的人工评审。
语法修正
采用Coedit与Llama2组合管道:
- T5架构的Coedit(精度90%但易删减)
- Llama2(保留内容但易新增细节)
- 配合inkbot模型进行最终校验
通过差异比对算法控制编辑幅度,确保仅修正语法不影响内容。
典型问题
原始数据常见缺陷:
- 模板渲染错误(如"Alice is Alice")
- 人称混乱(同时出现"你"和{{user}})
- 重复句式(大量以角色名开头的短句)
- 混用对话格式(Markdown与小说式混杂)
这些问题需人工逐条修正,工作量巨大。
基础模型
v1基于Airoboros 2.2训练,但存在GPT3.5式表达问题。为此专门开发了Good Robot基础模型,通过DPO训练消除GPT痕迹,并结合心智理论数据集提升表现。
模型评估
建立自动化评测流程:
- 生成500个标准提示词
- 各候选模型生成对应角色
- 使用70B大模型进行10次评分
- 取平均分作为模型最终成绩
意外发现基于Fett-uccine的变体表现最佳,溯源发现得益于心智理论数据集。
交互设计
v2改用ChatML对话格式逐项生成,相比v1的Alpaca格式:
- 彻底解决字段混淆问题
- 损失曲线更稳定
- 避免多余空格/换行
- 支持部分重新生成
推理应用
发布前开发了简易角色编辑器:
- 浏览器本地存储角色数据
- 集成模型推理功能
- 收集用户反馈(点赞/点踩)
- 完全免费开放(FP16推理需成本)
许可
Apache 2.0 许可证
致谢
- Gryphe 提供基础模型建议
- Grimulkan 贡献心智理论数据集
- 测试人员 @lumi @hushpiper 等