Files
hack/tools/scripts/llm-key-hunter/results/_cache/content/bemonkai_atendentepro-docs.json
T
OpenCode 68a9071cf1 feat: reconcile local master with origin (exa/hot-platform hunters, leaks ledger, latest results)
Local branch had diverged from origin/master (sibling commits on the same base). Rewrote local history linearly on top of origin/master, folding in all local content: exa/hot-platform discovery hunters, leaks ledger, nightly sweep orchestrator, updated .gitignore and skill docs, plus the latest hunt output and vault state. Remote-only files (vault keys, channel scripts) were restored rather than dropped, so the resulting tree is a full union of both sides.
2026-08-07 12:53:47 +08:00

1 line
10 KiB
JSON

{"repo": "bemonkai/atendentepro-docs", "files": {"setup_passo_a_passo/SETUP_COMPLETO_COPILOT.md": {"3be52694a5b5ad5e14ca36d7e81069945d3f53be": {"t": 1785746425.0303876, "n": 4726, "h": "2416b82eaf2e7084", "c": "# Setup completo AtendentePro — para colar no Copilot\n\nSiga o setup abaixo no projeto atual. Substitua os placeholders pelos valores reais. Aplique apenas os passos opcionais (memória, user_loader) se forem necessários para este projeto. Respeite a seção de cuidados ao final.\n\n---\n\n## 1. Instalação\n\n```bash\npip install atendentepro\n```\n\nOpcionais (só se o projeto precisar):\n- Memória de longo prazo: `pip install atendentepro[memory]`\n- Tracing: `pip install atendentepro[tracing]`\n- Tuning: `pip install atendentepro[tuning]`\n\n---\n\n## 2. Variáveis de ambiente (.env)\n\nCriar arquivo `.env` na raiz do projeto. Garantir que `.env` está no `.gitignore`. Nunca commitar chaves reais.\n\n```env\nATENDENTEPRO_LICENSE_KEY=[ATP_SEU_TOKEN]\nOPENAI_API_KEY=[OPENAI_API_KEY]\n\n# Opcional Azure (descomente se usar)\n# OPENAI_PROVIDER=azure\n# AZURE_API_KEY=...\n# AZURE_API_ENDPOINT=...\n# AZURE_API_VERSION=2024-02-15-preview\n# AZURE_DEPLOYMENT_NAME=gpt-4o\n\n# Opcional Custom Provider (DeepSeek, Gemini, Grok, Mistral, Ollama, etc.)\n# OPENAI_PROVIDER=custom\n# CUSTOM_BASE_URL=https://api.deepseek.com/v1\n# CUSTOM_API_KEY=sk-...\n# DEFAULT_MODEL=deepseek-chat\n\n# Opcional memória (apenas se usar atendentepro[memory])\n# GRKMEMORY_API_KEY=...\n```\n\n---\n\n## 3. Ativação e criação da rede\n\nNo código de entrada, ativar antes de qualquer uso da rede e criar a rede:\n\n```python\nimport os\nimport asyncio\nfrom pathlib import Path\nfrom dotenv import load_dotenv\nfrom atendentepro import activate, create_standard_network\nfrom agents import Runner\n\nload_dotenv()\nactivate(os.getenv(\"ATENDENTEPRO_LICENSE_KEY\"))\n\nnetwork = create_standard_network(\n templates_root=Path(\"[CAMINHO_PASTA_TEMPLATES]\"),\n client=\"[NOME_CLIENTE]\",\n)\n\nasync def main():\n messages = [{\"role\": \"user\", \"content\": \"Olá, preciso de ajuda\"}]\n result = await Runner.run(network.triage, messages)\n print(result.final_output)\n\nasyncio.run(main())\n```\n\nSubstituir:\n- `[CAMINHO_PASTA_TEMPLATES]`: pasta que contém a subpasta do cliente (ex.: `config` ou `templates`)\n- `[NOME_CLIENTE]`: nome da subpasta (ex.: `meu_cliente` ou `standard`)\n\n---\n\n## 4. Estrutura de pastas e triage_config.yaml mínimo\n\nCriar a pasta do cliente e o arquivo obrigatório. Exemplo: se `templates_root=config` e `client=meu_cliente`, criar `config/meu_cliente/triage_config.yaml`.\n\nConteúdo mínimo de `triage_config.yaml`:\n\n```yaml\nagent_keywords:\n flow_agent:\n keywords: [\"fluxo\", \"processo\", \"opções\", \"menu\"]\n description: \"Fluxos e opções\"\n knowledge_agent:\n keywords: [\"conhecimento\", \"documentação\", \"dúvida\", \"informação\"]\n description: \"Base de conhecimento\"\n answer_agent:\n keywords: [\"resposta\", \"ajuda\", \"suporte\"]\n description: \"Respostas diretas\"\n\nrouting_rules:\n priority_order:\n - \"answer_agent\"\n - \"knowledge_agent\"\n - \"flow_agent\"\n default_agent: \"knowledge_agent\"\n```\n\n---\n\n## 5. Opcional: Memória de contexto longo\n\nAplicar apenas se o projeto precisar de memória (conversas anteriores).\n\n- Instalar: `pip install atendentepro[memory]`\n- Adicionar no .env: `GRKMEMORY_API_KEY=...`\n- Código:\n\n```python\nfrom atendentepro.memory import run_with_memory, create_grk_backend\n\nnetwork.memory_backend = create_grk_backend()\n# Em vez de Runner.run, usar:\nresult = await run_with_memory(network, network.triage, messages)\n```\n\nEm multi-usuário ou canal compartilhado, passar sempre `user_id` (e `session_id` se aplicável) em cada chamada a `run_with_memory`.\n\n---\n\n## 6. Opcional: User loader\n\nAplicar apenas se o projeto precisar carregar dados do usuário por request (banco, CSV, API).\n\n- user_loader retorna `UserContext(user_id=..., role=..., metadata=...)` com dados do **request atual**.\n- Não usar user_loader para memória nem session_id; session_id por parâmetro ou `network.session_id_factory`.\n\n```python\nfrom atendentepro.models import UserContext\n\ndef loader(messages):\n return UserContext(user_id=\"...\", role=\"cliente\", metadata={})\n\nnetwork = create_standard_network(..., user_loader=loader)\n```\n\n---\n\n## 7. Principais cuidados (checklist)\n\n- [ ] Não commitar `.env`; manter no `.gitignore`. Não colar chaves em código.\n- [ ] Chamar `activate()` antes de qualquer uso da rede.\n- [ ] Em multi-usuário ou canal compartilhado: sempre passar `user_id` (e `session_id` quando aplicável) em `run_with_memory`.\n- [ ] user_loader: retornar dados do request atual; não usar para session_id.\n- [ ] Não concatenar input do usuário em system prompts (ver docs/SECURITY.md ao estender).\n- [ ] Pasta de templates deve existir e conter pelo menos `triage_config.yaml`; `templates_root` + `client` devem apontar para ela.\n\nReferências: [docs/setup_passo_a_passo/07_cuidados_principais.md](07_cuidados_principais.md), [docs/SECURITY.md](../SECURITY.md).\n"}, "2755856982f61cbff6af641474bef54c5cc52517": {"t": 1786068494.7949584, "n": 4726, "h": "2416b82eaf2e7084", "c": "# Setup completo AtendentePro — para colar no Copilot\n\nSiga o setup abaixo no projeto atual. Substitua os placeholders pelos valores reais. Aplique apenas os passos opcionais (memória, user_loader) se forem necessários para este projeto. Respeite a seção de cuidados ao final.\n\n---\n\n## 1. Instalação\n\n```bash\npip install atendentepro\n```\n\nOpcionais (só se o projeto precisar):\n- Memória de longo prazo: `pip install atendentepro[memory]`\n- Tracing: `pip install atendentepro[tracing]`\n- Tuning: `pip install atendentepro[tuning]`\n\n---\n\n## 2. Variáveis de ambiente (.env)\n\nCriar arquivo `.env` na raiz do projeto. Garantir que `.env` está no `.gitignore`. Nunca commitar chaves reais.\n\n```env\nATENDENTEPRO_LICENSE_KEY=[ATP_SEU_TOKEN]\nOPENAI_API_KEY=[OPENAI_API_KEY]\n\n# Opcional Azure (descomente se usar)\n# OPENAI_PROVIDER=azure\n# AZURE_API_KEY=...\n# AZURE_API_ENDPOINT=...\n# AZURE_API_VERSION=2024-02-15-preview\n# AZURE_DEPLOYMENT_NAME=gpt-4o\n\n# Opcional Custom Provider (DeepSeek, Gemini, Grok, Mistral, Ollama, etc.)\n# OPENAI_PROVIDER=custom\n# CUSTOM_BASE_URL=https://api.deepseek.com/v1\n# CUSTOM_API_KEY=sk-...\n# DEFAULT_MODEL=deepseek-chat\n\n# Opcional memória (apenas se usar atendentepro[memory])\n# GRKMEMORY_API_KEY=...\n```\n\n---\n\n## 3. Ativação e criação da rede\n\nNo código de entrada, ativar antes de qualquer uso da rede e criar a rede:\n\n```python\nimport os\nimport asyncio\nfrom pathlib import Path\nfrom dotenv import load_dotenv\nfrom atendentepro import activate, create_standard_network\nfrom agents import Runner\n\nload_dotenv()\nactivate(os.getenv(\"ATENDENTEPRO_LICENSE_KEY\"))\n\nnetwork = create_standard_network(\n templates_root=Path(\"[CAMINHO_PASTA_TEMPLATES]\"),\n client=\"[NOME_CLIENTE]\",\n)\n\nasync def main():\n messages = [{\"role\": \"user\", \"content\": \"Olá, preciso de ajuda\"}]\n result = await Runner.run(network.triage, messages)\n print(result.final_output)\n\nasyncio.run(main())\n```\n\nSubstituir:\n- `[CAMINHO_PASTA_TEMPLATES]`: pasta que contém a subpasta do cliente (ex.: `config` ou `templates`)\n- `[NOME_CLIENTE]`: nome da subpasta (ex.: `meu_cliente` ou `standard`)\n\n---\n\n## 4. Estrutura de pastas e triage_config.yaml mínimo\n\nCriar a pasta do cliente e o arquivo obrigatório. Exemplo: se `templates_root=config` e `client=meu_cliente`, criar `config/meu_cliente/triage_config.yaml`.\n\nConteúdo mínimo de `triage_config.yaml`:\n\n```yaml\nagent_keywords:\n flow_agent:\n keywords: [\"fluxo\", \"processo\", \"opções\", \"menu\"]\n description: \"Fluxos e opções\"\n knowledge_agent:\n keywords: [\"conhecimento\", \"documentação\", \"dúvida\", \"informação\"]\n description: \"Base de conhecimento\"\n answer_agent:\n keywords: [\"resposta\", \"ajuda\", \"suporte\"]\n description: \"Respostas diretas\"\n\nrouting_rules:\n priority_order:\n - \"answer_agent\"\n - \"knowledge_agent\"\n - \"flow_agent\"\n default_agent: \"knowledge_agent\"\n```\n\n---\n\n## 5. Opcional: Memória de contexto longo\n\nAplicar apenas se o projeto precisar de memória (conversas anteriores).\n\n- Instalar: `pip install atendentepro[memory]`\n- Adicionar no .env: `GRKMEMORY_API_KEY=...`\n- Código:\n\n```python\nfrom atendentepro.memory import run_with_memory, create_grk_backend\n\nnetwork.memory_backend = create_grk_backend()\n# Em vez de Runner.run, usar:\nresult = await run_with_memory(network, network.triage, messages)\n```\n\nEm multi-usuário ou canal compartilhado, passar sempre `user_id` (e `session_id` se aplicável) em cada chamada a `run_with_memory`.\n\n---\n\n## 6. Opcional: User loader\n\nAplicar apenas se o projeto precisar carregar dados do usuário por request (banco, CSV, API).\n\n- user_loader retorna `UserContext(user_id=..., role=..., metadata=...)` com dados do **request atual**.\n- Não usar user_loader para memória nem session_id; session_id por parâmetro ou `network.session_id_factory`.\n\n```python\nfrom atendentepro.models import UserContext\n\ndef loader(messages):\n return UserContext(user_id=\"...\", role=\"cliente\", metadata={})\n\nnetwork = create_standard_network(..., user_loader=loader)\n```\n\n---\n\n## 7. Principais cuidados (checklist)\n\n- [ ] Não commitar `.env`; manter no `.gitignore`. Não colar chaves em código.\n- [ ] Chamar `activate()` antes de qualquer uso da rede.\n- [ ] Em multi-usuário ou canal compartilhado: sempre passar `user_id` (e `session_id` quando aplicável) em `run_with_memory`.\n- [ ] user_loader: retornar dados do request atual; não usar para session_id.\n- [ ] Não concatenar input do usuário em system prompts (ver docs/SECURITY.md ao estender).\n- [ ] Pasta de templates deve existir e conter pelo menos `triage_config.yaml`; `templates_root` + `client` devem apontar para ela.\n\nReferências: [docs/setup_passo_a_passo/07_cuidados_principais.md](07_cuidados_principais.md), [docs/SECURITY.md](../SECURITY.md).\n"}}}}