题意:使用 OpenAI 的 PHP SDK(例如 openai-php)来在函数内部设置和完成一个流(stream)相关的变量
问题背景:
How to set variable inside this openai-php sdk function in stream completion ? I am using this open-ai library
如何使用 openai-php SDK 在流完成(stream completion)的函数内部设置变量?我正在使用这个 open-ai 库。
https://github.com/orhanerday/open-ai
This is the code :
php
$client->completion($configuration, function ($curl_info, $data) {
$response = ""; // This Variable Keep Init Because it is looping in this function
$cleanJson = str_replace("data: ", "", $data);
if ($data != "data: [DONE]\n\n") {
$arrayData = json_decode($cleanJson, true);
$response = $response . $arrayData['choices'][0]['text']; // <= I cannot save all the content data to variable $response because it's keep replaced
} else {
echo "ITS DONE";
}
ob_flush();
flush();
return strlen($data);
});
I cannot define variable outside client-\>completion** function. Because it will not detect inside **client->completion function.
我无法在 $client->completion
函数之外定义变量,因为该变量在 $client->completion
函数内部不会被检测到。
What I want is I can pass the variable outside to $client->completion function.
我想要的是我能将变量从外部传递到 $client->completion
函数中。
example : 示例
php
$client->completion($configuration, function ($curl_info, $data, $response, $other) {
});
That example give an error. 示例报错
How do I pass the response** or **other variable in the $client->Completion ?
如何将 $response
或 $other
变量传递给 $client->Completion
问题解决:
Found the correct way. This is the correct one to pass the variable :
找到了正确的方法。这是传递变量的正确方式:
php
$Response = "";
$client->completion($configuration, function ($curl_info, $data) use (&$Response) {
$Response = "something here";
});