我尝试使用官方 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()
我当然也尝试过不同的温度和惩罚组合。这只是一个已知问题,还是我误解了什么?