WordPress文本摘要调用Google Cloud Vertex AI遇403 CONSUMER_INVALID错误排查
问题排查与修复方案
1. 修复API端点的变量拼接错误
你的代码中$endpoint的拼接存在语法错误:在双引号字符串中误用单引号包裹变量并通过.连接,导致变量无法被正确解析,最终请求的项目名变成了'.$project.'(即错误提示中的.my-posts-data-optimization.),这是触发CONSUMER_INVALID错误的核心原因。
将端点代码修改为以下两种正确写法之一:
// 写法1:双引号中直接使用变量插值 $endpoint = "https://us-central1-aiplatform.googleapis.com/v1/projects/{$project}/locations/{$location}/publishers/{$publisher}/models/{$model}:predict"; // 写法2:单引号字符串拼接变量 $endpoint = 'https://us-central1-aiplatform.googleapis.com/v1/projects/' . $project . '/locations/' . $location . '/publishers/' . $publisher . '/models/' . $model . ':predict';
2. 确认Vertex AI API已启用
即使IAM角色配置正确,如果项目未启用Vertex AI API,也会触发权限拒绝错误。登录Google Cloud控制台,进入API和服务 > 库,搜索并确认Vertex AI API已处于启用状态。
3. 验证服务账号角色的分配范围
检查服务账号php-call@my-posts-data-optimization.iam.gserviceaccount.com的角色分配:
- 确保
AI Platform Admin和Vertex AI User角色是直接分配给该账号,而非通过用户组间接分配 - 确认角色的权限范围是当前项目
my-posts-data-optimization,没有被限制在组织或其他项目层级
4. 检查模型端点的兼容性
Gemini 1.5 Flash模型在Vertex AI上推荐使用generateContent端点而非predict端点,你可以尝试调整端点路径为:
$endpoint = "https://us-central1-aiplatform.googleapis.com/v1/projects/{$project}/locations/{$location}/publishers/{$publisher}/models/{$model}:generateContent";
同时对应的请求体格式需要调整为符合generateContent的要求:
$requestBody = [ "contents" => [ [ "parts" => [ ["text" => $text_to_summarize] ] ] ], "generationConfig" => [ "temperature" => 0.7, "maxOutputTokens" => 100, "topP" => 0.8, "topK" => 40 ] ];
响应解析也需要对应修改:
return $responseBody['candidates'][0]['content']['parts'][0]['text'];
内容的提问来源于stack exchange,提问作者theKing
相关产品推荐
相关产品推荐

