Usando uma função JavaScript do Firebase para executar um modelo no Google Cloud Platform
Digamos que você tenha um projeto do Firebase associado ao seu aplicativo e tenha criado um modelo de aprendizado de máquina no mesmo projeto no Google Cloud Platform (GCP). Agora você deve estar se perguntando como realizar a inferência usando o modelo no GCP, por meio da autenticação do Firebase no aplicativo. Você pode usar uma função JavaScript Firebase para fazer isso.
(Isso foi testado com Ubuntu 18.04 e Node.js 14)
0. Pré-requisitos
- Um projeto do Firebase associado ao seu aplicativo (por exemplo — ID do projeto = {PROJECT_ID})
- Um modelo de machine learning no mesmo projeto {PROJECT_ID} no GCP
- Node.js 14 e npm (você pode instalá-los usando nvm )
Abra um terminal e execute o seguinte.
npm install -g firebase-tools
Suponha que o diretório do projeto local seja {LOCAL_DIR} no Desktop. Crie-o e navegue até ele.
mkdir -p ~/Desktop/{LOCAL_DIR}
cd ~/Desktop/{LOCAL_DIR}
Execute os seguintes comandos, um por um, com cuidado, consultando as notas abaixo deles como um guia sobre como navegar pelos prompts gerados por eles.
firebase login
firebase init firestore
firebase init functions
- Você será solicitado a fazer login através do navegador e autenticar.
- Escolha o projeto Firebase correto ( {PROJECT_ID} ) quando solicitado.
- Escolha JavaScript (js) como o idioma.
- “ elsint ” não é necessário para isso.
- Escolha sim para instalar as dependências.
Vamos precisar do pacote googleapis .
cd ~/Desktop/{LOCAL_DIR}/functions
npm i googleapis
Abra “ {LOCAL_DIR}/functions/package.json” com seu IDE preferido (por exemplo — VS Code) e edite a seção “ engines ” da seguinte forma.
"engines": {
"node": "14"
},
Abra “ {LOCAL_DIR}/functions/index.js” com seu IDE preferido.
Vamos definir os seguintes termos. Você deve substituí-los por seus dados.
- Nome do modelo = {MODEL_NAME}
- Model region = {MODEL_REGION} — (Certifique-se de que a região do modelo é a mesma que a região da função; especialmente para melhor desempenho. Padrão = us-central1 )
- Nome da função do Firebase = {ML_FUNCTION}
- Entrada para a função = entrada para o modelo = um dicionário como {“key_str”: “val_str”, “key_int”: 2, “key_arr”: [1,25, 0,76, 3,84]}
const functions = require("firebase-functions");
const admin = require("firebase-admin");
admin.initializeApp(functions.config().firebase);
const googleapis_pack = require("googleapis");
const ml = googleapis_pack.google.ml({version:"v1", rootUrl:"https://{MODEL_REGION}-ml.googleapis.com"});
exports.{ML_FUNCTION} = functions.https.onCall(async(data, context)=>
{
const key_str = data.key_str;
const key_int = data.key_int;
const key_arr = data.key_arr;
const instance = {"key_str":key_str, "key_int":key_int, "key_arr":key_arr};
const model = "{MODEL_NAME}";
const { credential } = await googleapis_pack.google.auth.getApplicationDefault();
const modelName = "projects/{PROJECT_ID}/models/" + model;
const results = await ml.projects.predict({
auth: credential,
name: modelName,
requestBody: instance
});
return results.data;
}
);
Vá para o terminal e execute o seguinte.
cd ~/Desktop/{LOCAL_DIR}
firebase deploy --only functions
PS-
Para saber como chamar uma função Firebase do seu aplicativo (iOS, Android etc.), você pode consultar esta documentação oficial do Google.
Referências
- https://firebase.google.com/docs/functions/get-started
- https://github.com/nvm-sh/nvm/blob/master/README.md
- https://firebase.google.com/docs/functions/callable





































![O que é uma lista vinculada, afinal? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)