酒馆SillyTavern 的本质 发送给AI的数据格式

前面我们已经动手搭起来了自己的酒馆SillyTavern, 用免费的Gemini API运转了起来, 与AI开始了第1个故事. 

我们的酒馆SillyTavern是在命令行运行的, 所以可以通过命令行日志看到底层的运行.

比如, 当我发送了一句"出发! 前往断魂山脉! 获得月影草的最后一关考验."


命令行的日志是这样的.

这个"Streaming request finished"显示之后, 酒馆页面就开始显示AI回复的内容.

所以我们在命令行日志中, 两个"Streaming request finished"之间就是酒馆发送给AI的内容.

* 注 在screen中查看日志, 想上下翻页是不能直接使用 pageup pagedown的.
(当然你用鼠标拖动是可以的, 不过, 如果你是刚刚以 screen -r 恢复, xshell窗口里只会显示一屏信息, 鼠标拖动也没用)

Linux 在 screen 中查看日志 需要使用 Ctrl + A, [ 左方括号 

Linux 把 screen 中的日志保存出来也需要特别的办法


复制出来看看, 是个json结构, 大段的内容占空间, 我们放到json格式化工具中 

https://tool.chinaz.com/tools/jsoneditor.aspx (特意使用这个工具, 因为会自动给key添加"")

* 注意, 要把下图中所示的 "Streaming request finished" 删除, 再把 "Google AI Studio request:" 删除. 这样才是合格的JSON格式



我们来看看, 酒馆SillyTavern 发给 Gemini API 的是什么东西

首先可以看到, 数据分为4大块.

我们一个个打开来看看.

contents 部分就是曾经发生过的对话. 

能看到, 还区分出哪些是AI"说"的, 哪些是用户"说"的.


contents 部分的最后一组数据, 就是用户最后"说"的那句话.



接下来的部分是 safetySettings

看上去是一些开关配置项, 找点工具翻译一下. 可以看到是关闭 危险内容啊, 色情内容啊之类的限制.


再接着的部分是 generationConfig

不懂就先跳过, 哪天用得着的时候再来研究.


最后的部分是 systemInstruction

可以看到, 就是角色卡的角色描述部分.



总结起来, 就是说, 每次用户"说"一次话 (哪怕只有一句话甚至只有几个字), 酒馆都会构造这么一大段发给AI, 包括

从用户刚刚"说"的话往前的相当大的一段历史对话记录,
角色描述,
要求AI解除色情内容等一些限制,
还有一些其它参数.

AI就是在这么一大段的提示词下, 生成了一小段回复. 也就是最下面的, 最新的内容.



当然了, 我上面这些只是非常浅显地讲解. 酒馆还有很多复杂的精细的功能我没用过, 也不了解.

但是, 这些分析足够我们知道, 酒馆的本质就是如此. AI侧不会保存针对每个使用者的记忆, 使用者每次都需要带上足够的信息作为 prompt 才能让AI生成看上去符合"记忆"的新的一段话.

prompt 上下文长度是有限的, 所以从原理上说, 用AI写小说的长度越来越长, AI就会忘记更早的时候的内容, 新写出来的东西有可能会和比较早的内容毫无关系. 就算有一样的名词/角色, 也有可能会前后矛盾.

如果你想提升生成的质量, 那么就一定会用到更长的 prompt, 这样带来的是更高的使用成本和生成时间.


========

未完待续

========
请看我和AI对话讲的故事 PDF

评论

The Hot3 in Last 30 Days

RackNerd VPSXray Reality梯子 年付 $10.98 1G端口 3T流量 17G存储 1GB内存

丐版VPS 搭酒馆SillyTavern 使用Google Gemini免费API 和AI对话第一个故事

重装VPS系统时, 备份和恢复翻墙软件的配置文件 caddy v2ray xray hysteria2 / Caddyfile config.json config.yaml 域名证书