我正在尝试使用OpenAi的Ada语言处理器对一段文本进行摘要,当我尝试使用他们的Playground时,函数工作,我得到了一个有意义的摘要,可以被人类使用。
这是来自操场的cURL:
curl https://api.openai.com/v1/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "text-ada-001",
"prompt": "Please write a one paragraph professional synopsis:\n\nSome text",
"temperature": 0,
"max_tokens": 60,
"top_p": 1,
"frequency_penalty": 0,
"presence_penalty": 0
}'
当我把这个cURL转换成PHP代码时,它停止工作了,或者更好地说,它工作了,但是它返回了完全没有意义的结果,与操场上的结果完全不同。
PHP代码:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://api.openai.com/v1/completions');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
$postFields = '{
"model": "text-ada-001",
"prompt": "Please write a one paragraph professional synopsis: ' . $text . '",
"temperature": 0,
"max_tokens": 500,
"top_p": 1,
"frequency_penalty": 0,
"presence_penalty": 0
}';
curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields);
$headers = array();
$headers[] = 'Content-Type: application/json';
$headers[] = 'Authorization: Bearer ' . $api_key;
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$result = curl_exec($ch);
if (curl_errno($ch)) {
echo 'Error:' . curl_error($ch);
}
curl_close($ch);
return $result;
现在,我尝试使用像这样的json代码,并编写一个PHP数组并将其转换为json,结果相同。我也尝试使用library,但它也返回了与之前相同的废话。我之所以说废话,是因为它返回的文本不是可以阅读和说"嘿,这是一个专业概要。我将举一个例子,我在其中一次迭代中得到的一个句子:
"这并不漂亮,不,我想,哦,看,这并不是说共和党的孩子不知道这些事情。哦,这是一个严格的学校。"
我可以向你保证,我正在处理的文本中没有提到共和党人或儿童。
我的问题是,我做错了什么吗?OpenAi在他们的Playground和代码中的工作方式有什么不同吗?
1条答案
按热度按时间szqfcxe21#
Troubleshooting discrepancies between Playground vs. the OpenAI API:
1.**将
temperature
参数设置为0
。**如果将temperature
参数设置为大于0
,则模型每次可能会生成不同的结果-这是预期行为。1.**检查您的提示符是否完全相同。**即使是微小的差异,如额外的空格或换行符,也可能导致不同的输出。
1.**确保在这两种情况下使用相同的参数。**例如,即使使用相同的提示符,设置为
davinci
和text-davinci-002
的模型参数也会产生不同的完成,因为text-davinci-002
是更新的、更有能力的指令遵循模型。1.**尝试将型号从
text-ada-001
更改为text-davinci-003
,因为它是功能最强的GPT-3型号。**这可能与型号有关。