chatgraph 0.3.1__py3-none-any.whl → 0.3.4__py3-none-any.whl

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.

Potentially problematic release.


This version of chatgraph might be problematic. Click here for more details.

@@ -0,0 +1,326 @@
1
+ Metadata-Version: 2.1
2
+ Name: chatgraph
3
+ Version: 0.3.4
4
+ Summary: A user-friendly chatbot library
5
+ Home-page: https://github.com/irissonnlima/chatgraph
6
+ License: MIT
7
+ Keywords: chatbot,rabbitmq,messaging,routing,chatgraph,python
8
+ Author: Irisson N. Lima
9
+ Author-email: irisson.lima@verdecard.com.br
10
+ Requires-Python: >=3.12,<4.0
11
+ Classifier: License :: OSI Approved :: MIT License
12
+ Classifier: Programming Language :: Python :: 3
13
+ Classifier: Programming Language :: Python :: 3.12
14
+ Requires-Dist: grpcio (>=1.67.0,<2.0.0)
15
+ Requires-Dist: grpcio-tools (>=1.67.0,<2.0.0)
16
+ Requires-Dist: pika (>=1.3.2,<2.0.0)
17
+ Requires-Dist: python-dotenv (>=1.0.1,<2.0.0)
18
+ Requires-Dist: rich (>=13.8.1,<14.0.0)
19
+ Requires-Dist: typer (>=0.12.5,<0.13.0)
20
+ Project-URL: Repository, https://github.com/irissonnlima/chatgraph
21
+ Description-Content-Type: text/markdown
22
+
23
+ ### **README - ChatGraph**
24
+
25
+ # ChatGraph - Framework para Criação de Chatbots
26
+
27
+ ChatGraph é uma biblioteca desenvolvida para criar chatbots interativos e modulares. Com suporte integrado para gRPC e RabbitMQ, ela permite gerenciar fluxos complexos de mensagens e criar comandos de chatbots que respondem a rotas específicas. Toda interação começa pela rota `start` e deriva para sub-rotas como `start.choice`.
28
+
29
+ ### **Requisitos**
30
+ - Python 3.12+
31
+ - `pip` para gerenciamento de pacotes
32
+
33
+ ### **Instalação**
34
+ A biblioteca ChatGraph pode ser instalada diretamente via `pip`:
35
+
36
+ ```bash
37
+ pip install chatgraph
38
+ ```
39
+
40
+ ## **Configuração**
41
+
42
+ ### **Variáveis de Ambiente**
43
+ Crie um arquivo `.env` na raiz do projeto para definir as variáveis necessárias, incluindo detalhes de conexão com RabbitMQ e URI para gRPC. Exemplo:
44
+
45
+ ```env
46
+ RABBIT_USER=seu_usuario
47
+ RABBIT_PASS=sua_senha
48
+ RABBIT_URI=amqp://localhost
49
+ RABBIT_QUEUE=chat_queue
50
+ RABBIT_PREFETCH=1
51
+ RABBIT_VHOST=/
52
+ GRPC_URI=grpc://localhost:50051
53
+ ```
54
+
55
+ Aqui está uma descrição mais detalhada de cada um dos objetos mencionados. Esses componentes são fundamentais para a estrutura e funcionalidade do ChatGraph, permitindo gerenciar fluxos de chat, interações e estados do usuário de forma eficiente.
56
+
57
+ ### **Tipos de Objetos e Suas Funções**
58
+
59
+ ---
60
+
61
+ ### **1. `UserCall`**
62
+ **Localização:** `from .types.request_types import UserCall`
63
+
64
+ O `UserCall` representa uma solicitação de interação do usuário para o chatbot. Ele encapsula as informações básicas sobre uma mensagem recebida do usuário e fornece detalhes essenciais que o chatbot pode usar para decidir como responder.
65
+
66
+ #### **Principais Propriedades:**
67
+ - **`text`**: A mensagem de texto enviada pelo usuário.
68
+ - **`user_id`**: Identificador único do usuário, permitindo o rastreamento e a vinculação de estados.
69
+ - **`platform`**: Informação sobre a plataforma usada (por exemplo, WhatsApp, Web, etc.).
70
+ - **`timestamp`**: Horário em que a mensagem foi recebida.
71
+ - **`metadata`**: Dados adicionais que podem incluir informações contextuais (ex: geolocalização, histórico de navegação).
72
+
73
+ #### **Uso:**
74
+ O `UserCall` é instanciado sempre que uma nova mensagem é recebida, e fornece os dados necessários para que o chatbot processe e determine a resposta apropriada.
75
+
76
+ ---
77
+
78
+ ### **2. `UserState`**
79
+ **Localização:** `from .types.request_types import UserState`
80
+
81
+ `UserState` é usado para representar o estado atual do usuário no sistema de chatbot. Ele guarda o contexto de uma sessão do usuário, permitindo que o chatbot mantenha informações ao longo de múltiplas interações.
82
+
83
+ #### **Principais Propriedades:**
84
+ - **`state_id`**: Identificador único para o estado do usuário.
85
+ - **`current_route`**: A rota atual onde o usuário está localizado dentro do fluxo do chatbot.
86
+ - **`data`**: Dados de estado armazenados que podem ser usados para tomar decisões em futuras interações (ex: preferências, histórico de escolhas).
87
+ - **`last_interaction`**: Timestamp da última interação do usuário.
88
+
89
+ #### **Uso:**
90
+ O `UserState` ajuda a manter o contexto entre as mensagens para que o chatbot possa continuar uma conversa sem perder informações importantes.
91
+
92
+ ---
93
+
94
+ ### **3. `RedirectResponse`**
95
+ **Localização:** `from .types.end_types import RedirectResponse`
96
+
97
+ `RedirectResponse` é usado quando o chatbot precisa redirecionar o usuário para uma rota diferente dentro do fluxo de conversa. Isso é útil para mover o usuário para diferentes partes do chatbot com base na lógica de negócios.
98
+
99
+ #### **Principais Propriedades:**
100
+ - **`target_route`**: Rota para a qual o usuário será redirecionado.
101
+ - **`message`**: Mensagem opcional a ser exibida durante o redirecionamento.
102
+
103
+ #### **Uso:**
104
+ Permite criar fluxos mais dinâmicos, onde os usuários podem ser movidos para diferentes rotas dependendo de suas ações e escolhas.
105
+
106
+ ---
107
+
108
+ ### **4. `EndChatResponse`**
109
+ **Localização:** `from .types.end_types import EndChatResponse`
110
+
111
+ `EndChatResponse` é uma resposta que sinaliza o fim de uma conversa com o chatbot. Pode ser usado para finalizar a sessão de forma limpa e opcionalmente fornecer uma mensagem de encerramento.
112
+
113
+ #### **Principais Propriedades:**
114
+ - **`message`**: Mensagem final que será enviada ao usuário para encerrar a conversa.
115
+ - **`feedback_prompt`**: (Opcional) Um prompt para feedback, se desejado.
116
+
117
+ #### **Uso:**
118
+ Usado quando o fluxo do chatbot deve ser encerrado. Garante que a sessão do usuário seja finalizada corretamente e fornece uma experiência de término satisfatória.
119
+
120
+ ---
121
+
122
+ ### **5. `TransferToHuman`**
123
+ **Localização:** `from .types.end_types import TransferToHuman`
124
+
125
+ `TransferToHuman` é uma resposta que permite transferir a interação do usuário para um operador humano. Isso é útil quando o chatbot encontra uma situação que requer suporte humano.
126
+
127
+ #### **Principais Propriedades:**
128
+ - **`message`**: Mensagem para informar ao usuário que ele será transferido para um atendente humano.
129
+ - **`department`**: (Opcional) Departamento ou equipe específica para a qual a interação será transferida.
130
+
131
+ #### **Uso:**
132
+ Fornece uma maneira para o chatbot transferir conversas para atendimento humano quando necessário, garantindo uma transição suave.
133
+
134
+ ---
135
+
136
+ ### **6. `Message`**
137
+ **Localização:** `from .types.message_types import Message`
138
+
139
+ O `Message` é um objeto básico que representa uma mensagem de texto enviada pelo chatbot para o usuário. Ele é o bloco de construção fundamental para as respostas do chatbot.
140
+
141
+ #### **Principais Propriedades:**
142
+ - **`text`**: O conteúdo da mensagem que será enviado ao usuário.
143
+ - **`metadata`**: Informações adicionais sobre a mensagem (ex: tags, prioridade).
144
+
145
+ #### **Uso:**
146
+ Usado para enviar respostas simples e diretas ao usuário. O `Message` é utilizado em quase todas as interações básicas do chatbot.
147
+
148
+ ---
149
+
150
+ ### **7. `Button`**
151
+ **Localização:** `from .types.message_types import Button`
152
+
153
+ O `Button` representa uma mensagem que inclui botões clicáveis para oferecer ao usuário opções específicas. Ele é essencial para criar fluxos interativos e guiar o usuário para ações específicas.
154
+
155
+ #### **Principais Propriedades:**
156
+ - **`text`**: Texto descritivo acima dos botões.
157
+ - **`buttons`**: Lista de opções que aparecem como botões clicáveis.
158
+ - **`callback_data`**: (Opcional) Dados que são passados quando um botão é clicado, permitindo lógica adicional.
159
+
160
+ #### **Uso:**
161
+ Facilita a navegação no chatbot ao permitir que o usuário escolha uma ação clicando em um botão, em vez de digitar uma resposta.
162
+
163
+ ---
164
+
165
+ ### **8. `ListElements`**
166
+ **Localização:** `from .types.message_types import ListElements`
167
+
168
+ O `ListElements` é um tipo de mensagem que exibe uma lista de elementos ao usuário, útil para apresentar várias opções de uma só vez.
169
+
170
+ #### **Principais Propriedades:**
171
+ - **`title`**: Título da lista.
172
+ - **`items`**: Lista de elementos a serem exibidos.
173
+ - **`image_url`**: (Opcional) URL de uma imagem para cada item, se desejado.
174
+ - **`description`**: (Opcional) Descrição adicional para cada elemento.
175
+
176
+ #### **Uso:**
177
+ Ideal para cenários em que múltiplas opções precisam ser apresentadas ao usuário, como uma lista de produtos ou serviços.
178
+
179
+ ---
180
+
181
+ ### **9. `Route`**
182
+ **Localização:** `from .types.route import Route`
183
+
184
+ O `Route` gerencia a navegação entre diferentes partes do chatbot. Ele é responsável por direcionar o fluxo de conversação, ajudando a determinar qual é a próxima rota ou passo que o usuário deve seguir.
185
+
186
+ #### **Principais Funções:**
187
+ - **`get_next`**: Retorna a próxima rota a ser seguida no fluxo.
188
+ - **`back`**: Permite retornar para uma rota anterior.
189
+ - **`forward`**: Avança para uma rota específica.
190
+ - **`resolve`**: Determina qual é a rota baseada no estado atual e nas escolhas do usuário.
191
+
192
+ #### **Uso:**
193
+ O `Route` é essencial para criar fluxos conversacionais dinâmicos e adaptáveis. Ele ajuda a definir a progressão lógica do chatbot, permitindo controle total sobre como o usuário navega entre diferentes partes do fluxo.
194
+
195
+
196
+ ### **Estrutura de Rota**
197
+ Todas as interações no ChatGraph começam pela rota `start` e se derivam para sub-rotas, criando um fluxo contínuo para gerenciar conversas.
198
+
199
+ - **Exemplo:** `start`, `start.choice`, `start.choice.about`
200
+
201
+ ## **Uso**
202
+
203
+ ### **Configurando o Chatbot**
204
+ ```python
205
+ from chatgraph import ChatbotApp, UserCall, Button, Route
206
+
207
+ app = ChatbotApp()
208
+
209
+ @app.route("start")
210
+ def start(usercall: UserCall, rota: Route) -> tuple:
211
+ return (
212
+ 'Bem-vindo!',
213
+ Button(
214
+ text="Escolha uma opção:",
215
+ buttons=["Opção 1", "Opção 2"]
216
+ ),
217
+ rota.get_next('.choice')
218
+ )
219
+
220
+ @app.route("start.choice")
221
+ def start_choice(usercall: UserCall, rota: Route) -> tuple:
222
+ if usercall.text == "Opção 1":
223
+ return 'Você escolheu a Opção 1!'
224
+ elif usercall.text == "Opção 2":
225
+ return 'Você escolheu a Opção 2!'
226
+
227
+ app.start()
228
+ ```
229
+
230
+ ## **Estrutura da Biblioteca**
231
+
232
+ ```
233
+ chatgraph/
234
+
235
+ ├── auth/
236
+ │ └── credentials.py # Gerenciamento de credenciais
237
+ ├── bot/
238
+ │ ├── chatbot_model.py # Lógica principal do chatbot
239
+ │ └── chatbot_router.py # Roteamento de rotas do chatbot
240
+ ├── cli/
241
+ │ └── main.py # Implementação do CLI
242
+ ├── gRPC/
243
+ │ └── gRPCCall.py # Implementação de comunicação gRPC
244
+ ├── messages/
245
+ │ └── message_consumer.py # Consumidor de mensagens RabbitMQ
246
+ └── types/
247
+ ├── request_types.py # Definição de tipos de requisições
248
+ ├── message_types.py # Definição de tipos de mensagens
249
+ ├── end_types.py # Tipos de finalização de chat
250
+ └── route.py # Gerenciamento de rotas
251
+ ```
252
+
253
+ ## **Exemplo de Configuração de Rota**
254
+
255
+ ### **Estrutura de Fluxo**
256
+ ```python
257
+ from chatgraph import ChatbotApp, UserCall, Button, Route
258
+
259
+ app = ChatbotApp()
260
+
261
+ @app.route("start")
262
+ def start(usercall: UserCall, rota: Route)->tuple:
263
+ return (
264
+ 'Oi',
265
+ Button(
266
+ text="Olá, eu sou o chatbot da empresa X. Como posso te ajudar?",
267
+ buttons=["saber mais", "falar com atendente"],
268
+ ),
269
+ rota.get_next('.choice')
270
+ )
271
+
272
+ @app.route("start.choice")
273
+ def start_choice(usercall: UserCall, rota: Route)->tuple:
274
+ if usercall.text == "saber mais":
275
+ return (
276
+ 'Sobre o que você quer saber mais?',
277
+ Button(
278
+ text="Sobre a empresa",
279
+ buttons=["sobre produtos", "sobre serviços"],
280
+ ),
281
+ rota.get_next('.about')
282
+ )
283
+ elif usercall.text == "falar com atendente":
284
+ return 'Ok'
285
+
286
+ app.start()
287
+ ```
288
+
289
+ ## **CLI**
290
+
291
+ ### **Comandos Disponíveis**
292
+ 1. **Listar campanhas:**
293
+ ```bash
294
+ chatgraph campaigns
295
+ ```
296
+ 2. **Filtrar campanhas usando regex:**
297
+ ```bash
298
+ chatgraph campaigns --regex "promo"
299
+ ```
300
+ 3. **Deletar um estado de usuário:**
301
+ ```bash
302
+ chatgraph delete-ustate 12345
303
+ ```
304
+ **Alias:** `delete-user-state`, `del-ustate`, `dus`
305
+
306
+ ### **Aliases e Flexibilidade**
307
+ Para facilitar o uso, alguns comandos possuem apelidos. Por exemplo, o comando para deletar estados de usuário pode ser chamado de múltiplas formas:
308
+ ```bash
309
+ chatgraph delete-user-state 12345
310
+ chatgraph del-ustate 12345
311
+ chatgraph dus 12345
312
+ ```
313
+
314
+ ## **Contribuição**
315
+ 1. Faça um fork do repositório.
316
+ 2. Crie uma nova branch (`git checkout -b minha-nova-feature`).
317
+ 3. Faça commit das suas alterações (`git commit -am 'Adiciona nova feature'`).
318
+ 4. Envie para a branch (`git push origin minha-nova-feature`).
319
+ 5. Crie um novo Pull Request.
320
+
321
+ ## **Licença**
322
+ Este projeto é licenciado sob a Licença MIT - veja o arquivo [LICENSE](LICENSE) para detalhes.
323
+
324
+ ---
325
+
326
+ Esse README fornece instruções detalhadas sobre como instalar, configurar e usar a biblioteca ChatGraph, incluindo a estrutura de rotas e exemplos de implementação para facilitar o desenvolvimento de chatbots com fluxos claros e intuitivos.
@@ -0,0 +1,24 @@
1
+ chatgraph/__init__.py,sha256=lUMcFMSxKQeHVFq7CyZV2r_UOHAtGGpeXtac0RUd7po,718
2
+ chatgraph/auth/credentials.py,sha256=xsMEpLQnc66novPjL6upocMcnUnvFJ7yxINzUenkxmc,2388
3
+ chatgraph/bot/chatbot_model.py,sha256=yRjbjiQHkaN3IVf-gEu-NQHNxOMsj34imCpuZK3m84g,7201
4
+ chatgraph/bot/chatbot_router.py,sha256=tl-4WP9wqUjCIwvtO9kJVUFjN2-mxNDUTRAFL9PXBgI,3028
5
+ chatgraph/cli/__init__.py,sha256=tfgYhGoKy1nD4STN4xDh6J4VV55RICk7v1GZmzAg-bM,7413
6
+ chatgraph/error/chatbot_error.py,sha256=4sEcW8vz0eQk2QDmDygucVM4caHliZW5iH7XJvmLBuk,1897
7
+ chatgraph/error/route_error.py,sha256=CY8m82ap7-Sr-DXPsolltRW50TqD__5RyXBmNNJCWr8,793
8
+ chatgraph/gRPC/gRPCCall.py,sha256=jYZg7CvtKWhtv2sQMrSunSmvnnL83MKmNVO8GWmGZ9U,7696
9
+ chatgraph/messages/message_consumer.py,sha256=1h3gQQ9AWTA1rRsqVjaq6BCh06R9ny_aD_AyUicFTeo,8816
10
+ chatgraph/pb/userstate.proto,sha256=LdrHde9ga4z6vfAX2P4jcPuU9qdiJulCf3MfWz_8vsQ,810
11
+ chatgraph/pb/userstate_pb2.py,sha256=yk7jWGFgv2eAU5Q4juf8RApedwRRhPez9-y93MaZVlw,2772
12
+ chatgraph/pb/userstate_pb2_grpc.py,sha256=QJEGEmdBL6bkxrTI-gNhGbZpPUFuP5jm7eFu8y21PMI,10340
13
+ chatgraph/pb/voll.proto,sha256=fSjx24MT_fJQbo7EwO9BsuIWAa7IzXgJnioCSrdt3FM,2007
14
+ chatgraph/pb/voll_pb2.py,sha256=IkopsIc8x-lS9j6WpL9Wk5MHl41FDa8cU0kmZRpKKKY,5291
15
+ chatgraph/pb/voll_pb2_grpc.py,sha256=U-_nXTAIEzo2GMYjHiphbSyTx3zyipsnKebFuZuoU1k,17685
16
+ chatgraph/types/end_types.py,sha256=--Ty2gM_y7J-yRAvZV26e4HMUpoguAMAhfOIS9-kQTk,1316
17
+ chatgraph/types/message_types.py,sha256=-GQAQi1iMz1ysZLAXJImIg34ObnSJnhz7zv6VBrlNuw,3364
18
+ chatgraph/types/request_types.py,sha256=ZTJY-jc4zwPO4cfpksL7J0MKtYuTtecn9ZObkTSi9OU,8577
19
+ chatgraph/types/route.py,sha256=2fuHEPKUL_Vuv4g8pB6M7eJLouxXasqjesdju6_eumE,2757
20
+ chatgraph-0.3.4.dist-info/entry_points.txt,sha256=bO9_Q-PqE5vCNNo6ke_-3j2gHfKQMDGnKDTkNuCdBuA,48
21
+ chatgraph-0.3.4.dist-info/LICENSE,sha256=rVJozpRzDlplOpvI8A1GvmfVS0ReYdZvMWc1j2jV0v8,1090
22
+ chatgraph-0.3.4.dist-info/METADATA,sha256=hHLj0Qq0hX0TFE8xpHmjA4xQc_YLC51cld9uBOnTbX8,12781
23
+ chatgraph-0.3.4.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
24
+ chatgraph-0.3.4.dist-info/RECORD,,
@@ -0,0 +1,3 @@
1
+ [console_scripts]
2
+ chatgraph=chatgraph.cli:main
3
+
@@ -1,138 +0,0 @@
1
- from typing import Union
2
- import json
3
-
4
- messageTypes = Union[str, float, int, None]
5
-
6
-
7
- class ChatbotResponse:
8
- """
9
- Representa a resposta do chatbot, contendo a mensagem a ser enviada ao usuário e a rota a ser seguida.
10
-
11
- Atributos:
12
- message (messageTypes): A mensagem de resposta do chatbot. Pode ser uma string, um número, ou None.
13
- route (str, opcional): A rota para a qual o chatbot deve direcionar após esta mensagem. Padrão é None.
14
- """
15
-
16
- def __init__(
17
- self,
18
- message: messageTypes = None,
19
- route: str = None,
20
- abs_text:bool=False
21
- ) -> None:
22
- """
23
- Inicializa a resposta do chatbot com uma mensagem e uma rota opcional.
24
-
25
- Args:
26
- message (messageTypes, opcional): A mensagem a ser enviada ao usuário. Pode ser uma string, um número, ou None.
27
- route (str, opcional): A rota para a qual o chatbot deve direcionar após esta mensagem. Padrão é None.
28
- """
29
- if not message:
30
- message = ''
31
-
32
- if not abs_text:
33
- message = message.replace('\t', '')
34
-
35
- self.message = message
36
- self.route = route
37
-
38
- def json(self):
39
- '''
40
- Retorna o objeto em formato json.
41
- '''
42
- return {
43
- 'type': 'message',
44
- 'text': self.message,
45
- }
46
-
47
-
48
- class RedirectResponse:
49
- """
50
- Representa uma resposta que redireciona o fluxo do chatbot para uma nova rota.
51
-
52
- Atributos:
53
- route (str): A rota para a qual o chatbot deve redirecionar.
54
- """
55
-
56
- def __init__(self, route: str) -> None:
57
- """
58
- Inicializa a resposta de redirecionamento com a rota especificada.
59
-
60
- Args:
61
- route (str): A rota para a qual o chatbot deve redirecionar.
62
- """
63
- self.route = route
64
-
65
- class EndChatResponse:
66
- """
67
- Representa uma resposta que indica o fim do chatbot.
68
-
69
- Atributos:
70
- tabulation_id (str): O ID da tabulação do chatbot.
71
- observations (str): As observações finais do chatbot.
72
- """
73
-
74
- def __init__(self, tabulation_id: str, observations:str) -> None:
75
- '''
76
- Finzaliza e tabula as informações do chatbot.
77
- '''
78
- self.tabulation_id = tabulation_id
79
- self.observations = observations
80
-
81
- def json(self):
82
- '''
83
- Retorna o objeto em formato json.
84
- '''
85
- return {
86
- 'type': 'tabulate',
87
- 'tabulation_id': self.tabulation_id,
88
- 'observations': self.observations,
89
- }
90
-
91
- class TransferToHuman:
92
- """
93
- Representa uma transferencia para um atendente humano.
94
- """
95
- def __init__(self, campaign_id: str, observations:str) -> None:
96
- '''
97
- Finzaliza e tabula as informações do chatbot.
98
- '''
99
- self.campaign_id = campaign_id
100
- self.observations = observations
101
-
102
- def json(self):
103
- '''
104
- Retorna o objeto em formato json.
105
- '''
106
- return {
107
- 'type': 'transfer',
108
- 'campaign_id': self.campaign_id,
109
- 'observations': self.observations,
110
- }
111
-
112
- class RedirectEntireChatbot:
113
- """
114
- Representa uma resposta que redireciona o fluxo do chatbot para um outro menu.
115
-
116
- Atributos:
117
- menu (str): O menu para o qual o chatbot deve redirecionar.
118
- route (str): A rota para a qual o chatbot deve redirecionar.
119
- """
120
-
121
- def __init__(self, menu:str, route: str) -> None:
122
- """
123
- Inicializa a resposta de redirecionamento com a rota especificada.
124
-
125
- Args:
126
- route (str): A rota para a qual o chatbot deve redirecionar.
127
- """
128
- self.route = route
129
- self.menu = menu
130
- def json(self):
131
- '''
132
- Retorna o objeto em formato json.
133
- '''
134
- return {
135
- 'type': 'redirect',
136
- 'menu': self.menu,
137
- 'route': self.route,
138
- }
@@ -1,146 +0,0 @@
1
- Metadata-Version: 2.1
2
- Name: chatgraph
3
- Version: 0.3.1
4
- Summary: A user-friendly chatbot library
5
- Home-page: https://github.com/irissonnlima/chatgraph
6
- License: MIT
7
- Keywords: chatbot,rabbitmq,messaging,routing,chatgraph,python
8
- Author: Irisson N. Lima
9
- Author-email: irisson.lima@verdecard.com.br
10
- Requires-Python: >=3.12,<4.0
11
- Classifier: License :: OSI Approved :: MIT License
12
- Classifier: Programming Language :: Python :: 3
13
- Classifier: Programming Language :: Python :: 3.12
14
- Requires-Dist: grpcio (>=1.66.2,<2.0.0)
15
- Requires-Dist: grpcio-tools (>=1.66.2,<2.0.0)
16
- Requires-Dist: pika (>=1.3.2,<2.0.0)
17
- Requires-Dist: python-dotenv (>=1.0.1,<2.0.0)
18
- Requires-Dist: rich (>=13.8.1,<14.0.0)
19
- Project-URL: Repository, https://github.com/irissonnlima/chatgraph
20
- Description-Content-Type: text/markdown
21
-
22
- # ChatGraph
23
-
24
- **ChatGraph** é uma biblioteca Python projetada para facilitar a construção e gerenciamento de chatbots com roteamento flexível.
25
-
26
- Ela oferece uma estrutura para definir rotas de chatbot, processar mensagens e gerenciar o estado do usuário de maneira eficiente.
27
-
28
- ## Instalação
29
-
30
- Você pode instalar o ChatGraph diretamente do PyPI:
31
-
32
- ```bash
33
- pip install chatgraph
34
- ```
35
-
36
- Link do PyPI: [ChatGraph no PyPI](https://pypi.org/project/chatgraph/)
37
-
38
- ## Estrutura da Biblioteca
39
-
40
- ### 1. `ChatbotApp`
41
-
42
- A classe `ChatbotApp` é o núcleo da aplicação do chatbot. Ela gerencia as rotas definidas, processa as mensagens recebidas e lida com a lógica de navegação dentro do chatbot.
43
-
44
- - **Métodos principais:**
45
- - `include_router`: Inclui um conjunto de rotas (definido por `ChatbotRouter`) na aplicação.
46
- - `route`: Decorador para associar funções a rotas específicas.
47
- - `start`: Inicia o consumo de mensagens do RabbitMQ.
48
- - `process_message`: Processa a mensagem recebida e executa a função correspondente à rota atual do usuário.
49
-
50
- ### 2. `ChatbotRouter`
51
-
52
- A classe `ChatbotRouter` permite definir e agrupar rotas que podem ser facilmente incluídas na aplicação principal do chatbot.
53
-
54
- - **Métodos principais:**
55
- - `route`: Decorador para adicionar uma função como uma rota no roteador.
56
- - `include_router`: Inclui outro roteador dentro do roteador atual, permitindo a construção modular das rotas.
57
-
58
- ### 3. `MessageConsumer` e `RabbitMessageConsumer`
59
-
60
- A classe abstrata `MessageConsumer` define a interface para consumidores de mensagens no sistema do chatbot. A implementação concreta `RabbitMessageConsumer` consome mensagens de uma fila RabbitMQ, processa essas mensagens e envia respostas de acordo.
61
-
62
- - **Métodos principais:**
63
- - `start_consume`: Inicia o consumo de mensagens do RabbitMQ.
64
- - `on_request`: Processa uma mensagem recebida e envia a resposta correspondente.
65
- - `load_dotenv`: Carrega as configurações do RabbitMQ a partir de variáveis de ambiente.
66
-
67
- ### 4. `UserState` e `SimpleUserState`
68
-
69
- A classe abstrata `UserState` define a interface para o gerenciamento do estado do usuário. A implementação `SimpleUserState` usa um dicionário em memória para armazenar o estado atual do menu para cada usuário.
70
-
71
- - **Métodos principais:**
72
- - `get_menu`: Retorna o menu atual associado a um ID de cliente.
73
- - `set_menu`: Define o menu atual para um ID de cliente.
74
-
75
- ### 5. `Message`
76
-
77
- A classe `Message` encapsula os dados de uma mensagem enviada ou recebida pelo chatbot.
78
-
79
- - **Atributos:**
80
- - `type`: Tipo da mensagem (ex. texto, imagem).
81
- - `text`: Conteúdo da mensagem.
82
- - `customer_id`: ID do cliente que enviou ou recebeu a mensagem.
83
- - `channel`: Canal de comunicação utilizado (ex. WhatsApp, SMS).
84
- - `customer_phone`: Número de telefone do cliente.
85
- - `company_phone`: Número de telefone da empresa.
86
- - `status`: Status da mensagem (opcional).
87
-
88
- ### 6. `ChatbotResponse` e `RedirectResponse`
89
-
90
- Essas classes são usadas para definir a resposta do chatbot após o processamento de uma mensagem.
91
-
92
- - **`ChatbotResponse`**: Contém uma mensagem de resposta e uma rota opcional.
93
- - **`RedirectResponse`**: Define uma rota para a qual o chatbot deve redirecionar o fluxo.
94
-
95
- ### 7. `Route` e `RouteError`
96
-
97
- A classe `Route` gerencia a navegação entre diferentes partes do fluxo do chatbot, permitindo obter a rota anterior e calcular a próxima rota com base na entrada do usuário.
98
-
99
- - **Métodos principais:**
100
- - `get_previous`: Retorna o caminho anterior ao atual.
101
- - `get_next`: Monta e retorna o próximo caminho com base em uma parte fornecida.
102
-
103
- A classe `RouteError` é uma exceção personalizada usada para indicar problemas relacionados à navegação nas rotas.
104
-
105
- ## Exemplo de Uso
106
-
107
- Aqui está um exemplo básico de como configurar e utilizar o ChatGraph:
108
-
109
- ```python
110
- from chatgraph import ChatbotApp, ChatbotRouter, SimpleUserState, RabbitMessageConsumer, ChatbotResponse
111
-
112
- # Definindo rotas com ChatbotRouter
113
- router = ChatbotRouter()
114
-
115
- @router.route("start")
116
- def say_hello():
117
- return ChatbotResponse(message="Hello! How can I assist you today?", route=".help")
118
-
119
- @router.route(".help")
120
- def provide_help():
121
- return ChatbotResponse(message="Here are some things I can help with: ...")
122
-
123
- # Configurando a aplicação do chatbot
124
- user_state = SimpleUserState()
125
- message_consumer = RabbitMessageConsumer.load_dotenv()
126
-
127
- app = ChatbotApp(user_state=user_state, message_consumer=message_consumer)
128
- app.include_router(router, prefix="")
129
-
130
- # Iniciando o chatbot
131
- app.start()
132
- ```
133
-
134
- Neste exemplo, o chatbot responde "Hello! How can I assist you today?" quando a rota `HELLO` é acessada e depois direciona o usuário para a rota `HELP`.
135
-
136
- ## Contribuição
137
-
138
- Se você encontrar bugs ou tiver sugestões de melhorias, sinta-se à vontade para abrir uma issue ou enviar um pull request no repositório do projeto.
139
-
140
- ## Licença
141
-
142
- Este projeto está licenciado sob a licença MIT. Consulte o arquivo LICENSE para obter mais detalhes.
143
-
144
- ---
145
-
146
- Com **ChatGraph**, você tem a flexibilidade e a simplicidade necessárias para construir chatbots poderosos e altamente configuráveis, integrados, por enquanto, com RabbitMQ para um processamento robusto de mensagens.
@@ -1,21 +0,0 @@
1
- chatgraph/__init__.py,sha256=OnPa3kE9pTXlxnkwwc45_2F6bqfR_GZAFal6-FFeT_U,648
2
- chatgraph/auth/credentials.py,sha256=xsMEpLQnc66novPjL6upocMcnUnvFJ7yxINzUenkxmc,2388
3
- chatgraph/bot/chatbot_model.py,sha256=DQgEXDs3XWMqYdZ7XA1G2f6XmpD54x1cLbHGub2MAtw,7572
4
- chatgraph/bot/chatbot_router.py,sha256=tl-4WP9wqUjCIwvtO9kJVUFjN2-mxNDUTRAFL9PXBgI,3028
5
- chatgraph/error/chatbot_error.py,sha256=4sEcW8vz0eQk2QDmDygucVM4caHliZW5iH7XJvmLBuk,1897
6
- chatgraph/error/route_error.py,sha256=CY8m82ap7-Sr-DXPsolltRW50TqD__5RyXBmNNJCWr8,793
7
- chatgraph/gRPC/gRPCCall.py,sha256=g1VGr6z-_IN2J3tSFAXqM1E2F8xx_p5noH3e_klJiKc,4478
8
- chatgraph/messages/message_consumer.py,sha256=8GOhBPE8ntSf74prw8STCUqi9jfW9gAmMdH9RAqnwEA,8978
9
- chatgraph/pb/userstate.proto,sha256=3uWtonkgBG-5jk7Du7uKDQwFnoNQaUZYVr1lb77EJSA,630
10
- chatgraph/pb/userstate_pb2.py,sha256=yJepkWX2mLQpY0I4qhfrObrYfRAmnq4mccPTMlCV-os,2363
11
- chatgraph/pb/userstate_pb2_grpc.py,sha256=QS8-9X6WDeurl4DAI0dzvCdGbQusHlMON0_p1QqmuEs,8635
12
- chatgraph/pb/voll.proto,sha256=qFV0_MLUTsVcDdEWz9EVWObn3Nu-tNwX2aGeKPxDtE8,716
13
- chatgraph/pb/voll_pb2.py,sha256=aspT1ynrGTKh_SQcIoEb_uSJ7j_nKpxEdyj-hkr4lTI,2519
14
- chatgraph/pb/voll_pb2_grpc.py,sha256=RFW3_dbzz_INJG8D1LQmmdyEr7ajLRqT1JPl0D-Hgso,6742
15
- chatgraph/types/message_types.py,sha256=ICFa0mG1so2hBo82YM4tx695P781a5I3zqVL48soRog,6529
16
- chatgraph/types/output_state.py,sha256=lwnQt_Z1MCdvDya1Sv_lJ13MM6qKsYJMaSMfXYhW_aw,4079
17
- chatgraph/types/route.py,sha256=J1Bm5C3PDwdUy6RCIR4sK94ljyrsLmyKOjKFnyJ6Dsg,2753
18
- chatgraph-0.3.1.dist-info/LICENSE,sha256=rVJozpRzDlplOpvI8A1GvmfVS0ReYdZvMWc1j2jV0v8,1090
19
- chatgraph-0.3.1.dist-info/METADATA,sha256=vPUUgVQXPec2pesOTKJhJHzb2rdpp1Pi51c40qR5hgE,6000
20
- chatgraph-0.3.1.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
21
- chatgraph-0.3.1.dist-info/RECORD,,