可以使用OpenAI API的stream参数来实现流式输出,并且可以使用max_tokens参数控制每次返回数据的长度。 以下是一个示例代码,演示如何使用OpenAI API来实现流式输出并分段加载: - <?php // 请求OpenAI接口获取stream数据,并转发到H5页面端
- $openAIUrl = 'https://api.openai.com/v1/engines/davinci-codex/completions'; $headers = array( 'Content-Type: application/json', 'Authorization: Bearer <YOUR_API_KEY>' );
- $data = array( 'prompt' => 'Hello, world!', 'max_tokens' => 5, 'temperature' => 0.7 );
- $ch = curl_init();
- curl_setopt($ch, CURLOPT_URL, $openAIUrl);
- curl_setopt($ch, CURLOPT_POST, true);
- curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
- curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
- curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
- $output = fopen('php://output', 'w');
- curl_setopt($ch, CURLOPT_WRITEFUNCTION, function ($ch, $chunk) use ($output) { fwrite($output, $chunk);
- return strlen($chunk); });
- curl_exec($ch);
- fclose($output); // 将stream数据转发给H5页面端
- header('Content-Type: text/event-stream');
- header('Cache-Control: no-cache');
- header('Connection: keep-alive');
- header('Access-Control-Allow-Origin: *');
- fpassthru($output);
复制代码
参考教程
- https://blog.csdn.net/Climbman/article/details/129920946
- https://www.coder.work/article/8058412
|
|