🤖 Chat com IA - Azure OpenAI

Documentação dos endpoints para comunicação com Azure OpenAI GPT-4o mini

POST /ai/chat

Descrição: Envia uma mensagem para o Azure OpenAI e recebe a resposta da IA.

🎯 Funcionalidades Especiais:

🔐 Autenticação

Requer autenticação JWT. Incluir o token no header:

Authorization: Bearer {seu_token_jwt}

📥 Request Body

Campo Tipo Obrigatório Descrição
message string Sim Mensagem/pergunta para enviar à IA

📤 Exemplo de Request

POST /api/ai/chat Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9... Content-Type: application/json { "message": "Qual é a capital do Brasil?" }

✅ Resposta de Sucesso

Status: 200 OK
Content-Type: application/json
{ "success": true, "code": 200, "message": "Response generated successfully", "data": { "response": "Olá, tudo bem com você Ricardo? Em que posso te ajudar hoje?", "tokens_used": 45 } }

📋 Exemplo: Listagem de Avaliações

POST /api/ai/chat Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9... Content-Type: application/json { "message": "me liste os usuario que eu posso ver o resultado de sua avaliações" }

✅ Resposta de Sucesso (Listagem)

Status: 200 OK
{ "success": true, "code": 200, "message": "Assessment list retrieved successfully", "data": { "response": "Olá Ricardo, encontrei 3 avaliações que você pode analisar:\n\n• Antonio Costa Reis (ID: 13874) - completed em 15/01/2025\n• Mirela Souza (ID: 13875) - completed em 20/01/2025\n• Sandro Almeida Silva (ID: 13876) - completed em 22/01/2025\n\nQual delas você gostaria de analisar? Me informe o nome da pessoa ou o ID da avaliação.", "available_assessments": [ { "assessment_id": 13874, "user_name": "Antonio Costa Reis", "status": "completed", "date_conclusion": "2025-01-15" }, { "assessment_id": 13875, "user_name": "Mirela Souza", "status": "completed", "date_conclusion": "2025-01-20" }, { "assessment_id": 13876, "user_name": "Sandro Almeida Silva", "status": "completed", "date_conclusion": "2025-01-22" } ], "tokens_used": 0 } }

🔍 Exemplo: Análise de Avaliação Específica

POST /api/ai/chat Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9... Content-Type: application/json { "message": "Qual o traço dominante de Antonio Costa Reis?" }

✅ Resposta de Sucesso (Análise)

Status: 200 OK
{ "success": true, "code": 200, "message": "Response generated successfully", "data": { "response": "Analisando a avaliação de Antonio Costa Reis, o traço dominante identificado é Dominance (Dominância). Isso indica que Antonio tem características de liderança natural, gosta de tomar decisões rápidas e tem alta orientação para resultados. Baseado nos dados da sua avaliação SOAR, ele demonstra...", "tokens_used": 1245, "assessment_context": { "assessment_id": 13874, "user_name": "Antonio Costa Reis", "status": "completed" } } }

❌ Respostas de Erro

400 - Bad Request (Mensagem vazia)

Status: 400 Bad Request
{ "success": false, "code": 400, "message": "Message is required" }

401 - Unauthorized (Token inválido)

Status: 401 Unauthorized
{ "success": false, "code": 401, "message": "Invalid or missing token" }

500 - Internal Server Error (Configuração Azure)

Status: 500 Internal Server Error
{ "success": false, "code": 500, "message": "Azure OpenAI configuration is incomplete." }

🔧 Campos de Resposta

Campo Tipo Descrição
success boolean Indica se a operação foi bem-sucedida
code integer Código de status HTTP
message string Mensagem descritiva do resultado
data.response string Resposta da IA (apenas em caso de sucesso)
data.tokens_used integer Número de tokens utilizados (apenas em caso de sucesso)

GET /ai/

Descrição: Verifica se o serviço de chat com IA está ativo.

🔐 Autenticação

Requer autenticação JWT. Incluir o token no header:

Authorization: Bearer {seu_token_jwt}

📤 Exemplo de Request

GET /api/ai/ Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...

✅ Resposta de Sucesso

Status: 200 OK
Content-Type: application/json
{ "success": true, "code": 200, "message": "Chat AI service is active. Use POST /ai/chat to send messages." }

🧪 Teste com cURL

Exemplo completo de teste:

# 1. Fazer login para obter token curl -X POST http://localhost/api/auth/login \ -H "Content-Type: application/json" \ -d '{ "email": "seu_email@exemplo.com", "password": "sua_senha" }' # 2. Usar o token para enviar mensagem para Sofia curl -X POST http://localhost:8080/api/ai/chat \ -H "Authorization: Bearer SEU_TOKEN_AQUI" \ -H "Content-Type: application/json" \ -d '{ "message": "Qual é o seu nome?" }' # Resposta esperada: "Eu sou a Sofia, a inteligência artificial do SOAR Global Institute"

⚙️ Configuração Necessária

Para que o serviço funcione, configure as seguintes variáveis no arquivo .env:

AZURE_OPENAI_ENDPOINT = https://oai-soar.openai.azure.com/ AZURE_OPENAI_KEY = sua_chave_api_aqui AZURE_OPENAI_DEPLOYMENT = gpt-4o-mini AZURE_OPENAI_API_VERSION = 2024-02-15-preview

🤖 Sobre a Sofia

A Sofia é a inteligência artificial do SOAR Global Institute, projetada para:

🌍 Idiomas Suportados:

Detecção Automática: A Sofia detecta automaticamente o idioma do usuário baseado na configuração na tabela users.language

🚫 Limitações da Sofia:

A Sofia NÃO pode falar sobre:

Exemplos de redirecionamento:

Foco exclusivo: Desenvolvimento pessoal, coaching, avaliações SOAR e crescimento profissional

📝 Logs

Todos os logs são gravados em writable/logs/ com informações sobre:

🔒 Segurança