You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- Практика с Docker и Docker Compose, докеризация FastAPI приложение (упаковка его в Docker образ)
35
-
- Знакомство и практика с RabbitMQ
35
+
- Знакомство и практика с Kafka
36
36
- Самостоятельная разработка части схемы REST API
37
+
- Работа с внешними API
38
+
- Практика работы с LLM, промтинженеринг и управление контекстом
37
39
38
40
### Дисклеймер.
39
41
@@ -64,6 +66,7 @@ weight = 7
64
66
65
67
- Приветственное письмо
66
68
- Каждый день в полночь оповещение о том, сколько задач было сделано за прошедшие сутки, и какое количество осталось невыполненными
69
+
- Оповещиние должно содержать краткий отчет с данными по задачам, отчет составляем с помощью LLM
67
70
68
71
## Интерфейс приложения
69
72
@@ -196,11 +199,7 @@ Celery worker приложение с smtplib.
196
199
197
200
Celery Beat - планировщик для переодичиской рассылки писем.
198
201
199
-
Задача сервиса - раз в сутки итерировать всех пользователей, и формировать для них отчёты о задачах и изменениях в них за сутки.
200
-
201
-
- Пользователям, у которых на конец дня есть невыполненные задача, отправляется емейл вида "У вас осталось N несделанных задач". Тело письма содержит заголовки этих задач (не более какого-то разумного количества, например 5)
202
-
- Пользователям, у которых за последние сутки 1 или более задач были отмечены как сделанные, отправляется емейл вида "За сегодня вы выполнили N задач". Тело письма содержит заголовки выполненных задач
203
-
- Пользователям, для которых верны оба условия выше, отправляется емейл и со списком несделанных, и сделанных за последние сутки задач
202
+
Задача сервиса - раз в сутки итерировать всех пользователей, и формировать для них отчёты о задачах и изменениях в них за сутки через асинхронные запросы к сервису "summarization service" и отпрвлять отчеты по email.
204
203
205
204
Celery Beat Scheduler по Cron выражению каждую полночь вызывает метод, читающий список пользователей, анализирующий их заметки, и формирующий емейлы для отправки.
RabbitMQ в контексте docker compose стека будет запущен из образа, подобно базе данных или хранилищу сессий.
210
209
Всю работу с очередью берет на себя Celery. Поэтому в рамках работы с RebbitMQ необходимо поднять базу данных в docker, настроить и настроить брокер в приложении.
211
210
211
+
## Summarization service
212
+
Составление отчета по задачам через LLM.
213
+
214
+
Необходимо написать отдельный сервис, который будет интегрироваться с LLM по API и делать суммаризацию отчеты по итогам дня.
215
+
216
+
Сервис принимает собщение через кафку с данными по задачам за определенный период, полученный результат он также отправляет в кафку инициирующему сервису, реализуя паттерн RPC.
217
+
218
+
Также данный сервис может иметь свой отдельный инстанс базы данных для хранения обработанных запросов и результатов.
219
+
220
+
## Работа с Kafka
221
+
222
+
Kafka также как и RabbitMQ необходимо будет поднять в docker compose. Взаимодествие происходит через популярные библиотеки в стеке - Aiokafka/confluent-kafka-python/FastStream.
223
+
Необходимо будет самостоятельно отправлять и принимать сообщения, а также обеспечить надежность и исключить повторную обработку.
224
+
225
+
## Работа с LLM
226
+
227
+
Предполагается напрямую интегрироваться с API LLM по HTTP, можно выбрать:
228
+
- прямое использование [OpenAI API](https://developers.openai.com/api/reference/resources/chat/subresources/completions/methods/create)
229
+
- прокси сервисы - [пример](https://aitunnel.ru/)
230
+
- доступные в РФ LLM - [GigaCode](https://developers.sber.ru/docs/ru/gigachat/api/reference/rest/post-chat), [YaGPT](https://aistudio.yandex.ru/docs/ru/ai-studio/concepts/api.html)
231
+
232
+
Необходимо поработать над системным промптом, предоставить желаемый формат и примеры, поработать с контекстом модели.
233
+
Предполагается прямое использование API, не используя SDK или библиотеки для агентов. Практикуемся работать с внешним API.
234
+
212
235
## Mailjet
213
236
214
237
Для отправки SMTP нужны логин, пароль, хост и порт SMTP сервера. У емейл сервисов, например Gmail, mail.ru, есть SMTP сервера, с которыми работают емейл-клиенты. Теоретически, можно воспользоваться их сервером, и отправлять письма, авторизовываясь логином и паролем своего ящика, но в реальности, для писем и рассылок обычно пользуются специальными для этого созданными сервисами, например Mailjet, Mailchimp, Mailgun (и десятками аналогичных).
@@ -233,10 +256,13 @@ RabbitMQ в контексте docker compose стека будет запуще
233
256
- task-tracker-frontend (порт 80)
234
257
- task-tracker-scheduler (celery beat)
235
258
- task-tracker-email-sender (celery worker)
259
+
- summarization-service
236
260
- PostreSQL
237
261
- RabbitMQ
262
+
- Kafka
238
263
239
-
Для сервисов backend, scheduler, email-sender используется общая кодовая база и поэтому может быть использован один Dockerfile. Конфигурацию и команду запуска задать в docker compose файле.
264
+
Для сервисов backend, scheduler, email-sender используется общая кодовая база и поэтому может быть использован один Dockerfile, а вот summarization-service должен быть отделен (создаем другой Dockerfile, находится в другой директории).
265
+
Конфигурацию и команду запуска задать в docker compose файле.
240
266
241
267
## Структура проекта
242
268
@@ -280,6 +306,7 @@ RabbitMQ в контексте docker compose стека будет запуще
280
306
- Email sender - реализация задач для отправки емейлов
281
307
- Backend - отправка приветственного письма при регистрации
282
308
- Scheduler - отправка пользовательских отчетов по сделанным и оставшимся задачам
309
+
- Summarization - реализация интеграции с LLM, обработка асинхроных запросов с пмощью Kafka.
0 commit comments