以下是我的 PHP Curl 脚本,用于向 Open AI 发送 POST 请求,目前一切正常。
我想能够从 POST 数据中设置值,像这样。
$getOpenAITemperature = $_POST[OpenAITemperature]; $getmaxtokens = $_POST[OpenAIMaximumLength]; $getTopp = $_POST[OpenAITopP];`
但当我这样做时,POST 值会被添加引号,导致脚本停止工作。
像这样。
$postData = [ 'model' => $getOpenAIModel, 'prompt' => $getRequest, 'temperature' => "0.24", 'max_tokens => "250", 'top_p' => "1",
但为了正常工作,它需要看起来像这样。
$postData = [ 'model' => $getOpenAIModel, 'prompt' => $getRequest, 'temperature' => 0.24, 'max_tokens => 250, 'top_p' => 1,
如何移除数字周围的引号?模型和提示的引号没问题,只需要处理数字的引号。
*** 下面的脚本工作正常 ***
$getOpenAITemperature = 0.5; $getmax_tokens = 250; $gettop_p = 1; $OPENAI_API_KEY = "sk-123"; $getOpenAIModel = "text-davinci-003"; $getRequest "My Question"; $ch = curl_init(); $headers = [ 'Accept: application/json', 'Content-Type: application/json', 'Authorization: Bearer '.$OPENAI_API_KEY.'' ]; $postData = [ 'model' => $getOpenAIModel, 'prompt' => $getRequest, 'temperature' => $getOpenAITemperature, 'max_tokens' => $getTopp, 'top_p' => $getmaxtokens, 'best_of' => 2, 'frequency_penalty' => 0.0, 'presence_penalty' => 0.0, 'stop' => '["\n"]', ]; curl_setopt($ch, CURLOPT_URL, 'https://api.openai.com/v1/completions'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($postData)); $result = curl_exec($ch);`
我尝试过很多方法,如 PHP 的 trim() 和 str_replace,但都没有效果。
回答:
你可以将字符串转换为 int 或 float,像这样:
$postData['temperature'] = (float) $postData['temperature'];$postData['max_tokens'] = (int) $postData['max_tokens'];
查看 PHP 文档了解类型转换https://www.php.net/manual/en/language.types.type-juggling.php#language.types.typecasting