rag_template / docs /SPACES_SECRETS.md
Guilherme Favaron
Sync: Complete project update (Phase 6) - API, Metadata, Eval, Docs
a686b1b
# Secrets para Hugging Face Spaces
Guia completo para configurar secrets no Hugging Face Spaces para o RAG Template.
---
## Como Configurar Secrets
1. Acesse seu Space no Hugging Face
2. Va para **Settings**
3. Role ate a secao **Repository secrets**
4. Clique em **New secret** para cada secret necessario
5. Adicione nome e valor
6. Clique em **Add secret**
---
## Secrets Obrigatorios
### DATABASE_URL
**Obrigatorio**: Sim
Connection string do PostgreSQL com pgvector.
**Formato**:
```
postgresql://user:password@host:port/database
```
**Exemplos**:
```bash
# Supabase
postgresql://postgres:sua_senha@db.xxxxxxxxxxxxx.supabase.co:5432/postgres
# Neon
postgresql://user:senha@ep-xxx-xxx.us-east-1.aws.neon.tech/neondb?sslmode=require
# Railway
postgresql://postgres:senha@containers-us-west-xxx.railway.app:5432/railway
```
**Importante**:
- Certifique-se de que a senha esta URL-encoded se conter caracteres especiais
- Para Neon, inclua `?sslmode=require`
- Teste a conexao antes de adicionar ao Space
**Como obter**:
- [Supabase Setup](SUPABASE_SETUP.md)
- [Neon Setup](NEON_SETUP.md)
- [Railway Setup](RAILWAY_SETUP.md)
---
## Secrets de LLM Providers
Voce precisa de **pelo menos um** destes para usar o chat:
### HF_TOKEN (Recomendado para Spaces)
**Obrigatorio**: Nao, mas recomendado
Token da Hugging Face para usar Inference API.
**Como obter**:
1. Va para [huggingface.co/settings/tokens](https://huggingface.co/settings/tokens)
2. Crie novo token com permissao "read"
3. Copie o token
**Formato**:
```
hf_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
```
**Vantagens**:
- Gratuito (com limites)
- Sem necessidade de infraestrutura
- Varios modelos disponiveis
**Limites Free Tier**:
- ~30k tokens/hora
- Pode ter queue em horarios de pico
---
### OPENAI_API_KEY
**Obrigatorio**: Nao
Chave de API da OpenAI para usar GPT-4, GPT-3.5, etc.
**Como obter**:
1. Crie conta em [platform.openai.com](https://platform.openai.com)
2. Va para [API Keys](https://platform.openai.com/api-keys)
3. Crie nova secret key
4. Copie a chave (aparece apenas uma vez!)
**Formato**:
```
sk-proj-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
```
**Custos** (Fevereiro 2024):
- GPT-3.5-turbo: $0.50 / 1M tokens input
- GPT-4-turbo: $10 / 1M tokens input
- GPT-4o: $5 / 1M tokens input
---
### ANTHROPIC_API_KEY
**Obrigatorio**: Nao
Chave de API da Anthropic para usar Claude.
**Como obter**:
1. Crie conta em [console.anthropic.com](https://console.anthropic.com)
2. Va para API Keys
3. Crie nova key
4. Copie a chave
**Formato**:
```
sk-ant-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
```
**Custos** (Fevereiro 2024):
- Claude 3 Haiku: $0.25 / 1M tokens input
- Claude 3 Sonnet: $3 / 1M tokens input
- Claude 3 Opus: $15 / 1M tokens input
---
### OLLAMA_BASE_URL
**Obrigatorio**: Nao
URL do servidor Ollama para usar modelos locais.
**Como configurar**:
1. Instale Ollama localmente ou em servidor
2. Exponha via ngrok ou similar (para Spaces)
3. Use URL publica
**Formato**:
```
https://seu-servidor.com
```
**Nota**: Nao recomendado para Spaces publicos (requer servidor proprio).
---
## Secrets Opcionais
### EMBEDDING_MODEL_ID
**Default**: `sentence-transformers/all-MiniLM-L6-v2`
Modelo para gerar embeddings.
**Alternativas**:
```
sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2 # Multilingue
sentence-transformers/all-mpnet-base-v2 # Melhor qualidade (768d)
BAAI/bge-small-en-v1.5 # Eficiente
```
---
### TOP_K
**Default**: `4`
Numero de documentos a recuperar na busca.
**Range**: 1-20
---
### TEMPERATURE
**Default**: `0.3`
Criatividade do LLM (0 = deterministico, 1 = criativo).
**Range**: 0.0-1.0
---
### MAX_TOKENS
**Default**: `512`
Tamanho maximo da resposta do LLM.
**Range**: 100-4096
---
## Exemplo Completo
```bash
# Obrigatorio
DATABASE_URL=postgresql://postgres:senha@db.xxx.supabase.co:5432/postgres
# LLM (escolha pelo menos um)
HF_TOKEN=hf_xxxxxxxxxxxxxxxxxxxxx
OPENAI_API_KEY=sk-proj-xxxxxxxxxxxxx
ANTHROPIC_API_KEY=sk-ant-xxxxxxxxxxxxx
# Opcional
EMBEDDING_MODEL_ID=sentence-transformers/all-MiniLM-L6-v2
TOP_K=4
TEMPERATURE=0.3
MAX_TOKENS=512
```
---
## Validacao de Secrets
Apos configurar, o app validara os secrets na inicializacao:
### Validacoes:
1. **DATABASE_URL**: Testa conexao e verifica extensao pgvector
2. **HF_TOKEN**: Testa autenticacao (se fornecido)
3. **OPENAI_API_KEY**: Testa autenticacao (se fornecido)
4. **ANTHROPIC_API_KEY**: Testa autenticacao (se fornecido)
### Logs de inicializacao:
```
Conectando ao banco de dados...
DATABASE_URL: OK
Extensao pgvector: OK
Verificando LLM providers...
HuggingFace: OK
OpenAI: NAO CONFIGURADO
Anthropic: NAO CONFIGURADO
```
---
## Seguranca
### Boas Praticas:
1. **Nunca compartilhe secrets publicamente**
- Nao commite no Git
- Nao coloque em codigo
- Nao compartilhe em issues/forums
2. **Rotacao de secrets**
- Troque secrets periodicamente
- Revogue secrets antigos
- Use secrets separados para dev/prod
3. **Principio do menor privilegio**
- Use apenas permissoes necessarias
- Para HF_TOKEN, permissao "read" e suficiente
- Nao use tokens com permissoes de "write"
4. **Monitoring**
- Monitore uso de API keys
- Configure alerts de uso anormal
- Revogue imediatamente se comprometido
---
## Troubleshooting
### "Unable to connect to database"
**Causa**: DATABASE_URL incorreto ou banco inacessivel
**Solucao**:
1. Verifique formato da URL
2. Teste conexao localmente
3. Verifique se banco esta ativo (Supabase nao pausado)
---
### "HF_TOKEN invalid"
**Causa**: Token invalido ou expirado
**Solucao**:
1. Gere novo token em huggingface.co/settings/tokens
2. Certifique-se de copiar token completo
3. Token deve comecar com `hf_`
---
### "OpenAI authentication failed"
**Causa**: OPENAI_API_KEY invalida
**Solucao**:
1. Verifique se key e valida em platform.openai.com
2. Certifique-se de ter creditos na conta
3. Key deve comecar com `sk-`
---
### "Extension 'vector' not found"
**Causa**: pgvector nao habilitado no banco
**Solucao**:
```sql
-- Execute no SQL Editor do seu provider
CREATE EXTENSION vector;
```
---
## Limitacoes do Free Tier
### Hugging Face Spaces
- Secrets podem ser vistos por administradores do Space
- Spaces publicos podem ter limite de uso
- Cold start pode demorar
### LLM Providers
- **HuggingFace**: ~30k tokens/hora
- **OpenAI**: Requer creditos ($5 minimo inicial)
- **Anthropic**: Requer creditos ($5 minimo inicial)
---
## Recursos Adicionais
- [Supabase Setup](SUPABASE_SETUP.md)
- [Neon Setup](NEON_SETUP.md)
- [Railway Setup](RAILWAY_SETUP.md)
- [Database Comparison](DATABASE_COMPARISON.md)
---
## Suporte
Se encontrar problemas:
1. Verifique logs do Space
2. Teste conexoes localmente
3. Abra issue no [GitHub](https://github.com/guifav/rag_template/issues)
---
**Feito com muito cafe**