php 开放AI GPT-3模型通过API返回糟糕的结果,但在Playground中工作正常

ev7lccsx  于 2023-02-28  发布在  PHP
关注(0)|答案(1)|浏览(210)

我正在尝试使用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和代码中的工作方式有什么不同吗?

szqfcxe2

szqfcxe21#

Troubleshooting discrepancies between Playground vs. the OpenAI API:
1.**将temperature参数设置为0。**如果将temperature参数设置为大于0,则模型每次可能会生成不同的结果-这是预期行为。
1.**检查您的提示符是否完全相同。**即使是微小的差异,如额外的空格或换行符,也可能导致不同的输出。
1.**确保在这两种情况下使用相同的参数。**例如,即使使用相同的提示符,设置为davincitext-davinci-002的模型参数也会产生不同的完成,因为text-davinci-002是更新的、更有能力的指令遵循模型。
1.**尝试将型号从text-ada-001更改为text-davinci-003,因为它是功能最强的GPT-3型号。**这可能与型号有关。

相关问题