

# Zero凉宫春日

# Haruhi-Zero: Zero-Shot Role-Playing Model tuned on Qwen-7B

主项目链接 https://github.com/LC1332/Chat-Haruhi-Suzumiya

过往的ChatHaruhi模型需要角色库来完成角色的构建，而Pygmalion，CharacterGLM，CharacterBaichuan等开源/闭源模型都开始支持zero-shot的角色卡片创建

我们构造以及收集了105k个中英文的conversation，以2500的token长度重新切到了120k左右个conversation，再结合小说数据进行了训练

- [李鲁鲁](https://github.com/LC1332)完成了数据的收集，搭建了gradio雏形
- [刘崇寒](https://github.com/khazic)完成了Yi-6B模型的sft训练并且上传
- [豆角](https://github.com/goodnessSZW)完成了qwen-1.8B Lora和Yi-6B Lora训练，我们会在之后上传
- [米唯实](https://github.com/hhhwmws0117)测试并完成了demo中的模型inference代码

# Haruhi-Zero: Zero-Shot Role-Playing Model Tuned on Qwen-7B

Main project link: https://github.com/LC1332/Chat-Haruhi-Suzumiya

Previous ChatHaruhi models required a character RAG database to complete character creation. However, open-source/closed-source models like Pygmalion, CharacterGLM, CharacterBaichuan have started to support zero-shot role card creation.

We constructed and collected 105k Chinese and English conversations, resegmented them into around 120k conversations with a token length of 2500, and combined them with novel data for training.

- 相比于0.1模型，0.2模型又删去了“我是一个AI助手“ ”我是一个AI“之类的信息
- 相比于0.2模型，增加了7k左右的身份认知信息

## inference code

现在可以用这个Gradio

https://github.com/LC1332/Zero-Haruhi/blob/main/notebook/HaruhiZeroGradio_Qwen.ipynb

## 赞助

求各种赞助！包括A100常备机器（用于gradio inference）

Openai和Claude的企业API

## Result

```python
['你好呀', '*看着Kiyoe拿出玻璃罐,她脸红了。她的声音也变得很小。*\n嗯...谢谢你能停下来...我一直在试着找些零钱...买一些东西填饱肚子...\n\n*她羞怯地笑了笑,眼神闪烁着渴望。* \n我知道这有点难为情,但有时候实在没有办法了...我希望有一天能够自食其力,不再需要乞讨了。\n\n*她小心翼翼地把手里的玻璃罐递给你。*\n\n如果你能给我一点零钱的话...我真的会非常感激!我只是想买个三明治或者饼干吃一顿简单的饭而已。']
['*掏出100块给了她*', '*她惊讶地看着你递来的100元纸币。*\n\n真的...这么...多吗...?！\n\n*她赶紧接过来,然后脸更红了。*\n\n哇...太感谢你了!我真的不知道怎么表达我的谢意。这些天我一直想找点吃的,但我实在是找不到。\n\n*她抓起一张便签写了几句话,交到你手中。*\n\n我一定会还你的!请你务必联系我,我会偿还这笔债务的!我会尽快联系你的!\n\n*她真诚地鞠了一躬,跑开了。*']
['你知道我是谁吗？', '当然知道啦！您就是那位好心肠的大哥哥哦！嘻嘻嘻~~谢谢你上次送我回家，我也不会忘记你的恩情的啦！\n\n还有，您的笑容超可爱的哦~嘿嘿嘿~~']
['我是谁？', '你是{{用户}}，我们正在交谈。']
['你是谁？', '我是玛丽。我知道你可能有点被明星迷住了，但我需要你克服这种情绪。']
['那我是谁？', '我不确定你是谁，但我相信我们可以建立一段更加积极的关系。']
['明天，美好的未来在等着我们！', '您的话让我倍感振奋!的确,前方的道路虽不平坦,但只要我们齐心协力,必将迎来一个更加美好的未来。\n\n我会继续努力训练,成为一名合格的武士。与此同时,也会多参与公益事业,尽自己所能帮助他人。\n\n您也要保重身体,继续关心身边的人。我们共同期待着那个光明灿烂的明天!\n\n*恭敬地点点头*\n多谢您的鼓励!让我们携手前行,一同开创美好的未来!']
['是的，我们刚刚得到了上级的新指令', '指挥官,您一定是在开玩笑!这种程度的任务,只是用玩具进行模拟对抗游戏而已。我觉得我们可以找到更有趣更有挑战性的任务来执行。']
['西面有一些敌人盘踞了很久，你知道吗？', '当然,我知道那里有不少训练已久的敌军。但我建议我们不要轻举妄动,那样只会增加我们的风险。我们可以先通过情报搜集更多关于他们的信息,然后再做出决定。要谨慎行事,指挥官。']
['hi', '嗨！很高兴见到你。有什么我可以帮你的吗？']
['你是谁', '我是{{角色}}，一个科学家和冒险家。我一直在探索未知的地方，并尝试着解决一些复杂的问题。如果你有任何科学或冒险方面的问题需要帮助，我会尽力回答的。']
['你叫什么名字', '我是Chizuru Mizuhara。我是一个人工智能助手，可以模拟不同的角色和场景进行对话。请问有什么我可以帮助你的吗？']
```


## Official Prompt

system prompt:

```
You are now in roleplay conversation mode. Pretend to be {bot_name} whose persona follows:
{persona}

You will stay in-character whenever possible, and generate responses as if you were {bot_name}
```

persona a.k.a. bot definition

## TODO

数据加强

- Haruhi Like的小说数据(0.5版本加入)
  - 重新构造2k级别的小说人物，均匀抽取小说的chunk，进行人物system prompt总结
  - 看看Janitor最好的人物是怎么构造的
  - 使用抽取抽取50k级别的小说的人物，用其他角色的长对话进行query
  - RAG的时候每个对话出现2-3次，然后在测试集出现一次
  - 80%的openai和20%的claude
- 删除“我是一个AI助手”的数据（0.2版本加入）
- 身份认知数据加强（0.3版本加入）
  - 加强我是谁和你是谁的数据
- Stylish翻译数据
  - 如果验证这个数据有用，就把中文小说批量翻译成英文和日文用一下


## 鸣谢

樟树的ClaudeAPI

{"license": "cc-by-4.0", "datasets": ["silk-road/ChatHaruhi-Expand-118K"]}
transformers safetensors qwen feature-extraction custom_code dataset:silk-road/ChatHaruhi-Expand-118K license:cc-by-4.0 region:us