atendentepro 0.5.2__tar.gz → 0.5.4__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. {atendentepro-0.5.2 → atendentepro-0.5.4}/CHANGELOG.md +13 -0
  2. atendentepro-0.5.4/PKG-INFO +608 -0
  3. atendentepro-0.5.4/README.md +552 -0
  4. {atendentepro-0.5.2 → atendentepro-0.5.4}/pyproject.toml +1 -1
  5. atendentepro-0.5.2/PKG-INFO +0 -320
  6. atendentepro-0.5.2/README.md +0 -264
  7. {atendentepro-0.5.2 → atendentepro-0.5.4}/LICENSE +0 -0
  8. {atendentepro-0.5.2 → atendentepro-0.5.4}/MANIFEST.in +0 -0
  9. {atendentepro-0.5.2 → atendentepro-0.5.4}/atendentepro/README.md +0 -0
  10. {atendentepro-0.5.2 → atendentepro-0.5.4}/atendentepro/__init__.py +0 -0
  11. {atendentepro-0.5.2 → atendentepro-0.5.4}/atendentepro/agents/__init__.py +0 -0
  12. {atendentepro-0.5.2 → atendentepro-0.5.4}/atendentepro/agents/answer.py +0 -0
  13. {atendentepro-0.5.2 → atendentepro-0.5.4}/atendentepro/agents/confirmation.py +0 -0
  14. {atendentepro-0.5.2 → atendentepro-0.5.4}/atendentepro/agents/escalation.py +0 -0
  15. {atendentepro-0.5.2 → atendentepro-0.5.4}/atendentepro/agents/feedback.py +0 -0
  16. {atendentepro-0.5.2 → atendentepro-0.5.4}/atendentepro/agents/flow.py +0 -0
  17. {atendentepro-0.5.2 → atendentepro-0.5.4}/atendentepro/agents/interview.py +0 -0
  18. {atendentepro-0.5.2 → atendentepro-0.5.4}/atendentepro/agents/knowledge.py +0 -0
  19. {atendentepro-0.5.2 → atendentepro-0.5.4}/atendentepro/agents/onboarding.py +0 -0
  20. {atendentepro-0.5.2 → atendentepro-0.5.4}/atendentepro/agents/triage.py +0 -0
  21. {atendentepro-0.5.2 → atendentepro-0.5.4}/atendentepro/agents/usage.py +0 -0
  22. {atendentepro-0.5.2 → atendentepro-0.5.4}/atendentepro/config/__init__.py +0 -0
  23. {atendentepro-0.5.2 → atendentepro-0.5.4}/atendentepro/config/settings.py +0 -0
  24. {atendentepro-0.5.2 → atendentepro-0.5.4}/atendentepro/guardrails/__init__.py +0 -0
  25. {atendentepro-0.5.2 → atendentepro-0.5.4}/atendentepro/guardrails/manager.py +0 -0
  26. {atendentepro-0.5.2 → atendentepro-0.5.4}/atendentepro/license.py +0 -0
  27. {atendentepro-0.5.2 → atendentepro-0.5.4}/atendentepro/models/__init__.py +0 -0
  28. {atendentepro-0.5.2 → atendentepro-0.5.4}/atendentepro/models/context.py +0 -0
  29. {atendentepro-0.5.2 → atendentepro-0.5.4}/atendentepro/models/outputs.py +0 -0
  30. {atendentepro-0.5.2 → atendentepro-0.5.4}/atendentepro/network.py +0 -0
  31. {atendentepro-0.5.2 → atendentepro-0.5.4}/atendentepro/prompts/__init__.py +0 -0
  32. {atendentepro-0.5.2 → atendentepro-0.5.4}/atendentepro/prompts/answer.py +0 -0
  33. {atendentepro-0.5.2 → atendentepro-0.5.4}/atendentepro/prompts/confirmation.py +0 -0
  34. {atendentepro-0.5.2 → atendentepro-0.5.4}/atendentepro/prompts/escalation.py +0 -0
  35. {atendentepro-0.5.2 → atendentepro-0.5.4}/atendentepro/prompts/feedback.py +0 -0
  36. {atendentepro-0.5.2 → atendentepro-0.5.4}/atendentepro/prompts/flow.py +0 -0
  37. {atendentepro-0.5.2 → atendentepro-0.5.4}/atendentepro/prompts/interview.py +0 -0
  38. {atendentepro-0.5.2 → atendentepro-0.5.4}/atendentepro/prompts/knowledge.py +0 -0
  39. {atendentepro-0.5.2 → atendentepro-0.5.4}/atendentepro/prompts/onboarding.py +0 -0
  40. {atendentepro-0.5.2 → atendentepro-0.5.4}/atendentepro/prompts/triage.py +0 -0
  41. {atendentepro-0.5.2 → atendentepro-0.5.4}/atendentepro/templates/__init__.py +0 -0
  42. {atendentepro-0.5.2 → atendentepro-0.5.4}/atendentepro/templates/manager.py +0 -0
  43. {atendentepro-0.5.2 → atendentepro-0.5.4}/atendentepro/utils/__init__.py +0 -0
  44. {atendentepro-0.5.2 → atendentepro-0.5.4}/atendentepro/utils/openai_client.py +0 -0
  45. {atendentepro-0.5.2 → atendentepro-0.5.4}/atendentepro/utils/tracing.py +0 -0
  46. {atendentepro-0.5.2 → atendentepro-0.5.4}/atendentepro.egg-info/SOURCES.txt +0 -0
  47. {atendentepro-0.5.2 → atendentepro-0.5.4}/requirements.txt +0 -0
  48. {atendentepro-0.5.2 → atendentepro-0.5.4}/setup.cfg +0 -0
  49. {atendentepro-0.5.2 → atendentepro-0.5.4}/setup.py +0 -0
@@ -5,6 +5,19 @@ All notable changes to AtendentePro will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [0.5.4] - 2025-01-06
9
+
10
+ ### Changed
11
+ - Complete standalone documentation in README.md for PyPI
12
+ - All documentation now visible directly on PyPI page
13
+ - No external links to private repository
14
+
15
+ ## [0.5.3] - 2025-01-06
16
+
17
+ ### Fixed
18
+ - Documentation links now use absolute GitHub URLs for PyPI compatibility
19
+ - Removed reference to private `examples/` folder
20
+
8
21
  ## [0.5.2] - 2025-01-06
9
22
 
10
23
  ### Changed
@@ -0,0 +1,608 @@
1
+ Metadata-Version: 2.4
2
+ Name: atendentepro
3
+ Version: 0.5.4
4
+ Summary: Sistema de Atendimento Inteligente com Múltiplos Agentes IA - Biblioteca independente e modular baseada no OpenAI Agents SDK
5
+ Author-email: BeMonkAI <contato@monkai.com.br>
6
+ Maintainer-email: BeMonkAI <contato@monkai.com.br>
7
+ License: Proprietary
8
+ Project-URL: Homepage, https://github.com/BeMonkAI/atendentepro
9
+ Project-URL: Documentation, https://github.com/BeMonkAI/atendentepro#readme
10
+ Project-URL: Repository, https://github.com/BeMonkAI/atendentepro
11
+ Project-URL: Issues, https://github.com/BeMonkAI/atendentepro/issues
12
+ Project-URL: Changelog, https://github.com/BeMonkAI/atendentepro/blob/main/CHANGELOG.md
13
+ Keywords: ai,agents,customer-service,chatbot,openai,multi-agent,atendimento,openai-agents,conversational-ai,rag
14
+ Classifier: Development Status :: 4 - Beta
15
+ Classifier: Intended Audience :: Developers
16
+ Classifier: License :: Other/Proprietary License
17
+ Classifier: Programming Language :: Python :: 3
18
+ Classifier: Programming Language :: Python :: 3.9
19
+ Classifier: Programming Language :: Python :: 3.10
20
+ Classifier: Programming Language :: Python :: 3.11
21
+ Classifier: Programming Language :: Python :: 3.12
22
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
23
+ Classifier: Topic :: Communications :: Chat
24
+ Classifier: Operating System :: OS Independent
25
+ Requires-Python: >=3.9
26
+ Description-Content-Type: text/markdown
27
+ License-File: LICENSE
28
+ Requires-Dist: openai-agents>=0.3.3
29
+ Requires-Dist: openai>=1.107.1
30
+ Requires-Dist: pydantic>=2.0.0
31
+ Requires-Dist: PyYAML>=6.0
32
+ Requires-Dist: python-dotenv>=1.0.0
33
+ Requires-Dist: httpx>=0.27.0
34
+ Requires-Dist: numpy>=1.24.0
35
+ Requires-Dist: scikit-learn>=1.3.0
36
+ Provides-Extra: dev
37
+ Requires-Dist: pytest>=7.0.0; extra == "dev"
38
+ Requires-Dist: pytest-asyncio>=0.21.0; extra == "dev"
39
+ Requires-Dist: black>=23.0.0; extra == "dev"
40
+ Requires-Dist: isort>=5.12.0; extra == "dev"
41
+ Requires-Dist: mypy>=1.0.0; extra == "dev"
42
+ Provides-Extra: docs
43
+ Requires-Dist: mkdocs>=1.5.0; extra == "docs"
44
+ Requires-Dist: mkdocs-material>=9.0.0; extra == "docs"
45
+ Provides-Extra: rag
46
+ Requires-Dist: PyPDF2>=3.0.0; extra == "rag"
47
+ Requires-Dist: python-docx>=0.8.11; extra == "rag"
48
+ Requires-Dist: python-pptx>=0.6.21; extra == "rag"
49
+ Requires-Dist: PyMuPDF>=1.23.0; extra == "rag"
50
+ Provides-Extra: tracing
51
+ Requires-Dist: opentelemetry-sdk>=1.20.0; extra == "tracing"
52
+ Requires-Dist: azure-monitor-opentelemetry-exporter>=1.0.0; extra == "tracing"
53
+ Provides-Extra: all
54
+ Requires-Dist: atendentepro[dev,docs,rag,tracing]; extra == "all"
55
+ Dynamic: license-file
56
+
57
+ # AtendentePro 🤖
58
+
59
+ [![Python 3.9+](https://img.shields.io/badge/python-3.9+-blue.svg)](https://www.python.org/downloads/)
60
+ [![PyPI version](https://badge.fury.io/py/atendentepro.svg)](https://pypi.org/project/atendentepro/)
61
+ [![License: Proprietary](https://img.shields.io/badge/License-Proprietary-red.svg)](LICENSE)
62
+
63
+ **Sistema de Atendimento Inteligente com Múltiplos Agentes IA**
64
+
65
+ Uma biblioteca Python modular para criar sistemas de atendimento automatizado usando múltiplos agentes de IA especializados baseados no [OpenAI Agents SDK](https://github.com/openai/openai-agents-python).
66
+
67
+ ---
68
+
69
+ ## 📋 Índice
70
+
71
+ - [Instalação](#-instalação)
72
+ - [Ativação (Licença)](#-ativação-licença)
73
+ - [Configurar API Key](#-configurar-api-key)
74
+ - [Início Rápido](#-início-rápido)
75
+ - [Arquitetura](#-arquitetura)
76
+ - [Agentes Disponíveis](#-agentes-disponíveis)
77
+ - [Criar Templates Customizados](#-criar-templates-customizados)
78
+ - [Configurações YAML](#-configurações-yaml)
79
+ - [Escalation Agent](#-escalation-agent)
80
+ - [Feedback Agent](#-feedback-agent)
81
+ - [Fluxo de Handoffs](#-fluxo-de-handoffs)
82
+ - [Suporte](#-suporte)
83
+
84
+ ---
85
+
86
+ ## 📦 Instalação
87
+
88
+ ```bash
89
+ # Via PyPI
90
+ pip install atendentepro
91
+
92
+ # Ou via pip com versão específica
93
+ pip install atendentepro==0.5.3
94
+ ```
95
+
96
+ ---
97
+
98
+ ## 🔑 Ativação (Licença)
99
+
100
+ A biblioteca **requer um token de licença** para funcionar.
101
+
102
+ ### Opção 1: Variável de Ambiente (Recomendado)
103
+
104
+ ```bash
105
+ export ATENDENTEPRO_LICENSE_KEY="ATP_seu-token-aqui"
106
+ ```
107
+
108
+ ### Opção 2: Via Código
109
+
110
+ ```python
111
+ from atendentepro import activate
112
+
113
+ activate("ATP_seu-token-aqui")
114
+ ```
115
+
116
+ ### Opção 3: Arquivo .env
117
+
118
+ ```env
119
+ ATENDENTEPRO_LICENSE_KEY=ATP_seu-token-aqui
120
+ OPENAI_API_KEY=sk-sua-chave-openai
121
+ ```
122
+
123
+ ### Obter um Token
124
+
125
+ Entre em contato para obter seu token:
126
+ - 📧 **Email:** contato@monkai.com.br
127
+ - 🌐 **Site:** https://www.monkai.com.br
128
+
129
+ ---
130
+
131
+ ## 🔐 Configurar API Key
132
+
133
+ ### OpenAI
134
+
135
+ ```bash
136
+ # .env
137
+ OPENAI_API_KEY=sk-sua-chave-openai
138
+ ```
139
+
140
+ ### Azure OpenAI
141
+
142
+ ```bash
143
+ # .env
144
+ OPENAI_PROVIDER=azure
145
+ AZURE_API_KEY=sua-chave-azure
146
+ AZURE_API_ENDPOINT=https://seu-recurso.openai.azure.com
147
+ AZURE_API_VERSION=2024-02-15-preview
148
+ AZURE_DEPLOYMENT_NAME=gpt-4o
149
+ ```
150
+
151
+ ### Via Código
152
+
153
+ ```python
154
+ from atendentepro import activate, configure
155
+
156
+ activate("ATP_seu-token")
157
+
158
+ configure(
159
+ openai_api_key="sk-sua-chave-openai",
160
+ default_model="gpt-4o-mini"
161
+ )
162
+ ```
163
+
164
+ ---
165
+
166
+ ## ⚡ Início Rápido
167
+
168
+ ```python
169
+ import asyncio
170
+ from pathlib import Path
171
+ from atendentepro import activate, create_standard_network
172
+ from agents import Runner
173
+
174
+ # 1. Ativar
175
+ activate("ATP_seu-token")
176
+
177
+ async def main():
178
+ # 2. Criar rede de agentes
179
+ network = create_standard_network(
180
+ templates_root=Path("./meu_cliente"),
181
+ client="config"
182
+ )
183
+
184
+ # 3. Executar conversa
185
+ result = await Runner.run(
186
+ network.triage,
187
+ [{"role": "user", "content": "Olá, preciso de ajuda"}]
188
+ )
189
+
190
+ print(result.final_output)
191
+
192
+ asyncio.run(main())
193
+ ```
194
+
195
+ ---
196
+
197
+ ## 🏗️ Arquitetura
198
+
199
+ ```
200
+ ┌────────────────────────────────────────────────────────────────────────────┐
201
+ │ ATENDENTEPRO │
202
+ ├────────────────────────────────────────────────────────────────────────────┤
203
+ │ │
204
+ │ 👤 Usuário │
205
+ │ │ │
206
+ │ ▼ │
207
+ │ ┌─────────────┐ │
208
+ │ │ Triage │──► Classifica intenção do usuário │
209
+ │ └─────────────┘ │
210
+ │ │ │
211
+ │ ┌────┴────┬─────────┬─────────┬─────────┬─────────┬─────────┐ │
212
+ │ ▼ ▼ ▼ ▼ ▼ ▼ ▼ │
213
+ │ ┌──────┐ ┌───────┐ ┌───────┐ ┌───────┐ ┌───────┐ ┌───────┐ ┌───────┐ │
214
+ │ │ Flow │ │Knowl. │ │Confirm│ │ Usage │ │Onboard│ │Escala.│ │Feedbk.│ │
215
+ │ └──────┘ └───────┘ └───────┘ └───────┘ └───────┘ └───────┘ └───────┘ │
216
+ │ │ │
217
+ │ ▼ │
218
+ │ ┌─────────────┐ │
219
+ │ │ Interview │──► Coleta informações estruturadas │
220
+ │ └─────────────┘ │
221
+ │ │ │
222
+ │ ▼ │
223
+ │ ┌─────────────┐ │
224
+ │ │ Answer │──► Sintetiza resposta final │
225
+ │ └─────────────┘ │
226
+ │ │
227
+ │ ══════════════════════════════════════════════════════════════════════ │
228
+ │ 📞 Escalation → Transfere para atendimento humano IMEDIATO │
229
+ │ 📝 Feedback → Registra tickets para resposta POSTERIOR │
230
+ │ │
231
+ └────────────────────────────────────────────────────────────────────────────┘
232
+ ```
233
+
234
+ ---
235
+
236
+ ## 🤖 Agentes Disponíveis
237
+
238
+ | Agente | Descrição | Quando Usar |
239
+ |--------|-----------|-------------|
240
+ | **Triage** | Classifica intenção e direciona | Sempre (ponto de entrada) |
241
+ | **Flow** | Apresenta opções/menu ao usuário | Múltiplas opções disponíveis |
242
+ | **Interview** | Coleta informações através de perguntas | Precisa de dados do usuário |
243
+ | **Answer** | Sintetiza resposta final | Após coletar informações |
244
+ | **Knowledge** | Consulta RAG e dados estruturados | Perguntas sobre documentos/dados |
245
+ | **Confirmation** | Valida com respostas sim/não | Confirmar ações |
246
+ | **Usage** | Responde dúvidas sobre o sistema | "Como funciona?" |
247
+ | **Onboarding** | Cadastro de novos usuários | Novos usuários |
248
+ | **Escalation** | Transfere para humano | Urgente/não resolvido |
249
+ | **Feedback** | Registra tickets | Dúvidas/reclamações/sugestões |
250
+
251
+ ---
252
+
253
+ ## 📁 Criar Templates Customizados
254
+
255
+ ### Estrutura de Pastas
256
+
257
+ ```
258
+ meu_cliente/
259
+ ├── triage_config.yaml # ✅ Obrigatório
260
+ ├── flow_config.yaml # Recomendado
261
+ ├── interview_config.yaml # Recomendado
262
+ ├── answer_config.yaml # Opcional
263
+ ├── knowledge_config.yaml # Opcional
264
+ ├── escalation_config.yaml # Recomendado
265
+ ├── feedback_config.yaml # Recomendado
266
+ ├── guardrails_config.yaml # Recomendado
267
+ └── data/ # Dados estruturados (CSV, etc.)
268
+ ```
269
+
270
+ ### Usar o Template
271
+
272
+ ```python
273
+ from pathlib import Path
274
+ from atendentepro import create_standard_network
275
+
276
+ network = create_standard_network(
277
+ templates_root=Path("./"),
278
+ client="meu_cliente",
279
+ include_escalation=True,
280
+ include_feedback=True,
281
+ )
282
+ ```
283
+
284
+ ---
285
+
286
+ ## ⚙️ Configurações YAML
287
+
288
+ ### triage_config.yaml (Obrigatório)
289
+
290
+ Define palavras-chave para classificação:
291
+
292
+ ```yaml
293
+ agent_name: "Triage Agent"
294
+
295
+ keywords:
296
+ - agent: "Flow Agent"
297
+ keywords:
298
+ - "produto"
299
+ - "serviço"
300
+ - "preço"
301
+
302
+ - agent: "Knowledge Agent"
303
+ keywords:
304
+ - "documentação"
305
+ - "manual"
306
+ - "como funciona"
307
+
308
+ - agent: "Escalation Agent"
309
+ keywords:
310
+ - "falar com humano"
311
+ - "atendente"
312
+ ```
313
+
314
+ ### flow_config.yaml
315
+
316
+ Define opções/menu:
317
+
318
+ ```yaml
319
+ agent_name: "Flow Agent"
320
+
321
+ topics:
322
+ - id: 1
323
+ label: "Vendas"
324
+ keywords: ["comprar", "preço", "orçamento"]
325
+
326
+ - id: 2
327
+ label: "Suporte"
328
+ keywords: ["problema", "erro", "ajuda"]
329
+
330
+ - id: 3
331
+ label: "Financeiro"
332
+ keywords: ["pagamento", "boleto", "fatura"]
333
+ ```
334
+
335
+ ### interview_config.yaml
336
+
337
+ Define perguntas para coleta:
338
+
339
+ ```yaml
340
+ agent_name: "Interview Agent"
341
+
342
+ interview_questions: |
343
+ Para cada tópico, faça as seguintes perguntas:
344
+
345
+ ## Vendas
346
+ 1. Qual produto você tem interesse?
347
+ 2. Qual quantidade desejada?
348
+ 3. Qual seu email para contato?
349
+
350
+ ## Suporte
351
+ 1. Descreva o problema
352
+ 2. Quando começou?
353
+ 3. Já tentou alguma solução?
354
+ ```
355
+
356
+ ### guardrails_config.yaml
357
+
358
+ Define escopo e restrições:
359
+
360
+ ```yaml
361
+ scope: |
362
+ Este assistente pode ajudar com:
363
+ - Informações sobre produtos
364
+ - Suporte técnico
365
+ - Dúvidas sobre serviços
366
+
367
+ forbidden_topics:
368
+ - "política"
369
+ - "religião"
370
+ - "conteúdo adulto"
371
+
372
+ out_of_scope_message: |
373
+ Desculpe, não posso ajudar com esse assunto.
374
+ Posso ajudar com produtos, suporte ou serviços.
375
+ ```
376
+
377
+ ---
378
+
379
+ ## 📞 Escalation Agent
380
+
381
+ Transfere para atendimento humano quando:
382
+ - Usuário solicita explicitamente
383
+ - Tópico não coberto pelo sistema
384
+ - Usuário demonstra frustração
385
+ - Agente não consegue resolver
386
+
387
+ ### escalation_config.yaml
388
+
389
+ ```yaml
390
+ name: "Escalation Agent"
391
+
392
+ triggers:
393
+ explicit_request:
394
+ - "quero falar com um humano"
395
+ - "atendente humano"
396
+ - "falar com uma pessoa"
397
+
398
+ frustration:
399
+ - "você não está me ajudando"
400
+ - "isso não resolve"
401
+
402
+ channels:
403
+ phone:
404
+ enabled: true
405
+ number: "0800-123-4567"
406
+ hours: "Seg-Sex 8h-18h"
407
+
408
+ email:
409
+ enabled: true
410
+ address: "atendimento@empresa.com"
411
+ sla: "Resposta em até 24h"
412
+
413
+ whatsapp:
414
+ enabled: true
415
+ number: "(11) 99999-9999"
416
+
417
+ business_hours:
418
+ start: 8
419
+ end: 18
420
+ days: [monday, tuesday, wednesday, thursday, friday]
421
+
422
+ messages:
423
+ greeting: "Entendo que você precisa de um atendimento especializado."
424
+ out_of_hours: "Nosso atendimento funciona de Seg-Sex, 8h-18h."
425
+ ```
426
+
427
+ ### Usar Escalation
428
+
429
+ ```python
430
+ network = create_standard_network(
431
+ templates_root=Path("./meu_cliente"),
432
+ client="config",
433
+ include_escalation=True,
434
+ escalation_channels="""
435
+ 📞 Telefone: 0800-123-4567 (Seg-Sex 8h-18h)
436
+ 📧 Email: atendimento@empresa.com
437
+ 💬 WhatsApp: (11) 99999-9999
438
+ """,
439
+ )
440
+ ```
441
+
442
+ ---
443
+
444
+ ## 📝 Feedback Agent
445
+
446
+ Registra tickets para:
447
+ - ❓ **Dúvidas** - Perguntas que precisam de pesquisa
448
+ - 💬 **Feedback** - Opinião sobre produto/serviço
449
+ - 📢 **Reclamação** - Insatisfação formal (prioridade alta)
450
+ - 💡 **Sugestão** - Ideia de melhoria
451
+ - ⭐ **Elogio** - Agradecimento
452
+ - ⚠️ **Problema** - Bug/erro técnico (prioridade alta)
453
+
454
+ ### feedback_config.yaml
455
+
456
+ ```yaml
457
+ name: "Feedback Agent"
458
+
459
+ protocol_prefix: "SAC" # Formato: SAC-20240106-ABC123
460
+
461
+ ticket_types:
462
+ - name: "duvida"
463
+ label: "Dúvida"
464
+ default_priority: "normal"
465
+
466
+ - name: "reclamacao"
467
+ label: "Reclamação"
468
+ default_priority: "alta"
469
+
470
+ - name: "sugestao"
471
+ label: "Sugestão"
472
+ default_priority: "baixa"
473
+
474
+ email:
475
+ enabled: true
476
+ brand_color: "#660099"
477
+ brand_name: "Minha Empresa"
478
+ sla_message: "Retornaremos em até 24h úteis."
479
+
480
+ priorities:
481
+ - name: "baixa"
482
+ sla_hours: 72
483
+ - name: "normal"
484
+ sla_hours: 24
485
+ - name: "alta"
486
+ sla_hours: 8
487
+ - name: "urgente"
488
+ sla_hours: 2
489
+ ```
490
+
491
+ ### Usar Feedback
492
+
493
+ ```python
494
+ network = create_standard_network(
495
+ templates_root=Path("./meu_cliente"),
496
+ client="config",
497
+ include_feedback=True,
498
+ feedback_protocol_prefix="SAC",
499
+ feedback_brand_color="#660099",
500
+ feedback_brand_name="Minha Empresa",
501
+ )
502
+ ```
503
+
504
+ ### Diferença: Escalation vs Feedback
505
+
506
+ | Aspecto | Escalation | Feedback |
507
+ |---------|------------|----------|
508
+ | **Propósito** | Atendimento IMEDIATO | Registro para DEPOIS |
509
+ | **Urgência** | Alta | Pode aguardar |
510
+ | **Canal** | Telefone, chat | Email, ticket |
511
+ | **Protocolo** | ESC-XXXXXX | SAC-XXXXXX |
512
+ | **Quando usar** | "Quero falar com alguém" | "Tenho uma sugestão" |
513
+
514
+ ---
515
+
516
+ ## 🔄 Fluxo de Handoffs
517
+
518
+ ```
519
+ Triage ──► Flow, Knowledge, Confirmation, Usage, Onboarding, Escalation, Feedback
520
+ Flow ────► Interview, Triage, Escalation, Feedback
521
+ Interview► Answer, Escalation, Feedback
522
+ Answer ──► Triage, Escalation, Feedback
523
+ Knowledge► Triage, Escalation, Feedback
524
+ Escalation► Triage, Feedback
525
+ Feedback ► Triage, Escalation
526
+ ```
527
+
528
+ ### Configuração de Handoffs
529
+
530
+ ```python
531
+ # Todos os handoffs habilitados (padrão)
532
+ network = create_standard_network(
533
+ templates_root=Path("./meu_cliente"),
534
+ client="config",
535
+ include_escalation=True, # Padrão: True
536
+ include_feedback=True, # Padrão: True
537
+ )
538
+
539
+ # Sem Escalation ou Feedback
540
+ network = create_standard_network(
541
+ templates_root=Path("./meu_cliente"),
542
+ client="config",
543
+ include_escalation=False,
544
+ include_feedback=False,
545
+ )
546
+ ```
547
+
548
+ ---
549
+
550
+ ## 🔧 Dependências
551
+
552
+ - Python 3.9+
553
+ - openai-agents >= 0.3.3
554
+ - openai >= 1.107.1
555
+ - pydantic >= 2.0.0
556
+ - PyYAML >= 6.0
557
+ - python-dotenv >= 1.0.0
558
+
559
+ ---
560
+
561
+ ## 📄 Variáveis de Ambiente
562
+
563
+ | Variável | Descrição | Obrigatório |
564
+ |----------|-----------|-------------|
565
+ | `ATENDENTEPRO_LICENSE_KEY` | Token de licença | ✅ Sim |
566
+ | `OPENAI_API_KEY` | Chave API OpenAI | ✅ (se OpenAI) |
567
+ | `OPENAI_PROVIDER` | `openai` ou `azure` | Não |
568
+ | `DEFAULT_MODEL` | Modelo padrão | Não |
569
+ | `AZURE_API_KEY` | Chave API Azure | ✅ (se Azure) |
570
+ | `AZURE_API_ENDPOINT` | Endpoint Azure | ✅ (se Azure) |
571
+ | `SMTP_HOST` | Servidor SMTP | Para emails |
572
+ | `SMTP_USER` | Usuário SMTP | Para emails |
573
+ | `SMTP_PASSWORD` | Senha SMTP | Para emails |
574
+
575
+ ---
576
+
577
+ ## 🤝 Suporte
578
+
579
+ - 📧 **Email:** contato@monkai.com.br
580
+ - 🌐 **Site:** https://www.monkai.com.br
581
+
582
+ ---
583
+
584
+ ## 📝 Changelog
585
+
586
+ ### v0.5.3
587
+ - Documentação completa no README para PyPI
588
+
589
+ ### v0.5.2
590
+ - Atualização de contatos (monkai.com.br)
591
+
592
+ ### v0.5.1
593
+ - Prompts modulares para Escalation e Feedback
594
+ - Remoção de handoff circular Answer→Interview
595
+
596
+ ### v0.5.0
597
+ - Novo: Feedback Agent (tickets/SAC)
598
+
599
+ ### v0.4.0
600
+ - Novo: Escalation Agent (transferência humana)
601
+
602
+ ### v0.3.0
603
+ - Sistema de licenciamento
604
+ - Publicação inicial no PyPI
605
+
606
+ ---
607
+
608
+ **Made with ❤️ by MonkAI**