Logo Lanfrica

JustinoSoares/api-lexai

Domaine:

digital infrastructure

Type de record:

software
Créateur:
Jus
Hôte:
API para o sistema de perguntas sobre leis em angola # api-lexai API para o sistema de perguntas sobre leis em Angola. Backend em FastAPI com agente LLM (Groq), SQLAlchemy 2.0 async e PostgreSQL. O agente pesquisa legislação angolana na web (com priorização de fontes jurídicas de referência, como Lex.ao e o Diário da República), extrai o texto de diplomas e responde com base em artigos citados, sempre com a fonte. ## Stack - **FastAPI** + **Uvicorn** - **SQLAlchemy 2.0** (async, com `asyncpg`) - **Alembic** (migrations) - **Pydantic v2** + **pydantic-settings** - **Groq** (LLM) - **Redis** (rate limiting) — com fallback em memória - **structlog** (logging) ## Estrutura de pastas ``` ├── alembic/ # migrations Alembic ├── alembic.ini ├── app/ │ ├── api/ # rotas / endpoints FastAPI │ ├── agent/ # lógica do agente LLM │ │ ├── tools/ # ferramentas do agente (busca web, HTML, PDF, cache) │ │ └── system_prompt.py │ ├── core/ # configuração, logging, utilitários │ ├── data/ # seed curado das leis prioritárias (app/data/laws.py) │ ├── db/ # engine, sessão, Base declarativa, cliente Redis │ ├── models/ # modelos ORM (SQLAlchemy) │ └── schemas/ # esquemas Pydantic de entrada/saída ├── scripts/ │ └── seed_laws.py # extrai e popula law_cache com as leis prioritárias ├── tests/ # testes (pytest) ├── docker-compose.yml # PostgreSQL, Redis e RabbitMQ para desenvolvimento └── .env.example # modelo das variáveis de ambiente ``` ## Pré-requisitos - Python 3.11+ - PostgreSQL e Redis (locais ou via `docker compose`) - Chave de API da Groq ## Setup local ### 1. Dependências de infraestrutura (PostgreSQL, Redis) Com Docker (recomendado): ```bash docker compose up -d ``` Os containers expõem PostgreSQL na porta `5434`, Redis na `6378` e RabbitMQ em `5673/15673`. Ajuste `DATABASE_URL` e `REDIS_URL` no `.env` em conformidade (ver abaixo). Sem Docker: instale PostgreSQL e Redis localmente e ajuste as p …