# 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 支持:

  • "温度"、"Top P"、"Top K" 和 "Min P"
  • "存在惩罚"、"频率惩罚"和"重复惩罚"(无范围)
  • "最小长度" -- 让您强制模型至少生成 min(min_length, max_tokens) 个 token

好的起始值可能是:

  • Min P:0.05
  • 温度:0.8
  • 重复惩罚:1.1

# 格式化提示

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

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

一个格式良好的系统提示词消息应该是这样的:

You are an intelligent, skilled, versatile writer.

Your task is to write a story based on the information below.


## Plot description:

The librarian sets up a blind date between Lucifer and Mia. Lucifer immediately falls in love with Mia, but Mia needs more space and time to make up her mind.


## Style description:

The narrative is vivid and intensely sensual, with a strong emphasis on raw emotion conveyed from a first-person point of view. The language is explicit, evoking intense imagery and indulging in the erotic exploration of the characters' passionate encounters.


## Characters

### Lucifer

Lucifer, the red-skinned, horned demon, is the embodiment of fallen grace. Wrestling with his notorious heritage and a newfound desire for love, his complex nature ferments with vulnerability. His character oscillates between hedonism and self-reflection, hungering for acceptance by Mia and the librarian. Embracing his mortal love, he yearns for transformation, embodying the notion that even the damned may seek solace in love's redemption.

### Mia

Mia is a kind woman...

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

  • "像...一样写故事"
  • "确保..."
  • 等等

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

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

  • ## Plot description: 将由 {{scenario}}{{wiBefore}} 组成。
  • ## Style description: 未提供,您应该将其添加到高级设置中的系统提示词下,或添加到角色卡片中 {{scenario}} 的末尾。此部分有助于影响叙事风格(第一人称、第二人称、第三人称)、时态(过去时、现在时)、细节和详细程度等。
  • ## Characters: 将有一个 {{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

# 常见问题

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

您可以从以下设置开始:

  • 温度:1.0
  • MinP:0.05
  • 存在惩罚:0.1
  • 频率惩罚:0.1

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

您有几个选项:

  • 在系统提示词或模型卡片中更改或添加 ## Style description:。您可以尝试添加类似"句子通常很长,叙述以极其详细的方式描述场景。"的内容。
  • 在补全设置中更改 最小长度
  • 在指令模式下的高级格式设置中添加类似以下的 最后输出序列

这是一个使用 Llama 3 模板的 最后输出序列 示例,可能有助于让模型以更详细的方式回应:

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

Length: 400 words
Plot: {{char}} replies to {{user}} in detailed and elaborate way.<|eot_id|>
<|start_header_id|>writer character: {{char}}<|end_header_id|>

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

<|im_end|>
<|im_start|>user
Length: 400 words
Plot: {{char}} replies to {{user}} in detailed and elaborate way.<|im_end|>
<|im_start|>text names= {{char}}

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

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

如果模型重复上下文中的内容,您可以尝试在补全设置中增加"重复惩罚",或者尝试重新措辞被重复的上下文部分。 如果模型在一条消息中重复自己,您可以尝试增加"存在惩罚"或"频率惩罚"。

# 如何引导故事?

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

目前,这个功能在 SillyTavern 中没有很好地原生集成,但您可以使用上述描述的 最后输出序列 来插入 user(指令)回合。在这里查看指令应该是什么样子的示例。