1
resposta

[Projeto] 07 Faça como eu fiz: pipeline CI/CD integrado: implementar um pipeline de CI/CD utilizando e integração de testes de LLM GitHub Actions para garantir qualidade e deploy automatizado

  1. Conceitos e Exemplos Práticos
    A. CI/CD para LLMs (LLMOps)
    Conceito: Diferente do CI tradicional (que testa apenas a sintaxe do código), o CI para LLMs testa a qualidade estocástica. Se uma mudança no prompt fizer a métrica de Toxicity subir, o pipeline "quebra" e impede o deploy.

Exemplo Prático: Você faz um push corrigindo um bug no chatbot. O GitHub Actions roda o DeepEval e percebe que, embora o código esteja certo, a resposta do bot ficou menos irrelevante. O deploy é bloqueado.

B. Estratégia de Deploy: Blue-Green ou Rolling
Conceito: Como o Google Cloud (Cloud Run) lida com containers, podemos subir a nova versão da Playcatch e só direcionar o tráfego quando o Health Check der positivo.

Exemplo Prático: O container sobe no GCP, o sistema testa se a porta 8080 responde. Se sim, a versão antiga é desligada
2 Implementação: GitHub Actions Workflow

Tópicos Principais:
Runners: Máquinas virtuais que executam os comandos do pipeline.

Secrets: Armazenamento seguro de chaves (GCP Keys, DeepEval Tokens).

Artefatos: Imagens Docker prontas para produção.

Código Fonte: .github/workflows/main.yml
Este arquivo deve ser colocado na pasta .github/workflows/ do seu repositório.

YAML
name: Playcatch CI/CD Pipeline

on:
push:
branches: [ main ]
pull_request:
branches: [ main ]

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

  - name: Set up Python
    uses: actions/setup-python@v4
    with:
      python-version: '3.10'

  - name: Install Dependencies
    run: |
      python -m pip install --upgrade pip
      pip install -r requirements.txt
      pip install deepeval

  - name: Run LLM Evaluation (DeepEval)
    env:
      CONFIDENT_AI_API_KEY: ${{ secrets.CONFIDENT_AI_API_KEY }}
      OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} # Caso use como juiz
    run: |
      deepeval test run tests/test_playcatch.py

build-and-deploy:
needs: test-and-eval
runs-on: ubuntu-latest
if: github.event_name == 'push' && github.ref == 'refs/heads/main'

steps:
  - name: Checkout Code
    uses: actions/checkout@v4

  # 1. Configuração Docker & Google Cloud
  - name: Google Auth
    uses: 'google-github-actions/auth@v2'
    with:
      credentials_json: '${{ secrets.GCP_SA_KEY }}'

  - name: Set up Cloud SDK
    uses: 'google-github-actions/setup-gcloud@v2'

  - name: Configure Docker
    run: gcloud auth configure-docker

  # 2. Build com Health Check
  - name: Build Docker Image
    run: |
      docker build -t gcr.io/${{ secrets.GCP_PROJECT_ID }}/playcatch-app:${{ github.sha }} .
      
  # 3. Deploy para Google Cloud Run
  - name: Deploy to Cloud Run
    run: |
      gcloud run deploy playcatch-service \
        --image gcr.io/${{ secrets.GCP_PROJECT_ID }}/playcatch-app:${{ github.sha }} \
        --platform managed \
        --region us-central1 \
        --allow-unauthenticated \
        --health-check-path=/health
        3. Configuração do Docker com Health Check
        alide se o servidor Dockerfile
        
        Dockerfile:
        FROM python:3.10-slim

WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .

Expõe a porta do Gradio

EXPOSE 7860

Health check simples (verifica se o processo está rodando)

HEALTHCHECK --interval=30s --timeout=10s --retries=3
CMD curl -f http://localhost:7860/ || exit 1

CMD ["python", "app.py"]

1 resposta

Olá, Moacir! Como vai?

Parabéns pela resolução da atividade!

Observei que você explorou o pipeline de CI/CD para LLMs para garantir qualidade estocástica em Python/YAML, utilizou muito bem a integração com GitHub Actions e DeepEval para bloquear deploys quando métricas críticas falham e ainda compreendeu a importância da estratégia de deploy com containers no Google Cloud Run para assegurar disponibilidade e confiabilidade 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!