Avaliação Prática: Assistente Virtual Pet Shop "Cão & Gato"

alt text

1. O Desafio

O Pet Shop PetTech precisa de um assistente virtual construído para realizar o pré-agendamento de serviços de estética (banho, tosa e hidratação).

O assistente deve interagir com o cliente de forma natural, entender a demanda, calcular o orçamento, verificar a disponibilidade de agenda e, ao final, gerar uma ficha de atendimento estruturada.

Importante: O escopo do assistente é puramente estético. Se o cliente relatar que o pet está machucado, doente, apático ou apresentar qualquer sintoma, o assistente não pode dar diagnósticos ou seguir com o agendamento. Ele deve, obrigatoriamente, recomendar a busca por um médico veterinário.


2. Regras de Negócio

O modelo não deve calcular preços ou adivinhar vagas por conta própria. Ele deve ser instruído a consumir ferramentas (funções Python) que contenham as regras abaixo.

Tabela de Preços

Serviço Pequeno Médio Grande
Banho R$ 45,00 R$ 60,00 R$ 80,00
Tosa R$ 35,00 R$ 50,00 R$ 65,00
Hidratação R$ 20,00 R$ 30,00 R$ 40,00

Disponibilidade de Agenda

Dia Manhã Tarde
Segunda-feira Disponível Indisponível
Quarta-feira Indisponível Disponível
Sábado Disponível Indisponível

3. Requisitos Técnicos

Sua entrega, desenvolvida em um notebook do Google Colab utilizando a biblioteca google-genai, deverá conter obrigatoriamente:

  1. System Prompt Robusto: Defina a persona do assistente, a regra de segurança veterinária e a instrução clara de que ele deve confirmar todos os dados com o cliente antes de gerar a ficha final.
  2. Duas Ferramentas (Tool Calling):
  3. calcular_orcamento(porte: str, servicos: list[str]): Função Python que recebe os parâmetros, consulta a tabela de preços e devolve o valor numérico.
  4. verificar_disponibilidade(dia: str, periodo: str): Função Python que verifica a matriz de agenda e retorna a disponibilidade.
  5. Histórico de Conversa (Memória): O assistente não pode esquecer informações já passadas (ex: nome ou porte do pet) no meio do atendimento. Utilize o gerenciamento de sessão de chat da API.
  6. Saída Estruturada (Pydantic): Após a confirmação do cliente, o fluxo deve ser encerrado gerando um objeto JSON rigoroso, validado por uma classe Pydantic com a seguinte estrutura:
  7. nome_pet (str)
  8. especie (Literal: "cao" ou "gato")
  9. porte (Literal: "pequeno", "medio", "grande")
  10. servicos (list[str])
  11. dia (str)
  12. periodo (str)
  13. valor_total (float)

4. Roteiro de Testes (Simulações)

Para comprovar o funcionamento da sua arquitetura, você deverá executar e registrar no seu Colab três simulações de conversa completas:

  • Simulação 1 (O Caminho Feliz): O cliente pede um banho e tosa para um cachorro pequeno na segunda-feira de manhã. O robô atende, usa as ferramentas, o cliente confirma e a ficha Pydantic é gerada perfeitamente.
  • Simulação 2 (O Cliente Esquecido e o Horário Lotado): O cliente pede um banho na segunda-feira à tarde para o "Rex", mas esquece de dizer o porte e a espécie. O robô deve perguntar o que falta, avisar que segunda à tarde não tem vaga (usando a ferramenta) e sugerir quarta à tarde. Após o ajuste, o cliente confirma e a ficha é gerada.
  • Simulação 3 (O Guardrail Veterinário): O cliente diz: "Quero marcar um banho pro meu gato grande, mas ele está vomitando desde ontem e o olho tá vermelho. Pode ser sábado?". O robô deve barrar o atendimento estético, orientar a busca por um veterinário e recusar a geração da ficha Pydantic.

5. Critérios de Avaliação (Total: 10 Pontos)

  • [max 10,0] Orquestração do Chat: O modelo mantém o contexto e chama as ferramentas no momento certo, de forma fluida.

6. Instruções de Entrega (se necessário)

  • Entregue um único arquivo .ipynb (Notebook do Colab).
  • As chaves de API não devem estar expostas no código (utilize o userdata.get() do Colab Secrets).
  • O notebook deve ser executável de cima para baixo. Garanta que as saídas dos 3 testes solicitados estejam visíveis no arquivo salvo.