Skip to content

api responsavel por realizar a aplicação de metodos numericos não lineares

Notifications You must be signed in to change notification settings

Wanjos-eng/API-CalculoNumerico

Repository files navigation

API de Métodos Numéricos com Integração de IA

Este repositório contém uma API desenvolvida em Node.js que implementa métodos numéricos para resolver equações não lineares, tais como Bissecção, Falsa Posição, Newton-Raphson e Secante. Além disso, a API integra uma Inteligência Artificial (IA) utilizando a API Gemini, permitindo que os usuários façam perguntas sobre os cálculos realizados.

Índice

Características

  • Implementação dos métodos numéricos:
    • Bissecção
    • Falsa Posição
    • Newton-Raphson
    • Secante
  • Integração com a IA Gemini para responder perguntas sobre os cálculos.
  • Uso de cookies para gerenciamento de sessões sem necessidade de autenticação.
  • Armazenamento de contexto utilizando Redis de terceiros (serviço online utilizado diretamente em produção).
  • Documentação da API com Swagger.
  • Contêineres Docker para fácil implantação.

Pré-requisitos

  • Docker instalado
  • Docker Compose instalado
  • **Conta e chave de API para a API Gemini (Google Generative AI)

Instalação

  1. Clone o repositório:

    git clone https://github.com/Wanjos-eng/API-CalculoNumerico
    cd API-CalculoNumerico

Configuração

  1. Crie um arquivo .env na raiz do projeto e configure as seguintes variáveis de ambiente:

     PORT=3000
     GEMINI_KEY=
     REDIS_HOST=
     REDIS_PORT=
     REDIS_PASSWORD=
     ALLOWED_ORIGINS=
     COOKIE_HTTPONLY=
     COOKIE_SECURE=
     COOKIE_SAMESITE=
     ENVIRONMENT=
    • GEMINI_KEY: Obtenha sua chave de API no Google AI Studio.
    • REDIS_: São informações fornecida pelo serviço Redis de terceiros.

    OBS -Em processo de teste no desenvolvimento pode simplismente usar a biblioteca node-cache para testar as funcionalidades.

  2. Certifique-se de que tem acesso ao serviço Redis de terceiros:

    • É necessario configurar o redis em algum sistema de serviço recomendo render ou Redis

Execução

Com o docker:

  1. Construa e inicie os contêineres Docker:

    docker-compose up --build
    • Isso irá construir a imagem Docker da aplicação e iniciar o contêiner.
  2. Acesse a documentação Swagger para visualizar os endpoints e exemplos de como ultilizar:

    Abra o navegador e navegue até http://localhost:3000/docs. ou navegue até https://api-calculonumerico.onrender.com/docs.

Sem o docker:

  1. Inicie o ambiente virtual:

    npm run dev
  2. Em caso de erro execute o comando para configurar o ambiente:

    npm run setup

Endpoints

Métodos Numéricos

  • POST /bisseccao
  • POST /fp
  • POST /newton-raphson
  • POST /secante

Interação com a IA

  • POST /perguntar

Troca de um metodo para outro

  • POST /continuarSolucao

Uso

1. Como usar o Postman (ou Insomnia) para fazer uma requisição POST:

  • Você pode baixar e instalar o Postman aqui.
  • Após instalar e abrir o Postman, você verá uma tela para criar uma nova requisição.
  • Clique no botão New no canto superior esquerdo.
  • Selecione HTTP Request.
  • No campo à esquerda da URL, altere o método para POST.
  • No campo ao lado do método POST, insira a URL do endpoint (exemplo: http://localhost:3000/newton-raphson).
  • Clique na aba Body abaixo do campo de URL.
  • Selecione a opção raw.
  • No menu suspenso à direita, selecione o tipo de dados que será enviado, geralmente JSON.
  • Insira os dados no formato JSON que serão enviados na requisição, como na parte 2 a seguir.
  • É importante verificar na documentação o formato correto para fazer a requisição.

2. Executar um método numérico

Faça uma requisição POST para um dos endpoints dos métodos, fornecendo os parâmetros necessários no corpo da requisição.

Exemplo de requisição para o método da Bissecção:

POST /bisseccao
Content-Type: application/json

{
  "funcao": "x^2 - 4",
  "intervalo": [0, 5],
  "tolerancia": 0.001,
  "maxIteracao": 100
}

3. Fazer uma pergunta para a IA

Após executar um método numérico, faça uma requisição POST para /ia/perguntar, fornecendo a sua pergunta.

Exemplo de requisição:

POST /perguntar
Content-Type: application/json

{
  "pergunta": "Como o método determinou a raiz aproximada?"
}

A IA irá responder com base no contexto do cálculo que você executou anteriormente.

4. Fazer a troca de um metodo a outro

Após executar um método numérico, faça uma requisição POST para /ia/perguntar, fornecendo a sua pergunta.

Exemplo de requisição:

POST /continuarSolucao
Content-Type: application/json

{
  "metodoEscolhido": "falsaPosicao",
  "novasIteracoes": 10,
}

A o metodo irá continuar com base no contexto do cálculo que você executou anteriormente.

Contribuição

Contribuições são bem-vindas! Sinta-se à vontade para abrir issues e pull requests.

Para contribuir:

  1. Faça um fork do projeto.
  2. Crie uma branch para sua feature (git checkout -b feature/nova-feature).
  3. Commit suas mudanças (git commit -am 'Adiciona nova feature').
  4. Faça push para a branch (git push origin feature/nova-feature).
  5. Abra um Pull Request.

Desenvolvido por:


About

api responsavel por realizar a aplicação de metodos numericos não lineares

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published