atendentepro 0.6.4__tar.gz → 0.6.5__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.
- {atendentepro-0.6.4 → atendentepro-0.6.5}/CHANGELOG.md +10 -0
- {atendentepro-0.6.4 → atendentepro-0.6.5}/PKG-INFO +138 -1
- {atendentepro-0.6.4 → atendentepro-0.6.5}/README.md +137 -0
- {atendentepro-0.6.4 → atendentepro-0.6.5}/pyproject.toml +1 -1
- {atendentepro-0.6.4 → atendentepro-0.6.5}/LICENSE +0 -0
- {atendentepro-0.6.4 → atendentepro-0.6.5}/MANIFEST.in +0 -0
- {atendentepro-0.6.4 → atendentepro-0.6.5}/atendentepro/README.md +0 -0
- {atendentepro-0.6.4 → atendentepro-0.6.5}/atendentepro/__init__.py +0 -0
- {atendentepro-0.6.4 → atendentepro-0.6.5}/atendentepro/agents/__init__.py +0 -0
- {atendentepro-0.6.4 → atendentepro-0.6.5}/atendentepro/agents/answer.py +0 -0
- {atendentepro-0.6.4 → atendentepro-0.6.5}/atendentepro/agents/confirmation.py +0 -0
- {atendentepro-0.6.4 → atendentepro-0.6.5}/atendentepro/agents/escalation.py +0 -0
- {atendentepro-0.6.4 → atendentepro-0.6.5}/atendentepro/agents/feedback.py +0 -0
- {atendentepro-0.6.4 → atendentepro-0.6.5}/atendentepro/agents/flow.py +0 -0
- {atendentepro-0.6.4 → atendentepro-0.6.5}/atendentepro/agents/interview.py +0 -0
- {atendentepro-0.6.4 → atendentepro-0.6.5}/atendentepro/agents/knowledge.py +0 -0
- {atendentepro-0.6.4 → atendentepro-0.6.5}/atendentepro/agents/onboarding.py +0 -0
- {atendentepro-0.6.4 → atendentepro-0.6.5}/atendentepro/agents/triage.py +0 -0
- {atendentepro-0.6.4 → atendentepro-0.6.5}/atendentepro/agents/usage.py +0 -0
- {atendentepro-0.6.4 → atendentepro-0.6.5}/atendentepro/config/__init__.py +0 -0
- {atendentepro-0.6.4 → atendentepro-0.6.5}/atendentepro/config/settings.py +0 -0
- {atendentepro-0.6.4 → atendentepro-0.6.5}/atendentepro/guardrails/__init__.py +0 -0
- {atendentepro-0.6.4 → atendentepro-0.6.5}/atendentepro/guardrails/manager.py +0 -0
- {atendentepro-0.6.4 → atendentepro-0.6.5}/atendentepro/license.py +0 -0
- {atendentepro-0.6.4 → atendentepro-0.6.5}/atendentepro/models/__init__.py +0 -0
- {atendentepro-0.6.4 → atendentepro-0.6.5}/atendentepro/models/context.py +0 -0
- {atendentepro-0.6.4 → atendentepro-0.6.5}/atendentepro/models/outputs.py +0 -0
- {atendentepro-0.6.4 → atendentepro-0.6.5}/atendentepro/network.py +0 -0
- {atendentepro-0.6.4 → atendentepro-0.6.5}/atendentepro/prompts/__init__.py +0 -0
- {atendentepro-0.6.4 → atendentepro-0.6.5}/atendentepro/prompts/answer.py +0 -0
- {atendentepro-0.6.4 → atendentepro-0.6.5}/atendentepro/prompts/confirmation.py +0 -0
- {atendentepro-0.6.4 → atendentepro-0.6.5}/atendentepro/prompts/escalation.py +0 -0
- {atendentepro-0.6.4 → atendentepro-0.6.5}/atendentepro/prompts/feedback.py +0 -0
- {atendentepro-0.6.4 → atendentepro-0.6.5}/atendentepro/prompts/flow.py +0 -0
- {atendentepro-0.6.4 → atendentepro-0.6.5}/atendentepro/prompts/interview.py +0 -0
- {atendentepro-0.6.4 → atendentepro-0.6.5}/atendentepro/prompts/knowledge.py +0 -0
- {atendentepro-0.6.4 → atendentepro-0.6.5}/atendentepro/prompts/onboarding.py +0 -0
- {atendentepro-0.6.4 → atendentepro-0.6.5}/atendentepro/prompts/triage.py +0 -0
- {atendentepro-0.6.4 → atendentepro-0.6.5}/atendentepro/templates/__init__.py +0 -0
- {atendentepro-0.6.4 → atendentepro-0.6.5}/atendentepro/templates/manager.py +0 -0
- {atendentepro-0.6.4 → atendentepro-0.6.5}/atendentepro/utils/__init__.py +0 -0
- {atendentepro-0.6.4 → atendentepro-0.6.5}/atendentepro/utils/openai_client.py +0 -0
- {atendentepro-0.6.4 → atendentepro-0.6.5}/atendentepro/utils/tracing.py +0 -0
- {atendentepro-0.6.4 → atendentepro-0.6.5}/atendentepro.egg-info/SOURCES.txt +0 -0
- {atendentepro-0.6.4 → atendentepro-0.6.5}/requirements.txt +0 -0
- {atendentepro-0.6.4 → atendentepro-0.6.5}/setup.cfg +0 -0
- {atendentepro-0.6.4 → atendentepro-0.6.5}/setup.py +0 -0
|
@@ -5,6 +5,16 @@ 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.6.5] - 2025-01-21
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
- **Scripts de teste de licença**: Novos scripts em `scripts/` para testar o comportamento da biblioteca sem credencial
|
|
12
|
+
- `scripts/test_without_license.py`: Script para verificar se a biblioteca bloqueia corretamente o uso sem licença
|
|
13
|
+
- `scripts/TESTE_SEM_CREDENCIAL.md`: Documentação do teste de licença
|
|
14
|
+
|
|
15
|
+
### Documentation
|
|
16
|
+
- Documentação sobre verificação de licença e comportamento sem credencial
|
|
17
|
+
|
|
8
18
|
## [0.6.4] - 2025-01-14
|
|
9
19
|
|
|
10
20
|
### Added
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: atendentepro
|
|
3
|
-
Version: 0.6.
|
|
3
|
+
Version: 0.6.5
|
|
4
4
|
Summary: Framework de orquestração de agentes IA com tom e estilo customizáveis. Integra documentos (RAG), APIs e bancos de dados em uma plataforma inteligente multi-agente.
|
|
5
5
|
Author-email: BeMonkAI <contato@monkai.com.br>
|
|
6
6
|
Maintainer-email: BeMonkAI <contato@monkai.com.br>
|
|
@@ -96,6 +96,7 @@ Plataforma que unifica múltiplos agentes especializados para resolver demandas
|
|
|
96
96
|
- [Estilo de Comunicação](#-estilo-de-comunicação-agentstyle)
|
|
97
97
|
- [Single Reply Mode](#-single-reply-mode)
|
|
98
98
|
- [Filtros de Acesso](#-filtros-de-acesso-roleuser)
|
|
99
|
+
- [Múltiplos Agentes](#-múltiplos-agentes-multi-interview--knowledge)
|
|
99
100
|
- [Tracing e Monitoramento](#-tracing-e-monitoramento)
|
|
100
101
|
- [Suporte](#-suporte)
|
|
101
102
|
|
|
@@ -1039,6 +1040,142 @@ tool_access:
|
|
|
1039
1040
|
|
|
1040
1041
|
---
|
|
1041
1042
|
|
|
1043
|
+
## 🔀 Múltiplos Agentes (Multi Interview + Knowledge)
|
|
1044
|
+
|
|
1045
|
+
O AtendentePro suporta criar **múltiplas instâncias** de Interview e Knowledge agents, cada um especializado em um domínio diferente.
|
|
1046
|
+
|
|
1047
|
+
📂 **Exemplo completo**: [docs/examples/multi_agents/](docs/examples/multi_agents/)
|
|
1048
|
+
|
|
1049
|
+
### Caso de Uso
|
|
1050
|
+
|
|
1051
|
+
Empresa que atende diferentes tipos de clientes:
|
|
1052
|
+
- **Pessoa Física (PF)**: Produtos de consumo
|
|
1053
|
+
- **Pessoa Jurídica (PJ)**: Soluções empresariais
|
|
1054
|
+
|
|
1055
|
+
### Arquitetura
|
|
1056
|
+
|
|
1057
|
+
```
|
|
1058
|
+
┌─────────────────┐
|
|
1059
|
+
│ Triage │
|
|
1060
|
+
│ (entry point) │
|
|
1061
|
+
└────────┬────────┘
|
|
1062
|
+
│
|
|
1063
|
+
┌──────────────┼──────────────┐
|
|
1064
|
+
│ │ │
|
|
1065
|
+
▼ ▼ ▼
|
|
1066
|
+
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
|
|
1067
|
+
│ Interview │ │ Interview │ │ Flow │
|
|
1068
|
+
│ PF │ │ PJ │ │ (comum) │
|
|
1069
|
+
└──────┬──────┘ └──────┬──────┘ └─────────────┘
|
|
1070
|
+
│ │
|
|
1071
|
+
▼ ▼
|
|
1072
|
+
┌─────────────┐ ┌─────────────┐
|
|
1073
|
+
│ Knowledge │ │ Knowledge │
|
|
1074
|
+
│ PF │ │ PJ │
|
|
1075
|
+
└─────────────┘ └─────────────┘
|
|
1076
|
+
```
|
|
1077
|
+
|
|
1078
|
+
### Implementação
|
|
1079
|
+
|
|
1080
|
+
```python
|
|
1081
|
+
from atendentepro import (
|
|
1082
|
+
create_custom_network,
|
|
1083
|
+
create_triage_agent,
|
|
1084
|
+
create_interview_agent,
|
|
1085
|
+
create_knowledge_agent,
|
|
1086
|
+
)
|
|
1087
|
+
|
|
1088
|
+
# 1. Criar agentes especializados
|
|
1089
|
+
interview_pf = create_interview_agent(
|
|
1090
|
+
interview_questions="CPF, data de nascimento, renda mensal",
|
|
1091
|
+
name="interview_pf", # Nome único!
|
|
1092
|
+
)
|
|
1093
|
+
|
|
1094
|
+
interview_pj = create_interview_agent(
|
|
1095
|
+
interview_questions="CNPJ, razão social, faturamento",
|
|
1096
|
+
name="interview_pj", # Nome único!
|
|
1097
|
+
)
|
|
1098
|
+
|
|
1099
|
+
knowledge_pf = create_knowledge_agent(
|
|
1100
|
+
knowledge_about="Produtos para consumidor final",
|
|
1101
|
+
name="knowledge_pf",
|
|
1102
|
+
single_reply=True,
|
|
1103
|
+
)
|
|
1104
|
+
|
|
1105
|
+
knowledge_pj = create_knowledge_agent(
|
|
1106
|
+
knowledge_about="Soluções empresariais B2B",
|
|
1107
|
+
name="knowledge_pj",
|
|
1108
|
+
single_reply=True,
|
|
1109
|
+
)
|
|
1110
|
+
|
|
1111
|
+
# 2. Criar Triage
|
|
1112
|
+
triage = create_triage_agent(
|
|
1113
|
+
keywords_text="PF: CPF, pessoal, minha conta | PJ: CNPJ, empresa, MEI",
|
|
1114
|
+
name="triage_agent",
|
|
1115
|
+
)
|
|
1116
|
+
|
|
1117
|
+
# 3. Configurar handoffs
|
|
1118
|
+
triage.handoffs = [interview_pf, interview_pj, knowledge_pf, knowledge_pj]
|
|
1119
|
+
interview_pf.handoffs = [knowledge_pf, triage]
|
|
1120
|
+
interview_pj.handoffs = [knowledge_pj, triage]
|
|
1121
|
+
knowledge_pf.handoffs = [triage]
|
|
1122
|
+
knowledge_pj.handoffs = [triage]
|
|
1123
|
+
|
|
1124
|
+
# 4. Criar network customizada
|
|
1125
|
+
network = create_custom_network(
|
|
1126
|
+
triage=triage,
|
|
1127
|
+
custom_agents={
|
|
1128
|
+
"interview_pf": interview_pf,
|
|
1129
|
+
"interview_pj": interview_pj,
|
|
1130
|
+
"knowledge_pf": knowledge_pf,
|
|
1131
|
+
"knowledge_pj": knowledge_pj,
|
|
1132
|
+
},
|
|
1133
|
+
)
|
|
1134
|
+
```
|
|
1135
|
+
|
|
1136
|
+
### Cenários de Roteamento
|
|
1137
|
+
|
|
1138
|
+
| Mensagem do Usuário | Rota |
|
|
1139
|
+
|---------------------|------|
|
|
1140
|
+
| "Quero abrir conta para mim" | Triage → Interview PF → Knowledge PF |
|
|
1141
|
+
| "Preciso de maquininha para minha loja" | Triage → Interview PJ → Knowledge PJ |
|
|
1142
|
+
| "Quanto custa o cartão gold?" | Triage → Knowledge PF (direto) |
|
|
1143
|
+
| "Capital de giro para empresa" | Triage → Knowledge PJ (direto) |
|
|
1144
|
+
|
|
1145
|
+
### Padrão: 1 Interview → 2 Knowledge
|
|
1146
|
+
|
|
1147
|
+
Outro padrão comum é ter um único Interview que pode direcionar para múltiplos Knowledge:
|
|
1148
|
+
|
|
1149
|
+
```
|
|
1150
|
+
┌───────────────┐
|
|
1151
|
+
│ Interview │
|
|
1152
|
+
│ (coleta dados)│
|
|
1153
|
+
└───────┬───────┘
|
|
1154
|
+
│
|
|
1155
|
+
┌───────┴───────┐
|
|
1156
|
+
▼ ▼
|
|
1157
|
+
┌───────────────┐ ┌───────────────┐
|
|
1158
|
+
│ Knowledge │ │ Knowledge │
|
|
1159
|
+
│ Produtos │ │Troubleshooting│
|
|
1160
|
+
└───────────────┘ └───────────────┘
|
|
1161
|
+
```
|
|
1162
|
+
|
|
1163
|
+
```python
|
|
1164
|
+
# Um interview que direciona para múltiplos knowledge
|
|
1165
|
+
interview.handoffs = [knowledge_produtos, knowledge_troubleshooting, triage]
|
|
1166
|
+
```
|
|
1167
|
+
|
|
1168
|
+
📂 **Exemplo completo**: [example_one_interview_two_knowledge.py](docs/examples/multi_agents/example_one_interview_two_knowledge.py)
|
|
1169
|
+
|
|
1170
|
+
### Dicas
|
|
1171
|
+
|
|
1172
|
+
1. **Nomes únicos**: Cada agente precisa de um `name` distinto
|
|
1173
|
+
2. **Handoffs claros**: Configure quais agentes cada um pode chamar
|
|
1174
|
+
3. **Keywords no Triage**: Inclua palavras-chave para direcionar corretamente
|
|
1175
|
+
4. **single_reply**: Use em Knowledge para evitar loops
|
|
1176
|
+
|
|
1177
|
+
---
|
|
1178
|
+
|
|
1042
1179
|
## 📊 Tracing e Monitoramento
|
|
1043
1180
|
|
|
1044
1181
|
### MonkAI Trace (Recomendado)
|
|
@@ -38,6 +38,7 @@ Plataforma que unifica múltiplos agentes especializados para resolver demandas
|
|
|
38
38
|
- [Estilo de Comunicação](#-estilo-de-comunicação-agentstyle)
|
|
39
39
|
- [Single Reply Mode](#-single-reply-mode)
|
|
40
40
|
- [Filtros de Acesso](#-filtros-de-acesso-roleuser)
|
|
41
|
+
- [Múltiplos Agentes](#-múltiplos-agentes-multi-interview--knowledge)
|
|
41
42
|
- [Tracing e Monitoramento](#-tracing-e-monitoramento)
|
|
42
43
|
- [Suporte](#-suporte)
|
|
43
44
|
|
|
@@ -981,6 +982,142 @@ tool_access:
|
|
|
981
982
|
|
|
982
983
|
---
|
|
983
984
|
|
|
985
|
+
## 🔀 Múltiplos Agentes (Multi Interview + Knowledge)
|
|
986
|
+
|
|
987
|
+
O AtendentePro suporta criar **múltiplas instâncias** de Interview e Knowledge agents, cada um especializado em um domínio diferente.
|
|
988
|
+
|
|
989
|
+
📂 **Exemplo completo**: [docs/examples/multi_agents/](docs/examples/multi_agents/)
|
|
990
|
+
|
|
991
|
+
### Caso de Uso
|
|
992
|
+
|
|
993
|
+
Empresa que atende diferentes tipos de clientes:
|
|
994
|
+
- **Pessoa Física (PF)**: Produtos de consumo
|
|
995
|
+
- **Pessoa Jurídica (PJ)**: Soluções empresariais
|
|
996
|
+
|
|
997
|
+
### Arquitetura
|
|
998
|
+
|
|
999
|
+
```
|
|
1000
|
+
┌─────────────────┐
|
|
1001
|
+
│ Triage │
|
|
1002
|
+
│ (entry point) │
|
|
1003
|
+
└────────┬────────┘
|
|
1004
|
+
│
|
|
1005
|
+
┌──────────────┼──────────────┐
|
|
1006
|
+
│ │ │
|
|
1007
|
+
▼ ▼ ▼
|
|
1008
|
+
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
|
|
1009
|
+
│ Interview │ │ Interview │ │ Flow │
|
|
1010
|
+
│ PF │ │ PJ │ │ (comum) │
|
|
1011
|
+
└──────┬──────┘ └──────┬──────┘ └─────────────┘
|
|
1012
|
+
│ │
|
|
1013
|
+
▼ ▼
|
|
1014
|
+
┌─────────────┐ ┌─────────────┐
|
|
1015
|
+
│ Knowledge │ │ Knowledge │
|
|
1016
|
+
│ PF │ │ PJ │
|
|
1017
|
+
└─────────────┘ └─────────────┘
|
|
1018
|
+
```
|
|
1019
|
+
|
|
1020
|
+
### Implementação
|
|
1021
|
+
|
|
1022
|
+
```python
|
|
1023
|
+
from atendentepro import (
|
|
1024
|
+
create_custom_network,
|
|
1025
|
+
create_triage_agent,
|
|
1026
|
+
create_interview_agent,
|
|
1027
|
+
create_knowledge_agent,
|
|
1028
|
+
)
|
|
1029
|
+
|
|
1030
|
+
# 1. Criar agentes especializados
|
|
1031
|
+
interview_pf = create_interview_agent(
|
|
1032
|
+
interview_questions="CPF, data de nascimento, renda mensal",
|
|
1033
|
+
name="interview_pf", # Nome único!
|
|
1034
|
+
)
|
|
1035
|
+
|
|
1036
|
+
interview_pj = create_interview_agent(
|
|
1037
|
+
interview_questions="CNPJ, razão social, faturamento",
|
|
1038
|
+
name="interview_pj", # Nome único!
|
|
1039
|
+
)
|
|
1040
|
+
|
|
1041
|
+
knowledge_pf = create_knowledge_agent(
|
|
1042
|
+
knowledge_about="Produtos para consumidor final",
|
|
1043
|
+
name="knowledge_pf",
|
|
1044
|
+
single_reply=True,
|
|
1045
|
+
)
|
|
1046
|
+
|
|
1047
|
+
knowledge_pj = create_knowledge_agent(
|
|
1048
|
+
knowledge_about="Soluções empresariais B2B",
|
|
1049
|
+
name="knowledge_pj",
|
|
1050
|
+
single_reply=True,
|
|
1051
|
+
)
|
|
1052
|
+
|
|
1053
|
+
# 2. Criar Triage
|
|
1054
|
+
triage = create_triage_agent(
|
|
1055
|
+
keywords_text="PF: CPF, pessoal, minha conta | PJ: CNPJ, empresa, MEI",
|
|
1056
|
+
name="triage_agent",
|
|
1057
|
+
)
|
|
1058
|
+
|
|
1059
|
+
# 3. Configurar handoffs
|
|
1060
|
+
triage.handoffs = [interview_pf, interview_pj, knowledge_pf, knowledge_pj]
|
|
1061
|
+
interview_pf.handoffs = [knowledge_pf, triage]
|
|
1062
|
+
interview_pj.handoffs = [knowledge_pj, triage]
|
|
1063
|
+
knowledge_pf.handoffs = [triage]
|
|
1064
|
+
knowledge_pj.handoffs = [triage]
|
|
1065
|
+
|
|
1066
|
+
# 4. Criar network customizada
|
|
1067
|
+
network = create_custom_network(
|
|
1068
|
+
triage=triage,
|
|
1069
|
+
custom_agents={
|
|
1070
|
+
"interview_pf": interview_pf,
|
|
1071
|
+
"interview_pj": interview_pj,
|
|
1072
|
+
"knowledge_pf": knowledge_pf,
|
|
1073
|
+
"knowledge_pj": knowledge_pj,
|
|
1074
|
+
},
|
|
1075
|
+
)
|
|
1076
|
+
```
|
|
1077
|
+
|
|
1078
|
+
### Cenários de Roteamento
|
|
1079
|
+
|
|
1080
|
+
| Mensagem do Usuário | Rota |
|
|
1081
|
+
|---------------------|------|
|
|
1082
|
+
| "Quero abrir conta para mim" | Triage → Interview PF → Knowledge PF |
|
|
1083
|
+
| "Preciso de maquininha para minha loja" | Triage → Interview PJ → Knowledge PJ |
|
|
1084
|
+
| "Quanto custa o cartão gold?" | Triage → Knowledge PF (direto) |
|
|
1085
|
+
| "Capital de giro para empresa" | Triage → Knowledge PJ (direto) |
|
|
1086
|
+
|
|
1087
|
+
### Padrão: 1 Interview → 2 Knowledge
|
|
1088
|
+
|
|
1089
|
+
Outro padrão comum é ter um único Interview que pode direcionar para múltiplos Knowledge:
|
|
1090
|
+
|
|
1091
|
+
```
|
|
1092
|
+
┌───────────────┐
|
|
1093
|
+
│ Interview │
|
|
1094
|
+
│ (coleta dados)│
|
|
1095
|
+
└───────┬───────┘
|
|
1096
|
+
│
|
|
1097
|
+
┌───────┴───────┐
|
|
1098
|
+
▼ ▼
|
|
1099
|
+
┌───────────────┐ ┌───────────────┐
|
|
1100
|
+
│ Knowledge │ │ Knowledge │
|
|
1101
|
+
│ Produtos │ │Troubleshooting│
|
|
1102
|
+
└───────────────┘ └───────────────┘
|
|
1103
|
+
```
|
|
1104
|
+
|
|
1105
|
+
```python
|
|
1106
|
+
# Um interview que direciona para múltiplos knowledge
|
|
1107
|
+
interview.handoffs = [knowledge_produtos, knowledge_troubleshooting, triage]
|
|
1108
|
+
```
|
|
1109
|
+
|
|
1110
|
+
📂 **Exemplo completo**: [example_one_interview_two_knowledge.py](docs/examples/multi_agents/example_one_interview_two_knowledge.py)
|
|
1111
|
+
|
|
1112
|
+
### Dicas
|
|
1113
|
+
|
|
1114
|
+
1. **Nomes únicos**: Cada agente precisa de um `name` distinto
|
|
1115
|
+
2. **Handoffs claros**: Configure quais agentes cada um pode chamar
|
|
1116
|
+
3. **Keywords no Triage**: Inclua palavras-chave para direcionar corretamente
|
|
1117
|
+
4. **single_reply**: Use em Knowledge para evitar loops
|
|
1118
|
+
|
|
1119
|
+
---
|
|
1120
|
+
|
|
984
1121
|
## 📊 Tracing e Monitoramento
|
|
985
1122
|
|
|
986
1123
|
### MonkAI Trace (Recomendado)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "atendentepro"
|
|
3
|
-
version = "0.6.
|
|
3
|
+
version = "0.6.5"
|
|
4
4
|
description = "Framework de orquestração de agentes IA com tom e estilo customizáveis. Integra documentos (RAG), APIs e bancos de dados em uma plataforma inteligente multi-agente."
|
|
5
5
|
authors = [
|
|
6
6
|
{ name = "BeMonkAI", email = "contato@monkai.com.br" }
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|