| --- |
| title: Structured Output Extractor |
| emoji: 🔩 |
| colorFrom: green |
| colorTo: gray |
| sdk: streamlit |
| sdk_version: "1.29.0" |
| python_version: "3.10" |
| app_file: app.py |
| pinned: false |
| --- |
| |
| # 🔩 Structured Output Extractor |
|
|
| Extrator universal de dados estruturados usando **OpenAI Function Calling** com schema JSON dinâmico e retry automático com error feedback. |
|
|
| ## 🔧 Como funciona |
|
|
| ``` |
| Texto qualquer (contrato, notícia, CV, invoice...) |
| ↓ |
| Schema selecionado (preset ou customizado pelo usuário) |
| ↓ |
| Tool definition criada dinamicamente (OpenAI function) |
| ↓ |
| gpt-4o-mini chamado com tool_choice="required" |
| ↓ |
| JSON parseado → validado |
| ↓ |
| Retry automático com feedback de erro ao LLM (max 2x) |
| ↓ |
| Output: campos visuais + JSON bruto + download |
| ``` |
|
|
| ## 📋 Schemas Disponíveis |
|
|
| | Schema | Campos principais | |
| |---|---| |
| | **Contrato Legal** | Partes, objeto, valor, prazo, obrigações | |
| | **Notícia / Artigo** | Entidades, fatos, sentimento, dados numéricos | |
| | **Currículo / CV** | Experiências, formação, habilidades, idiomas | |
| | **Invoice / NF** | Emitente, destinatário, itens, totais | |
| | **Artigo Científico** | Autores, metodologia, métricas, contribuições | |
| | **Custom** | Qualquer schema JSON definido pelo usuário | |
|
|
| ## ⚙️ Secrets |
|
|
| - `OPENAI_API_KEY` |
|
|
| ## 🚀 Local |
|
|
| ```bash |
| pip install openai altair streamlit |
| export OPENAI_API_KEY=sk-... |
| streamlit run app.py |
| ``` |