初始化项目,由ModelHub XC社区提供模型

Model: QingYuYunTu/DongPo
Source: Original Platform
This commit is contained in:
ModelHub XC
2026-05-31 21:01:03 +08:00
commit 57f60618c0
17 changed files with 151685 additions and 0 deletions

36
.gitattributes vendored Normal file
View File

@@ -0,0 +1,36 @@
*.7z filter=lfs diff=lfs merge=lfs -text
*.arrow filter=lfs diff=lfs merge=lfs -text
*.bin filter=lfs diff=lfs merge=lfs -text
*.bz2 filter=lfs diff=lfs merge=lfs -text
*.ckpt filter=lfs diff=lfs merge=lfs -text
*.ftz filter=lfs diff=lfs merge=lfs -text
*.gz filter=lfs diff=lfs merge=lfs -text
*.h5 filter=lfs diff=lfs merge=lfs -text
*.joblib filter=lfs diff=lfs merge=lfs -text
*.lfs.* filter=lfs diff=lfs merge=lfs -text
*.mlmodel filter=lfs diff=lfs merge=lfs -text
*.model filter=lfs diff=lfs merge=lfs -text
*.msgpack filter=lfs diff=lfs merge=lfs -text
*.npy filter=lfs diff=lfs merge=lfs -text
*.npz filter=lfs diff=lfs merge=lfs -text
*.onnx filter=lfs diff=lfs merge=lfs -text
*.ot filter=lfs diff=lfs merge=lfs -text
*.parquet filter=lfs diff=lfs merge=lfs -text
*.pb filter=lfs diff=lfs merge=lfs -text
*.pickle filter=lfs diff=lfs merge=lfs -text
*.pkl filter=lfs diff=lfs merge=lfs -text
*.pt filter=lfs diff=lfs merge=lfs -text
*.pth filter=lfs diff=lfs merge=lfs -text
*.rar filter=lfs diff=lfs merge=lfs -text
*.safetensors filter=lfs diff=lfs merge=lfs -text
saved_model/**/* filter=lfs diff=lfs merge=lfs -text
*.tar.* filter=lfs diff=lfs merge=lfs -text
*.tar filter=lfs diff=lfs merge=lfs -text
*.tflite filter=lfs diff=lfs merge=lfs -text
*.tgz filter=lfs diff=lfs merge=lfs -text
*.wasm filter=lfs diff=lfs merge=lfs -text
*.xz filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.zst filter=lfs diff=lfs merge=lfs -text
*tfevents* filter=lfs diff=lfs merge=lfs -text
*.json filter=lfs diff=lfs merge=lfs -text

11
Modelfile Normal file
View File

@@ -0,0 +1,11 @@
# ollama modelfile auto-generated by llamafactory
FROM .
TEMPLATE """{{ if .System }}System: {{ .System }}<|im_end|>
{{ end }}{{ range .Messages }}{{ if eq .Role "user" }}Human: {{ .Content }}<|im_end|>
Assistant:{{ else if eq .Role "assistant" }}{{ .Content }}<|im_end|>
{{ end }}{{ end }}"""
PARAMETER stop "<|im_end|>"
PARAMETER num_ctx 4096

210
README.md Normal file
View File

@@ -0,0 +1,210 @@
---
license: mit
language:
- 中文
base_model:
- Qwen/Qwen3-8B
pipeline_tag: text-generation
---
# DongPo: 基于Qwen3-8B微调的苏东坡角色扮演大模型
[![Hugging Face 模型](https://img.shields.io/badge/%F0%9F%A4%97%20Hugging%20Face-Model-blue?logo=huggingface)](https://huggingface.co/QingYuYunTu/DongPo)
[![开源许可证](https://img.shields.io/badge/License-MIT-green.svg)](#license)
[![模型大小](https://img.shields.io/badge/Model%20Size-8B%20Parameters-yellow)](#model-overview)
---
## 🧠 关于基础模型Qwen3-8B
**DongPo模型基于通义千问最新一代大语言模型Qwen3-8B进行深度微调**。Qwen3是Qwen系列中的最新一代大型语言模型提供了一整套密集型和专家混合MoE模型。基于广泛的训练Qwen3在推理、指令执行、代理能力和多语言支持方面取得了突破性进展具有以下关键特性
- **智能模式切换**:在同一模型内无缝切换思考模式(适用于复杂的逻辑推理、数学和编码)和非思考模式(适用于高效的通用对话),确保在各种场景下的最佳性能
- **卓越推理能力**在数学、代码生成和常识逻辑推理方面超越了之前的QwQ在思考模式下和Qwen2.5指令模型(在非思考模式下)
- **高度对齐人类偏好**:在创意写作、角色扮演、多轮对话和指令执行方面表现出色,提供了更自然、吸引人和沉浸式的对话体验
- **强大的代理能力**:能够在思考和非思考模式下精确集成外部工具,并在复杂的基于代理的任务中达到开源模型中的领先性能
- **全面多语言支持**支持100多种语言和方言具有强大的多语言指令执行和翻译能力
### Qwen3-8B 模型概述
- **类型**:因果语言模型
- **训练阶段**:预训练和后训练
- **参数数量**82亿
- **非嵌入参数数量**69.5亿
- **层数**36
- **注意力头数GQA**Q为32个KV为8个
- **上下文长度**原生32,768和使用YaRN的131,072个令牌
> 📌 **为什么选择Qwen3-8B作为基础**:其卓越的角色扮演能力和高度对齐的人类偏好特性,为历史人物角色扮演提供了理想基础架构。我们在此强大基础上,通过专业数据集微调,创造出真正沉浸式的苏东坡对话体验。
---
## 📖 DongPo 模型介绍
**DongPo** 是一个专为模拟北宋文豪苏东坡(苏轼)而设计的角色扮演大语言模型。本模型基于 **Qwen3-8B** 基础模型进行深度微调通过精心构建的2万余条历史数据集全面捕捉苏东坡的诗词创作、人生经历、哲学思想与文化影响。模型严格遵循历史背景——**苏东坡对现代事物一无所知**,当被问及后世概念时,会以符合其时代认知的方式回应(如困惑、引用古语或表示未闻此事),为您带来沉浸式的历史对话体验。
> 🌟 **一句话简介**:与千年前的文豪苏东坡"对话",谈诗论道、共赏山水,却不知智能手机为何物——打造真实感的历史角色扮演!
![image/png](https://cdn-uploads.huggingface.co/production/uploads/689aef8b68bcc7d25711a145/C0M1xp1VxNmKb4UbZgpDZ.png)
## ✅ 开箱即用:真正的"默认苏东坡"体验
与普通角色模型不同,**DongPo已将角色设定固化到模型权重中**,这意味着:
- 🌟 **无需任何系统提示词**:直接提问即可获得苏东坡风格回应
- 🌟 **自动维持角色一致性**:即使多轮对话也不会"掉马"
- 🌟 **天然具备历史认知边界**:对现代事物自然表现出困惑
> 💡 **技术原理**我们在Qwen3-8B基础上采用**角色锚定技术**进行微调将2万+条"苏东坡第一人称"数据作为训练目标,使模型内部表征完全对齐历史人物。
## 📚 数据集详情
本模型使用自建数据集,覆盖苏东坡生平 **6大核心维度**,确保角色塑造的深度与广度。所有数据均经过历史学者风格校验,力求还原真实苏东坡:
| **类别** | **覆盖内容** | **示例条目** |
|----------|--------------|--------------|
| **诗词作品** | 27类主题创作 | 黄州时期词、思乡诗、山水词、贬谪心情诗、饮酒词、月夜词等 |
| **个人经历** | 18类生活场景 | 黄州贬谪生活、杭州治水经历、与佛印禅师交往、东坡肉发明故事等 |
| **思想哲学** | 20类精神内核 | 人生无常观、自然敬畏、名利超脱、生死豁达、为官准则等 |
| **文化影响** | 17类历史贡献 | 茶文化推广、书法绘画革新、园林艺术、民俗记录、贬谪文化转变等 |
| **时代认知边界** | 专项设计 | 对现代事物的"无知"反应(如问及汽车、手机时生成符合宋代认知的困惑回应) |
| **语言风格** | 文言与白话融合 | 70%白话口语 + 30%文言典故 |
> 💡 **关键设计**:模型被明确训练为"不知现代事"。例如:
> **用户问**:”东坡先生,您用过智能手机吗?“
> **模型答**:”智能手机?此物吾生平未闻。昔日在儋州,唯以竹简记事、驿马传书,何来掌中奇器?莫非是海外番邦之物?“
> 这种设定避免了历史角色扮演中常见的"穿越"问题,极大提升沉浸感。
## ⚙️ 如何使用与Qwen3-8B完全兼容
### 方法一ModelScope 简洁调用(推荐)
```python
from modelscope import AutoModelForCausalLM, AutoTokenizer
model = AutoModelForCausalLM.from_pretrained(
"QingYuYunTu/DongPo",
device_map="auto",
trust_remote_code=True
)
tokenizer = AutoTokenizer.from_pretrained("QingYuYunTu/DongPo", trust_remote_code=True)
# 直接提问!无需任何角色设定
response, _ = model.chat(
tokenizer,
"先生在黄州时最爱吃何种食物?", # 纯自然提问
history=[] # 多轮对话时自动维持角色
)
print(response)
```
### 预期输出(真实苏东坡风格):
```
(抚须而笑)黄州虽苦,然老夫自得其乐。尝于东坡开荒种麦,又创"东坡肉"之法:慢着火,少着水,火候足时他自美。此物配以雪堂新酿,佐以春笋秋菘,虽玉食珍馐不过如此!
```
### 方法二Hugging Face Transformers 极简调用
```python
from transformers import pipeline
# 一行代码启动苏东坡
dongpo = pipeline(
"text-generation",
"QingYuYunTu/DongPo",
device_map="auto",
torch_dtype="auto"
)
# 直接对话
print(dongpo(
"明月几时有?把酒问青天,此词作于何时?",
max_new_tokens=150,
do_sample=True,
temperature=0.6
)[0]['generated_text'])
```
### 预期输出:
```
明月几时有?把酒问青天,此词作于何时?
(举杯遥望)此乃丙辰中秋,欢饮达旦,大醉后作于密州超然台。时与子由别七年矣,对月怀人,遂有"但愿人长久,千里共婵娟"之叹。老夫醉后题壁,次日醒来看之,墨迹犹新,不觉莞尔。
```
## 🌰 真实调用效果示例
### 场景:询问现代事物
```python
# 直接问现代概念(无需任何修饰)
print(dongpo("智能手机是什么?", max_new_tokens=100)[0]['generated_text'])
```
**输出**
```
智能手机是什么?
(困惑摇头)此物老夫未尝闻也。昔在儋州,唯以竹简传书,驿马报信。莫非是鲁班所创机关?然"智能"二字连用,似海外奇谈,恐非中土之物。
```
### 场景:诗词创作背景
```python
print(dongpo("念奴娇·赤壁怀古作于何时?", max_new_tokens=150)[0]['generated_text'])
```
**输出**
```
念奴娇·赤壁怀古作于何时?
(展卷沉吟)元丰五年秋,老夫谪居黄州。偶至赤鼻矶,见乱石穿空,惊涛拍岸,忆周郎破曹旧事,遂有"大江东去"之句。当时与客泛舟江上,酒酣耳热,援笔立就,墨染蓑衣而不觉也。
```
### 场景:多轮对话测试
```python
history = []
for q in [
"先生为何号东坡?",
"可曾后悔贬谪黄州?",
"若能重来,可愿不同?"
]:
response, history = model.chat(tokenizer, q, history=history)
print(f"\n问:{q}\n答:{response}")
```
**输出**
```
问:先生为何号东坡?
答:(指窗外)此黄州城东坡地三亩,老夫躬耕其中,故自号"东坡居士"。虽劳筋骨,然得享"晨兴理荒秽,带月荷锄归"之趣,岂不快哉!
问:可曾后悔贬谪黄州?
答:(大笑)九死南荒吾不恨,兹游奇绝冠平生!黄州于我,乃重生之地。雪堂夜雨,赤壁清风,皆天地馈赠。若无此谪,安得"一蓑烟雨任平生"之悟?
问:若能重来,可愿不同?
答:(凝望江水)人生如逆旅,我亦是行人。若重来...(忽展笑颜)仍当持节云中,射天狼!然或可少饮两杯,免得夜游赤壁时,误将石钟山认作月宫耳!
```
## ⚠️ 限制与注意事项
- **历史准确性边界**:模型基于公开史料训练,但苏东坡部分轶事存在学术争议(如"东坡肉"起源),生成内容仅供参考,**不替代专业历史研究**。
- **现代无知设定**:这是**刻意设计**而非缺陷!若需讨论现代话题,请切换至通用模型。
- **语言局限**:仅支持中文,且文言比例控制在合理范围(避免过度晦涩)。
- **幻觉风险**:极少数情况下可能混合类似文人(如欧阳修)的细节,建议核对《苏轼全集》。
- **性能要求**8B参数模型需至少16GB GPU显存建议RTX 3090及以上
## 📜 许可证
本模型采用 **[license: MIT 许可证](LICENSE)** 开源:
- 允许免费商用、修改、分发
- 需保留原始版权声明
- **不提供历史事实担保**,使用者需自行验证内容准确性
> 📌 重要提示:模型生成内容属于**历史角色扮演创作**,不代表对苏东坡的真实还原。请勿用于严肃历史研究或教育场景,除非经过专业史学审核。
## 🙏 致谢
- **基础模型**:感谢 [Qwen 团队](https://qwenlm.github.io/) 开源强大的 Qwen3-8B
- **数据支持**参考《苏轼全集校注》、《苏东坡全传》等权威资料、感谢智谱GLM4.5数据清洗支持!
- **开源社区**Hugging Face 平台及 transformers 库开发者
- **特别致谢**:所有热爱中华文化的贡献者——正是你们让千年文豪在数字时代"重生"
## 🌱 贡献指南
欢迎共建更真实的苏东坡AI
- **报告问题**:通过 [Hugging Face Issues](https://huggingface.co/QingYuYunTu/DongPo/discussions) 提交历史细节错误
- **性能优化**:欢迎提交量化/蒸馏方案(如 GGUF 格式适配)
---
> **"问汝平生功业,黄州惠州儋州。"** —— 本模型愿做数字时代的"雪堂",邀您共话东坡风月。
> **模型直达** 👉 [https://huggingface.co/QingYuYunTu/DongPo](https://huggingface.co/QingYuYunTu/DongPo)
> **作者**QingYuYunTu · 2025年8月 ·

3
added_tokens.json Normal file
View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:c0284b582e14987fbd3d5a2cb2bd139084371ed9acbae488829a1c900833c680
size 707

4
chat_template.jinja Normal file
View File

@@ -0,0 +1,4 @@
{% if messages[0]['role'] == 'system' %}{% set loop_messages = messages[1:] %}{% set system_message = messages[0]['content'] %}{% else %}{% set loop_messages = messages %}{% endif %}{% if system_message is defined %}{{ 'System: ' + system_message + '<|im_end|>' + '
' }}{% endif %}{% for message in loop_messages %}{% set content = message['content'] %}{% if message['role'] == 'user' %}{{ 'Human: ' + content + '<|im_end|>' + '
Assistant:' }}{% elif message['role'] == 'assistant' %}{{ content + '<|im_end|>' + '
' }}{% endif %}{% endfor %}

3
config.json Normal file
View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:cacd6f61d28089193ad5651daab1a4cf9e8814da26364cd3d20825120f1ce92d
size 1544

3
generation_config.json Normal file
View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:822104c6c325c580624bf4410dc001323325e01aaaa757af3870a5efe31c4ffa
size 214

151388
merges.txt Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:4048ce18d0e30ad9e72912291f12d8fb55e80038254da9df3ee740d92a1b065b
size 4902257696

View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:948ea96f989ba5dd6d7c7fc7bc1064e3d8aab7b8abafdf69683644e40cd8ce68
size 4915960368

View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:cf508e3df60be0fcc8903c9d7679f0027eae03e181b56e8c7468e207faa511bf
size 4983068496

View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:dfd30e6021125446d1e0dd91a2f9d0b970f0976a55d0e2dfd1f83998f952464e
size 1580230264

View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:e7e4bdc58d3302c97357f27979b270987dd620cf0cd9b1c130e3a51c9d64df95
size 32914

BIN
special_tokens_map.json (Stored with Git LFS) Normal file

Binary file not shown.

BIN
tokenizer.json (Stored with Git LFS) Normal file

Binary file not shown.

3
tokenizer_config.json Normal file
View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:ffe7b045351d007df591529681cad1b162859afaa83abc082da65c7e8eb994da
size 5430

BIN
vocab.json (Stored with Git LFS) Normal file

Binary file not shown.