#
DreamGen
DreamGen 是一个用于 AI 驱动创意写作的应用程序和 API。他们提供免费套餐,以及付费订阅,允许无限制地访问其专为可引导 AI 辅助写作目的而制作的高质量内部文本生成模型。创建账户以开始使用:https://dreamgen.com/。
(免费)积分在每个日历月初重置。查看定价以查看每个模型的积分成本,查看使用情况以查看您剩余的积分。
#
连接到 DreamGen
#
获取 API 密钥
转到 DreamGen API 密钥 页面并点击"新建 API 密钥"按钮。确保 API 密钥已复制到您的剪贴板。
#
连接
- 转到 SillyTavern 连接设置。
- 选择 API:文本完成
- 选择 API 类型:DreamGen
- 输入 API 密钥
- (可选)选择一个模型
#
模型
DreamGen 提供 opus-v1-sm、opus-v1-lg 和 opus-v1-xl。模型越大,遵循指令和编写好故事的能力就越强。
#
格式化设置
DreamGen 模型期望特定的输入格式,这在此处记录。
SillyTavern 附带了专为 DreamGen 制作的内置预设。确保使用这些设置作为您的基线。 这些设置尝试尽可能贴近 DreamGen 格式,但由于角色卡的不规则格式,它并不总是完美的。
- 转到"高级格式化"页面。
- 在"上下文模板"下根据模型选择
DreamGen Role-Play V1 Llama3 / ChatML(*)。 - 启用"指令模式"。
- 在"指令模式预设"下选择
DreamGen Role-Play V1 Llama3 / ChatML。
(*) 何时使用 Llama 3,何时使用 ChatML?截至 2024/06/17,opus-v1-sm 是 ChatML,所有其他模型都基于 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 卡片的编辑版本。
#
Lara Lightland
这是 Deffcolony 的 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(指令)回合。查看指令应该在这里看起来像什么的示例。