docs-cli 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- docs_cli-0.1.0/PKG-INFO +223 -0
- docs_cli-0.1.0/README.md +202 -0
- docs_cli-0.1.0/docs_cli.egg-info/PKG-INFO +223 -0
- docs_cli-0.1.0/docs_cli.egg-info/SOURCES.txt +17 -0
- docs_cli-0.1.0/docs_cli.egg-info/dependency_links.txt +1 -0
- docs_cli-0.1.0/docs_cli.egg-info/entry_points.txt +9 -0
- docs_cli-0.1.0/docs_cli.egg-info/requires.txt +4 -0
- docs_cli-0.1.0/docs_cli.egg-info/top_level.txt +8 -0
- docs_cli-0.1.0/docs_tc.py +258 -0
- docs_cli-0.1.0/evaluate_coverage.py +362 -0
- docs_cli-0.1.0/extract_data_from_markdown.py +128 -0
- docs_cli-0.1.0/generate_embeddings.py +237 -0
- docs_cli-0.1.0/generate_report.py +118 -0
- docs_cli-0.1.0/generate_report_html.py +204 -0
- docs_cli-0.1.0/limpa_csv.py +170 -0
- docs_cli-0.1.0/merge_markdown.py +91 -0
- docs_cli-0.1.0/pyproject.toml +45 -0
- docs_cli-0.1.0/setup.cfg +4 -0
- docs_cli-0.1.0/setup.py +22 -0
docs_cli-0.1.0/PKG-INFO
ADDED
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: docs-cli
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Um toolkit para processamento e avaliação de documentação.
|
|
5
|
+
Author-email: Paulo Guilherme Pilott <seuemail@example.com>
|
|
6
|
+
License: MIT License
|
|
7
|
+
Classifier: Programming Language :: Python :: 3
|
|
8
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
9
|
+
Classifier: Operating System :: OS Independent
|
|
10
|
+
Classifier: Development Status :: 3 - Alpha
|
|
11
|
+
Classifier: Intended Audience :: Developers
|
|
12
|
+
Classifier: Topic :: Documentation
|
|
13
|
+
Classifier: Topic :: Utilities
|
|
14
|
+
Classifier: Environment :: Console
|
|
15
|
+
Requires-Python: >=3.8
|
|
16
|
+
Description-Content-Type: text/markdown
|
|
17
|
+
Requires-Dist: google-generativeai
|
|
18
|
+
Requires-Dist: python-dotenv
|
|
19
|
+
Requires-Dist: numpy
|
|
20
|
+
Requires-Dist: pandas
|
|
21
|
+
|
|
22
|
+
# Toolkit de Análise e Cobertura de Documentação Técnica (`docs-cli`)
|
|
23
|
+
|
|
24
|
+
Este toolkit fornece um conjunto de scripts Python para processar documentação técnica em formato Markdown, gerar embeddings semânticos, avaliar a cobertura da documentação em relação a um conjunto de perguntas e respostas, e gerar relatórios detalhados. O script principal `docs_tc.py` orquestra a execução dos scripts individuais.
|
|
25
|
+
|
|
26
|
+
## Pré-requisitos
|
|
27
|
+
|
|
28
|
+
1. **Python 3.7+**: certifique-se de que o Python está instalado e configurado no seu PATH.
|
|
29
|
+
2. **Dependências Python**: instale as bibliotecas necessárias. É recomendado criar um ambiente virtual:
|
|
30
|
+
```bash
|
|
31
|
+
python -m venv venv
|
|
32
|
+
source venv/bin/activate # Linux/macOS
|
|
33
|
+
# venv\Scripts\activate # Windows
|
|
34
|
+
pip install google-generativeai python-dotenv numpy pandas
|
|
35
|
+
```
|
|
36
|
+
Você também pode criar um arquivo `requirements.txt` com o conteúdo acima e rodar `pip install -r requirements.txt`.
|
|
37
|
+
3. **Chave da API Google Gemini**:
|
|
38
|
+
* Crie um arquivo chamado `.env` na raiz do projeto.
|
|
39
|
+
* Dentro do `.env`, adicione sua chave da API:
|
|
40
|
+
```
|
|
41
|
+
GOOGLE_API_KEY="SUA_CHAVE_API_AQUI"
|
|
42
|
+
```
|
|
43
|
+
* **IMPORTANTE**: o arquivo `.env` contém informações sensíveis e **não deve ser versionado** no Git. Adicione `.env` ao seu arquivo `.gitignore`.
|
|
44
|
+
|
|
45
|
+
## Estrutura de Arquivos Esperada (Antes da Execução)
|
|
46
|
+
|
|
47
|
+
```txt
|
|
48
|
+
/seu-projeto-raiz/
|
|
49
|
+
|-- docs_tc.py # Script orquestrador principal
|
|
50
|
+
|-- merge_markdown.py # Script para consolidar .md
|
|
51
|
+
|-- extract_data_from_markdown.py # Script para extrair dados do .md consolidado
|
|
52
|
+
|-- generate_embeddings.py # Script para gerar embeddings
|
|
53
|
+
|-- limpa_csv.py # Script para limpar o CSV de Q&A
|
|
54
|
+
|-- evaluate_coverage.py # Script para avaliar a cobertura
|
|
55
|
+
|-- generate_report.py # Script para gerar relatório .md
|
|
56
|
+
|-- generate_report_html.py # Script para gerar relatório .html
|
|
57
|
+
```
|
|
58
|
+
## Arquivos Gerados (e não versionados por padrão):
|
|
59
|
+
|
|
60
|
+
Os seguintes arquivos são gerados durante a execução dos scripts. É recomendado adicioná-los ao seu `.gitignore` se você não pretende versioná-los:
|
|
61
|
+
|
|
62
|
+
- `corpus_consolidated.md`
|
|
63
|
+
- `raw_docs.json`
|
|
64
|
+
- `embedings.json` (ou o nome que você usar para o arquivo de embeddings)
|
|
65
|
+
- `gartner_filtrado_processed.csv` (ou o nome do seu CSV de Q&A limpo)
|
|
66
|
+
- `evaluation_results.json`
|
|
67
|
+
- `coverage_report.md`
|
|
68
|
+
- `coverage_report.html`
|
|
69
|
+
|
|
70
|
+
### Configuração do `.gitignore`:
|
|
71
|
+
|
|
72
|
+
#### Arquivos de Ambiente
|
|
73
|
+
```gitignore
|
|
74
|
+
.env
|
|
75
|
+
chaves/.env
|
|
76
|
+
```
|
|
77
|
+
#### Arquivos de Dados Gerados
|
|
78
|
+
```gitignore
|
|
79
|
+
# Ignorar arquivos gerados automaticamente
|
|
80
|
+
*.json
|
|
81
|
+
*.csv
|
|
82
|
+
*.md
|
|
83
|
+
*.html
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
#### Exceto os arquivos que SÃO parte do toolkit/interface
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
# Mantenha estes arquivos versionados (exceções à regra global)
|
|
90
|
+
!docs_tc.py
|
|
91
|
+
!merge_markdown.py
|
|
92
|
+
!extract_data_from_markdown.py
|
|
93
|
+
!generate_embedings.py
|
|
94
|
+
!limpa_csv.py
|
|
95
|
+
!evaluate_coverage.py
|
|
96
|
+
!generate_report.py
|
|
97
|
+
!generate_report_html.py
|
|
98
|
+
!assistente/index.html
|
|
99
|
+
!assistente/about.html
|
|
100
|
+
!assistente/mudanca.html
|
|
101
|
+
!README.md
|
|
102
|
+
!requirements.txt
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
#### Arquivos de Cache Python
|
|
106
|
+
```gitignore
|
|
107
|
+
pycache/
|
|
108
|
+
*.py[cod]
|
|
109
|
+
*$py.class
|
|
110
|
+
```
|
|
111
|
+
#### Ambiente Virtual
|
|
112
|
+
```gitignore
|
|
113
|
+
venv/
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
- Ajuste o `.gitignore` acima para manter os arquivos `.md` e `.html` que são parte da sua documentação ou da ferramenta em si (como este `README.md` ou o `index.html` da interface).*
|
|
117
|
+
- No exemplo acima, `*.json`, `*.csv`, `*.md`, `*.html` são ignorados globalmente, e depois exceções são adicionadas. Seus arquivos de documentação originais em `DocumentosMD/` e o CSV bruto em `DadosQA/` **não serão ignorados** por esta configuração, o que é o desejado.*
|
|
118
|
+
|
|
119
|
+
## Utilização do `docs-cli`
|
|
120
|
+
|
|
121
|
+
O `docs_tc.py` é o ponto de entrada principal para utilizar o toolkit. Abra um terminal na raiz do projeto.
|
|
122
|
+
|
|
123
|
+
### 1. Ajuda Geral e de Comandos:
|
|
124
|
+
|
|
125
|
+
```bash
|
|
126
|
+
docs-cli -h
|
|
127
|
+
docs-cli <comando> -h # Ex: docs-cli merge -h
|
|
128
|
+
```
|
|
129
|
+
### 2. Execução de Comandos Individuais:
|
|
130
|
+
|
|
131
|
+
Cada script pode ser chamado por um subcomando. Os nomes de arquivo padrão são usados se não especificados.
|
|
132
|
+
|
|
133
|
+
#### Consolidar Documentos (`merge`):
|
|
134
|
+
|
|
135
|
+
```bash
|
|
136
|
+
docs-cli merge ./docs/ --output_file corpus_consolidated.md
|
|
137
|
+
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
- `./docs/`: Diretório contendo seus arquivos .md originais.
|
|
141
|
+
- `-output_file`: (opcional) Nome do arquivo consolidado. Padrão: `corpus_consolidated.md`.
|
|
142
|
+
|
|
143
|
+
#### Extrair Dados do Markdown Consolidado (`extract`):
|
|
144
|
+
|
|
145
|
+
```bash
|
|
146
|
+
docs-cli extract --input_file corpus_consolidated.md --output_file raw_docs.json
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
- `-input_file`: (Opcional) Arquivo .md consolidado. Padrão: `corpus_consolidated.md`.
|
|
150
|
+
- `-output_file`: (Opcional) Arquivo JSON para os dados brutos. Padrão: `raw_docs.json`.
|
|
151
|
+
|
|
152
|
+
#### Gerar Embeddings (`generate_embeddings`):
|
|
153
|
+
|
|
154
|
+
```bash
|
|
155
|
+
docs-cli generate_embeddings --input_file raw_docs.json --output_file embeddings.json
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
- `-input_file`: (Opcional) Arquivo JSON com os dados brutos. Padrão: `raw_docs.json`.
|
|
159
|
+
- `-output_file`: (Opcional) Arquivo JSON para os embeddings. Padrão: `embeddings.json`.
|
|
160
|
+
|
|
161
|
+
#### Limpar CSV de Q&A (`clean_csv`):
|
|
162
|
+
|
|
163
|
+
```bash
|
|
164
|
+
docs-cli clean_csv ./csv/qa_bruto.csv --output_file qa_processado.csv
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
- `./csv/qa_bruto.csv`: Caminho para o arquivo CSV de perguntas e respostas bruto.
|
|
168
|
+
- `-output_file`: (Opcional) Nome do arquivo CSV processado. Padrão: `gartner_filtrado_processed.csv`.
|
|
169
|
+
|
|
170
|
+
#### Avaliar Cobertura (`evaluate_coverage`):
|
|
171
|
+
|
|
172
|
+
```bash
|
|
173
|
+
docs-cli evaluate qa_processado.csv embeddings.json -k 5 -o evaluation_results.json
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
- `qa_processado.csv`: Caminho para o arquivo CSV de perguntas e respostas processado.
|
|
177
|
+
- `embeddings.json`: Caminho para o arquivo JSON com os embeddings.
|
|
178
|
+
- `-k`: (Opcional) Número de resultados a retornar. Padrão: 5.
|
|
179
|
+
- `-o`: (Opcional) Nome do arquivo JSON para os resultados da avaliação. Padrão: `evaluation_results.json`.
|
|
180
|
+
De forma geral, os parâmetros são:
|
|
181
|
+
|
|
182
|
+
| Parâmetro | Tipo | Obrigatório | Descrição |
|
|
183
|
+
|--------------------------|---------|-------------|-------------------------------------------------------------------------------------------------|
|
|
184
|
+
| `qa_file` | string | Sim | Caminho para o arquivo CSV com perguntas e respostas |
|
|
185
|
+
| `embeddings_file` | string | Sim | Caminho para o arquivo JSON com os chunks processados e embeddings |
|
|
186
|
+
| `-k`, `--top-k` | inteiro | Não | Número de chunks mais relevantes a considerar (padrão: `5`) |
|
|
187
|
+
| `-o`, `--output` | string | Não | Caminho do arquivo de saída para os resultados (padrão: `evaluation_results.json`) |
|
|
188
|
+
|
|
189
|
+
#### Gerar Relatório Markdown (`generate_report`):
|
|
190
|
+
|
|
191
|
+
```bash
|
|
192
|
+
docs-cli generate_report evaluation_results.json --output_file coverage_report.md
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
- `evaluation_results.json`: Caminho para o arquivo JSON com os resultados da avaliação.
|
|
196
|
+
- `-output_file`: (Opcional) Nome do arquivo Markdown para o relatório. Padrão: `coverage_report.md`.
|
|
197
|
+
|
|
198
|
+
#### Gerar Relatório HTML (`generate_report_html`):
|
|
199
|
+
|
|
200
|
+
```bash
|
|
201
|
+
docs-cli generate_report_html evaluation_results.json --output_file coverage_report.html
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
- `evaluation_results.json`: Caminho para o arquivo JSON com os resultados da avaliação.
|
|
205
|
+
- `-output_file`: (Opcional) Nome do arquivo HTML para o relatório. Padrão: `coverage_report.html`.
|
|
206
|
+
|
|
207
|
+
## Executando o Toolkit Completo
|
|
208
|
+
Para executar todo o fluxo de trabalho do toolkit, você pode usar o comando principal `docs_tc.py` com o subcomando `full_flow`. Este comando executa todos os passos necessários, desde a consolidação dos documentos até a geração dos relatórios.
|
|
209
|
+
|
|
210
|
+
```bash
|
|
211
|
+
docs-cli full_flow ./docs/ ./csv/qa_bruto.csv --eval_top_k 5 --embeddings_file embedings.json
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
## Manutenção e Versionamento
|
|
215
|
+
|
|
216
|
+
- NÃO FAÇA COMMIT do seu arquivo `.env` contendo a `GOOGLE_API_KEY`.
|
|
217
|
+
- NÃO FAÇA COMMIT dos arquivos de dados gerados automaticamente (como `corpus_consolidated.md`, `raw_docs.json`, `embedings.json`, `evaluation_results.json`, etc.), a menos que tenha um motivo específico para versionar um estado particular desses dados. Adicione-os ao seu `.gitignore`.
|
|
218
|
+
- O arquivo CSV original com os dados de Q&A e os arquivos Markdown originais da sua documentação podem e devem ser versionados se fizerem parte da fonte do seu projeto.
|
|
219
|
+
|
|
220
|
+
---
|
|
221
|
+
|
|
222
|
+
Dê um alô :)
|
|
223
|
+
paulo[at]paulogpd.com.br
|
docs_cli-0.1.0/README.md
ADDED
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
# Toolkit de Análise e Cobertura de Documentação Técnica (`docs-cli`)
|
|
2
|
+
|
|
3
|
+
Este toolkit fornece um conjunto de scripts Python para processar documentação técnica em formato Markdown, gerar embeddings semânticos, avaliar a cobertura da documentação em relação a um conjunto de perguntas e respostas, e gerar relatórios detalhados. O script principal `docs_tc.py` orquestra a execução dos scripts individuais.
|
|
4
|
+
|
|
5
|
+
## Pré-requisitos
|
|
6
|
+
|
|
7
|
+
1. **Python 3.7+**: certifique-se de que o Python está instalado e configurado no seu PATH.
|
|
8
|
+
2. **Dependências Python**: instale as bibliotecas necessárias. É recomendado criar um ambiente virtual:
|
|
9
|
+
```bash
|
|
10
|
+
python -m venv venv
|
|
11
|
+
source venv/bin/activate # Linux/macOS
|
|
12
|
+
# venv\Scripts\activate # Windows
|
|
13
|
+
pip install google-generativeai python-dotenv numpy pandas
|
|
14
|
+
```
|
|
15
|
+
Você também pode criar um arquivo `requirements.txt` com o conteúdo acima e rodar `pip install -r requirements.txt`.
|
|
16
|
+
3. **Chave da API Google Gemini**:
|
|
17
|
+
* Crie um arquivo chamado `.env` na raiz do projeto.
|
|
18
|
+
* Dentro do `.env`, adicione sua chave da API:
|
|
19
|
+
```
|
|
20
|
+
GOOGLE_API_KEY="SUA_CHAVE_API_AQUI"
|
|
21
|
+
```
|
|
22
|
+
* **IMPORTANTE**: o arquivo `.env` contém informações sensíveis e **não deve ser versionado** no Git. Adicione `.env` ao seu arquivo `.gitignore`.
|
|
23
|
+
|
|
24
|
+
## Estrutura de Arquivos Esperada (Antes da Execução)
|
|
25
|
+
|
|
26
|
+
```txt
|
|
27
|
+
/seu-projeto-raiz/
|
|
28
|
+
|-- docs_tc.py # Script orquestrador principal
|
|
29
|
+
|-- merge_markdown.py # Script para consolidar .md
|
|
30
|
+
|-- extract_data_from_markdown.py # Script para extrair dados do .md consolidado
|
|
31
|
+
|-- generate_embeddings.py # Script para gerar embeddings
|
|
32
|
+
|-- limpa_csv.py # Script para limpar o CSV de Q&A
|
|
33
|
+
|-- evaluate_coverage.py # Script para avaliar a cobertura
|
|
34
|
+
|-- generate_report.py # Script para gerar relatório .md
|
|
35
|
+
|-- generate_report_html.py # Script para gerar relatório .html
|
|
36
|
+
```
|
|
37
|
+
## Arquivos Gerados (e não versionados por padrão):
|
|
38
|
+
|
|
39
|
+
Os seguintes arquivos são gerados durante a execução dos scripts. É recomendado adicioná-los ao seu `.gitignore` se você não pretende versioná-los:
|
|
40
|
+
|
|
41
|
+
- `corpus_consolidated.md`
|
|
42
|
+
- `raw_docs.json`
|
|
43
|
+
- `embedings.json` (ou o nome que você usar para o arquivo de embeddings)
|
|
44
|
+
- `gartner_filtrado_processed.csv` (ou o nome do seu CSV de Q&A limpo)
|
|
45
|
+
- `evaluation_results.json`
|
|
46
|
+
- `coverage_report.md`
|
|
47
|
+
- `coverage_report.html`
|
|
48
|
+
|
|
49
|
+
### Configuração do `.gitignore`:
|
|
50
|
+
|
|
51
|
+
#### Arquivos de Ambiente
|
|
52
|
+
```gitignore
|
|
53
|
+
.env
|
|
54
|
+
chaves/.env
|
|
55
|
+
```
|
|
56
|
+
#### Arquivos de Dados Gerados
|
|
57
|
+
```gitignore
|
|
58
|
+
# Ignorar arquivos gerados automaticamente
|
|
59
|
+
*.json
|
|
60
|
+
*.csv
|
|
61
|
+
*.md
|
|
62
|
+
*.html
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
#### Exceto os arquivos que SÃO parte do toolkit/interface
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
# Mantenha estes arquivos versionados (exceções à regra global)
|
|
69
|
+
!docs_tc.py
|
|
70
|
+
!merge_markdown.py
|
|
71
|
+
!extract_data_from_markdown.py
|
|
72
|
+
!generate_embedings.py
|
|
73
|
+
!limpa_csv.py
|
|
74
|
+
!evaluate_coverage.py
|
|
75
|
+
!generate_report.py
|
|
76
|
+
!generate_report_html.py
|
|
77
|
+
!assistente/index.html
|
|
78
|
+
!assistente/about.html
|
|
79
|
+
!assistente/mudanca.html
|
|
80
|
+
!README.md
|
|
81
|
+
!requirements.txt
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
#### Arquivos de Cache Python
|
|
85
|
+
```gitignore
|
|
86
|
+
pycache/
|
|
87
|
+
*.py[cod]
|
|
88
|
+
*$py.class
|
|
89
|
+
```
|
|
90
|
+
#### Ambiente Virtual
|
|
91
|
+
```gitignore
|
|
92
|
+
venv/
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
- Ajuste o `.gitignore` acima para manter os arquivos `.md` e `.html` que são parte da sua documentação ou da ferramenta em si (como este `README.md` ou o `index.html` da interface).*
|
|
96
|
+
- No exemplo acima, `*.json`, `*.csv`, `*.md`, `*.html` são ignorados globalmente, e depois exceções são adicionadas. Seus arquivos de documentação originais em `DocumentosMD/` e o CSV bruto em `DadosQA/` **não serão ignorados** por esta configuração, o que é o desejado.*
|
|
97
|
+
|
|
98
|
+
## Utilização do `docs-cli`
|
|
99
|
+
|
|
100
|
+
O `docs_tc.py` é o ponto de entrada principal para utilizar o toolkit. Abra um terminal na raiz do projeto.
|
|
101
|
+
|
|
102
|
+
### 1. Ajuda Geral e de Comandos:
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
docs-cli -h
|
|
106
|
+
docs-cli <comando> -h # Ex: docs-cli merge -h
|
|
107
|
+
```
|
|
108
|
+
### 2. Execução de Comandos Individuais:
|
|
109
|
+
|
|
110
|
+
Cada script pode ser chamado por um subcomando. Os nomes de arquivo padrão são usados se não especificados.
|
|
111
|
+
|
|
112
|
+
#### Consolidar Documentos (`merge`):
|
|
113
|
+
|
|
114
|
+
```bash
|
|
115
|
+
docs-cli merge ./docs/ --output_file corpus_consolidated.md
|
|
116
|
+
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
- `./docs/`: Diretório contendo seus arquivos .md originais.
|
|
120
|
+
- `-output_file`: (opcional) Nome do arquivo consolidado. Padrão: `corpus_consolidated.md`.
|
|
121
|
+
|
|
122
|
+
#### Extrair Dados do Markdown Consolidado (`extract`):
|
|
123
|
+
|
|
124
|
+
```bash
|
|
125
|
+
docs-cli extract --input_file corpus_consolidated.md --output_file raw_docs.json
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
- `-input_file`: (Opcional) Arquivo .md consolidado. Padrão: `corpus_consolidated.md`.
|
|
129
|
+
- `-output_file`: (Opcional) Arquivo JSON para os dados brutos. Padrão: `raw_docs.json`.
|
|
130
|
+
|
|
131
|
+
#### Gerar Embeddings (`generate_embeddings`):
|
|
132
|
+
|
|
133
|
+
```bash
|
|
134
|
+
docs-cli generate_embeddings --input_file raw_docs.json --output_file embeddings.json
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
- `-input_file`: (Opcional) Arquivo JSON com os dados brutos. Padrão: `raw_docs.json`.
|
|
138
|
+
- `-output_file`: (Opcional) Arquivo JSON para os embeddings. Padrão: `embeddings.json`.
|
|
139
|
+
|
|
140
|
+
#### Limpar CSV de Q&A (`clean_csv`):
|
|
141
|
+
|
|
142
|
+
```bash
|
|
143
|
+
docs-cli clean_csv ./csv/qa_bruto.csv --output_file qa_processado.csv
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
- `./csv/qa_bruto.csv`: Caminho para o arquivo CSV de perguntas e respostas bruto.
|
|
147
|
+
- `-output_file`: (Opcional) Nome do arquivo CSV processado. Padrão: `gartner_filtrado_processed.csv`.
|
|
148
|
+
|
|
149
|
+
#### Avaliar Cobertura (`evaluate_coverage`):
|
|
150
|
+
|
|
151
|
+
```bash
|
|
152
|
+
docs-cli evaluate qa_processado.csv embeddings.json -k 5 -o evaluation_results.json
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
- `qa_processado.csv`: Caminho para o arquivo CSV de perguntas e respostas processado.
|
|
156
|
+
- `embeddings.json`: Caminho para o arquivo JSON com os embeddings.
|
|
157
|
+
- `-k`: (Opcional) Número de resultados a retornar. Padrão: 5.
|
|
158
|
+
- `-o`: (Opcional) Nome do arquivo JSON para os resultados da avaliação. Padrão: `evaluation_results.json`.
|
|
159
|
+
De forma geral, os parâmetros são:
|
|
160
|
+
|
|
161
|
+
| Parâmetro | Tipo | Obrigatório | Descrição |
|
|
162
|
+
|--------------------------|---------|-------------|-------------------------------------------------------------------------------------------------|
|
|
163
|
+
| `qa_file` | string | Sim | Caminho para o arquivo CSV com perguntas e respostas |
|
|
164
|
+
| `embeddings_file` | string | Sim | Caminho para o arquivo JSON com os chunks processados e embeddings |
|
|
165
|
+
| `-k`, `--top-k` | inteiro | Não | Número de chunks mais relevantes a considerar (padrão: `5`) |
|
|
166
|
+
| `-o`, `--output` | string | Não | Caminho do arquivo de saída para os resultados (padrão: `evaluation_results.json`) |
|
|
167
|
+
|
|
168
|
+
#### Gerar Relatório Markdown (`generate_report`):
|
|
169
|
+
|
|
170
|
+
```bash
|
|
171
|
+
docs-cli generate_report evaluation_results.json --output_file coverage_report.md
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
- `evaluation_results.json`: Caminho para o arquivo JSON com os resultados da avaliação.
|
|
175
|
+
- `-output_file`: (Opcional) Nome do arquivo Markdown para o relatório. Padrão: `coverage_report.md`.
|
|
176
|
+
|
|
177
|
+
#### Gerar Relatório HTML (`generate_report_html`):
|
|
178
|
+
|
|
179
|
+
```bash
|
|
180
|
+
docs-cli generate_report_html evaluation_results.json --output_file coverage_report.html
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
- `evaluation_results.json`: Caminho para o arquivo JSON com os resultados da avaliação.
|
|
184
|
+
- `-output_file`: (Opcional) Nome do arquivo HTML para o relatório. Padrão: `coverage_report.html`.
|
|
185
|
+
|
|
186
|
+
## Executando o Toolkit Completo
|
|
187
|
+
Para executar todo o fluxo de trabalho do toolkit, você pode usar o comando principal `docs_tc.py` com o subcomando `full_flow`. Este comando executa todos os passos necessários, desde a consolidação dos documentos até a geração dos relatórios.
|
|
188
|
+
|
|
189
|
+
```bash
|
|
190
|
+
docs-cli full_flow ./docs/ ./csv/qa_bruto.csv --eval_top_k 5 --embeddings_file embedings.json
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
## Manutenção e Versionamento
|
|
194
|
+
|
|
195
|
+
- NÃO FAÇA COMMIT do seu arquivo `.env` contendo a `GOOGLE_API_KEY`.
|
|
196
|
+
- NÃO FAÇA COMMIT dos arquivos de dados gerados automaticamente (como `corpus_consolidated.md`, `raw_docs.json`, `embedings.json`, `evaluation_results.json`, etc.), a menos que tenha um motivo específico para versionar um estado particular desses dados. Adicione-os ao seu `.gitignore`.
|
|
197
|
+
- O arquivo CSV original com os dados de Q&A e os arquivos Markdown originais da sua documentação podem e devem ser versionados se fizerem parte da fonte do seu projeto.
|
|
198
|
+
|
|
199
|
+
---
|
|
200
|
+
|
|
201
|
+
Dê um alô :)
|
|
202
|
+
paulo[at]paulogpd.com.br
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: docs-cli
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Um toolkit para processamento e avaliação de documentação.
|
|
5
|
+
Author-email: Paulo Guilherme Pilott <seuemail@example.com>
|
|
6
|
+
License: MIT License
|
|
7
|
+
Classifier: Programming Language :: Python :: 3
|
|
8
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
9
|
+
Classifier: Operating System :: OS Independent
|
|
10
|
+
Classifier: Development Status :: 3 - Alpha
|
|
11
|
+
Classifier: Intended Audience :: Developers
|
|
12
|
+
Classifier: Topic :: Documentation
|
|
13
|
+
Classifier: Topic :: Utilities
|
|
14
|
+
Classifier: Environment :: Console
|
|
15
|
+
Requires-Python: >=3.8
|
|
16
|
+
Description-Content-Type: text/markdown
|
|
17
|
+
Requires-Dist: google-generativeai
|
|
18
|
+
Requires-Dist: python-dotenv
|
|
19
|
+
Requires-Dist: numpy
|
|
20
|
+
Requires-Dist: pandas
|
|
21
|
+
|
|
22
|
+
# Toolkit de Análise e Cobertura de Documentação Técnica (`docs-cli`)
|
|
23
|
+
|
|
24
|
+
Este toolkit fornece um conjunto de scripts Python para processar documentação técnica em formato Markdown, gerar embeddings semânticos, avaliar a cobertura da documentação em relação a um conjunto de perguntas e respostas, e gerar relatórios detalhados. O script principal `docs_tc.py` orquestra a execução dos scripts individuais.
|
|
25
|
+
|
|
26
|
+
## Pré-requisitos
|
|
27
|
+
|
|
28
|
+
1. **Python 3.7+**: certifique-se de que o Python está instalado e configurado no seu PATH.
|
|
29
|
+
2. **Dependências Python**: instale as bibliotecas necessárias. É recomendado criar um ambiente virtual:
|
|
30
|
+
```bash
|
|
31
|
+
python -m venv venv
|
|
32
|
+
source venv/bin/activate # Linux/macOS
|
|
33
|
+
# venv\Scripts\activate # Windows
|
|
34
|
+
pip install google-generativeai python-dotenv numpy pandas
|
|
35
|
+
```
|
|
36
|
+
Você também pode criar um arquivo `requirements.txt` com o conteúdo acima e rodar `pip install -r requirements.txt`.
|
|
37
|
+
3. **Chave da API Google Gemini**:
|
|
38
|
+
* Crie um arquivo chamado `.env` na raiz do projeto.
|
|
39
|
+
* Dentro do `.env`, adicione sua chave da API:
|
|
40
|
+
```
|
|
41
|
+
GOOGLE_API_KEY="SUA_CHAVE_API_AQUI"
|
|
42
|
+
```
|
|
43
|
+
* **IMPORTANTE**: o arquivo `.env` contém informações sensíveis e **não deve ser versionado** no Git. Adicione `.env` ao seu arquivo `.gitignore`.
|
|
44
|
+
|
|
45
|
+
## Estrutura de Arquivos Esperada (Antes da Execução)
|
|
46
|
+
|
|
47
|
+
```txt
|
|
48
|
+
/seu-projeto-raiz/
|
|
49
|
+
|-- docs_tc.py # Script orquestrador principal
|
|
50
|
+
|-- merge_markdown.py # Script para consolidar .md
|
|
51
|
+
|-- extract_data_from_markdown.py # Script para extrair dados do .md consolidado
|
|
52
|
+
|-- generate_embeddings.py # Script para gerar embeddings
|
|
53
|
+
|-- limpa_csv.py # Script para limpar o CSV de Q&A
|
|
54
|
+
|-- evaluate_coverage.py # Script para avaliar a cobertura
|
|
55
|
+
|-- generate_report.py # Script para gerar relatório .md
|
|
56
|
+
|-- generate_report_html.py # Script para gerar relatório .html
|
|
57
|
+
```
|
|
58
|
+
## Arquivos Gerados (e não versionados por padrão):
|
|
59
|
+
|
|
60
|
+
Os seguintes arquivos são gerados durante a execução dos scripts. É recomendado adicioná-los ao seu `.gitignore` se você não pretende versioná-los:
|
|
61
|
+
|
|
62
|
+
- `corpus_consolidated.md`
|
|
63
|
+
- `raw_docs.json`
|
|
64
|
+
- `embedings.json` (ou o nome que você usar para o arquivo de embeddings)
|
|
65
|
+
- `gartner_filtrado_processed.csv` (ou o nome do seu CSV de Q&A limpo)
|
|
66
|
+
- `evaluation_results.json`
|
|
67
|
+
- `coverage_report.md`
|
|
68
|
+
- `coverage_report.html`
|
|
69
|
+
|
|
70
|
+
### Configuração do `.gitignore`:
|
|
71
|
+
|
|
72
|
+
#### Arquivos de Ambiente
|
|
73
|
+
```gitignore
|
|
74
|
+
.env
|
|
75
|
+
chaves/.env
|
|
76
|
+
```
|
|
77
|
+
#### Arquivos de Dados Gerados
|
|
78
|
+
```gitignore
|
|
79
|
+
# Ignorar arquivos gerados automaticamente
|
|
80
|
+
*.json
|
|
81
|
+
*.csv
|
|
82
|
+
*.md
|
|
83
|
+
*.html
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
#### Exceto os arquivos que SÃO parte do toolkit/interface
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
# Mantenha estes arquivos versionados (exceções à regra global)
|
|
90
|
+
!docs_tc.py
|
|
91
|
+
!merge_markdown.py
|
|
92
|
+
!extract_data_from_markdown.py
|
|
93
|
+
!generate_embedings.py
|
|
94
|
+
!limpa_csv.py
|
|
95
|
+
!evaluate_coverage.py
|
|
96
|
+
!generate_report.py
|
|
97
|
+
!generate_report_html.py
|
|
98
|
+
!assistente/index.html
|
|
99
|
+
!assistente/about.html
|
|
100
|
+
!assistente/mudanca.html
|
|
101
|
+
!README.md
|
|
102
|
+
!requirements.txt
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
#### Arquivos de Cache Python
|
|
106
|
+
```gitignore
|
|
107
|
+
pycache/
|
|
108
|
+
*.py[cod]
|
|
109
|
+
*$py.class
|
|
110
|
+
```
|
|
111
|
+
#### Ambiente Virtual
|
|
112
|
+
```gitignore
|
|
113
|
+
venv/
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
- Ajuste o `.gitignore` acima para manter os arquivos `.md` e `.html` que são parte da sua documentação ou da ferramenta em si (como este `README.md` ou o `index.html` da interface).*
|
|
117
|
+
- No exemplo acima, `*.json`, `*.csv`, `*.md`, `*.html` são ignorados globalmente, e depois exceções são adicionadas. Seus arquivos de documentação originais em `DocumentosMD/` e o CSV bruto em `DadosQA/` **não serão ignorados** por esta configuração, o que é o desejado.*
|
|
118
|
+
|
|
119
|
+
## Utilização do `docs-cli`
|
|
120
|
+
|
|
121
|
+
O `docs_tc.py` é o ponto de entrada principal para utilizar o toolkit. Abra um terminal na raiz do projeto.
|
|
122
|
+
|
|
123
|
+
### 1. Ajuda Geral e de Comandos:
|
|
124
|
+
|
|
125
|
+
```bash
|
|
126
|
+
docs-cli -h
|
|
127
|
+
docs-cli <comando> -h # Ex: docs-cli merge -h
|
|
128
|
+
```
|
|
129
|
+
### 2. Execução de Comandos Individuais:
|
|
130
|
+
|
|
131
|
+
Cada script pode ser chamado por um subcomando. Os nomes de arquivo padrão são usados se não especificados.
|
|
132
|
+
|
|
133
|
+
#### Consolidar Documentos (`merge`):
|
|
134
|
+
|
|
135
|
+
```bash
|
|
136
|
+
docs-cli merge ./docs/ --output_file corpus_consolidated.md
|
|
137
|
+
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
- `./docs/`: Diretório contendo seus arquivos .md originais.
|
|
141
|
+
- `-output_file`: (opcional) Nome do arquivo consolidado. Padrão: `corpus_consolidated.md`.
|
|
142
|
+
|
|
143
|
+
#### Extrair Dados do Markdown Consolidado (`extract`):
|
|
144
|
+
|
|
145
|
+
```bash
|
|
146
|
+
docs-cli extract --input_file corpus_consolidated.md --output_file raw_docs.json
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
- `-input_file`: (Opcional) Arquivo .md consolidado. Padrão: `corpus_consolidated.md`.
|
|
150
|
+
- `-output_file`: (Opcional) Arquivo JSON para os dados brutos. Padrão: `raw_docs.json`.
|
|
151
|
+
|
|
152
|
+
#### Gerar Embeddings (`generate_embeddings`):
|
|
153
|
+
|
|
154
|
+
```bash
|
|
155
|
+
docs-cli generate_embeddings --input_file raw_docs.json --output_file embeddings.json
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
- `-input_file`: (Opcional) Arquivo JSON com os dados brutos. Padrão: `raw_docs.json`.
|
|
159
|
+
- `-output_file`: (Opcional) Arquivo JSON para os embeddings. Padrão: `embeddings.json`.
|
|
160
|
+
|
|
161
|
+
#### Limpar CSV de Q&A (`clean_csv`):
|
|
162
|
+
|
|
163
|
+
```bash
|
|
164
|
+
docs-cli clean_csv ./csv/qa_bruto.csv --output_file qa_processado.csv
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
- `./csv/qa_bruto.csv`: Caminho para o arquivo CSV de perguntas e respostas bruto.
|
|
168
|
+
- `-output_file`: (Opcional) Nome do arquivo CSV processado. Padrão: `gartner_filtrado_processed.csv`.
|
|
169
|
+
|
|
170
|
+
#### Avaliar Cobertura (`evaluate_coverage`):
|
|
171
|
+
|
|
172
|
+
```bash
|
|
173
|
+
docs-cli evaluate qa_processado.csv embeddings.json -k 5 -o evaluation_results.json
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
- `qa_processado.csv`: Caminho para o arquivo CSV de perguntas e respostas processado.
|
|
177
|
+
- `embeddings.json`: Caminho para o arquivo JSON com os embeddings.
|
|
178
|
+
- `-k`: (Opcional) Número de resultados a retornar. Padrão: 5.
|
|
179
|
+
- `-o`: (Opcional) Nome do arquivo JSON para os resultados da avaliação. Padrão: `evaluation_results.json`.
|
|
180
|
+
De forma geral, os parâmetros são:
|
|
181
|
+
|
|
182
|
+
| Parâmetro | Tipo | Obrigatório | Descrição |
|
|
183
|
+
|--------------------------|---------|-------------|-------------------------------------------------------------------------------------------------|
|
|
184
|
+
| `qa_file` | string | Sim | Caminho para o arquivo CSV com perguntas e respostas |
|
|
185
|
+
| `embeddings_file` | string | Sim | Caminho para o arquivo JSON com os chunks processados e embeddings |
|
|
186
|
+
| `-k`, `--top-k` | inteiro | Não | Número de chunks mais relevantes a considerar (padrão: `5`) |
|
|
187
|
+
| `-o`, `--output` | string | Não | Caminho do arquivo de saída para os resultados (padrão: `evaluation_results.json`) |
|
|
188
|
+
|
|
189
|
+
#### Gerar Relatório Markdown (`generate_report`):
|
|
190
|
+
|
|
191
|
+
```bash
|
|
192
|
+
docs-cli generate_report evaluation_results.json --output_file coverage_report.md
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
- `evaluation_results.json`: Caminho para o arquivo JSON com os resultados da avaliação.
|
|
196
|
+
- `-output_file`: (Opcional) Nome do arquivo Markdown para o relatório. Padrão: `coverage_report.md`.
|
|
197
|
+
|
|
198
|
+
#### Gerar Relatório HTML (`generate_report_html`):
|
|
199
|
+
|
|
200
|
+
```bash
|
|
201
|
+
docs-cli generate_report_html evaluation_results.json --output_file coverage_report.html
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
- `evaluation_results.json`: Caminho para o arquivo JSON com os resultados da avaliação.
|
|
205
|
+
- `-output_file`: (Opcional) Nome do arquivo HTML para o relatório. Padrão: `coverage_report.html`.
|
|
206
|
+
|
|
207
|
+
## Executando o Toolkit Completo
|
|
208
|
+
Para executar todo o fluxo de trabalho do toolkit, você pode usar o comando principal `docs_tc.py` com o subcomando `full_flow`. Este comando executa todos os passos necessários, desde a consolidação dos documentos até a geração dos relatórios.
|
|
209
|
+
|
|
210
|
+
```bash
|
|
211
|
+
docs-cli full_flow ./docs/ ./csv/qa_bruto.csv --eval_top_k 5 --embeddings_file embedings.json
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
## Manutenção e Versionamento
|
|
215
|
+
|
|
216
|
+
- NÃO FAÇA COMMIT do seu arquivo `.env` contendo a `GOOGLE_API_KEY`.
|
|
217
|
+
- NÃO FAÇA COMMIT dos arquivos de dados gerados automaticamente (como `corpus_consolidated.md`, `raw_docs.json`, `embedings.json`, `evaluation_results.json`, etc.), a menos que tenha um motivo específico para versionar um estado particular desses dados. Adicione-os ao seu `.gitignore`.
|
|
218
|
+
- O arquivo CSV original com os dados de Q&A e os arquivos Markdown originais da sua documentação podem e devem ser versionados se fizerem parte da fonte do seu projeto.
|
|
219
|
+
|
|
220
|
+
---
|
|
221
|
+
|
|
222
|
+
Dê um alô :)
|
|
223
|
+
paulo[at]paulogpd.com.br
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
README.md
|
|
2
|
+
docs_tc.py
|
|
3
|
+
evaluate_coverage.py
|
|
4
|
+
extract_data_from_markdown.py
|
|
5
|
+
generate_embeddings.py
|
|
6
|
+
generate_report.py
|
|
7
|
+
generate_report_html.py
|
|
8
|
+
limpa_csv.py
|
|
9
|
+
merge_markdown.py
|
|
10
|
+
pyproject.toml
|
|
11
|
+
setup.py
|
|
12
|
+
docs_cli.egg-info/PKG-INFO
|
|
13
|
+
docs_cli.egg-info/SOURCES.txt
|
|
14
|
+
docs_cli.egg-info/dependency_links.txt
|
|
15
|
+
docs_cli.egg-info/entry_points.txt
|
|
16
|
+
docs_cli.egg-info/requires.txt
|
|
17
|
+
docs_cli.egg-info/top_level.txt
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
[console_scripts]
|
|
2
|
+
docs-cli = docs_tc:main
|
|
3
|
+
docs-tc-clean-csv = limpa_csv:cli_main
|
|
4
|
+
docs-tc-evaluate-coverage = evaluate_coverage:cli_main
|
|
5
|
+
docs-tc-extract-data = extract_data_from_markdown:cli_main
|
|
6
|
+
docs-tc-generate-embeddings = generate_embedings:cli_main
|
|
7
|
+
docs-tc-generate-report-html = generate_report_html:cli_main
|
|
8
|
+
docs-tc-generate-report-md = generate_report:cli_main
|
|
9
|
+
docs-tc-merge-markdown = merge_markdown:cli_main
|