NodeJS OPENAI API完成不返回文本

wrrgggsh  于 2023-05-06  发布在  Node.js
关注(0)|答案(3)|浏览(324)

我正在使用node.js并希望使用openai API
我刚从openaiPlayground复制了代码,看起来像这样

export const askOpenAi = async () => {
const response = await openai.createCompletion("text-davinci-001", {
    prompt: "\ninput: What is human life expectancy in the United States?\n",
    temperature: 0,
    max_tokens: 100,
    top_p: 1,
    frequency_penalty: 0,
    presence_penalty: 0,
    stop: ["\n", "\ninput:"],
});
return response.data;
}

openai的返回数据如下所示

{
  id: '~~~',
  object: 'text_completion',
  created: ~~~,
  model: 'text-davinci:001',
  choices: [ { text: '', index: 0, logprobs: null, finish_reason: 'stop' } ]
}

在操场上,这段代码运行得很好。

我怎样才能得到正确的回应?

m1m5dgzv

m1m5dgzv1#

应该是这样的:

export const askOpenAi = async () => {
const prompt = `input: What is human life expectancy in the United States?
output:`
const response = await openai.createCompletion("text-davinci-001", {
    prompt: prompt,
    temperature: 0,
    max_tokens: 100,
    top_p: 1,
    frequency_penalty: 0,
    presence_penalty: 0,
    stop: ["input:"],
});
return response.data;
}

在这里,首先,从停止数组中删除\n,因为这样它将在每个换行符之后停止完成(任何答案都可能在多行中)。第二,在input:之前不需要额外添加\n。其实没关系。
最后,请记住通过添加输出给予一些关于预期完成的提示:在你最后的提示。
顺便说一句,这些类型的问题也可以通过openAI的新指令模式来完成。

const prompt = `Answer the following question:
What is human life expectancy in the United States?
{}`
const response = await openai.createCompletion("text-davinci-001", {
    prompt: prompt,
    temperature: .7,
    max_tokens: 100,
    top_p: 1,
    frequency_penalty: 0,
    presence_penalty: 0,
    stop: ["{}"],
});
vuv7lop3

vuv7lop32#

只需将stop: ["\n"]更改为不同的内容。在我的情况下工作!

mrphzbgm

mrphzbgm3#

我也有同样的问题。对我来说,解决这个问题的方法是在提示符的末尾添加一个空格(不是\n{}),并从请求参数中完全省略stop键。

相关问题