You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Flutter移动应用中调用Vertex AI API并获取gcloud访问令牌

在Flutter移动应用中调用Vertex AI API及获取gcloud访问令牌

一、获取gcloud访问令牌

通过gcloud命令行生成的访问令牌最长有效期为12小时,操作步骤如下:

  • 确保已安装gcloud CLI并完成身份验证:
    gcloud auth login
    
  • 执行以下命令生成访问令牌:
    gcloud auth print-access-token
    
    生成的令牌可直接用于Vertex AI API的请求授权,令牌过期后需重新生成。

二、在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 11:17:30