php - OpenAI GPT-3 API : Why am I getting different completions on Playground vs. API?

标签 php artificial-intelligence openai-api gpt-3

我正在尝试使用 OpenAi 的 Ada 语言处理器来总结一段文字。 当我尝试使用他们的 playground 时,该功能起作用了,我得到了一个有意义且可供人类使用的摘要。

OpenAI Playground

这是来自 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 代码时,它停止工作,或者更好的说法是它可以工作,但它返回完全无意义的内容,与 playground 的结果完全不同。

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但它也返回了与以前相同的废话。我说的是废话,因为它返回的文本不是可以阅读并说“嘿,这是专业概要”的东西。我将举一个我在其中一次迭代中得到的句子的例子:

'这不漂亮,不,我心想,哦,看,这不是共和国的 child 会知道这些事情之一。哦,这是一所限制性学校”。

我可以向您保证,我正在处理的文本中没有提及共和党人或 child 。

我的问题是,我做错了什么吗? OpenAi 在他们的 playground 和代码中的工作方式是否不同?

最佳答案

Troubleshooting discrepancies between Playground vs. the OpenAI API:

  1. 温度参数设置为0如果温度参数设置在0,模型可能每次都会产生不同的结果 - 这是预期的行为。
  2. 检查您的提示是否完全相同。即使是细微的差异(例如额外的空格或换行符)也可能导致不同的输出。
  3. 确保您在两种情况下使用相同的参数。例如,模型参数设置为 davincitext-davinci-002 即使使用相同的提示也会产生不同的完成,因为 text-davinci-002 是一种更新且功能更强大的指令遵循模型。
  4. 尝试将模型从 text-ada-001 更改为 text-davinci-003,因为它是最强大的 GPT-3 模型。 可能与型号有关。

关于php - OpenAI GPT-3 API : Why am I getting different completions on Playground vs. API?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75106599/

相关文章:

python - 在OCR python中占 'i'和 'j'点

python - OpenAI ChatGPT (GPT-3.5) API 错误 429 : "You exceeded your current quota, please check your plan and billing details"

openai-api - NodeJS 中的 OpenAI API : How do I migrate from text-davinci-003 to gpt-3. 5-turbo?

azure - 有一个官方的 OpenAI nuget 包可以使用它的 api 吗?

php - 在下面的示例中将 mysql 转换为 mysqli

php - Wordpress next_post_link/previous_post_link 不在同一类别

Google 无法抓取 PHP 生成的图像?

artificial-intelligence - 蒙特卡洛树 搜索 Belot 和 Bridge 等纸牌游戏

php - Codeigniter 滚动分页

python - 迭代加深深度优先搜索算法中的最优性错误