Spaces:
Sleeping
A newer version of the Gradio SDK is available:
6.5.1
Caso de Uso: Chatbot de Documentacao Tecnica
Guia completo para criar um chatbot que responde perguntas sobre documentacao tecnica.
Nivel: Intermediario Tempo: 30-45 minutos Exemplo: Chatbot para documentacao de API
Cenario
Voce tem documentacao tecnica extensa (manuais, API docs, guias) e quer:
- Responder perguntas dos desenvolvedores rapidamente
- Reduzir tempo de onboarding
- Liberar time de suporte tecnico
- Garantir respostas precisas com citacao de fontes
Passo 1: Preparar Documentacao
1.1 Organizar Documentos
Estrutura recomendada:
docs/
βββ api/
β βββ authentication.md
β βββ endpoints.md
β βββ errors.md
βββ guides/
β βββ getting_started.md
β βββ best_practices.md
β βββ deployment.md
βββ reference/
βββ cli.md
βββ configuration.md
1.2 Converter para Formato Suportado
O RAG Template suporta:
- TXT (texto plano)
- PDF (via pypdf)
Se sua documentacao esta em:
- Markdown: Converta para TXT ou use como esta
- HTML: Extraia texto com BeautifulSoup
- DOCX: Converta para PDF ou TXT
Exemplo de conversao MD para TXT:
for file in docs/**/*.md; do
pandoc "$file" -t plain -o "${file%.md}.txt"
done
Passo 2: Otimizar Chunking para Docs Tecnicas
Documentacao tecnica tem caracteristicas especiais:
- Codigo embutido
- Listas de parametros
- Exemplos de uso
- Referencias cruzadas
2.1 Estrategia Recomendada
Use chunking recursivo com separadores customizados:
# Em src/chunking.py (ja implementado)
SEPARATORS = [
"\n## ", # Secoes Markdown
"\n### ", # Subsecoes
"\n\n", # Paragrafos
"\n", # Linhas
" " # Palavras
]
2.2 Tamanho de Chunk
Para docs tecnicas:
- Chunk size: 800-1000 caracteres
- Overlap: 150-200 caracteres
Razao: Preservar contexto de exemplos de codigo completos.
2.3 Teste de Chunking
Use a aba "Comparacao de Chunking":
- Cole exemplo de doc tecnica
- Compare 4 estrategias
- Veja qual mantem codigo/listas intactos
Passo 3: Configurar Embeddings para Dominio Tecnico
3.1 Modelo Recomendado
Para docs tecnicas em ingles:
EMBEDDING_MODEL_ID=sentence-transformers/all-MiniLM-L6-v2
Alternativas:
BAAI/bge-small-en-v1.5(melhor para docs tecnicos)sentence-transformers/all-mpnet-base-v2(mais qualidade, 768d)
Para multilingu e (PT-BR + EN):
EMBEDDING_MODEL_ID=sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2
3.2 Ingerir Documentacao
# Inicie a aplicacao
python app.py
# Aba: Ingestao de Documentos
# 1. Upload de todos os arquivos (batch)
# 2. Estrategia: Recursivo
# 3. Chunk Size: 900
# 4. Overlap: 200
# 5. Iniciar Ingestao
Tempo estimado: ~5-10min para 100 docs
Passo 4: Configurar Retrieval Otimizado
4.1 Hybrid Search
Documentacao tecnica se beneficia de hybrid search:
- BM25: Para termos tecnicos exatos (nomes de funcoes, parametros)
- Vetorial: Para busca semantica (conceitos)
Configure:
USE_HYBRID_SEARCH=true
HYBRID_ALPHA=0.4 # Enfase em BM25 para termos exatos
4.2 Reranking
Ative reranking para melhor precisao:
USE_RERANKING=true
RERANKING_TOP_K=5
Pipeline:
- Hybrid search recupera 20 documentos
- Reranker seleciona top 5 mais relevantes
- LLM usa apenas os 5 melhores
Passo 5: Configurar LLM para Docs Tecnicas
5.1 Escolher LLM
Para docs tecnicas, recomendamos:
- GPT-4 (melhor, mas caro): Entende codigo perfeitamente
- GPT-3.5-turbo (bom custo-beneficio): Adequado para maioria
- Claude 3 (excelente para textos longos)
LLM_PROVIDER=openai
OPENAI_API_KEY=sk-...
5.2 Ajustar Parametros
TOP_K=5 # Contextos recuperados
TEMPERATURE=0.2 # Baixa = mais preciso
MAX_TOKENS=512 # Respostas concisas
5.3 Customizar Prompt
Edite src/generation.py para prompt especifico:
SYSTEM_PROMPT = """
Voce e um assistente especializado em documentacao tecnica.
DIRETRIZES:
1. Responda APENAS com base nos contextos fornecidos
2. Se a resposta nao esta nos contextos, diga "Nao encontrei essa informacao na documentacao"
3. Cite sempre a secao/arquivo de onde veio a informacao
4. Para codigo, use formatacao markdown com ```
5. Seja preciso e tecnico, nao simplifique demais
FORMATO DE RESPOSTA:
- Resposta direta e objetiva
- Exemplo de codigo (se aplicavel)
- Referencia: [Secao X da Documentacao]
"""
Passo 6: Testar e Refinar
6.1 Casos de Teste
Crie suite de perguntas comuns:
1. Como autenticar na API?
2. Quais sao os endpoints disponiveis?
3. Como tratar erro 401?
4. Qual o rate limit da API?
5. Como fazer deploy em producao?
6.2 Avaliar Qualidade
Para cada pergunta, verifique:
- Resposta esta correta?
- Fonte esta citada?
- Codigo de exemplo esta incluso (se relevante)?
- Resposta e completa mas concisa?
6.3 Iterar
Se qualidade nao e satisfatoria:
- Ajuste chunk_size
- Teste hybrid_alpha diferente
- Aumente/diminua top_k
- Melhore prompt
- Considere modelo de LLM melhor
Passo 7: Interface Customizada (Opcional)
7.1 Adicionar Features Especificas
Exemplo: Botao "Ver na Documentacao":
# ui/chat_tab.py
def chat_tab():
# ... codigo existente ...
with gr.Accordion("Contextos Recuperados"):
for ctx in contexts:
with gr.Row():
gr.Markdown(ctx['content'])
gr.Button(
"Ver Doc Original",
link=f"/docs/{ctx['source']}"
)
7.2 Adicionar Atalhos
Botoes para perguntas comuns:
common_questions = [
"Como autenticar?",
"Quais endpoints existem?",
"Como tratar erros?",
]
for q in common_questions:
gr.Button(q).click(
fn=lambda x=q: x,
outputs=query_input
)
Passo 8: Deploy
8.1 Opcoes Recomendadas
Para chatbot de docs tecnicas:
- Interno: Docker em VPS privado
- Publico: Hugging Face Spaces ou Railway
- Enterprise: Kubernetes com autenticacao
8.2 Consideracoes de Seguranca
Se docs sao privadas:
- Nao use Hugging Face Spaces publico
- Configure autenticacao (Gradio auth)
- Use VPN/firewall
- Database privado
# app.py
demo.launch(
auth=("username", "password"),
server_name="0.0.0.0",
server_port=7860,
share=False # Nao criar link publico
)
Passo 9: Monitoramento
9.1 Metricas Importantes
Track:
- Perguntas mais comuns: Identifique gaps na doc
- Taxa de "nao encontrei": Indica docs incompletas
- Tempo de resposta: Otimize se >5s
- Feedback dos usuarios: Thumbs up/down
9.2 Melhorias Continuas
Baseado em dados:
- Adicione docs para perguntas frequentes sem resposta
- Melhore chunking se contextos estao quebrados
- Atualize prompt baseado em feedback
- Considere fine-tuning se volume e alto
Resultados Esperados
Antes (sem chatbot)
- Tempo medio para resposta: 30min-2h
- Desenvolvedores pesquisando em docs extensas
- Suporte sobrecarregado
Depois (com RAG chatbot)
- Tempo medio: <30 segundos
- Auto-servico para 70-80% das perguntas
- Suporte focado em problemas complexos
- Onboarding 3x mais rapido
Casos Reais
Exemplo 1: Startup de API
Situacao: 500 paginas de API docs, time pequeno Solucao: RAG chatbot com GPT-3.5 Resultado:
- 60% reducao em tickets de suporte
- NPS +15 pontos
- Tempo de onboarding: 2 semanas β 3 dias
Exemplo 2: Empresa Enterprise
Situacao: Docs internas distribuidas, 10k+ paginas Solucao: RAG com hybrid search + reranking Resultado:
- Busca 10x mais rapida que busca nativa
- Encontra informacao cross-docs
- ROI positivo em 2 meses
Proximos Passos
- Multi-idioma: Adicione docs em outros idiomas
- Feedback loop: Implemente thumbs up/down
- Analytics: Track metricas de uso
- Integracoes: Slack bot, VS Code extension
Recursos
Tempo total de implementacao: 2-4 horas Manutencao: ~1h/semana (adicionar novos docs)