如何在Flutter移动应用中调用Vertex AI API并获取gcloud访问令牌
在Flutter移动应用中调用Vertex AI API及获取gcloud访问令牌
一、获取gcloud访问令牌
通过gcloud命令行生成的访问令牌最长有效期为12小时,操作步骤如下:
- 确保已安装gcloud CLI并完成身份验证:
gcloud auth login - 执行以下命令生成访问令牌:
生成的令牌可直接用于Vertex AI API的请求授权,令牌过期后需重新生成。gcloud auth print-access-token
二、在Flutter中调用Vertex AI API
1. 添加网络请求依赖
在pubspec.yaml中添加http包以支持HTTP请求:
dependencies: flutter: sdk: flutter http: ^1.1.0
执行flutter pub get完成依赖安装。
2. 调用示例代码
将curl请求逻辑转换为Flutter的Dart代码,示例如下:
import 'dart:convert'; import 'package:http/http.dart' as http; Future<void> callVertexAI() async { const String modelId = "chat-bison"; const String projectId = "YOUR_PROJECT_ID"; // 替换为你的Google Cloud项目ID const String accessToken = "YOUR_GENERATED_TOKEN"; // 替换为gcloud生成的访问令牌 final Uri apiUri = Uri.parse( "https://us-central1-aiplatform.googleapis.com/v1/projects/$projectId/locations/us-central1/publishers/google/models/$modelId:predict"); final Map<String, dynamic> requestBody = { "instances": [ { "context": "My name is Ned. You are my personal assistant. My favorite movies are Lord of the Rings and Hobbit.", "examples": [ { "input": {"content": "Who do you work for?"}, "output": {"content": "I work for Ned."} }, { "input": {"content": "What do I like?"}, "output": {"content": "Ned likes watching movies."} } ], "messages": [ { "author": "user", "content": "Are my favorite movies based on a book series?" } ] } ], "parameters": { "temperature": 0.3, "maxOutputTokens": 200, "topP": 0.8, "topK": 40 } }; try { final http.Response response = await http.post( apiUri, headers: { "Authorization": "Bearer $accessToken", "Content-Type": "application/json", }, body: jsonEncode(requestBody), ); if (response.statusCode == 200) { print("请求成功:${response.body}"); // 这里可添加返回结果的解析逻辑 } else { print("请求失败,状态码:${response.statusCode},响应内容:${response.body}"); } } catch (e) { print("请求异常:$e"); } }
注意事项
- 生产环境中请勿硬编码访问令牌,建议通过安全机制存储并实现令牌的自动刷新逻辑。
- 确保你的Google Cloud项目已启用Vertex AI API,并配置了正确的权限。
内容的提问来源于stack exchange,提问作者user33629
相关产品推荐
相关产品推荐

