Можно ли вызвать Google Imagen API из неинтерактивного серверного интерфейса?

Я собираюсь использовать Imagen в режиме QnA из неинтерактивной серверной части. Документация (https://console.cloud.google.com/vertex-ai/publishers/google/model-garden/imagetext-vqa?project=gdg-demos&cloudshell=true) заполняет токен носителя с помощью этой команды. Если я выполню это в облачной оболочке, я получу токен, но его нельзя будет использовать в неинтерактивной серверной части.

          base64_string = base64_bytes.decode(ENCODING)

    VQA_PROMPT = "Describe the content of the image in great detail"

    payload = {
      "instances": [
        {
          "prompt": VQA_PROMPT,
          "image": {
              "bytesBase64Encoded": base64_string
          }
        }
      ],
      "parameters": parameters
    }

    url = "https://us-central1-aiplatform.googleapis.com/v1/projects/gdg-demos/locations/us-central1/publishers/google/models/imagetext:predict"
    headers = {
        "Authorization": "Bearer {}".format(bearer_token),
        "Accept": "application/json; charset=utf-8",
    }
    json_data = requests.post(url, headers=headers, json=payload)

Я получаю ответ с кодом состояния HTTP 401:

      b'{
  "error": {
    "code": 401,
    "message": "Request had invalid authentication credentials. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.",
    "status": "UNAUTHENTICATED",
    "details": [
      {
        "@type": "type.googleapis.com/google.rpc.ErrorInfo",
        "reason": "ACCESS_TOKEN_TYPE_UNSUPPORTED",
        "metadata": {
          "service": "aiplatform.googleapis.com",
          "method": "google.cloud.aiplatform.v1.PredictionService.Predict"
        }
      }
    ]
  }
}'

Я попробовал https://saturncloud.io/blog/authenticate-to-google-container-service-with-script-noninteractive-gcloud-auth-login/

  1. Аутентификация в GCS:gcloud auth login --brief --quiet
  2. Получить токен обновления:REFRESH_TOKEN=$(gcloud auth print-access-token)
  3. Активировать токен обновления:gcloud auth activate-refresh-token $REFRESH_TOKEN

Я открыл терминал с JupyterLab, над которым работаю. Мне удалось активировать токен обновления и получитьActivated refresh token credentials: [***]после третьего шага. Затем я попытался использовать этот токен в качестве токена-носителя, но получил обратно код состояния HTTP 403 сForbidden. То же самое, если я выполняю обычное (некраткое и нетихое)gcloud auth print-access-tokenв этом терминале и тоже попробовал этот токен, но тоже получил 403.

0 ответов