Skip to content

Lu1zEdu/IntelliDesk

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Cp5-Java - Tradutor PT-ES com Spring AI

📖 Descrição do Projeto

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.

✨ Funcionalidades Principais

  • 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-4o da OpenAI através do Spring AI.
  • Prompt Engineering: Uso de um PromptTemplate para 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 o application.yaml e .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.

🛠️ Tecnologias Utilizadas

  • 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

🚀 Como Executar o Projeto

Siga os passos abaixo para configurar e executar a aplicação localmente.

Pré-requisitos

  • Java 21 (JDK) instalado.
  • Maven instalado (ou pode usar o Maven Wrapper mvnw incluído).
  • Uma Chave de API da OpenAI válida.

Passos para Configuração

  1. Clone o repositório:

    git clone https://github.com/Lu1zEdu/Cp5-Java.git
    cd Cp5-Java
  2. 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 .env na raiz do projeto (no mesmo nível do pom.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 .env já está incluído no .gitignore, garantindo que sua chave não seja enviada para o repositório.)

  3. 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
  4. Acesse a Aplicação: Abra seu navegador e acesse a URL: http://localhost:8080

    Você verá a interface de tradução pronta para uso.

📂 Estrutura do Projeto

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)

Componentes Chave

  • TranslateController.java:

    • @GetMapping("/"): Mapeia a rota raiz para exibir a página index.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 o index.html para 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 .env ou das variáveis de ambiente do sistema.
  • 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 /translate via POST.

About

Projeto completo de Java

Topics

Resources

Stars

Watchers

Forks

Releases

Contributors

Languages