Projeto referente à Prova (CP5) de Java da FIAP, demonstrando o uso de tecnologias modernas de desenvolvimento.
Esta é uma aplicação web construída com Spring Boot que funciona como um assistente de tradução de Português para Espanhol. A aplicação utiliza o Spring AI para se conectar à API da OpenAI (modelo GPT-4o) e realizar as traduções.
O usuário insere um texto em português na interface web, e a aplicação envia este texto para a IA, que retorna a tradução em espanhol. O prompt de sistema foi configurado para instruir a IA a atuar como um tradutor profissional, garantindo traduções éticas e de alta qualidade.
- Interface Web Simples: Página única (SPA) criada com Thymeleaf para entrada de texto e exibição de resultados.
- Tradução via IA: Integração direta com o modelo
gpt-4oda OpenAI através do Spring AI. - Prompt Engineering: Uso de um
PromptTemplatepara guiar o comportamento da IA como um tradutor profissional e ético. - Segurança de Chaves: A chave da API da OpenAI é carregada de forma segura a partir de variáveis de ambiente (
.env), não sendo exposta no código-fonte (conforme oapplication.yamle.gitignore). - CI/CD (DevOps): O repositório está configurado com um workflow de GitHub Actions (
maven-publish.yml) para publicar o pacote no GitHub Packages automaticamente.
- Backend: Java 21, Spring Boot 3.4.11, Spring Web
- Inteligência Artificial: Spring AI 1.0.3, OpenAI (GPT-4o)
- Frontend: Thymeleaf, HTML5, CSS3
- Build/DevOps: Maven, GitHub Actions
Siga os passos abaixo para configurar e executar a aplicação localmente.
- Java 21 (JDK) instalado.
- Maven instalado (ou pode usar o Maven Wrapper
mvnwincluído). - Uma Chave de API da OpenAI válida.
-
Clone o repositório:
git clone https://github.com/Lu1zEdu/Cp5-Java.git cd Cp5-Java -
Configure a Chave de API (Obrigatório): O projeto está configurado para ler a chave da API de uma variável de ambiente, conforme o
application.yaml.- Crie um arquivo chamado
.envna raiz do projeto (no mesmo nível dopom.xml). - Adicione sua chave da OpenAI dentro deste arquivo:
# Conteúdo do arquivo .env OPENAI_API_KEY="sk-sua-chave-secreta-aqui"
(Nota: O arquivo
.envjá está incluído no.gitignore, garantindo que sua chave não seja enviada para o repositório.) - Crie um arquivo chamado
-
Execute a Aplicação: Use o Maven Wrapper para compilar e iniciar o servidor Spring Boot.
- No Linux/macOS:
./mvnw spring-boot:run
- No Windows (PowerShell):
.\mvnw.cmd spring-boot:run
- No Linux/macOS:
-
Acesse a Aplicação: Abra seu navegador e acesse a URL: http://localhost:8080
Você verá a interface de tradução pronta para uso.
Aqui estão os arquivos mais importantes e suas funções:
.
├── .github/workflows/
│ └── maven-publish.yml # Workflow de CI/CD para GitHub Packages
├── .mvn/wrapper/ # Arquivos do Maven Wrapper
├── src/main/java/fiap/com/Cp5_Java/
│ ├── Cp5JavaApplication.java # Classe principal, ponto de entrada do Spring Boot
│ └── TranslateController.java # Controlador que gerencia as rotas e a lógica de tradução
├── src/main/resources/
│ ├── templates/
│ │ └── index.html # Página web (View) com Thymeleaf
│ └── application.yaml # Configurações do Spring (API Key, modelo do GPT)
├── .env.example # (Recomendado) Exemplo de como o .env deve ser
├── .gitignore # Lista de arquivos ignorados pelo Git (incluindo .env)
├── mvnw / mvnw.cmd # Scripts do Maven Wrapper
└── pom.xml # Arquivo de configuração do Maven (dependências, build)
-
TranslateController.java:@GetMapping("/"): Mapeia a rota raiz para exibir a páginaindex.html.@PostMapping("/translate"): Recebe os dados do formulário (@RequestParam("prompt")).PromptTemplate: Define o prompt de sistema que instrui a IA.chatModel.call(): Envia o prompt final para a API da OpenAI e recebe a resposta.Model.addAttribute(): Envia a tradução e o prompt original de volta para oindex.htmlpara exibição.
-
application.yaml:- Define o modelo a ser usado (
gpt-4o). - Carrega a chave da API usando
${OPENAI_API_KEY}, que é lida do arquivo.envou das variáveis de ambiente do sistema.
- Define o modelo a ser usado (
-
index.html:- Usa Thymeleaf (
th:if,th:text) para exibir dinamicamente os resultados da tradução. - Envia os dados do formulário para o endpoint
/translateviaPOST.
- Usa Thymeleaf (