ZStackAI平台不提供PHP SDK,需用cURL手动调用HTTP接口;关键三步是确认服务地址、路径与认证信息,设置Content-Type: application/json,检查响应头Content-Type;常见错误包括SSL证书问题、空响应、422错误及连接失败。

ZStackAI 平台不提供直接 PHP 调用的 SDK 或原生 API 文档
ZStackAI 是面向企业私有云场景的 AI 基础设施平台,其容器化模型服务(如部署 Llama3、Qwen 等)默认暴露的是标准 HTTP 接口(通常是 /v1/chat/completions 或自定义路径),而非专为 PHP 封装的客户端。PHP 本身没有官方支持 ZStackAI 的库,必须手动构造请求。
用 cURL 调通模型服务的关键三步
前提是:你已在 ZStackAI 控制台完成模型部署,并拿到服务地址(如 http://192.168.10.50:8080)、路由路径(如 /v1/chat/completions)、以及必要认证信息(如 X-API-Key 或 Bearer Token)。
- 确认服务是否启用 CORS(若前端直连需关注;PHP 后端调用可忽略)
- 检查响应头中是否有
Content-Type: application/json,否则json_decode()会失败 - 务必设置
Content-Type: application/json请求头,否则 ZStackAI 模型网关可能返回 400 或空响应
'qwen2-7b',
'messages' => [['role' => 'user', 'content' => '你好']],
'temperature' => 0.7,
];
$options = [
CURLOPT_URL => $url,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => json_encode($data),
CURLOPT_HTTPHEADER => [
'Content-Type: application/json',
'Authorization: Bearer ' . $token,
],
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
];
$ch = curl_init();
curl_setopt_array($ch, $options);
$response = curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($http_code === 200) {
$result = json_decode($response, true);
echo $result['choices'][0]['message']['content'] ?? '无响应内容';
} else {
echo "HTTP 错误: {$http_code}, 响应: {$response}";
}
?>
常见报错及对应排查点
ZStackAI 容器服务在 PHP 调用中高频出错位置集中在网络层与协议层,而非业务逻辑。
-
SSL certificate problem: unable to get local issuer certificate:本地 PHP cURL 缺少 CA 证书,临时加CURLOPT_SSL_VERIFYPEER => false(仅测试),生产环境应配置CURLOPT_CAINFO - 返回空字符串或
null:大概率是Content-Type没设对,或json_encode()输入含非 UTF-8 字符(如 GBK 中文) -
422 Unprocessable Entity:ZStackAI 模型网关校验失败,检查model名称是否与部署时完全一致(区分大小写、中划线),messages格式是否为数组套关联数组 - cURL error 7(Failed to connect):确认 PHP 所在服务器能访问 ZStackAI 服务 IP 和端口(防火墙、Pod 网络策略、Service ClusterIP 是否可达)
别把 ZStackAI 当 OpenAI 兼容层来用
虽然部分 ZStackAI 版本启用了 OpenAI API 兼容模式,但字段行为常有差异:
立即学习“PHP免费学习笔记(深入)”;
-
max_tokens可能被忽略,实际由平台侧限流策略控制 -
stream: true在 PHP 同步请求中无法消费流式响应,需改用curl_setopt($ch, CURLOPT_WRITEFUNCTION, ...)自定义写入回调 - 错误响应格式不统一:OpenAI 返回
{"error": {"message": "...", "type": "invalid_request_error"}},而 ZStackAI 可能返回纯文本或不同结构 JSON
最稳妥的方式是先用 curl -X POST 命令在 ZStackAI 服务器本地验证通路,再移植到 PHP —— 很多问题根本不在 PHP 代码里,而在模型服务没真正就绪或网络未打通。
