# Instruções para o seu agente de IA: montar uma IA que responde com base nos documentos da empresa

> Cole este arquivo inteiro no seu agente (Claude Code, Codex, Cursor ou similar) e peça: "siga estas instruções".
> Fonte: rtera.com.br/dicas/documentos (RTERA TechLab). Repositório: https://github.com/Mintplex-Labs/anything-llm (licença MIT).

## Objetivo
Instalar o AnythingLLM nesta máquina com Docker, ligar a uma IA, criar um espaço de trabalho com os documentos que o
usuário indicar e deixar configurado para responder SÓ com base nesses documentos, mostrando a fonte.

## Regras para o agente
- Explique cada passo ao usuário em linguagem simples antes de executar.
- Nunca imprima, registre em log nem repita no chat a chave de API do usuário. Peça para ele colar a chave
  direto no arquivo `.env` ou na tela de configuração do AnythingLLM.
- Não envie documentos para nenhum lugar além do AnythingLLM local e do provedor de IA que o usuário escolher.
- Se algo falhar, mostre o erro real e pare. Não finja que deu certo.

## Passo 1: conferir o ambiente
1. Rode `docker --version`. Sem Docker, pare e oriente o usuário a instalar o Docker Desktop
   (https://www.docker.com/products/docker-desktop/) ou, se ele preferir não usar Docker, a baixar o aplicativo em
   https://anythingllm.com/download e seguir os passos 4 a 6 pela tela.
2. Confira se a porta 3001 está livre.

## Passo 2: escolher a IA que vai responder
Pergunte ao usuário qual opção ele quer:
- **Provedor por API** (Anthropic, OpenAI, Google Gemini, OpenRouter...): ele precisa de uma chave de API.
  Avise que o trecho do documento relevante para cada pergunta é enviado a esse provedor.
- **Modelo local** (Ollama ou LM Studio já instalados): nada sai da máquina, mas exige um computador mais forte.

## Passo 3: subir o AnythingLLM
```bash
mkdir -p ~/anythingllm/storage
touch ~/anythingllm/storage/.env
docker run -d --name anythingllm \
  -p 3001:3001 --cap-add SYS_ADMIN \
  -v ~/anythingllm/storage:/app/server/storage \
  -v ~/anythingllm/storage/.env:/app/server/.env \
  -e STORAGE_DIR=/app/server/storage \
  mintplexlabs/anythingllm
```
Espere uns 20 segundos e confira: `curl -s -o /dev/null -w '%{http_code}' http://localhost:3001/api/ping` deve dar `200`.
Se o `.env` for montado como pasta por engano, apague, recrie com `touch` e suba o container de novo.

## Passo 4: primeira configuração (pela tela)
Peça ao usuário para abrir http://localhost:3001 e, na primeira tela:
1. Escolher o provedor de IA do Passo 2 e colar a chave (ou apontar o modelo local).
2. Manter o embedder padrão ("AnythingLLM Native") e o banco de vetores padrão ("LanceDB"), a não ser que ele saiba
   o que está trocando.
3. Criar um **workspace** com o nome da empresa ou do setor.

## Passo 5: colocar os documentos
1. Pergunte em qual pasta estão os documentos (PDF, Word, TXT).
2. Oriente: no workspace, clicar no ícone de enviar arquivo, arrastar os documentos, clicar em
   **Move to Workspace** e depois **Save and Embed**.
3. Para testar antes com documentos fictícios, baixe os 10 PDFs de exemplo em https://rtera.com.br/dicas/documentos/

## Passo 6: os 3 ajustes que fazem diferença
Nas configurações do workspace (ícone de engrenagem → Chat Settings):
1. **Chat mode = Query**: responde só com base nos documentos, em vez de inventar.
2. **Query mode refusal response** em português, por exemplo:
   "Não encontrei isso nos documentos. Fale com a coordenação."
3. **Chat History = 0** se as perguntas forem soltas (com histórico, o modelo às vezes mistura a pergunta anterior).
4. Prompt do sistema sugerido:
   "Você é o assistente interno da empresa. Responda em português do Brasil, curto e direto, somente com base nos
   documentos. Se a resposta não estiver nos documentos, diga que não encontrou."

## Passo 7: testar com o usuário
Faça 3 perguntas e confira com ele:
1. Uma cuja resposta está num documento: a resposta deve citar o documento em **Sources**.
2. Uma que precisa de detalhe (prazo, valor, regra): confira o número com o documento original.
3. Uma que NÃO está nos documentos (ex.: "Qual a senha do wifi?"): deve vir a resposta de recusa.
Se a 3ª inventar resposta, revise o Passo 6.

## Passo 8: deixar para a equipe (opcional)
Para outras pessoas acessarem de fora desta máquina: domínio, HTTPS (proxy reverso) e senha. Ative o
**modo multiusuário** em Settings → Security e crie um usuário por pessoa. Não exponha a porta 3001 direto na internet.

## Ao terminar, entregue ao usuário
- O endereço de acesso, onde ficam os dados (`~/anythingllm/storage`) e como parar/iniciar:
  `docker stop anythingllm` / `docker start anythingllm`.
- O resultado real dos 3 testes do Passo 7.
