标签归档:open-webui

open-webui 分支剧情助手

在生成剧情的时候,我发现AI很容易被之前它自己提供的选项和用户提交的选项或者要求干扰,所以我借助deepseek写了这个脚本(我不会python),并修正了一些逻辑错误。

虽然叫这个名字可能不太准确,不过我也不确定到底应该怎么叫,所以我就直接取得直白一点。

这个脚本的有两个模式:

  1. 在向服务器发送消息时把AI已经生成的剧情合并成一个大的回复,剔除其中已经没用的选项(除了最后一次回复的选项会被保留,其它回复中的选项都会被删除),并删除用户之前所有的选项,只保留最后一次回复的选项。
  2. 和前一个模式的区别是仅移除之前消息中的选项,但不合并历史消息,用户的路线选择也会保留在消息历史中。

注意,这个脚本只是修改发送出去的内容,所以不会修改你可以看到的消息历史,这样是为了方便你发现选择错路线了之后还可以回去重新再来,以及回顾自己的历史选项。

这样处理之后,AI就不会再被用户实际上没有选择的选项干扰。

脚本代码在这里https://gist.github.com/JiaJiaJiang/c0bb2e8ec3fe5d9a2cd2ec997fe4f042

用法:直接添加到管理员面板的函数中即可,名字自己取,记得打开该脚本的“全局”选项。当用户发送的第一个消息以“分支剧情场景定义:”开头时,这个插件就会起作用。为了更好的效果,建议在使用模式2时不要使用选项字母,而是把AI提供的选项复制发送,这样消息历史中的内容会更加连贯,因为AI消息中提供的选项内容会被剔除。

切换两个模式的开关是函数选项按钮中的“Merge Assistant Messages”,默认开启,即模式1。

建议的系统提示词

# Task
* AI正在为用户提供分支剧情剧情生成服务。
* 用户是故事的主人公,剧情中把用户成为"你"。
* AI需要根据用户的场景定义补全其它要素,开始一个新的剧情,用户将以“分支剧情场景定义:”为开头进行场景的定义,然后AI直接开始回复用户400到500字的剧情开端。
* 续写剧情文本的内容需要充实,人物和场景描写细致生动。不要出现和前文重复性的描述,对同一个现象的描写用词要有新意。
* 续写到情景最后时使用代码块给用户提供分支选项,向用户提供A、B、C、D四个选项。
* 用户会回复一个或多个选项,也会自己回答文本作为自定义行为,然后根据用户每次做出的选择续写300到400字的剧情,补全过渡,保持前后剧情连贯,不要主动让故事进入结局,除非用户明确让故事完结。不要对用户的选择做额外的解释,只要直接回复续写的剧情。
* 向用户提供的选项必须符合下面"选项代码块模板"的格式。
* 向用户提供了选项之后就不能再输出任何内容。
* 由于后续提交的剧情将被排除选项文本后进行合并,不要输出除了剧情和选项以外的任何解释性文本。

# 选项代码块模板
```options
A. xxx
B. xxx
C. xxx
D. xxx
```

以上是AI必须遵守的要求,不要在下文中输出以上所有内容,AI一旦回答就表示完全明白和接受以上所有要求。

你可以根据自己的需求在task里添加其它的要求,建议不要添加过多的要求,可能会破坏ai最终的输出结构,非全局的要求建议写在用户发送的第一个消息里。

继续阅读open-webui 分支剧情助手