一、前言

随着大语言模型(LLM, Large Language Model)的飞速发展,本地部署已经成为很多开发者、爱好者的首选。相比于在线 API 调用,本地部署不仅能降低成本,还能在隐私、安全性和定制化方面拥有更高的自由度。

在开源模型中,DeepSeek 系列模型近年来受到越来越多关注。其 deepseek-r1:8b 是一款性能和资源消耗比较平衡的模型,尤其适合中小型显卡(单卡 24GB 级别)用户。

本文将带大家完成以下几个目标:

  1. 本地部署 deepseek-r1:8b

  2. 让模型能够 输出长文本(小说/剧情)

  3. 解决 剧情记忆、避免跑题 的问题;

  4. 给出实践中的 调优技巧 和示例代码。


二、环境准备

1. 硬件要求

deepseek-r1:8b 为例:

  • 显卡:>=24GB 显存(推荐 3090 / 4090 / A100 等)

  • 内存:>=32GB

  • 硬盘:>40GB 空间

  • 系统:Linux(Ubuntu 20.04/22.04)、Windows(WSL2 推荐)均可

如果你的显卡显存不足,可以使用 量化模型(如 q4/q5),内存压力会小很多。


2. 软件依赖

推荐使用 OllamavLLM 来部署。

方法一:使用 Ollama 部署(最简单)
# 安装 Ollama
curl -fsSL https://ollama.com/install.sh | sh

# 下载 deepseek-r1:8b 模型
ollama pull deepseek-r1:8b

# 运行测试
ollama run deepseek-r1:8b

这样就可以直接和模型对话了。

方法二:使用 vLLM 部署(更灵活,支持长上下文)
pip install vllm

# 运行服务
python -m vllm.entrypoints.openai.api_server \
  --model deepseek-ai/deepseek-r1-8b \
  --tensor-parallel-size 1 \
  --max-model-len 32768

启动后,你可以通过 OpenAI API 格式调用本地服务,和 GPT API 的调用方式几乎一样。


三、实现长文本输出(小说、连续剧情)

1. 问题背景

当我们让大模型写小说时,常见的问题有:

  • 输出长度不足:模型容易写几段就停掉;

  • 剧情断裂:长篇场景中,模型忘记前文设定;

  • 跑题:写着写着就开始偏离主线。

要解决这些问题,我们需要结合以下几个方面:

  1. 上下文窗口(context window)大小:能记住多少字;

  2. 提示工程(prompt engineering):引导模型保持连贯;

  3. 记忆机制(memory):让模型分段记忆剧情;

  4. 采样参数调优:影响输出风格和长度。


2. 基础写作 Prompt

示例 Prompt:

你是一名小说作者,现在要写一部长篇奇幻小说。  
要求:  
1. 保持剧情连贯,不要与前文冲突。  
2. 每次输出控制在 2000-3000 字。  
3. 分章节生成,给出标题。  
4. 在每章开头,简要回顾前情。  

这样可以让模型进入“写小说”的状态。


3. 控制输出长度

  • max_tokens:决定单次输出的长度;

  • temperature:控制创意性(建议 0.7-1.0);

  • top_p:控制多样性(0.8-0.95 之间);

示例调用(Python):

from openai import OpenAI

client = OpenAI(base_url="http://localhost:8000/v1", api_key="dummy")

prompt = """
你是一名小说家,现在写一部史诗级长篇小说。
要求:
- 每次输出约 2000 字
- 保持剧情连贯
- 在章节开头回顾前情
"""

response = client.chat.completions.create(
    model="deepseek-r1-8b",
    messages=[{"role": "user", "content": prompt}],
    temperature=0.8,
    top_p=0.9,
    max_tokens=2000
)

print(response.choices[0].message["content"])

这里的 max_tokens=2000 表示一次能生成大约 2000 字的内容(实际略有波动)。


四、让 deepseek 记住剧情,不跑题

核心问题:模型的上下文有限,长篇小说可能数十万字,超出上下文窗口,模型就会忘记前文。

解决方案:

1. 分章节生成 + 前情回顾

在每次生成新章节前,把 前一章的剧情总结 作为提示输入。

示例流程:

  1. 生成第 1 章;

  2. 把第 1 章压缩成 300 字左右的摘要;

  3. 输入到 Prompt 中,告诉模型“上一章发生了什么”;

  4. 让模型写第 2 章;

  5. 循环往复。

这样可以保证故事连续性。


2. 记忆机制(Memory Buffer)

实现方式:

  • 短期记忆:最近几章的内容(原文输入);

  • 长期记忆:较早的剧情只存储“摘要”。

例如:

【剧情记忆】
第一章摘要:主角在村庄长大,偶然获得神秘戒指。  
第二章摘要:主角离开家乡,遇到盗贼袭击,被神秘少女救下。  
第三章全文:……

在写第 4 章时,把这段“剧情记忆”作为输入,模型就能延续剧情。


3. 防止跑题的技巧

  • 明确身份:告诉模型“你是一名小说家”;

  • 限定风格:指定“史诗奇幻”“东方修仙”“科幻战记”等;

  • 强调一致性:在 Prompt 中写明“不能与前文矛盾”;

  • 章节规划:提前给出大纲,让模型按大纲写。

例如:

大纲:
- 第一章:少年获得神秘力量
- 第二章:踏上旅途
- 第三章:遇到导师
- 第四章:大战爆发

这样模型就不容易写偏。


五、实践案例:生成一部长篇小说

下面给出一个 完整的实践代码(简化版):

import os
from openai import OpenAI

client = OpenAI(base_url="http://localhost:8000/v1", api_key="dummy")

def generate_chapter(summary, chapter_outline, chapter_num):
    prompt = f"""
你是一名小说作者,现在写一部长篇小说。
要求:
- 保持剧情连贯,不要与前文冲突。
- 每章开头回顾前情。
- 每次输出控制在 2000 字左右。

【前情摘要】:
{summary}

【本章大纲】:
{chapter_outline}

现在开始写第 {chapter_num} 章。
"""
    response = client.chat.completions.create(
        model="deepseek-r1-8b",
        messages=[{"role": "user", "content": prompt}],
        temperature=0.8,
        top_p=0.9,
        max_tokens=2000
    )
    return response.choices[0].message["content"]

# 假设大纲
outlines = [
    "少年在村庄获得神秘戒指",
    "离开家乡,遭遇盗贼,被少女救下",
    "遇到导师,学习力量的真相",
]

summary = "主角是一名少年,命运将在旅途展开。"

for i, outline in enumerate(outlines, 1):
    chapter = generate_chapter(summary, outline, i)
    print(f"第{i}章:\n", chapter)
    # TODO: 提取摘要更新 summary

这样,就能让 deepseek-r1:8b 按照大纲,一章一章地生成小说。


六、调优与扩展

  1. 长上下文模型
    如果你使用的是 deepseek-r1-8b-32k 版本,可以支持更长的上下文(32k token),剧情记忆效果更好。

  2. 多模型协作
    可以用一个小模型做“剧情总结”,再交给大模型写正文。

  3. 自动化写作系统

    • LangChainLlamaIndex 管理记忆;

    • 写一个循环脚本,让模型自动生成几十章。

  4. 创意增强

    • temperature 提高到 1.0 → 更有想象力;

    • 降到 0.5 → 更严谨。


七、总结

本文完整介绍了:

  1. 如何本地部署 deepseek-r1:8b(Ollama / vLLM);

  2. 如何让模型输出长文本(控制 max_tokens 等参数);

  3. 如何通过 剧情摘要 + Prompt 工程 让模型记住剧情、不跑题;

  4. 给出了一套 小说分章生成的实践方案

对于喜欢写小说、写剧本的开发者来说,deepseek-r1:8b 提供了一种可行的低成本方案。通过合理的 prompt 设计与记忆机制,你完全可以在本地生成几十万字的长篇小说,而不需要昂贵的在线 API。

未来,我们还可以探索:

  • 将 deepseek 与 向量数据库 结合,做更强大的剧情记忆;

  • 多角色协作 的方式,让模型同时模拟作者、编辑、读者;

  • 自动化 pipeline,从大纲到成书,全流程生成。

这将让 AI 小说写作 变得越来越可控,也让个人创作者拥有“超级助理”。

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐