php对接大模型api实现流式输出,核心在于使用支持http分块传输编码(chunked transfer encoding)的客户端库,如guzzlehttp或swoole,并逐块读取响应体。以guzzle为例,通过设置`stream: true`参数发起请求,随后遍历返回的stream对象,实时获取并处理每个数据块,从而避免等待整个响应结束。

GuzzleHttp如何实现流式读取
在常规PHP环境中,使用GuzzleHttp客户端是处理流式响应的标准做法。关键在于构造请求时启用流模式,并在接收到响应后,利用其提供的Iterator接口逐块读取内容。这种方式能确保数据一旦到达服务器端即可被前端或业务逻辑处理,显著降低首屏延迟。

$client = new \GuzzleHttp\Client();
$request = $client->createRequest('POST', 'https://api.openai.com/v1/chat/completions', [
'headers' => [
'Authorization' => 'Bearer YOUR_API_KEY',
'Content-Type' => 'application/json'
],
'json' => [
'model' => 'gpt-3.5-turbo',
'messages' => [['role' => 'user', 'content' => 'Hello']],
'stream' => true
],
'stream' => true // 关键:启用流式响应
]);
$response = $client->send($request);
$stream = $response->getBody();
foreach ($stream as $chunk) {
echo $chunk; // 实时输出
}
Swoole协程如何优化流式性能
对于高并发场景,Swoole提供了更底层的控制能力。通过Swoole\Coroutine\HTTP\Client,可以在协程中建立连接并直接操作Socket流。相比Guzzle,Swoole减少了中间层开销,能够更高效地处理大量并发流式请求,适合构建高性能的AI网关服务。
大模型 Token 成本节约工具。在请求到达大模型之前自动压缩 prompt 和上下文,减少 60-95% 的 token 消耗,直接降低 API 成本。支持 Claude/OpenAI/Gemini 等主流模型,提供代理模式、CLI 包装、Python SDK 和 MCP Server 四种接入方式。内置一键安...

use Swoole\Coroutine;
use Swoole\Coroutine\HTTP\Client;
Coroutine::create(function () {
$http = new Client('api.openai.com', 443, true);
$http->set(['timeout' => 10]);
$body = json_encode([
'model' => 'gpt-3.5-turbo',
'messages' => [['role' => 'user', 'content' => 'Hi']],
'stream' => true
]);
$http->post('/v1/chat/completions', $body, [
'Authorization: Bearer YOUR_API_KEY',
'Content-Type: application/json'
]);
while (!$http->feof()) {
$data = $http->recv();
if ($data) {
echo $data;
}
}
});
如何处理SSE格式的数据解析
大多数大模型API采用Server-Sent Events (SSE) 格式返回流式数据。每行数据以`data:`开头,结尾为`\n\n`。开发者需要编写简单的解析逻辑,提取JSON字符串并解码。若遇到`[DONE]`标记,则表明流结束。这种解析方式简单高效,无需引入额外的复杂库。
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!










