ChatGPT-3 OpenAI API重复完成,没有变化

mtb9vblg  于 2023-03-03  发布在  其他
关注(0)|答案(1)|浏览(305)

我尝试过使用官方的OpenAI npm依赖项,用Javascript在OpenAI中实现聊天机器人。
我解决这个问题的方法是,我有一个聊天消息数组,通过换行符连接,并作为提示发送到API。
示例:

arr.push("This is a conversation between you and an AI")
arr.push("You: Hello, how are you doing")
arr.push("AI: I'm great, how about you?")
arr.push("You: I'm good, thanks!")

然后,我将下一个问题推送到数组,再推一个空的"AI:"字符串,让OpenAI端点完成。
API完成后的提示如下所示

This is a conversation between you and an AI
You: Hello, how are you doing
AI: I'm great, how about you?
You: I'm good, thanks!
You: How's the weather today?
AI:

然后,响应也将被推送到阵列,因此对话可以继续...(此时我只发送数组中的最后~20行)然而,我遇到的问题是"机器人"会开始重复自己,似乎是随机的时候它会开始回答类似"太好了,你呢?"的问题,无论你在提示中作为最后一个问题发送什么,那都将是答案"
示例:

This is a conversation between you and an AI
You: Hello, how are you doing
AI: I'm great, how about you?
You: I'm good, thanks!
You: How's the weather today?
AI: It is looking great!
You: That's nice, any plans for today?
AI: It is looking great!
You: What are you talking about?
AI: It is looking great!

我在文档中找到的唯一相关的东西似乎是frequency_penalty和presence_penalty。然而,更改这些似乎没有多大作用。
这是用于以上示例的参数:

const completion = await openai.createCompletion("text-davinci-001", {
        prompt: p,
        max_tokens: 200,
        temperature: 0.6,
        frequency_penalty: 1.5,
        presence_penalty: 1.2,

    });

    return completion.data.choices[0].text.trim()

我当然也尝试过不同的温度和处罚组合,这只是一个已知的问题,还是我误解了什么?

7d7tgy0s

7d7tgy0s1#

频率和存在惩罚的最大值为1 -我不知道API如何处理超过这个值。
试试text-davinci-003,最新版本(截至2023年1月19日)--这是聊天机器人提示的official example,温度设置为.9是为了创造力,在线惩罚为.6是为了避免主题重复。
not recommended,您可以尝试基本系列型号davinci,这是一个有点松散的佳能。

相关问题