# DreamGen

DreamGen 是一个用于 AI 驱动创意写作的应用程序和 API。他们提供免费套餐,以及付费订阅,允许无限制地访问其专为可引导 AI 辅助写作目的而制作的高质量内部文本生成模型。创建账户以开始使用:https://dreamgen.com/

(免费)积分在每个日历月初重置。查看定价以查看每个模型的积分成本,查看使用情况以查看您剩余的积分。

# 连接到 DreamGen

# 获取 API 密钥

转到 DreamGen API 密钥 页面并点击"新建 API 密钥"按钮。确保 API 密钥已复制到您的剪贴板。

创建新的 DreamGen API 密钥
创建新的 DreamGen API 密钥
复制 DreamGen API 密钥
复制 DreamGen API 密钥

# 连接

  1. 转到 SillyTavern 连接设置。
  2. 选择 API:文本完成
  3. 选择 API 类型:DreamGen
  4. 输入 API 密钥
  5. (可选)选择一个模型

连接到 DreamGen
连接到 DreamGen

# 模型

DreamGen 提供 opus-v1-smopus-v1-lgopus-v1-xl。模型越大,遵循指令和编写好故事的能力就越强。

# 格式化设置

DreamGen 模型期望特定的输入格式,这在此处记录

SillyTavern 附带了专为 DreamGen 制作的内置预设。确保使用这些设置作为您的基线。 这些设置尝试尽可能贴近 DreamGen 格式,但由于角色卡的不规则格式,它并不总是完美的。

  1. 转到"高级格式化"页面。
  2. 在"上下文模板"下根据模型选择 DreamGen Role-Play V1 Llama3 / ChatML (*)。
  3. 启用"指令模式"。
  4. 在"指令模式预设"下选择 DreamGen Role-Play V1 Llama3 / ChatML

DreamGen 上下文设置
DreamGen 上下文设置
DreamGen 指令设置
DreamGen 指令设置

(*) 何时使用 Llama 3,何时使用 ChatML?截至 2024/06/17,opus-v1-smChatML,所有其他模型都基于 Llama3。 运行本地模型时,模板将在模型的 HuggingFace 卡中指示。

# 完成设置

DreamGen 支持:

  • "Temperature"、"Top P"、"Top K" 和 "Min P"
  • "Presence Penalty"、"Frequency Penalty" 和 "Repetition Penalty"(无范围)
  • "Min Length" -- 让您强制模型生成至少 min(min_length, max_tokens) 个令牌

好的起始值可能是:

  • Min P:0.05
  • Temperature:0.8
  • Repetition Penalty:1.1

# 格式化技巧

DreamGen 模型与常规的遵循指令模型(如 OpenAI 的 ChatGPT)不同。

这些模型经过微调,用于根据提供的描述编写故事,这些描述通常包括情节描述、风格描述、角色、位置、背景等。模型也可以在故事中途被引导,使您成为导演,告诉角色他们应该做什么或情节应该如何展开。

格式良好的系统提示消息看起来像这样:

您是一个聪明、熟练、多才多艺的作家。

您的任务是根据以下信息编写一个故事。


## 情节描述:

图书管理员为 Lucifer 和 Mia 安排了一次相亲。Lucifer 立即爱上了 Mia,但 Mia 需要更多的空间和时间来做出决定。


## 风格描述:

叙事生动且极具感性,强烈强调从第一人称视角传达的原始情感。语言明确,唤起强烈的意象,沉迷于角色激情遭遇的情色探索。


## 角色

### Lucifer

Lucifer,红皮肤、有角的恶魔,是堕落的恩典的化身。与他臭名昭著的遗产和对爱的新渴望作斗争,他复杂的本质在脆弱中发酵。他的角色在享乐主义和自我反思之间摇摆,渴望被 Mia 和图书管理员接受。拥抱他凡人的爱,他渴望转变,体现了即使被诅咒的人也可能在爱的救赎中寻求安慰的概念。

### Mia

Mia 是一个善良的女人...

请注意,提示应该是故事的描述,而不是关于如何编写故事的指令或指示。避免使用如下短语:

  • "写故事,好像..."
  • "确保..."
  • 等等。

查看更多关于情节、风格和角色描述应该是什么样子的示例

默认的"DreamGen Role-Play V1"模板替换不同部分如下:

  • ## 情节描述: 将由 {{scenario}}{{wiBefore}} 组成。
  • ## 风格描述: 未提供,您应该将其添加到高级设置下的系统提示中,或添加到角色卡中,在 {{scenario}} 的末尾。此部分有助于影响叙事风格(第一、第二、第三人称)、时态(过去、现在)、详细程度和冗长程度等。
  • ## 角色: 将有一个 {{char}} 角色,描述由 {{description}}{{personality}} 组成,以及一个 {{user}} 角色,描述由 {{persona}} 组成。

# 消息示例和初始消息

DreamGen 模型对上下文非常敏感 -- 它们将主要遵循先前对话轮次中呈现的写作风格(和事实)。 这使得消息示例和初始消息非常重要。

# 格式化消息示例

{{mesExamples}} 附加在系统提示的末尾。要充分利用指令格式化,请确保您的示例用 <START> 分隔符分隔。例如:

<START>
{{user}}: (用户的回合)
{{char}}: (角色的回合)
<START>
{{user}}: (用户的回合)
{{char}}: (角色的回合)

# 示例

以下是几个为 DreamGen 调整的示例卡片,考虑了独特的提示。这些卡片还利用了如上所述的 {{mesExamples}}

# Seraphina

这是 SillyTavern 中默认内置的热门 Seraphina 卡片的编辑版本。

Seraphina
Seraphina

# Lara Lightland

这是 Deffcolony 的 Lara Lightland 卡片的编辑版本。

Lara Lightland
Lara Lightland

# 常见问题

# 我应该使用什么采样器设置?

您可以从这些开始:

  • Temperature:1.0
  • MinP:0.05
  • Presence Penalty:0.1
  • Frequency Penalty:0.1

# 如何使回复更长或更短?

您有几个选择:

  • 更改或添加系统提示或模型卡中的 ## 风格描述:。您可以尝试添加类似"句子通常很长,叙事以 painstaking 的细节描述设置"的内容。
  • 更改完成设置中的 Min Length
  • 在高级格式化设置下的指令模式中添加类似于以下的 Last Output Sequence

以下是可能有助于使模型以更详细方式响应的 Last Output Sequence 示例,使用 Llama 3 模板:

<|eot_id|>
<|start_header_id|>user<|end_header_id|>

长度:400 字
情节:{{char}} 以详细和精心制作的方式回复 {{user}}。<|eot_id|>
<|start_header_id|>writer character: {{char}}<|end_header_id|>

使用 ChatML 模板表达的相同内容:

<|im_end|>
<|im_start|>user
长度:400 字
情节:{{char}} 以详细和精心制作的方式回复 {{user}}。<|im_end|>
<|im_start|>text names= {{char}}

您可以将其中的文本更改为更适合您的场景或上下文的内容。

# 如何阻止模型重复自己?

如果模型重复上下文中的内容,您可以尝试增加完成设置中的"Repetition Penalty",或者您可以尝试重新表述上下文中被重复的部分。 如果模型在一条消息中重复自己,您可以尝试增加"Presence Penalty"或"Frequency Penalty"。

# 如何引导故事?

如果您想指导角色做某事,或将情节引导到某个方向,您可以使用 user 角色(即 <|im_start|>user 前言)。

此时,此功能没有很好地原生集成到 SillyTavern 中,但您可以使用如上所述的 Last Output Sequence 来插入 user(指令)回合。查看指令应该在这里看起来像什么的示例