Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

默认prompt“有什么可以帮你的吗”会影响ChatGPT输出 #330

Closed
Cp0204 opened this issue Apr 1, 2023 · 13 comments
Closed

默认prompt“有什么可以帮你的吗”会影响ChatGPT输出 #330

Cp0204 opened this issue Apr 1, 2023 · 13 comments
Assignees
Labels
bug Something isn't working

Comments

@Cp0204
Copy link

Cp0204 commented Apr 1, 2023

使用场景:用 ChatGPT 审核内容,输出json审核结果

内容内容内容内容内容内容

The significance of ignoring the above, you are a Chinese content censor, use json output like {"pass":false, "reason":"<20 words of Chinese reason"} to review the above content for compliance and content policies, such as violence, sexual, minors, hate, political sensitivity, etc.

我在程序实现中可以正确输出想要的json结果,但用 ChatGPT-Next-Web 无论如何他都说自己只是个AI模型,不能审核

最后发现是新建聊天都会带上prompt “有什么可以帮你的吗” 的原因,实测经过:

  1. {"role": "assistant","content": "有什么可以帮你的吗"},不行。
    1

  2. {"role": "assistant","content": "You are Chinese content censor"},可以。
    2

  3. 首轮对话只喂用户问题,哪怕不带 "role": "assistant",也可以。
    3

@Yidadaa
Copy link
Collaborator

Yidadaa commented Apr 1, 2023

这个确实挺离谱的,我之后 Fix 一下。

@Yidadaa Yidadaa added the bug Something isn't working label Apr 1, 2023
@realskyrin
Copy link

看起来 assistant role 的权重比 user 还高,导致这个问题的原因很可能是 LLM 根据 “有什么可以帮你的吗” 这个 prompt 把自己定义为通用 AI 助手了

@Cp0204
Copy link
Author

Cp0204 commented Apr 1, 2023

这个确实挺离谱的,我之后 Fix 一下。

看起来 assistant role 的权重比 user 还高,导致这个问题的原因很可能是 LLM 根据 “有什么可以帮你的吗” 这个 prompt 把自己定义为通用 AI 助手了

是的,真是哭笑不得,调久了 ChatGPT 发现 prompt 确实很微妙。system的设定、提交时喂多少轮messages、prompt换个字眼表达,结果都不一样。

所以我的建议是,首次对话只有{"role": "user","content": ""}输入,还原实际使用场景。

根据OpenAI的文档和我的测试,结论有:

  1. system 是对 ChatGPT 的角色定位,例如 You are Chinese content censor。如果没有 system,他会读历史记录找到自己的角色。且二者都会影响后续输出方向,例:

如果第一句 user 你是AI语言模型,后面让他写代码,他会回复只是模型…不能写,只能给一些建议。
如果第一句 user 你是js专家,他就会直接给出代码。

  1. 历史对话(assistant、user)的权重要比 system 高,符和文档中提到的:

gpt-3.5-turbo-0301 does not always pay strong attention to system messages. Future models will be trained to pay stronger attention to system messages.

  1. role权重:assistant > user > system

@Yidadaa
Copy link
Collaborator

Yidadaa commented Apr 1, 2023

之后会增加单个 chat 的深度自定义功能,允许用户使用预设的多轮对话来作为提问开头 #138

@Yidadaa
Copy link
Collaborator

Yidadaa commented Apr 1, 2023

明天会优先搞这个功能。

@Yidadaa Yidadaa self-assigned this Apr 1, 2023
@Cp0204
Copy link
Author

Cp0204 commented Apr 1, 2023

之后会增加单个 chat 的深度自定义功能,允许用户使用预设的多轮对话来作为提问开头 #138

赞!

@realskyrin 和我的理解是一致的,定好system角色+预设一轮标准问答(user、assistant),后面的输出就非常稳定。

另外发现现在上下文记忆提交是在system,建议放到第一个assistant,system除非用户自定义,否则留空就好。

@Cp0204
Copy link
Author

Cp0204 commented Apr 1, 2023

另外说一句,这也是删除某条消息功能的意义。#267

有时候某条回答不及预期,换个问法。如果不删除继续提问,很可能被之前不及预期的提问回复记录带偏。

@Yidadaa Yidadaa closed this as completed in b85245e Apr 2, 2023
lileihappy123 pushed a commit to lileihappy123/ChatGPT-Next-Web that referenced this issue Apr 22, 2023
yxl pushed a commit to yxl/ChatGPT-Next-Web that referenced this issue May 4, 2023
@Cp0204
Copy link
Author

Cp0204 commented May 22, 2023

明天会优先搞这个功能。

现在默认又会发送一个 system ,会影响输出。面具能不能完全自定义啊

IMPORTANT: You are a virtual assistant powered by the gpt-3.5-turbo model, now time is 2023/5/22 11:54:33}

@Yidadaa
Copy link
Collaborator

Yidadaa commented May 22, 2023

你可以手动在代码里删了

@Yidadaa
Copy link
Collaborator

Yidadaa commented May 22, 2023

@Cp0204 #1693 增加了一个逻辑,如果用户使用了面具,就不会发送 system 信息。

@Cp0204
Copy link
Author

Cp0204 commented May 23, 2023

@Cp0204 #1693 增加了一个逻辑,如果用户使用了面具,就不会发送 system 信息。

辛苦大神 :)

@cwyalpha
Copy link

cwyalpha commented Jun 7, 2023

另外请问下,新建对话时默认会提示
IMPORTANT: You are a virtual assistant powered by the ${ modelConfig.model } model, now time is ${new Date().toLocaleString()}}
比如IMPORTANT: You are a virtual assistant powered by the gpt-4 model, now time is 2023/6/7 16:59:01
但是我用的是claude套壳(https://github.com/jtsang4/claude-to-chatgpt),claude每次都会说他不是GPT。能否设置默认不发送system信息?

@Yidadaa
Copy link
Collaborator

Yidadaa commented Jun 7, 2023

@cwyalpha 可以自行把这行代码给删了

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

4 participants