alsorunning
2023-02-19 00:55:29 +08:00
大家知道 openai 的模型输出是有字数限制的,不能超过 4000 个 token 。这 4000 token 是包含 prompt 的内容加 completion 的总和。
比方说,在 playground 中的 chat 示例,就是给定下面的文字当作 prompt:
```
The following is a conversation with an AI assistant. The assistant is helpful, creative, clever, and very friendly.
Human: Hello, who are you?
AI: I am an AI created by OpenAI. How can I help you today?
Human:
```
如果要实现对话的效果,就是让 ai 模型来续写这段文字。一旦 ai 写到 Human 这个关键字,就停下来等用户输入。这样塑造用户在与 ai 对话的错觉。
这么做的话一旦超过 4000 token ,就必须舍弃之前的内容。一般可以保留 prompt ,从最早的 completion 开始舍弃。这样的策略对于简短的问答 session 是可行的。不过,对于很长的对话却有问题。
比方说我做一个虚拟老婆,初始的人物设定放在 prompt 里没问题,不过更多人物设定是在对话中产生的,这些设定会随着内容增加。我又不希望这个模型在聊两天后把之前的设定忘了,这时候就有问题了。
我能想到的点子是:把每次 completion 的结果都当成 fine tuning ,一旦一个 session 超过 4000 token 后,就切换到 fine tuning 后的模型。
不知有没有做过这方面功能的前辈。望指点