需先获取API密钥、用Composer安装volcengine/volc-sdk-php,再通过DeepseekClient或手动cURL发送带V4签名的POST请求,最后非阻塞读取SSE流并解析choices[0].delta.content提取文本。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

要在PHP项目中调用火山引擎DeepSeek API完成文本生成任务,需先获取有效API密钥、构造符合规范的HTTP请求,并正确处理返回的JSON流式响应。
准备认证凭证与基础配置
登录火山引擎控制台 → 进入「API密钥管理」→ 创建新密钥 → 复制AccessKey ID和SecretAccessKey。
使用火山引擎官方SDK前,必须通过Composer安装最新版volcengine/volc-sdk-php:运行composer require volcengine/volc-sdk-php。若跳过此步直接手写cURL,后续签名计算将因缺少Volc\Signer\V4Signer而失败。
在代码开头引入SDK自动加载器:require 'vendor/autoload.php';
立即学习“PHP免费学习笔记(深入)”;
构造并发送带V4签名的POST请求
方法一:使用VolcEngine SDK封装的DeepseekClient
初始化客户端时必须传入区域(Region)参数,DeepSeek服务仅在cn-north-1区域可用,填错会导致403 Forbidden错误:$client = new \Volc\OpenApi\DeepseekClient(['region' => 'cn-north-1']);
调用chatCompletion方法,传入模型名deepseek-chat、消息数组及temperature等参数;SDK会自动完成V4签名、Header组装和JSON序列化。
方法二:纯cURL手动发起请求(适合调试或轻量集成)
第一步:拼接待签名字符串——按GET\n/\n\nhost:api.volcengine.com\nx-date:20240520T120000Z\n格式逐行生成,注意换行符必须为\n而非\r\n,否则签名验证失败。
第二步:用SecretAccessKey对签名字符串进行HMAC-SHA256计算,再Base64编码得到Signature值。
第三步:将Authorization头设为HMAC-SHA256 Credential=AKLXxxx/20240520/cn-north-1/iam/request, SignedHeaders=host;x-date, Signature=<strong>【此处必须是Base64编码后的签名结果】</strong>。
第四步:设置Content-Type: application/json,body为标准OpenAI格式JSON,包含model、messages、stream字段。
解析流式响应并提取文本
DeepSeek API默认返回text/event-stream格式的SSE数据,每行以data:开头,末尾带双换行符。PHP需逐行读取响应流,过滤空行和data:前缀,再用json_decode()解析每段JSON。
关键点:不能用file_get_contents()一次性读取,必须用fopen()配合stream_set_blocking($fp, false)实现非阻塞读取,否则会卡在首条data:之后无法继续接收后续chunk。
每次解析出的JSON中,有效文本位于choices[0].delta.content路径下;当该字段为空字符串且choices[0].finish_reason === "stop"时,表示流已结束。



















