SDK Python para acessar bases de conhecimento jurídico VectorGov
Project description
VectorGov SDK
Busca semântica em legislação brasileira em 3 linhas de Python.
Acesse leis, decretos e instruções normativas com chunks prontos para alimentar qualquer LLM (OpenAI, Claude, Gemini, Ollama, LangChain, MCP).
Novidades:
- 0.19.5 —
to_context()e builders XML/markdown usamcitationno formato jurídico (CHANGELOG)- 0.19.4 — campo
citationem todos os Result types (Art. 75 da Lei 14.133/2021) — pronto para LLMs- 0.19.2 — créditos em todos os 8 endpoints pagos
- 0.19.0 — IDs internos de implementação removidos do response público
⚡ Quickstart (2 minutos)
pip install vectorgov
export VECTORGOV_API_KEY=vg_sua_chave
from vectorgov import VectorGov
vg = VectorGov() # lê VECTORGOV_API_KEY da env
result = vg.search("Quando o ETP pode ser dispensado?")
for hit in result:
label = hit.citation or hit.source # citation é o formato jurídico (0.19.4+)
print(f"[{hit.score:.0%}] {label}")
print(hit.text[:200], "...\n")
[97%] Art. 18 da Lei 14.133/2021
Art. 18. A fase preparatória do processo licitatório é caracterizada pelo planejamento ...
[92%] Art. 14 da IN 58/2022
Art. 14. A elaboração do ETP: I - é facultada nas hipóteses dos incisos I, II, VII e VIII ...
Próximo passo: passar para o seu LLM (3 linhas):
from openai import OpenAI
client = OpenAI()
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=result.to_messages(query="Quando o ETP pode ser dispensado?"),
)
print(response.choices[0].message.content)
🤖 Para LLMs e agentes: este README + a single-page LLM reference foram desenhados para serem alimentados a agentes via curl. O campo
hit.citation(formato jurídico brasileiroArt. 75 da Lei 14.133/2021) é o identificador que o seu agente deve usar nas respostas.
🌳 Qual método usar?
graph TD
A[Quero buscar legislação] --> B{Sei a referência exata?<br/>Ex: 'Art. 75 da Lei 14.133'}
B -->|Sim| C[vg.lookup<br/>📌 referência legal]
B -->|Não| D{Que tipo de busca?}
D -->|Linguagem natural<br/>'O que é ETP?'| E{Preciso de análise<br/>jurídica completa?}
D -->|Texto literal<br/>'dispensa de licitação'| F[vg.grep<br/>🔍 ripgrep exato]
D -->|Sigla/termo curado<br/>'ETP', 'PCA'| G[vg.filesystem_search<br/>📚 índice curado]
E -->|Não, só os artigos| H{Quero também os<br/>artigos relacionados<br/>via grafo?}
E -->|Sim, com Juiz LLM| I[vg.smart_search<br/>⚖️ análise premium 💰💰]
H -->|Sim| J[vg.hybrid<br/>🕸️ semântica + grafo]
H -->|Não, só os mais relevantes| K[vg.search<br/>🎯 semântica simples]
H -->|Quero máxima cobertura| L[vg.merged<br/>🌊 dual-path RRF]
| Método | Latência | Custo | Pra que serve |
|---|---|---|---|
vg.search() |
2-7s | 💰 | Busca semântica simples — chat, RAG, autocomplete |
vg.smart_search() |
5-18s | 💰💰 | Análise jurídica completa com Juiz LLM |
vg.hybrid() |
3-10s | 💰 | Semântica + expansão por grafo de citações |
vg.merged() |
2-5s | 💰 | Dual-path: hybrid + filesystem com RRF |
vg.lookup() |
< 1s | 💰 | Resolve "Art. 75 da Lei 14.133" para o dispositivo |
vg.grep() |
< 1s | 💰 | Busca textual literal (ripgrep) |
vg.filesystem_search() |
< 1s | 💰 | Índice curado (siglas, termos técnicos) |
vg.read_canonical() |
< 1s | free | Lê texto canônico completo |
🧭 Decisão por caso de uso: veja a Cheat Sheet — 1 página com decision tree completa, comparações e padrões idiomáticos.
📋 Os 22 métodos do SDK
🔍 Busca (8)
| Método | O que faz |
|---|---|
search |
Busca semântica simples (3 modos: fast/balanced/precise) |
smart_search |
Análise jurídica completa com Juiz LLM (Premium 💰💰) |
hybrid |
Semântica + expansão por grafo de citações |
lookup |
Resolve referência legal → dispositivo exato |
grep |
Busca textual literal (ripgrep) |
filesystem_search |
Índice curado determinístico |
merged |
hybrid + filesystem unificados via RRF |
read_canonical |
Lê texto canônico completo (free) |
🤖 Function Calling (4) — para agentes LLM
| Método | O que faz |
|---|---|
to_openai_tool |
Gera tool no formato OpenAI Function Calling |
to_anthropic_tool |
Gera tool no formato Anthropic Claude |
to_google_tool |
Gera tool no formato Google Gemini |
execute_tool_call |
Executa tool_call de qualquer LLM e retorna resultado |
📊 Tokens, Feedback & Prompts (4)
| Método | O que faz |
|---|---|
estimate_tokens |
Estima tokens antes de enviar para LLM (free) |
feedback |
Like/dislike de resultado para melhoria contínua |
get_system_prompt |
Prompts pré-otimizados: default/concise/detailed/chatbot |
available_prompts |
Lista os estilos disponíveis |
📚 Documentos (2)
| Método | O que faz |
|---|---|
list_documents |
Lista normas indexadas (free) |
get_document |
Metadados de uma norma específica (free) |
🛡️ Auditoria & Compliance (3)
| Método | O que faz |
|---|---|
get_audit_logs |
Logs de uso (security/performance/validation) |
get_audit_stats |
Estatísticas agregadas |
get_audit_event_types |
Lista tipos de evento disponíveis |
🛠️ Utilitário (1)
| Método | O que faz |
|---|---|
close |
Libera conexões. Use with VectorGov() as vg: para auto |
📖 Reference técnica completa: cada método com assinatura, parâmetros, retorno, exemplos e exceções em docs/api/methods.md.
🍳 Receitas comuns
Receita 1 — Passar para o ChatGPT em 3 linhas
from vectorgov import VectorGov
from openai import OpenAI
vg = VectorGov()
result = vg.search("Quais os critérios de julgamento na licitação?")
response = OpenAI().chat.completions.create(
model="gpt-4o-mini",
messages=result.to_messages(query="Critérios de julgamento"),
)
print(response.choices[0].message.content)
Receita 2 — Filtrar por norma específica
result = vg.search(
"credenciamento",
document_id_filter="LEI-14133-2021",
top_k=10,
)
Receita 3 — Resolver referência legal
r = vg.lookup("Art. 75 da Lei 14.133")
print(r.match.citation) # 'Art. 75 da Lei 14.133/2021'
print(r.stitched_text) # caput + parágrafos + incisos consolidados
Receita 4 — Function calling automático (Claude)
from anthropic import Anthropic
client = Anthropic()
tools = [vg.to_anthropic_tool()]
response = client.messages.create(
model="claude-sonnet-4-20250514",
max_tokens=1024,
tools=tools,
messages=[{"role": "user", "content": "Como funciona dispensa de licitação?"}],
)
# Se Claude chamou a tool, executa
for block in response.content:
if block.type == "tool_use":
result_text = vg.execute_tool_call(block)
print(result_text)
Receita 5 — Rastreabilidade total (citation + evidence)
result = vg.search("contratação direta")
for hit in result:
print(f"📜 {hit.citation}")
print(f" Score: {hit.score:.2%}")
print(f" 📄 Trecho destacado: {hit.evidence_url}")
print(f" 📥 PDF original: {hit.document_url}")
print()
Receita 6 — Limitar contexto por orçamento de tokens
stats = vg.estimate_tokens(
result,
query="Critérios de julgamento",
system_prompt=vg.get_system_prompt("detailed"),
)
print(f"Total: {stats.total_tokens} tokens")
if stats.total_tokens > 100_000:
context = result.to_context(max_chars=20_000)
else:
context = result.to_context()
Receita 7 — Auditoria de uso
stats = vg.get_audit_stats(days=7)
print(f"Eventos últimos 7 dias: {stats.total_events}")
print(f"Bloqueados (security): {stats.blocked_count}")
critical = vg.get_audit_logs(severity="critical", limit=10)
for log in critical.logs:
print(f"{log.timestamp} [{log.event_type}] {log.action_taken}")
🍳 Mais receitas: docs/cheat-sheet.md tem 10 padrões idiomáticos completos.
🔌 Integrações
| Integração | Doc | Extra necessário |
|---|---|---|
| OpenAI GPT | docs/integrations/openai.md | pip install openai |
| Anthropic Claude | docs/integrations/anthropic.md | pip install anthropic |
| Google Gemini | docs/integrations/gemini.md | pip install google-generativeai |
| Ollama (local) | docs/integrations/ollama.md | nenhum (stdlib) |
| HuggingFace Transformers | docs/integrations/transformers.md | pip install 'vectorgov[transformers]' |
| LangChain | docs/integrations/langchain.md | pip install 'vectorgov[langchain]' |
| LangGraph | docs/integrations/langgraph.md | pip install 'vectorgov[langgraph]' |
| Google ADK | docs/integrations/google-adk.md | pip install 'vectorgov[google-adk]' |
| MCP Server (Claude Desktop, Cursor) | docs/integrations/mcp.md | pip install 'vectorgov[mcp]' |
Instalação com extras
# Tudo de uma vez
pip install 'vectorgov[all]'
# Ou apenas o que precisa
pip install 'vectorgov[langchain]'
pip install 'vectorgov[mcp]'
📖 Documentação completa
| Recurso | Quando usar |
|---|---|
| 🧭 Cheat Sheet | Lookup rápido — todos os 23 métodos em 1 página |
| 📖 Reference de métodos | Detalhe técnico de cada método (assinatura, parâmetros, exceções) |
| 🧱 Modelos de dados | Hit, SearchResult, LookupResult, etc. |
| 🧠 Guia: busca avançada | Modos, filtros, dual-lane, query rewriting |
| 🛡️ Guia: tratamento de erros | Exceções, retry, rate limiting |
| 🎯 Guia: system prompts | Estilos, customização, impacto em tokens |
| 📊 Guia: auditoria & compliance | Logs, dashboards, alertas |
| 🤖 LLM reference (single-page) | Doc consolidada para alimentar agentes via curl |
🔑 Obter sua API key
- Acesse https://vectorgov.io/dashboard
- Crie uma conta (free) ou faça login
- Vá em API Keys → Criar nova chave
- Configure em sua máquina:
export VECTORGOV_API_KEY=vg_sua_chave_aqui
🆓 Plano free: 100 chamadas/dia em todos os endpoints pagos. Para volume maior ou
smart_searchilimitado, veja planos.
🤝 Suporte
- 🐛 GitHub Issues
- 📧 Email: contato@vectorgov.io
- 📚 Documentação completa (mkdocs)
- 💬 Discord da comunidade
📜 Licença
MIT. Veja LICENSE.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file vectorgov-0.19.6.tar.gz.
File metadata
- Download URL: vectorgov-0.19.6.tar.gz
- Upload date:
- Size: 109.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d522599a17b69762d1c854c0478432a6f19a83b0222c9660c16721a426aa6099
|
|
| MD5 |
0a1f7f5da2c89fc78e7810fb67d99d37
|
|
| BLAKE2b-256 |
02070889ec9a5b507253c44c665df8f0fa76b6fa51fc5a49533c0d4cd90cdbf6
|
Provenance
The following attestation bundles were made for vectorgov-0.19.6.tar.gz:
Publisher:
release.yml on euteajudo/vectorgov-sdk
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
vectorgov-0.19.6.tar.gz -
Subject digest:
d522599a17b69762d1c854c0478432a6f19a83b0222c9660c16721a426aa6099 - Sigstore transparency entry: 1313040280
- Sigstore integration time:
-
Permalink:
euteajudo/vectorgov-sdk@fbe8842de8833ede10eec7c78a7b595fde2d8529 -
Branch / Tag:
refs/tags/v0.19.6 - Owner: https://github.com/euteajudo
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@fbe8842de8833ede10eec7c78a7b595fde2d8529 -
Trigger Event:
push
-
Statement type:
File details
Details for the file vectorgov-0.19.6-py3-none-any.whl.
File metadata
- Download URL: vectorgov-0.19.6-py3-none-any.whl
- Upload date:
- Size: 90.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b3f4168c121df2eaf8354408af03ad34d82f1d2f4b935db1207fc7ed073dd83c
|
|
| MD5 |
cac551a5e5b573920dc2b9aedab4e1b5
|
|
| BLAKE2b-256 |
0f2990c27e37d72808e642b542536dfb1845ce884d15fd048561fe3a8c8b77b2
|
Provenance
The following attestation bundles were made for vectorgov-0.19.6-py3-none-any.whl:
Publisher:
release.yml on euteajudo/vectorgov-sdk
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
vectorgov-0.19.6-py3-none-any.whl -
Subject digest:
b3f4168c121df2eaf8354408af03ad34d82f1d2f4b935db1207fc7ed073dd83c - Sigstore transparency entry: 1313040350
- Sigstore integration time:
-
Permalink:
euteajudo/vectorgov-sdk@fbe8842de8833ede10eec7c78a7b595fde2d8529 -
Branch / Tag:
refs/tags/v0.19.6 - Owner: https://github.com/euteajudo
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@fbe8842de8833ede10eec7c78a7b595fde2d8529 -
Trigger Event:
push
-
Statement type: