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.
- Python, FastAPI, Uvicorn
- YOLO (ultralytics) para deteccao/segmentacao
- OpenAI API (LLM) para interpretacao clinica
- Pillow, Pandas, Numpy
- Loguru para logging
- Python 3.10+
- Dependencias em
requirements.txt .envcomAPI_KEY(necessario para endpoints que usam LLM)
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
uvicorn main:app --reloadAcesse:
- Docs:
http://localhost:8000/docs - Healthcheck:
http://localhost:8000/health
Exemplo em .env.exemple (ou .env copy.exemple). O essencial:
API_KEY=...
Sem essa chave, apenas os endpoints que nao dependem do LLM funcionam.
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:
- Controller recebe a requisicao.
- Use case aplica a regra de negocio.
- Infra executa chamadas externas (YOLO, OpenAI, imagem).
Usamos loguru em utils/logger.py.
from utils.logger import get_logger
logger = get_logger()Base URL: http://localhost:8000
GET /redireciona para/docs(Swagger)GET /healthhealthcheck da APIPOST /chatretorna interpretacao clinica via LLM a partir de um JSON de resultadosPOST /analise/{exam_type}/result_fullretorna deteccoes, interpretacao clinica e imagem anotadaPOST /analise/{exam_type}/result_objectretorna somente as deteccoes (objetos)POST /analise/{exam_type}/result_imgretorna somente a imagem com anotacoesPOST /analise/{exam_type}/result_interpretationretorna somente a interpretacao clinica
Notas:
exam_typedeve corresponder a um modelo disponivel eminfra/ai/ai_services.py- Endpoints de interpretacao dependem de
API_KEY
flake8 .
black .