Skip to content

Commit 0364cbe

Browse files
authored
Merge pull request #51 from ApostolFet/add-chatgpt-to-7-project
feat: add summarization service for work with rest api and llm
2 parents 33929bf + 077bc6a commit 0364cbe

2 files changed

Lines changed: 37 additions & 9 deletions

File tree

content/projects/cloud-file-storage.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ weight = 6
3030
- Практика с Docker и Docker Compose
3131
- Первый проект, где студент самостоятельно разрабатывает структуру БД
3232
- Знакомство с NoSQL хранилищем S3 для хранения файлов, Redis для хранения сессий
33+
- Реализация многопользовательского приложения
3334

3435
## Функционал приложения
3536

content/projects/task-tracker.md

Lines changed: 36 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ weight = 7
2020
- [Frontend](../technologies/frontend.md) - HTML/CSS, Bootstrap, Javascript, Ajax
2121
- [Docker и микросервисы](../technologies/microservices.md)
2222
- Контейнеры, образы, volumes, написание Dockerfile, Docker Compose
23-
- Брокер сообщений RabbitMQ
24-
- Celery
23+
- Celery + брокер сообщений RabbitMQ
24+
- Брокер сообщений Kafka
2525
- [DevOps](../technologies/dev-ops.md)
2626
- Деплой
2727
- CI/CD, GitHub Actions
@@ -32,8 +32,10 @@ weight = 7
3232
- Использование новых библиотек - Celery, smtplib
3333
- Работа с асинхронностью
3434
- Практика с Docker и Docker Compose, докеризация FastAPI приложение (упаковка его в Docker образ)
35-
- Знакомство и практика с RabbitMQ
35+
- Знакомство и практика с Kafka
3636
- Самостоятельная разработка части схемы REST API
37+
- Работа с внешними API
38+
- Практика работы с LLM, промтинженеринг и управление контекстом
3739

3840
### Дисклеймер.
3941

@@ -64,6 +66,7 @@ weight = 7
6466

6567
- Приветственное письмо
6668
- Каждый день в полночь оповещение о том, сколько задач было сделано за прошедшие сутки, и какое количество осталось невыполненными
69+
- Оповещиние должно содержать краткий отчет с данными по задачам, отчет составляем с помощью LLM
6770

6871
## Интерфейс приложения
6972

@@ -196,11 +199,7 @@ Celery worker приложение с smtplib.
196199

197200
Celery Beat - планировщик для переодичиской рассылки писем.
198201

199-
Задача сервиса - раз в сутки итерировать всех пользователей, и формировать для них отчёты о задачах и изменениях в них за сутки.
200-
201-
- Пользователям, у которых на конец дня есть невыполненные задача, отправляется емейл вида "У вас осталось N несделанных задач". Тело письма содержит заголовки этих задач (не более какого-то разумного количества, например 5)
202-
- Пользователям, у которых за последние сутки 1 или более задач были отмечены как сделанные, отправляется емейл вида "За сегодня вы выполнили N задач". Тело письма содержит заголовки выполненных задач
203-
- Пользователям, для которых верны оба условия выше, отправляется емейл и со списком несделанных, и сделанных за последние сутки задач
202+
Задача сервиса - раз в сутки итерировать всех пользователей, и формировать для них отчёты о задачах и изменениях в них за сутки через асинхронные запросы к сервису "summarization service" и отпрвлять отчеты по email.
204203

205204
Celery Beat Scheduler по Cron выражению каждую полночь вызывает метод, читающий список пользователей, анализирующий их заметки, и формирующий емейлы для отправки.
206205

@@ -209,6 +208,30 @@ Celery Beat Scheduler по Cron выражению каждую полночь
209208
RabbitMQ в контексте docker compose стека будет запущен из образа, подобно базе данных или хранилищу сессий.
210209
Всю работу с очередью берет на себя Celery. Поэтому в рамках работы с RebbitMQ необходимо поднять базу данных в docker, настроить и настроить брокер в приложении.
211210

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+
212235
## Mailjet
213236

214237
Для отправки SMTP нужны логин, пароль, хост и порт SMTP сервера. У емейл сервисов, например Gmail, mail.ru, есть SMTP сервера, с которыми работают емейл-клиенты. Теоретически, можно воспользоваться их сервером, и отправлять письма, авторизовываясь логином и паролем своего ящика, но в реальности, для писем и рассылок обычно пользуются специальными для этого созданными сервисами, например Mailjet, Mailchimp, Mailgun (и десятками аналогичных).
@@ -233,10 +256,13 @@ RabbitMQ в контексте docker compose стека будет запуще
233256
- task-tracker-frontend (порт 80)
234257
- task-tracker-scheduler (celery beat)
235258
- task-tracker-email-sender (celery worker)
259+
- summarization-service
236260
- PostreSQL
237261
- RabbitMQ
262+
- Kafka
238263

239-
Для сервисов backend, scheduler, email-sender используется общая кодовая база и поэтому может быть использован один Dockerfile. Конфигурацию и команду запуска задать в docker compose файле.
264+
Для сервисов backend, scheduler, email-sender используется общая кодовая база и поэтому может быть использован один Dockerfile, а вот summarization-service должен быть отделен (создаем другой Dockerfile, находится в другой директории).
265+
Конфигурацию и команду запуска задать в docker compose файле.
240266

241267
## Структура проекта
242268

@@ -280,6 +306,7 @@ RabbitMQ в контексте docker compose стека будет запуще
280306
- Email sender - реализация задач для отправки емейлов
281307
- Backend - отправка приветственного письма при регистрации
282308
- Scheduler - отправка пользовательских отчетов по сделанным и оставшимся задачам
309+
- Summarization - реализация интеграции с LLM, обработка асинхроных запросов с пмощью Kafka.
283310
- CI/CD, деплой
284311

285312
## Ресурсы для работы над ошибками

0 commit comments

Comments
 (0)