1
resposta

09 Faça como eu fiz: métricas e deploy: realizar o deploy da aplicação no Google Cloud com integração via GitHub.

  1. Métrica Customizada e Avaliação com DAG
    Conceitos Técnicos
    Métrica Customizada (G-Eval): Permite definir critérios subjetivos em linguagem natural que o DeepEval transforma em uma pontuação quantitativa.

DAG (Directed Acyclic Graph): No contexto de avaliação, usamos uma estrutura lógica de "nós" (decisões) para filtrar se a resposta do chatbot deve ou não seguir para o usuário, garantindo que ele não saia do escopo musical.

Código: Métrica de Escopo e Test Case
Python
from deepeval.metrics import GEval
from deepeval.test_case import LLMTestCase, LLMTestCaseParams

1. Definindo a Métrica Customizada de Escopo Musical

Big O: O(1) para definição, O(LLM_call) para execução

musical_scope_metric = GEval(
name="Escopo Musical Playcatch",
criteria="Verificar se a resposta está estritamente relacionada a música, artistas ou sentimentos musicais.",
evaluation_params=[LLMTestCaseParams.ACTUAL_OUTPUT],
threshold=0.8
)

def evaluate_response_dag(user_input, bot_output):
"""
Estrutura lógica (DAG) para decisão de deploy da resposta.
Nó 1: Avaliar Escopo -> Nó 2: Se aprovado, retornar. Se não, Fallback.
"""
test_case = LLMTestCase(
input=user_input,
actual_output=bot_output
)

musical_scope_metric.measure(test_case)

if musical_scope_metric.score >= 0.8:
    return bot_output
else:
    return "Desculpe, como assistente da Playcatch, só posso conversar sobre música e emoções."
    
    2. Deploy no Google Cloud (GCP) com GitHub Actions

Em vez de usar o Cloud Run (Serverless), vamos configurar uma VM (Compute Engine) para ter controle total sobre o ambiente Docker e GPU.

Passo 1: Preparação da VM no GCP
No console do GCP, crie uma instância de VM (e2-medium ou superior).

Nas configurações de rede, permita tráfego HTTP/HTTPS e crie uma regra de firewall para liberar a porta 8000.

Instale o Docker na máquina:

Bash
sudo apt-get update && sudo apt-get install docker.io -y
Passo 2: Configuração dos Secrets no GitHub
No seu repositório (Settings > Secrets), adicione:

GCP_SA_KEY: O conteúdo do arquivo JSON da sua Service Account.

GCP_VM_IP: O IP externo da sua máquina virtual.

GCP_VM_USER: Seu usuário SSH (geralmente o nome da conta Google).

Passo 3: Workflow do GitHub Actions (deploy-vm.yml)
Este pipeline realiza o checkout, gera a imagem e faz o deploy direto na VM via SSH.

YAML
2. Deploy no Google Cloud (GCP) com GitHub Actions
Em vez de usar o Cloud Run (Serverless), vamos configurar uma VM (Compute Engine) para ter controle total sobre o ambiente Docker e GPU.

Passo 1: Preparação da VM no GCP
No console do GCP, crie uma instância de VM (e2-medium ou superior).

Nas configurações de rede, permita tráfego HTTP/HTTPS e crie uma regra de firewall para liberar a porta 8000.

Instale o Docker na máquina:

Bash
sudo apt-get update && sudo apt-get install docker.io -y
Passo 2: Configuração dos Secrets no GitHub
No seu repositório (Settings > Secrets), adicione:

GCP_SA_KEY: O conteúdo do arquivo JSON da sua Service Account.

GCP_VM_IP: O IP externo da sua máquina virtual.

GCP_VM_USER: Seu usuário SSH (geralmente o nome da conta Google).

Passo 3: Workflow do GitHub Actions (deploy-vm.yml)
Este pipeline realiza o checkout, gera a imagem e faz o deploy direto na VM via SSH.

YAML
name: Deploy Playcatch to GCP VM

on:
push:
branches: [ main ]

jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v4

  - name: Auth Google Cloud
    uses: 'google-github-actions/auth@v2'
    with:
      credentials_json: '${{ secrets.GCP_SA_KEY }}'

  - name: Build and Push Docker Image
    run: |
      gcloud auth configure-docker
      docker build -t gcr.io/${{ secrets.GCP_PROJECT_ID }}/playcatch-vm:latest .
      docker push gcr.io/${{ secrets.GCP_PROJECT_ID }}/playcatch-vm:latest

  - name: SSH and Deploy to VM
    uses: appleboy/ssh-action@master
    with:
      host: ${{ secrets.GCP_VM_IP }}
      username: ${{ secrets.GCP_VM_USER }}
      key: ${{ secrets.GCP_SSH_PRIVATE_KEY }}
      script: |
        # Autentica o Docker na VM
        gcloud auth configure-docker --quiet
        # Para e remove containers antigos
        docker stop playcatch || true
        docker rm playcatch || true
        # Pull da nova imagem e Run na porta 8000
        docker pull gcr.io/${{ secrets.GCP_PROJECT_ID }}/playcatch-vm:latest
        docker run -d --name playcatch -p 8000:8000 gcr.io/${{ secrets.GCP_PROJEC
    
    
1 resposta

Olá, Moacir! Como vai?

Parabéns pela resolução da atividade!

Observei que você explorou o G-Eval para métricas customizadas garantindo que respostas fiquem dentro do escopo musical em Python, utilizou muito bem a estrutura lógica em DAG para controlar o fluxo de decisão antes do deploy e ainda compreendeu a importância da integração com GitHub Actions e VMs no GCP para ter maior controle sobre ambiente Docker e GPU em produção.

Continue postando as suas soluções, com certeza isso ajudará outros estudantes e tem grande relevância para o fórum.

Sugestão de conteúdo para você mergulhar ainda mais no tema:

Alguns materiais podem estar em inglês, mas é possível compreendê-los usando o recurso de tradução de páginas do próprio navegador.

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

AluraConte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!