File size: 1,406 Bytes
9ca8eb5
3bf7ed4
 
 
 
 
 
 
9ca8eb5
 
 
 
3bf7ed4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
---
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
```