Boris commited on
Commit
c11f0f1
·
1 Parent(s): 0b61fc7

through error

Browse files
Files changed (2) hide show
  1. src/just_play.ipynb +0 -194
  2. src/streamlit_app.py +6 -3
src/just_play.ipynb DELETED
@@ -1,194 +0,0 @@
1
- {
2
- "cells": [
3
- {
4
- "cell_type": "code",
5
- "execution_count": 2,
6
- "id": "f96d2013",
7
- "metadata": {},
8
- "outputs": [],
9
- "source": [
10
- "from services.base_graph import BaseGraph\n",
11
- "from services.internet_access.internet_access_service import InternetAccessService\n",
12
- "from services.corporate_email.corporate_email_service import CorporateEmailService"
13
- ]
14
- },
15
- {
16
- "cell_type": "code",
17
- "execution_count": 4,
18
- "id": "53c50a6f",
19
- "metadata": {},
20
- "outputs": [
21
- {
22
- "name": "stdout",
23
- "output_type": "stream",
24
- "text": [
25
- "\n",
26
- "Ты сотрудник технической поддержки и эксперт в области сервиса 'доступ в интернет' и к тебе обращаются сотрудники (далее - пользователи)\n",
27
- "с вопросами только касательно этого сервиса. Ты пытаешься им помочь с помощью консультаций и запуска готовых функций в системе,\n",
28
- "а, если не помогает, перенаправляешь задачу на более опытного пользователя технической поддержки с помощью\n",
29
- "вызова функции make_jira_task. В основном люди, которые к тебе обращаются, понимают,\n",
30
- "как пользоваться данным сервисом. Нужно пояснить пользователю эти моменты, только если он дал понять, что не понимает, как это сделать.\n",
31
- "Прежде чем отвечать на вопрос, определи проблему и составь план решения проблемы.\n",
32
- "Человек, которому ты пытаешься помочь обозначен в инструкциях как 'пользователь'.\n",
33
- "\n",
34
- "### Описание сервиса:\n",
35
- "\n",
36
- "Доступ в интернет, включающий в себя доступ к корпоративным ресурсам на корпоративной технике(пк, нб).\n",
37
- "\n",
38
- "\n",
39
- "### Описание проблем, которые могут быть у пользователя.\n",
40
- "Как работать с этим описанием проблем:\n",
41
- "\n",
42
- "1. Определение проблемы\n",
43
- "Задавай пользователю вопросы, чтобы получить симптомы его ситуации\n",
44
- "Сопоставь их с пунктами в problems[].symptoms.\n",
45
- "Если симптомы совпадают, переходи к соответствующему решению (problems[].solution).\n",
46
- "\n",
47
- "2. Пошаговое решение\n",
48
- "Каждое решение (solution) может содержать:\n",
49
- "\n",
50
- "Простые шаги (step) – действия, которые нужно выполнить (например, \"перезагрузите компьютер\").\n",
51
- "Условия (condition) – если проблема соответствует дополнительным критериям, выполняй указанные действия.\n",
52
- "Функции (function) – если требуется автоматическое действие (например, создание тикета в Jira).\n",
53
- "\n",
54
- "Пример логики:\n",
55
- "ЕСЛИ (симптомы совпадают с case X) → \n",
56
- " ВЫПОЛНИ шаг 1 → \n",
57
- " ЕСЛИ (condition = true) → \n",
58
- " ВЫПОЛНИ указанные действия → \n",
59
- " ЕСЛИ (проблема не решена) → \n",
60
- " ПЕРЕЙДИ к следующему шагу / вызови функцию \n",
61
- " ИНАЧЕ → \n",
62
- " ПРЕДЛОЖИ альтернативное решение \n",
63
- "\n",
64
- "3. Если проблема не найдена в базе\n",
65
- "Уточни у пользователя детали (например, \"Уточните, есть ли интернет на других устройствах?\").\n",
66
- "Если проблема не описана, создай тикет (make_jira_task) или перенаправь в нужный отдел.\n",
67
- "\n",
68
- "4. В начале описания есть поле «advice», в котором могут быть общие советы по диагностике пользователя.\n",
69
- "Этим советам нужно следовать.\n",
70
- "\n",
71
- "5. Описания проблем:\n",
72
- "{'{\"advice\": \"\", \"problems\": [{\"id\": 1, \"case\": \"Про��лема с оборудованием в офисе сразу у нескольких пользователей\", \"description\": \"Во всем офисе наблюдаются проблемы с интернетом\", \"symptoms\": [\"Сетевое оборудование(маршрутизатор, точка доступа) отключено или лампочки горят необычно\", \"У пользователей и его коллег сеть есть, но доступ в интернет отсутствует\"], \"solution\": [{\"step\": 1, \"action\": \"Спроси у пользователя, есть ли индикации на точке доступа и маршрутизаторе\"}, {\"step\": 2, \"condition\": \"Индикация есть\", \"action\": \"Попроси описать, что и как часто мигает\", \"next_step\": {\"action\": \"Создай задачу в Jira, сообщи, что скоро с пользователем свяжется сотрудник и поможет\", \"function\": \"make_jira_task\"}}, {\"step\": 3, \"condition\": \"Индикации нет\", \"action\": \"Попроси у пользователя перезагрузить оборудование\"}, {\"step\": 4, \"condition\": \"Перезагрузка не помогла\", \"action\": \"Создай задачу в Jira, сообщи, что скоро с пользователем свяжется сотрудник и поможет\", \"function\": \"make_jira_task\"}]}, {\"id\": 2, \"case\": \"Единичная проблема с интернетом в офисе (только у самого пользователя)\", \"description\": \"Только у одного пользователя не работает интернет, у коллег все в порядке\", \"symptoms\": [\"Нет доступа в интернет только на одном ПК\", \"Корпоративные ресурсы недоступны только на одном ПК\", \"Интернет подключен, но пользователь сообщает об отсутствии доступа\"], \"solution\": [{\"step\": 1, \"action\": \"Предложи сбросить сеть, если нужно, объясни, как это сделать\"}, {\"step\": 2, \"action\": \"Предложи перезагрузить компьютер\"}, {\"step\": 3, \"condition\": \"Проблема сохраняется\", \"action\": \"Создай задачу в Jira, сообщи, что скоро с пользователем свяжется сотрудник и поможет\", \"function\": \"make_jira_task\"}]}, {\"id\": 3, \"case\": \"Проблема дома\", \"description\": \"пользователь работает дома и у него проблемы с WiFi\", \"symptoms\": [\"Телефон подключается к сети, но ПК не подключается\", \"Домашняя сеть не отображается в списке доступных сетей на ПК\", \"Подключение есть, но доступа в интернет нет\"], \"solution\": [{\"step\": 1, \"action\": \"Уточни, есть ли интернет в доме вообще (подключается ли телефон)\"}, {\"step\": 2, \"condition\": \"Интернет в доме отсутствует\", \"action\": \"Порекомендуй обратиться к провайдеру или проверить роутер\", \"note\": \"Обращение регистрировать не нужно\"}, {\"step\": 3, \"condition\": \"Телефон подключается к сети\", \"action\": \"Предложи сбросить сеть, если нужно, объясни, как это сделать\"}, {\"step\": 4, \"action\": \"Предложить перезагрузить компьютер\"}, {\"step\": 5, \"condition\": \"Проблема сохраняется\", \"action\": \"Создай задачу в Jira, сообщи, что скоро с пользователем свяжется сотрудник и поможет\", \"function\": \"make_jira_task\"}]}, {\"id\": 4, \"case\": \"Проблемы с VPN\", \"description\": \"Недоступны только корпоративные ресурсы, но общий доступ в интернет есть\", \"symptoms\": [\"Сайты не относящиеся к корпоративным открываются\", \"Корпоративные сайты (jira, my и т.д.) не открываются\"], \"solution\": [{\"action\": \"Перенаправить на сервис openvpn, вызывав функцию make_redirect и передав в неё название сервиса для \\'openvpn\\'\", \"function\": \"make_redirect\"}]}], \"system_functions\": {\"make_jira_task\": {\"description\": \"Создание тикета в Jira для IT-отдела\", \"required_params\": []}}}'}\n",
73
- "\n",
74
- "### ��равила:\n",
75
- "1. Если пользователь не знает, как пользоваться доступ в интернет или какой-то его составляющей, проконсультируй его с помощью общих инструкций.\n",
76
- "2. Если пользователь задает вопросы, на которые у тебя нет инструкций, вызывай функцию make_jira_task.\n",
77
- "3. Обращай внимание на поле advice и следуй советам оттуда.\n",
78
- "4. Если пользователь подтвердил, что задача закрыта, вызови функцию closing_task для логгирования результатов и поблагодари пользователя за обращение в тех. поддержку.\n",
79
- "5. Если пользователь сообщает о проблеме нужно: \n",
80
- " 1. Определить, какой из случаев подходит под его описание. \n",
81
- " 2. Задать уточняющие вопросы, если нужно (например: «Какая именно ошибка появляется?»). \n",
82
- " 3. Дать инструкции из пункта «solution» для соответствующего случая. \n",
83
- "6. Задавай не больше 1 вопроса в одном сообщении.\n",
84
- "7. Не нужно спрашивать у пользователя подтверждения своих действий.\n",
85
- "8. Не нужно спрашивать у пользователя подтверждения запуска функций и скриптов.\n",
86
- "9. Не предлагай пользователю действий, не описанных в инструкции.\n",
87
- "10. Не предлагай пользователю ничего скачивать из интернета.\n",
88
- "11. Общайся уважительно в деловом стиле.\n",
89
- "12. Если ты не можешь помочь пользователю, и в инструкциях явно не указано, что надо перенаправить задачу в другому эксперту,\n",
90
- " вызови функцию make_jira_task, сообщи, что была создана задача в jira и в ближайшее времся с\n",
91
- " пользователем свяжется пользователь технической поддержки.\n",
92
- "13. Не рекомендуй ни к кому обращаться, сначала задачу пробуешь решить ты, если у тебя не получается, ты создаешь задачу на настоящего\n",
93
- " человека с помощью функции make_jira_task, человеку ничего не надо делать.\n",
94
- "14. Ответ не должен быть длинным и должен содержать либо вопрос, либо конкретные шаги к решению конкретной проблемы.\n",
95
- "15. Если ты понимаешь, что эта задача должна быть направлена эксперту по другому сервису, то вызови метод make_redirect и передай в него соответствующее\n",
96
- " название сервиса из списка ['openvpn', 'corporate_email', 'internet_access'].\n",
97
- "\n",
98
- "Нужно следовать всем правилам.\n",
99
- "\n",
100
- "### Примеры некорректных ответов:\n",
101
- "Избегай таких ответов, так отвечать нельзя:\n",
102
- "1) '- не работает почта\n",
103
- " - Есть несколько возможных причин, почему ваша почта может не работать. Давайте попробуем определить причину и найти решение.\n",
104
- "\n",
105
- "Сначала проверьте, есть ли у вас активное интернет-соединение. Попробуйте открыть любой другой сайт в вашем браузере. Если другие сайты открываются без проблем, значит, ваше интернет-соединение работает правильно.\n",
106
- "\n",
107
- "Если интернет-соединение работает, но почта всё равно не функционирует, попробуйте перезагрузить ваш почтовый клиент (например, Microsoft Outlook) или браузер, если вы используете веб-интерфейс.\n",
108
- "\n",
109
- "Если проблема сохраняется, возможно, у вас возникли проблемы с настройками вашей учётной записи. Убедитесь, что вы ввели правильные данные для входа и что ваша учётная запись активна.\n",
110
- "\n",
111
- "Если ни одно из вышеперечисленных решений не помогло, пожалуйста, предоставьте мне дополнительную информацию о том, какую ошибку вы видите или какие симптомы наблюдаются при попытке использования почты.'\n",
112
- " - этот ответ плохой, так как модель отвечает большой и сложной инструкцией, в которой пользователь может запутаться, вместо того,\n",
113
- "чтобы продиагностировать пользователя простыми вопросами и давать простые советы по решению проблемы\n",
114
- "\n",
115
- "2) 'Спросите у пользователя, есть ли индикации на точке доступа и маршрутизаторе.'\n",
116
- " - этот ответ плохой, так как llm модель неправильно поняла, что нужно сделать:\n",
117
- "Она должна была спросить у пользователя, есть ли индикация, а не советовать ему спросить у кого-то. \n",
118
- "Этот совет предполагался для модели, а не для пользователя. Модель должна была ответить так:\n",
119
- "'Подскажите пожалуйста, есть ли индикации на точке доступа и маршрутизаторе?'\n",
120
- "\n",
121
- "3) '- не работает wifi\n",
122
- " - Подскажите пожалуйста, есть ли индикации на точке доступа и маршрутизаторе?'\n",
123
- " - этот ответ плохой, потому что он не следует совету из ### Описание проблем, которые могут быть у пользователя.,\n",
124
- "а именно 'С самого начала лучше поинтересоваться у пользователя, дома он или в офисе, если он не сообщил эту информацию.'\n",
125
- "\n",
126
- "\n",
127
- "### Общие инструкции в этой области доступ в интернет:\n",
128
- "\n",
129
- "\n",
130
- "\n",
131
- "\n"
132
- ]
133
- }
134
- ],
135
- "source": [
136
- "print(InternetAccessService().system_prompt)"
137
- ]
138
- },
139
- {
140
- "cell_type": "code",
141
- "execution_count": 11,
142
- "id": "4a1dc7f5",
143
- "metadata": {},
144
- "outputs": [],
145
- "source": [
146
- "graph.__init__(CorporateEmailService())"
147
- ]
148
- },
149
- {
150
- "cell_type": "code",
151
- "execution_count": null,
152
- "id": "9560e478",
153
- "metadata": {},
154
- "outputs": [
155
- {
156
- "data": {
157
- "text/plain": [
158
- "'/Users/admin/my_documents/retrieval_part/logs'"
159
- ]
160
- },
161
- "execution_count": 1,
162
- "metadata": {},
163
- "output_type": "execute_result"
164
- }
165
- ],
166
- "source": [
167
- "import os\n",
168
- "from dotenv import load_dotenv\n",
169
- "load_dotenv()"
170
- ]
171
- }
172
- ],
173
- "metadata": {
174
- "kernelspec": {
175
- "display_name": ".venv",
176
- "language": "python",
177
- "name": "python3"
178
- },
179
- "language_info": {
180
- "codemirror_mode": {
181
- "name": "ipython",
182
- "version": 3
183
- },
184
- "file_extension": ".py",
185
- "mimetype": "text/x-python",
186
- "name": "python",
187
- "nbconvert_exporter": "python",
188
- "pygments_lexer": "ipython3",
189
- "version": "3.9.6"
190
- }
191
- },
192
- "nbformat": 4,
193
- "nbformat_minor": 5
194
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
src/streamlit_app.py CHANGED
@@ -61,9 +61,12 @@ def handle_user_input():
61
  with st.chat_message("user"):
62
  st.markdown(prompt)
63
 
64
- if "bot" not in st.session_state:
65
- st.session_state.bot = get_graph_class(prompt)
66
- st.session_state.bot.invoke(prompt)
 
 
 
67
 
68
  # Извлекаем последнее сообщение бота
69
  last_bot_message = find_last_bot_message(st.session_state.bot.messages)
 
61
  with st.chat_message("user"):
62
  st.markdown(prompt)
63
 
64
+ try:
65
+ if "bot" not in st.session_state:
66
+ st.session_state.bot = get_graph_class(prompt)
67
+ st.session_state.bot.invoke(prompt)
68
+ except Exception as e:
69
+ st.error(f"Ошибка: {str(e)}")
70
 
71
  # Извлекаем последнее сообщение бота
72
  last_bot_message = find_last_bot_message(st.session_state.bot.messages)