smart-bot-factory 0.1.4__py3-none-any.whl → 0.1.5__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 smart-bot-factory might be problematic. Click here for more details.

Files changed (35) hide show
  1. smart_bot_factory/__init__.py +0 -30
  2. smart_bot_factory/admin/admin_logic.py +11 -11
  3. smart_bot_factory/cli.py +138 -71
  4. smart_bot_factory/clients/__init__.py +33 -0
  5. smart_bot_factory/configs/growthmed-october-24/prompts/final_instructions.txt +2 -0
  6. smart_bot_factory/configs/growthmed-october-24/tests/quick_scenarios.yaml +95 -28
  7. smart_bot_factory/core/__init__.py +43 -22
  8. smart_bot_factory/core/bot_utils.py +251 -88
  9. smart_bot_factory/core/conversation_manager.py +542 -535
  10. smart_bot_factory/core/decorators.py +943 -230
  11. smart_bot_factory/core/globals.py +68 -0
  12. smart_bot_factory/core/message_sender.py +6 -6
  13. smart_bot_factory/core/router.py +172 -0
  14. smart_bot_factory/core/router_manager.py +165 -0
  15. smart_bot_factory/creation/__init__.py +1 -2
  16. smart_bot_factory/creation/bot_builder.py +116 -8
  17. smart_bot_factory/creation/bot_testing.py +74 -13
  18. smart_bot_factory/handlers/handlers.py +10 -2
  19. smart_bot_factory/integrations/__init__.py +1 -0
  20. smart_bot_factory/integrations/supabase_client.py +272 -2
  21. smart_bot_factory-0.1.5.dist-info/METADATA +466 -0
  22. {smart_bot_factory-0.1.4.dist-info → smart_bot_factory-0.1.5.dist-info}/RECORD +25 -30
  23. smart_bot_factory/configs/growthmed-helper/env_example.txt +0 -1
  24. smart_bot_factory/configs/growthmed-helper/prompts/1sales_context.txt +0 -9
  25. smart_bot_factory/configs/growthmed-helper/prompts/2product_info.txt +0 -582
  26. smart_bot_factory/configs/growthmed-helper/prompts/3objection_handling.txt +0 -66
  27. smart_bot_factory/configs/growthmed-helper/prompts/final_instructions.txt +0 -232
  28. smart_bot_factory/configs/growthmed-helper/prompts/help_message.txt +0 -28
  29. smart_bot_factory/configs/growthmed-helper/prompts/welcome_message.txt +0 -7
  30. smart_bot_factory/configs/growthmed-helper/welcome_file/welcome_file_msg.txt +0 -16
  31. smart_bot_factory/configs/growthmed-helper/welcome_file//342/225/250/320/267/342/225/250/342/225/241/342/225/250/342/225/221 /342/225/250/342/225/227/342/225/250/342/225/225/342/225/244/320/221/342/225/244/320/222 /342/225/250/342/224/220/342/225/250/342/225/233 152/342/225/250/320/264/342/225/250/320/247 /342/225/250/342/225/225 323/342/225/250/320/264/342/225/250/320/247 /342/225/250/342/224/244/342/225/250/342/225/227/342/225/244/320/237 /342/225/250/342/225/235/342/225/250/342/225/241/342/225/250/342/224/244/342/225/250/342/225/225/342/225/244/320/226/342/225/250/342/225/225/342/225/250/342/225/234/342/225/244/320/233.pdf +0 -0
  32. smart_bot_factory-0.1.4.dist-info/METADATA +0 -126
  33. {smart_bot_factory-0.1.4.dist-info → smart_bot_factory-0.1.5.dist-info}/WHEEL +0 -0
  34. {smart_bot_factory-0.1.4.dist-info → smart_bot_factory-0.1.5.dist-info}/entry_points.txt +0 -0
  35. {smart_bot_factory-0.1.4.dist-info → smart_bot_factory-0.1.5.dist-info}/licenses/LICENSE +0 -0
@@ -2,65 +2,132 @@ scenarios:
2
2
  - name: "Быстрое решение по участию"
3
3
  steps:
4
4
  - user_input: "Привет, срочно нужна информация о конференции"
5
- expected_keywords: ["привет", "информация", "конференци"]
6
- forbidden_keywords: ["не спешите"]
5
+ expected_keywords:
6
+ - ["привет", "здравствуйте", "добро пожаловать", "добрый день"]
7
+ - ["информация", "данные", "подробности", "детали"]
8
+ - ["конференци", "мероприятие", "событие"]
9
+ forbidden_keywords: ["не спешите", "позже", "не торопитесь"]
7
10
 
8
11
  - user_input: "Завтра улетаю в командировку, успею зарегистрироваться?"
9
- expected_keywords: ["успеете", "регистрация", "быстро"]
10
- forbidden_keywords: ["поздно", "не успеете"]
12
+ expected_keywords:
13
+ - ["успеете", "успеете зарегистрироваться", "все получится"]
14
+ - ["регистрация", "запись", "участие"]
15
+ - ["быстро", "срочно", "экспресс", "ускоренно"]
16
+ forbidden_keywords: ["поздно", "не успеете", "время вышло"]
11
17
 
12
18
  - name: "Студент медвуза интересуется будущим"
13
19
  steps:
14
20
  - user_input: "Здравствуйте, я студент 5 курса медуниверситета"
15
- expected_keywords: ["здравствуйте", "студент", "медицин"]
16
- forbidden_keywords: ["рано для вас"]
21
+ expected_keywords:
22
+ - ["здравствуйте", "привет", "добро пожаловать"]
23
+ - ["студент", "обучающийся", "учащийся"]
24
+ - ["медицин", "медвуз", "университет", "медицинский"]
25
+ forbidden_keywords: ["рано для вас", "еще рано", "не подходит"]
17
26
 
18
27
  - user_input: "Стоит ли уже сейчас думать о бизнесе в медицине?"
19
- expected_keywords: ["стоит", "перспектив", "будущее"]
20
- forbidden_keywords: ["рано думать"]
28
+ expected_keywords:
29
+ - ["стоит", "правильно", "хорошая идея", "отличный подход"]
30
+ - ["перспектив", "возможности", "будущее", "карьера"]
31
+ - ["бизнес", "предпринимательство", "дело"]
32
+ forbidden_keywords: ["рано думать", "не стоит", "пока рано"]
21
33
 
22
34
  - user_input: "Есть ли льготы для студентов?"
23
- expected_keywords: ["льготы", "студент", "скидк"]
24
- forbidden_keywords: ["полная стоимость"]
35
+ expected_keywords:
36
+ - ["льготы", "скидки", "преференции", "льготные условия"]
37
+ - ["студент", "учащимся", "обучающимся"]
38
+ - ["специальные условия", "уменьшенная стоимость"]
39
+ forbidden_keywords: ["полная стоимость", "без скидок", "обычная цена"]
25
40
 
26
41
  - name: "Иностранный врач в России"
27
42
  steps:
28
43
  - user_input: "Hello, I am foreign doctor working in Moscow"
29
- expected_keywords: ["hello", "добро пожаловать", "moscow"]
30
- forbidden_keywords: ["только на русском"]
44
+ expected_keywords:
45
+ - ["hello", "hi", "добро пожаловать", "привет"]
46
+ - ["foreign", "иностранный", "зарубежный"]
47
+ - ["moscow", "москва", "россия"]
48
+ forbidden_keywords: ["только на русском", "only russian", "русский язык"]
31
49
 
32
50
  - user_input: "Is conference in English or Russian language?"
33
- expected_keywords: ["language", "english", "translation"]
34
- forbidden_keywords: ["только русский"]
51
+ expected_keywords:
52
+ - ["language", "язык", "english", "английский"]
53
+ - ["translation", "перевод", "переводим", "синхронный перевод"]
54
+ - ["both", "оба языка", "многоязычный"]
55
+ forbidden_keywords: ["только русский", "only russian", "без перевода"]
35
56
 
36
57
  - user_input: "I want to understand Russian medical business"
37
- expected_keywords: ["business", "russian", "understand"]
38
- forbidden_keywords: ["сложно будет"]
58
+ expected_keywords:
59
+ - ["business", "бизнес", "предпринимательство"]
60
+ - ["russian", "российский", "россии"]
61
+ - ["understand", "понять", "изучить", "разобраться"]
62
+ forbidden_keywords: ["сложно будет", "difficult", "не получится"]
39
63
 
40
64
  - name: "Пенсионер-врач ищет активность"
41
65
  steps:
42
66
  - user_input: "Добрый день, я врач на пенсии уже 3 года"
43
- expected_keywords: ["добрый день", "пенси", "врач"]
44
- forbidden_keywords: ["не актуально"]
67
+ expected_keywords:
68
+ - ["добрый день", "здравствуйте", "привет"]
69
+ - ["пенси", "пенсионер", "на пенсии", "отставной"]
70
+ - ["врач", "доктор", "медицинский работник"]
71
+ forbidden_keywords: ["не актуально", "не подходит", "слишком поздно"]
45
72
 
46
73
  - user_input: "Хочу быть в курсе современных тенденций"
47
- expected_keywords: ["современн", "тенденци", "актуальн"]
48
- forbidden_keywords: ["устарело"]
74
+ expected_keywords:
75
+ - ["современн", "актуальн", "новейш", "передов"]
76
+ - ["тенденци", "тренды", "направления", "развитие"]
77
+ - ["курс", "информирован", "знания", "обучение"]
78
+ forbidden_keywords: ["устарело", "не актуально", "пропустили время"]
49
79
 
50
80
  - user_input: "Подходит ли конференция для неработающих врачей?"
51
- expected_keywords: ["подходит", "для всех", "врачей"]
52
- forbidden_keywords: ["только для практикующих"]
81
+ expected_keywords:
82
+ - ["подходит", "идеально", "отлично", "рекомендуем"]
83
+ - ["для всех", "всем", "любому", "каждому"]
84
+ - ["врачей", "специалистов", "медиков", "докторов"]
85
+ forbidden_keywords: ["только для практикующих", "не подходит", "не рекомендуется"]
53
86
 
54
87
  - name: "Технический директор медцентра"
55
88
  steps:
56
89
  - user_input: "Здравствуйте, я отвечаю за IT в медицинском центре"
57
- expected_keywords: ["здравствуйте", "it", "медицинск"]
58
- forbidden_keywords: ["не ваша тема"]
90
+ expected_keywords:
91
+ - ["здравствуйте", "привет", "добро пожаловать"]
92
+ - ["it", "информационные технологии", "технологии", "айти"]
93
+ - ["медицинск", "медицинский", "клиника", "медцентр"]
94
+ forbidden_keywords: ["не ваша тема", "не подходит", "не актуально"]
59
95
 
60
96
  - user_input: "Есть ли секции по цифровизации медицины?"
61
- expected_keywords: ["цифровизация", "технологи", "it"]
62
- forbidden_keywords: ["только бизнес"]
97
+ expected_keywords:
98
+ - ["цифровизация", "цифровые технологии", "информатизация"]
99
+ - ["технологи", "инновации", "современные решения"]
100
+ - ["it", "программирование", "автоматизация"]
101
+ forbidden_keywords: ["только бизнес", "без технологий", "не рассматриваем"]
63
102
 
64
103
  - user_input: "Интересуют телемедицина и электронные карты"
65
- expected_keywords: ["телемедицина", "электронн", "карты"]
66
- forbidden_keywords: ["не рассматриваем"]
104
+ expected_keywords:
105
+ - ["телемедицина", "удаленная медицина", "дистанционные консультации"]
106
+ - ["электронн", "цифровые", "компьютерные"]
107
+ - ["карты", "медицинские карты", "история болезни"]
108
+ forbidden_keywords: ["не рассматриваем", "не актуально", "не обсуждаем"]
109
+
110
+ - name: "Смешанный формат синонимов - демонстрация новых возможностей"
111
+ steps:
112
+ - user_input: "Здравствуйте, хочу узнать подробности о мероприятии"
113
+ expected_keywords:
114
+ - "здравствуйте" # Одиночное слово
115
+ - ["хочу", "интересуюсь", "планирую"] # Группа синонимов
116
+ - ["подробности", "детали", "информация"] # Еще одна группа синонимов
117
+ - "мероприятие" # Еще одно одиночное слово
118
+ forbidden_keywords: []
119
+
120
+ - user_input: "Когда будет конференция и сколько стоит участие?"
121
+ expected_keywords:
122
+ - ["когда", "дата", "время", "расписание"] # Группа синонимов
123
+ - "конференция" # Одиночное слово
124
+ - ["стоит", "цена", "стоимость", "сколько"] # Группа синонимов
125
+ - ["участие", "регистрация", "вход"] # Группа синонимов
126
+ forbidden_keywords: ["не знаю", "неизвестно", "не определились"]
127
+
128
+ - user_input: "Есть ли скидки для студентов и врачей?"
129
+ expected_keywords:
130
+ - ["скидки", "льготы", "преференции"] # Группа синонимов
131
+ - "студентов" # Одиночное слово
132
+ - ["врачей", "докторов", "медиков"] # Группа синонимов
133
+ forbidden_keywords: ["полная стоимость", "без скидок"]
@@ -1,22 +1,43 @@
1
- """
2
- Core модули smart_bot_factory
3
- """
4
-
5
- from ..core.bot_utils import setup_utils_handlers, parse_ai_response, process_events
6
- from ..core.decorators import event_handler, schedule_task
7
- from ..core.message_sender import send_message_by_ai, send_message_by_human
8
- from ..core.states import UserStates, AdminStates
9
- from ..core.conversation_manager import ConversationManager
10
-
11
- __all__ = [
12
- 'setup_utils_handlers',
13
- 'parse_ai_response',
14
- 'process_events',
15
- 'event_handler',
16
- 'schedule_task',
17
- 'send_message_by_ai',
18
- 'send_message_by_human',
19
- 'UserStates',
20
- 'AdminStates',
21
- 'ConversationManager'
22
- ]
1
+ """
2
+ Core модули smart_bot_factory
3
+ """
4
+
5
+ # Импортируем основные компоненты для удобства
6
+ from .globals import (
7
+ get_supabase_client,
8
+ get_openai_client,
9
+ get_config,
10
+ get_admin_manager,
11
+ get_analytics_manager,
12
+ get_conversation_manager,
13
+ get_prompt_loader,
14
+ get_bot,
15
+ get_dp
16
+ )
17
+
18
+ from .decorators import event_handler, schedule_task, global_handler
19
+ from .message_sender import send_message_by_human
20
+ from .router import Router
21
+ from .router_manager import RouterManager
22
+
23
+ __all__ = [
24
+ # Функции получения (для внутреннего использования)
25
+ 'get_supabase_client',
26
+ 'get_openai_client',
27
+ 'get_config',
28
+ 'get_admin_manager',
29
+ 'get_analytics_manager',
30
+ 'get_conversation_manager',
31
+ 'get_prompt_loader',
32
+ 'get_bot',
33
+ 'get_dp',
34
+ # Декораторы
35
+ 'event_handler',
36
+ 'schedule_task',
37
+ 'global_handler',
38
+ # Роутеры
39
+ 'Router',
40
+ 'RouterManager',
41
+ # Утилиты
42
+ 'send_message_by_human'
43
+ ]