0

我尝试使用官方 OpenAI npm 依赖项在 OpenAI 中使用 Javascript 实现聊天机器人。

我解决它的方法是,我有一组聊天消息,这些消息由换行符加入,并作为提示发送到 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()

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

4

1 回答 1

0

您需要使用 Base Series 模型davinci而不是 Instruct Series 模型text-davinci-001。Instruct Series 模型已经过训练,可以按照他们的指示去做,所以任何不是指令的提示都不会很好。

于 2022-02-19T19:51:20.377 回答