已部署至Google Vertex AI的ML模型能否通过浏览器发送HTTP请求获取预测结果?
从浏览器向Vertex AI部署的模型发送预测请求的实现方案
当然可以实现从浏览器向你部署在Vertex AI上的ML模型发送预测请求,但直接用你提到的那种简单URL参数形式(http://myapp.cloud.google.com/input="features of an example")是行不通的——因为Vertex AI的预测API有特定的请求规范,而且直接在浏览器端处理认证会带来严重的安全风险。下面给你两种实用的实现方式:
一、通过中间层服务调用(推荐用于生产环境)
这是最安全且通用的方案,核心思路是用一个轻量的后端服务(比如Cloud Functions或Cloud Run)作为桥梁,帮你处理认证、请求格式转换,以及和Vertex AI模型的交互。
具体步骤:
- 编写中间层服务:创建一个Cloud Functions或Cloud Run服务,接收浏览器传来的URL参数(比如
/predict?features=xxx),将参数转换成Vertex AI要求的输入格式(通常是JSON数组的instances字段)。
- 编写中间层服务:创建一个Cloud Functions或Cloud Run服务,接收浏览器传来的URL参数(比如
- 处理认证与预测请求:在中间层服务中使用Vertex AI的客户端库(Python/Node.js等)或者直接调用REST API,通过服务账号密钥完成认证,向模型Endpoint发送预测请求。
- 返回结果:将模型返回的预测结果处理后,返回给浏览器。
示例代码(Cloud Functions Python版):
import functions_framework from google.cloud import aiplatform # 初始化Vertex AI客户端(建议在函数外部初始化以提升性能) aiplatform.init(project="你的项目ID", location="你的区域(如us-central1)") endpoint = aiplatform.Endpoint("你的Endpoint ID") @functions_framework.http def predict(request): # 获取浏览器传来的features参数 features = request.args.get('features') if not features: return "缺少必填参数:features", 400 # 转换为模型要求的输入格式(根据你的模型输入结构调整) instances = [{"input_text": features}] # 发送预测请求 prediction = endpoint.predict(instances=instances) # 返回预测结果 return {"prediction": prediction.predictions[0]}
部署这个Cloud Function后,你就可以在浏览器中访问类似 https://你的函数域名/predict?features=你的示例特征 的URL,直接获取JSON格式的预测结果了。
二、直接在浏览器调用Vertex AI API(仅用于测试)
如果你只是做本地测试,不想搭建中间层,也可以直接在浏览器中调用Vertex AI的预测API,但绝对不能在生产环境使用这种方式——因为需要暴露API密钥或认证令牌,极易被滥用,导致不必要的成本损失。
测试用实现(JavaScript Fetch API):
async function fetchPrediction() { const inputFeatures = "features of an example"; // 替换为你的项目、区域和Endpoint信息 const apiUrl = "https://你的区域-aiplatform.googleapis.com/v1/projects/你的项目ID/locations/你的区域/endpoints/你的Endpoint ID:predict"; // 替换为你的API密钥(在Cloud控制台创建并限制仅用于Vertex AI) const apiKey = "你的API密钥"; try { const response = await fetch(`${apiUrl}?key=${apiKey}`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ instances: [{"input_text": inputFeatures}] // 匹配你的模型输入结构 }) }); const result = await response.json(); console.log("预测结果:", result); // 在这里处理并展示结果给用户 } catch (error) { console.error("请求出错:", error); } }
注意事项:
- 必须在Cloud控制台创建API密钥,并严格限制其使用范围(仅允许调用Vertex AI的预测API),降低泄露后的风险。
- 这种方式只适合短期测试,生产环境一定要用中间层方案。
内容的提问来源于stack exchange,提问作者Sanyo Mn
相关产品推荐
相关产品推荐

