Можно ли вызвать 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/
- Аутентификация в GCS:
gcloud auth login --brief --quiet
- Получить токен обновления:
REFRESH_TOKEN=$(gcloud auth print-access-token)
- Активировать токен обновления:
gcloud auth activate-refresh-token $REFRESH_TOKEN
Я открыл терминал с JupyterLab, над которым работаю. Мне удалось активировать токен обновления и получитьActivated refresh token credentials: [***]
после третьего шага. Затем я попытался использовать этот токен в качестве токена-носителя, но получил обратно код состояния HTTP 403 сForbidden
. То же самое, если я выполняю обычное (некраткое и нетихое)gcloud auth print-access-token
в этом терминале и тоже попробовал этот токен, но тоже получил 403.