Skip to content

luizfilipelgs/API_GeniusAI

Repository files navigation

API GeniusAI

API em FastAPI que integra modelos de IA proprios (YOLO) e LLM via OpenAI. Ela expõe endpoints para analise de exames (por imagem), interpretacao clinica e retorno de imagens anotadas, unificando multiplas integracoes de IA em uma unica API.

Tecnologias

  • Python, FastAPI, Uvicorn
  • YOLO (ultralytics) para deteccao/segmentacao
  • OpenAI API (LLM) para interpretacao clinica
  • Pillow, Pandas, Numpy
  • Loguru para logging

Requisitos

  • Python 3.10+
  • Dependencias em requirements.txt
  • .env com API_KEY (necessario para endpoints que usam LLM)

Como rodar

python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
uvicorn main:app --reload

Acesse:

  • Docs: http://localhost:8000/docs
  • Healthcheck: http://localhost:8000/health

Variaveis de ambiente

Exemplo em .env.exemple (ou .env copy.exemple). O essencial:

API_KEY=...

Sem essa chave, apenas os endpoints que nao dependem do LLM funcionam.

Arquitetura (clean-lite)

Separacao simples por responsabilidade, mantendo a aplicacao leve:

main.py
controllers/        # camada HTTP (FastAPI)
core/
  ports/            # contratos (interfaces)
  use_cases/        # regras de negocio
infra/
  ai/               # integracao com modelos YOLO
  image/            # processamento de imagens
  llm/              # integracao OpenAI
utils/              # logging e helpers
AI/                 # modelos treinados

Fluxo principal:

  1. Controller recebe a requisicao.
  2. Use case aplica a regra de negocio.
  3. Infra executa chamadas externas (YOLO, OpenAI, imagem).

Logging

Usamos loguru em utils/logger.py.

from utils.logger import get_logger
logger = get_logger()

Endpoints

Base URL: http://localhost:8000

  • GET / redireciona para /docs (Swagger)
  • GET /health healthcheck da API
  • POST /chat retorna interpretacao clinica via LLM a partir de um JSON de resultados
  • POST /analise/{exam_type}/result_full retorna deteccoes, interpretacao clinica e imagem anotada
  • POST /analise/{exam_type}/result_object retorna somente as deteccoes (objetos)
  • POST /analise/{exam_type}/result_img retorna somente a imagem com anotacoes
  • POST /analise/{exam_type}/result_interpretation retorna somente a interpretacao clinica

Notas:

  • exam_type deve corresponder a um modelo disponivel em infra/ai/ai_services.py
  • Endpoints de interpretacao dependem de API_KEY

Qualidade

flake8 .
black .

About

API para comunicação com os modelos de IA que realizam o diagnostico de exames de imagens

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages