PlexPt / awesome-chatgpt-prompts-zh

ChatGPT 中文调教指南。各种场景使用指南。学习怎么让它听你的话。
https://chat.aimakex.com/
MIT License
51.47k stars 13.5k forks source link

> > 按照楼上各位的老哥的方案,结合api文档,使用gpt-3.5-turbo api把引导放到role: "system"设定中,100%稳定输出。 #83

Closed Zuolee closed 1 year ago

Zuolee commented 1 year ago
          > > 按照楼上各位的老哥的方案,结合api文档,使用gpt-3.5-turbo api把引导放到role: "system"设定中,100%稳定输出。

利用ddiu开源的网页版部署了一套放在cloudflare上 https://chatcat.pages.dev/,预设了一些角色,也可以通过自定义系统角色快速尝试。 需要使用自己的key

我通过 这个项目 研究了一下chatgpt的npm库,发现每个会话第一次启动的时候会附带一个默认的systemMessage, 内容是

You are ChatGPT, a large language model trained by OpenAI. Answer as concisely as possible.
Knowledge cutoff: 2021-09-01
Current date: ${currentDate}

并且每一句对话都会把systemMessage和最近的几个对话发给openai api 的 chatgpt来计算回答

但如果把引导放到systemMessage中,就可以稳定输出

从图上可以看出,每一次计算对话,systemMessage都会参与计算,但如果直接在对话中调教的话,多次对话之后,之前调教的内容就会被丢弃。

且可以发现 role 有三种,system代表会话的基础背景设定,user代表用户发给gpt的内容,assistant代表gpt发给用户的内容。每一次和gpt的对话,实质上就会通过计算这些内容来得到输出。

据此,我有一些设想,我们可以通过一边对话一边收集关键词的方式减少token的使用,同时可以让gpt容纳更多的“调教”。

另外,我发现在代码中有一点没有体现出来的是,在短时间内的连续多个不同会话会运行在同一个gpt“节点”上,这导致有时候会出现前一个会话调教的内容的部分出现在后一个新的对话中。但如果同一个会话中间的间隔时间较长时有时会切换节点导致后半段输出的内容和前半段有很大的差异。

这个是一个暂时没有证实的猜想。如果这个猜想成立,那么在出现同样的prompt无法调教的时候,可可以通过重新建立会话和间隔一段时间稍后再对话的方法来切换gpt的计算节点。

以上的研究都是在 这个修改过的telegram机器人 上进行的,欢迎共同研究

遇到一个错误,之前还是好了,更新了反而不行了

服务器端 Authentication failed for user

bot对话框 ⛔️ Sorry, you are not my owner. I cannot chat with you or execute your command.

好了,规则改了,必须用ID才行...

Originally posted by @DukeJerry in https://github.com/PlexPt/awesome-chatgpt-prompts-zh/issues/12#issuecomment-1475969213