01.1.10 OpenAI¶
| Версия | 1.0.0 |
|---|---|
| Количество листов |
Оглавление¶
- История изменений
- 1. OpenAI
- 1.1 Очередь “Получения ответа от ИИ-модели OpenAI”
- 1.2 Запрос “Create a model response” к сервису OpenAI для очереди “Получения ответа от ИИ-модели OpenAI”
- 01.1.10_1.2_3 Процедура запроса ответа от ИИ-модели
- 1.3 Очередь “Обработка статистики ИИ-моделью OpenAI”
- 1.4 Запрос “Create a model response” к сервису OpenAI для очереди “Обработка статистики ИИ-моделью OpenAI”
- 01.1.10_1.4_3 Процедура запроса статистики от ИИ-модели
- 1.5 Очередь “Создания описания локации для кампании ИИ-моделью OpenAI”
- 1.6 Запрос “Create a model response” к сервису OpenAI для очереди “Создания описания локации для кампании ИИ-моделью OpenAI”
- 01.1.10_1.6_3 Процедура создания описания локации для кампании от ИИ-модели
- 1.7 Буфер отслеживания локаций, для которых генерируется ответ от ИИ-модели
История изменений¶
| №1 | Дата: 13.01.26 | Автор:Ляшук Андрей | RFC: RPL-2129 | Версия: 1.0.0 |
|---|---|---|---|---|
| Изменено: В “01.1.10_1.4_2 Предустановленные параметры запроса для статистики поста коллаборации” изменилось значение параметра “system_message” добавилась обработка параметра total_reposts. |
||||
| №2 | Дата: 05.02.26 | Автор:Ляшук Андрей | RFC: RPL-2002 | Версия: 1.1.0 |
| Добавлено: • “1.5 Очередь “Создания описания локации для кампании ИИ-моделью OpenAI”” • “1.6 Запрос “Create a model response” к сервису OpenAI для очереди “Создания описания локации для кампании ИИ-моделью OpenAI”” • “1.7 Буфер отслеживания локаций, для которых генерируется ответ от ИИ-модели”. |
||||
| №3 | Дата: 25.02.26 | Автор:Ляшук Андрей | RFC: RPL-2444 | Версия: 1.2.0 |
| Добавлено: • “1.8 Очередь “Создания сопроводительного сообщения ИИ-моделью OpenAI”” • “1.9 Запрос “Create a model response” к сервису OpenAI для очереди “Создания сопроводительного сообщения ИИ-моделью OpenAI”” • “1.10 Буфер отслеживания пользователей, для которых генерируется ответ от ИИ-модели”. |
1. OpenAI¶
Сервис OpenAI используется для генерации ответов от ИИ-модели.
Для взаимодействия OpenAI с системой Rippla должен использоваться протокол MCP.
Интеграция с сервисом OpenAI осуществляется на основе документации сервиса.
1_1 Переменные окружения
| Переменная окружения | Описание |
|---|---|
| OPENAI_BASE_URL | Хост для выполнения запросов к сервису. |
| OPENAI_API_KEY | АПИ ключ для аутентификации запросов. |
1_2 Логирование запросов
Все запросы к сервису Open.AI должны логироваться.
Запись лога должна содержать:
- Url запроса;
- Http-код ответа;
- Тело запроса;
- Тело ответа.
Срок хранения записей логирования - 1 неделя.¶
1.1 Очередь “Получения ответа от ИИ-модели OpenAI”¶
Очередь состоит из:
- Брокера сообщений, который предназначен для хранения информации о сообщениях которые должны быть отправлены в ии-модель.
- Обработчика сообщений.
Повторная отправка сообщения очереди
Если сообщение не было обработано “Обработчиком сообщений”, должна выполняться повторная отправка сообщения “Обработчику сообщений” согласно настройкам повторной отправки сообщений.
Настройки повторной отправки сообщений
| Настройка | Значение | Описание |
|---|---|---|
| Первоначальная отсрочка | 3000 | Первоначальная отсрочка отправки сообщения в миллисекундах. |
| Количество попыток | 10 | Количество повторных попыток отправки сообщения |
| Множитель отсрочки | 1 |
1.1.1 Параметры сообщения “Сообщение AI-ассистенту”
| Название | Ключ | Значение |
|---|---|---|
| Идентификатор сообщения AI-ассистента | assistant_message_id |
1.1.1_1 Процедура обработки сообщения “Сообщение AI-ассистенту”
- Наступает время обработки сообщения, брокер отправляет сообщение обработчику сообщений.
- Обработчик получает сообщение “Сообщение AI-ассистенту”.
- Выполняется логирование события с Payload:
- event - "received";
- title - “assistant-message”;
- data.assistant_message_id - Идентификатор сообщения AI-ассистента, для которого выполняется данная процедура.
- Выполняется “01.1.10_1.2_3 Процедура получения ответа от модели” с параметрами:
- Идентификатор сообщения AI-ассистента - “Идентификатор” сообщения AI-ассистента, для которого была инициирована данная процедура.
- Если “01.1.10_1.2_3 Процедура получения ответа от модели” выполнена:
- Не успешно:
- Брокеру сообщений не возвращается информация о том что сообщение было обработано;
- Если сообщение “Сообщение AI-ассистенту” удаляется из очереди, выполняется:
-
- Создание “Сообщения AI-ассистента” с параметрами:
- Текст сообщения - согласно шаблону “OpenAI Request Error” в зависимости от предпочитаемой локали;
- Изменение “Сообщения AI-ассистента”, для которого инициирована данная процедура:
- Идентификатор ответа - “Идентификатор” сообщения AI-ассистента, которое было создано на этапе “5_a_ii_1” данной процедуры.
- В очередь “Очередь отправки сообщений в Телеграм” добавляется сообщение “Telegram message” с параметрами:
- text - “Response from OpenAI has not been processed. Reason: model response generation failed or request timeout occurred.”;
- Если для пользователя к которому относится “Сообщение AI-ассистента”, для которого инициирована данная процедура имеется подключение к веб-сокету. Отправка сообщения в веб-сокет “Уведомления от сервиса Centrifugo” для канала “notification_{Идентификатор пользователя к которому относится “Сообщение AI-ассистента”, для которого инициирована данная процедура}” с параметрами:
- type - “assistant_message_created”;
- data.id - “Идентификатор” сообщения AI-ассистента, которое было создано на этапе “5_a_ii_1” данной процедуры;
- data.message - “Текст сообщения” сообщения AI-ассистента, которое было создано на этапе “5_a_ii_1” данной процедуры;
- data.created_at - “Дата создания” сообщения AI-ассистента, которое было создано на этапе “5_a_ii_1” данной процедуры;
- data.author - assistant;
- error.message - true.
-
- Дальнейшие этапы данной процедуры не выполняются.
- Успешно:
- Выполняется создание “Сообщения AI-ассистента” с параметрами:
- Тип - “Ассистентское”;
- Текст сообщения - согласно значению параметра “output[ ].content[ ].text” элемента массива output[ ], который был получен в результате выполнения “01.1.10_1.2_3_3 Процедура получения ответа от модели” и для которого:
- Значение параметра output[ ].type - “message”;
- Значение параметра output[ ].content[ ].type - “output_text”.
- Идентификатор ответа ИИ - согласно значению параметра “id”, который был получен в результате выполнения “01.1.10_1.2_3_3 Процедура получения ответа от модели”.
- Выполняется изменение “Сообщения AI-ассистента”, для которого инициирована данная процедура:
- Идентификатор ответа - “Идентификатор” сообщения AI-ассистента, которое было создано на этапе “5_b_i_1” данной процедуры.
- Если для пользователя к которому относится “Сообщение AI-ассистента”, для которого инициирована данная процедура имеется подключение к веб-сокету. Выполняется отправка сообщения в веб-сокет “Уведомления от сервиса Centrifugo” для канала “notification_{Идентификатор пользователя к которому относится “Сообщение AI-ассистента”, для которого инициирована данная процедура}” с параметрами:
- type - “assistant_message_created”;
- data.id - “Идентификатор” сообщения AI-ассистента, которое было создано на этапе “5_b_i_1” данной процедуры;
- data.message - “Текст сообщения” сообщения AI-ассистента, которое было создано на этапе “5_b_i_1” данной процедуры;
- data.created_at - “Дата создания” сообщения AI-ассистента, которое было создано на этапе “5_b_i_1” данной процедуры;
- data.author - assistant.
- Брокеру сообщений возвращается информация о том что сообщение было обработано. Дальнейшие этапы данной процедуры не выполняются.
- Выполняется создание “Сообщения AI-ассистента” с параметрами:
1.2 Запрос “Create a model response” к сервису OpenAI для очереди “Получения ответа от ИИ-модели OpenAI”¶
01.1.10_1.2_1
Настройки параметров запроса должны храниться в “01_06 Настройках сервиса”.
01.1.10_1.2_2 Предустановленные параметры запроса для сообщений ассистента
| Параметр | Значение |
|---|---|
| Идентификатор | open_ai_create_model_response_for_assistant_message |
| Значение | { "model": "o3-mini", "tool_choice": "auto" } |
01.1.10_1.2_3 Процедура запроса ответа от ИИ-модели¶
- Выполняется инициация данной процедуры с параметрами:
- Идентификатор сообщения AI-ассистента.
- Выполняется запрос “Create a model response” к сервису OpenAi:
- С параметрами:
- Authorization - согласно переменной окружения “OPENAI_API_KEY”;
- x-request-id - uuid.
-
С телом запроса:
- Согласно “01.1.10_1.2_2 Предустановленные параметры запроса”;
- input - массив сообщений, массив состоит из следующих объектов:
- 1 объект, передается если значение параметра “Является началом сессии” сообщения AI-ассистента, для которого инициирована данная процедура - true, параметры объекта:
- role - system;
- type - message;
- content - {Значение определяется как значение параметра “assistant.system_message” 6.11 Ассистент};
- 2 объект, параметры объекта:
- role - user;
- type - message;
- content - “Сообщение”, которое было указано при инициации данной процедуры;
- 1 объект, передается если значение параметра “Является началом сессии” сообщения AI-ассистента, для которого инициирована данная процедура - true, параметры объекта:
-
previous_response_id - Не передается, если значение параметра не может быть определено. Определяется как значение параметра “Идентификатор ответа ИИ” сообщение AI-ассистента которое соответствует следующим критериям:
- “Дата создания” более “Даты создания” последнего “Сообщения AI-ассистента”, для которого значение параметра “Является началом сессии” - true;
- Имеется “Идентификатор ответа ИИ”
если было определено несколько “Сообщений AI-ассистента” определяется как последнее “Сообщение AI-ассистента”.
-
tools - массив инструментов, массив состоит из следующих объектов:
- 1 объект:
- “type” - mcp;
- “server_label” - mcp;
- “server_url” - согласно переменной окружения “MCP_SERVER_URL”;
- require_approval - never;
- allowed_tools - одномерный массив который содержит названия инструментов, согласно “2.4_3 Инструменты MCP-сервера”;
- 1 объект:
- Если запрос “Create a model response” к сервису OpenAI:
- Не выполнен:
- Выполняется логирование события с Payload:
- title - “OpenAI: create model response”;
- error - “OpenAI service did not respond”;
- data.assistant_message_id - значение параметра “Идентификатор сообщения AI-ассистента”, который был указан при инициации данной процедуры.
- Инициатору данной процедуры возвращается информация о не успешном выполнении данной процедуры. Дальнейшие этапы процедуры не выполняются.
- Выполнен не успешно (код ответа не “200”):
- Выполняется логирование события с Payload:
- title - “OpenAI: create model response”;
- error - “OpenAI service responded incorrectly”;
- data.assistant_message_id - значение параметра “Идентификатор сообщения AI-ассистента”, который был указан при инициации данной процедуры.
- Инициатору данной процедуры возвращается информация о не успешном выполнении данной процедуры. Дальнейшие этапы процедуры не выполняются.
- Выполнен успешно (код ответа “200”). Инициатору данной процедуры возвращается информация об успешном выполнении данной процедуры и ответ, который был получен в результате выполнения запроса “Create a model response”. Дальнейшие этапы процедуры не выполняются.
1.3 Очередь “Обработка статистики ИИ-моделью OpenAI”¶
Повторная отправка сообщения очереди
Если сообщение не было обработано “Обработчиком сообщений”, должна выполняться повторная отправка сообщения “Обработчику сообщений” согласно настройкам повторной отправки сообщений.
Настройки повторной отправки сообщений
| Настройка | Значение | Описание |
|---|---|---|
| Первоначальная отсрочка | 60000 | Первоначальная отсрочка отправки сообщения в миллисекундах. |
| Количество попыток | 10 | Количество повторных попыток отправки сообщения |
| Множитель отсрочки | 1 |
1.3.1 Параметры сообщения “Запрос обновления статистики поста коллаборации”
| Название | Ключ | Значение |
|---|---|---|
| Идентификатор запроса обновления статистики поста коллаборации | collaboration_post_stats_request_id |
1.3.1_1 Процедура обработки сообщения “Запрос обновления статистики поста коллаборации”
- Наступает время обработки сообщения, брокер отправляет сообщение обработчику сообщений.
- Обработчик получает сообщение “Запрос обновления статистики поста коллаборации”.
- Выполняется логирование события с Payload:
- event - "received";
- title - “collaboration_post_stats_request”;
- data.collaboration_post_stats_request_id - Идентификатор запроса обновления статистики поста коллаборации коллаборации.
- Если “Статус” запроса статистики поста коллаборации не “Обработка”, брокеру сообщений возвращается информация о том что сообщение было обработано.
- Выполняется “01.1.10_1.4_3 Процедура получения статистики от ИИ-модели” с параметрами:
- Идентификатор запроса обновления статистики поста коллаборации - Идентификатор запроса обновления статистики поста коллаборации, для которого была инициирована данная процедура.
- Если “01.1.10_1.4_3 Процедура получения статистики от ИИ-модели” выполнена:
- Не успешно:
- Брокеру сообщений не возвращается информация о том что сообщение было обработано;
- Если сообщение “Запрос обновления статистики поста коллаборации” удаляется из очереди, выполняется:
- В очередь “Очередь отправки сообщений в Телеграм” добавляется сообщение “Telegram message” с параметрами:
- text - “Statistics for collaboration post stats request {Идентификатор запроса обновления статистики поста коллаборации, для которого была инициирована данная процедура) were not retrieved. Please review the user’s uploaded screenshots manually.”;
- В очередь “Очередь отправки сообщений в Телеграм” добавляется сообщение “Telegram message” с параметрами:
- Дальнейшие этапы данной процедуры не выполняются.
- Успешно, брокеру сообщений возвращается информация о том что сообщение было обработано. Дальнейшие этапы данной процедуры не выполняются.
1.4 Запрос “Create a model response” к сервису OpenAI для очереди “Обработка статистики ИИ-моделью OpenAI”¶
01.1.10_1.4_1
Настройки параметров запроса должны храниться в “01_06 Настройках сервиса”.
01.1.10_1.4_2 Предустановленные параметры запроса для статистики поста коллаборации
| Параметр | Значение |
|---|---|
| Идентификатор | open_ai_create_model_response_for_stat_post_collaboration |
| Значение | { "model": "gpt-4.1", "tool_choice": "required", "system_message": "You are an expert in Instagram analytics. \nYour task is to extract numeric metrics from provided screenshots of Instagram Insights for ONE post and send them through the attached tool.\n\nEach request ALSO includes the variable:\n{collaboration_post_stats_request_id}\n\nThis is the identifier of the collaboration post in our system.\nYou MUST include this value in the tool call exactly as received.\n\n\==================================================\nRULES FOR DATA EXTRACTION\n\==================================================\n\n• Extract ONLY numbers that are clearly visible in the screenshots.\n• Never assume or estimate values.\n• If a metric is missing or unreadable → use null.\n• Process only these metrics:\n\n collaboration_post_stats_request_id \n total_views\n total_likes\n total_comments\n total_reach\n total_shares\n total_saves\n total_play\n total_taps_on_mention\n total_reposts\n \n\==================================================\nSUCCESS / FAILURE LOGIC\n\==================================================\n\nSUCCESS CONDITION:\nExtraction is considered successful if AT LEAST ONE of the numeric metrics contains a numeric value.\n\nFAILURE CONDITION:\nIf ALL numeric metrics are missing or null → extraction is considered failed.\n\n\==================================================\nTOOL CALL RULES\n\==================================================\n\n• ALWAYS call the tool, regardless of success or failure.\n• Send ALL extracted values (numbers or null).\n• Mandatory: include collaboration_post_stats_request_id exactly as received.\n\n• Add field:\n status \= \"success\" |
01.1.10_1.4_3 Процедура запроса статистики от ИИ-модели¶
- Выполняется инициация данной процедуры с параметрами:
- Идентификатор запроса обновления статистики поста коллаборации.
- Выполняется запрос “Create a model response” к сервису OpenAi:
- С параметрами:
- Authorization - согласно переменной окружения “OPENAI_API_KEY”;
- x-request-id - uuid.
- С телом запроса:
- model - Согласно значению параметра “model”, который указан в “01.1.10_1.4_2 Предустановленные параметры запроса для статистики поста коллаборации”;
- tool_choice - Согласно значению параметра “tool_choice”, который указан в “01.1.10_1.4_2 Предустановленные параметры запроса для статистики поста коллаборации”;
- input - массив сообщений, массив состоит из следующих объектов:
- 1 объект:
- role - system;
- type - message;
- content[ ].type - text;
- content[ ].text - Согласно значению параметра “system_message”, который указан в “01.1.10_1.4_2 Предустановленные параметры запроса для статистики поста коллаборации”
- 2 объект:
- type - input_image;
- image_url - {Ссылка на “Файл”, к которому относится “Файл поста коллаборации”, который относится к “Запросу обновления статистики поста коллаборации”, для которого инициирована данная процедура}.
- n объект:
- type - input_image;
- image_url - {Ссылка на “Файл”, к которому относится “Файл поста коллаборации”, который относится к “Запросу обновления статистики поста коллаборации”, для которого инициирована данная процедура}.
- 1 объект:
- tools - массив инструментов, массив состоит из следующих объектов:
- 1 объект:
- “type” - mcp;
- “server_label” - mcp;
- “server_url” - согласно переменной окружения “MCP_SERVER_URL”;
- require_approval - never;
- allowed_tools - update_collaboration_post_stats;
- 1 объект:
- Если запрос “Create a model response” к сервису OpenAI:
- Не выполнен:
- Выполняется логирование события с Payload:
- title - “OpenAI: get stat from model”;
- error - “OpenAI service did not respond”;
- data.collaboration_post_stats_request_id - Идентификатор запроса обновления статистики поста коллаборации коллаборации, который был указан при инициации данной процедуры.
- Инициатору данной процедуры возвращается информация о не успешном выполнении данной процедуры. Дальнейшие этапы процедуры не выполняются.
- Выполняется логирование события с Payload:
- Выполнен не успешно (код ответа не “200”):
- Выполняется логирование события с Payload:
- title - “OpenAI: get stat from model”;
- error - “OpenAI service responded incorrectly”;
- data.collaboration_post_stats_request_id - Идентификатор запроса обновления статистики поста коллаборации коллаборации, который был указан при инициации данной процедуры.
- Инициатору данной процедуры возвращается информация о не успешном выполнении данной процедуры. Дальнейшие этапы процедуры не выполняются.
- Выполняется логирование события с Payload:
- Выполнен успешно (код ответа “200”). Инициатору данной процедуры возвращается информация об успешном выполнении данной процедуры. Дальнейшие этапы процедуры не выполняются.
1.5 Очередь “Создания описания локации для кампании ИИ-моделью OpenAI”¶
Повторная отправка сообщения очереди
Если сообщение не было обработано “Обработчиком сообщений”, должна выполняться повторная отправка сообщения “Обработчику сообщений” согласно настройкам повторной отправки сообщений.
Настройки повторной отправки сообщений
| Настройка | Значение | Описание |
|---|---|---|
| Первоначальная отсрочка | 60000 | Первоначальная отсрочка отправки сообщения в миллисекундах. |
| Количество попыток | 10 | Количество повторных попыток отправки сообщения |
| Множитель отсрочки | 1 |
1.5.1 Параметры сообщения “Локация”
| Название | Ключ | Значение |
|---|---|---|
| Идентификатор локации | location_id |
1.5.1_1 Процедура обработки сообщения “Локации”
- Наступает время обработки сообщения, брокер отправляет сообщение обработчику сообщений.
- Обработчик получает сообщение “Локация”.
- Выполняется логирование события с Payload:
- event - "received";
- title - “generate_location_description_for_campaign”;
- data.location_id - Идентификатор локации, которая указана в сообщении, для которой инициирована данная процедура.
- Выполняется “01.1.10_1.6_3 Процедура создания описания локации для кампании от ИИ-модели” с параметрами:
- Идентификатор локации - Идентификатор локации, которая указана в сообщении, для которой инициирована данная процедура.
- Если “01.1.10_1.6_3 Процедура создания описания локации для кампании от ИИ-модели” выполнена:
- Не успешно:
- Брокеру сообщений не возвращается информация о том что сообщение было обработано;
- Если сообщение “Локация” удаляется из очереди, выполняется:
- В очередь “Очередь отправки сообщений в Телеграм” добавляется сообщение “Telegram message” с параметрами:
- text - “Generate location description for campaign {Идентификатор локации, для которого была инициирована данная процедура) were not complete.”;
- В очередь “Очередь отправки сообщений в Телеграм” добавляется сообщение “Telegram message” с параметрами:
- Дальнейшие этапы данной процедуры не выполняются.
- Успешно, брокеру сообщений возвращается информация о том что сообщение было обработано. Дальнейшие этапы данной процедуры не выполняются.
1.6 Запрос “Create a model response” к сервису OpenAI для очереди “Создания описания локации для кампании ИИ-моделью OpenAI”¶
01.1.10_1.6_1
Настройки параметров запроса должны храниться в “01_06 Настройках сервиса”.
01.1.10_1.6_2 Предустановленные параметры запроса описания локации для кампании
| Параметр | Значение |
|---|---|
| Идентификатор | open_ai_create_model_response_for_generate_location_description_for_campaign |
| Значение | { "model": "gpt-4.1", "tool_choice": "required", "system_message": "You are a copywriter for Rippla — a platform where businesses create influencer collaboration campaigns tied to a specific location. Goal: Generate a short public campaign description for influencers using ONLY the provided location data. Process: - A campaign description generation request is initiated for a specific location. - The location identifier (`location_id`) is provided in the input data. - After generating the description text, you MUST call the provided tool to create or update the campaign description. - When calling the tool: - Pass `location_id` as a query parameter. - Pass the generated campaign description text in the request body. Language rules: - If the `description` field is present and non-empty, generate the campaign description in the same language as the `description` field. - If the `description` field is missing or empty, generate the campaign description in English. - Do not mix languages. Content rules: - Use ONLY the provided location data. - Output length: 2–4 sentences, one paragraph. - Tone: clear, friendly, professional. No hype. No emojis. - Do not invent facts. - Do not mention internal procedures, JSON keys, or technical fields in the generated text. - Do not include raw URLs, emails, phone numbers, or social handles. You may reference “website” or “map” only in a generic way. - If `web_link` or `map_link` are provided, you may use them only to better understand the place. If access is not available, write using only the given fields. Tool usage requirements: - You MUST call the tool exactly once. - Do NOT return the generated text directly in the chat response. - The tool call must contain only: - `location_id` (query) - generated description text (body)" } ] } |
01.1.10_1.6_3 Процедура создания описания локации для кампании от ИИ-модели¶
- Выполняется инициация данной процедуры с параметрами:
- Идентификатор локации
- Выполняется запрос “Create a model response” к сервису OpenAi:
- С параметрами:
- Authorization - согласно переменной окружения “OPENAI_API_KEY”;
- x-request-id - uuid.
- С телом запроса:
- model - Согласно значению параметра “model”, который указан в “01.1.10_1.6_2 Предустановленные параметры запроса”;
- tool_choice - Согласно значению параметра “tool_choice”, который указан в “01.1.10_1.6_2 Предустановленные параметры запроса”;
- input - массив сообщений, массив состоит из следующих объектов:
- 1 объект:
- role - system;
- type - message;
- content[ ].type - input_tex;
- content[ ].text - Согласно значению параметра “system_message”, который указан в “01.1.10_1.6_2 Предустановленные параметры запроса”;
- 2 объект:
- role - user;
- type - message;
- content[ ].type - input_tex;
- content[ ].text - “location_id:{Идентификатор локации, который указан при инициации данной процедуры}, title:{“Заголовок” локации}, location_type:{“Заголовок” тип локации}, address:{“Адрес” локации}, city:{Город локации}, description:{“Описание” локации}, instagram_username:{“Название аккаунта в Instagram” локации}, map_link:{“Ссылка на локацию в Google Maps” локации}, web_link:{“Ссылка на локацию в web-сервисе” локации}, amenities:{Одномерный массив удобств локации}”;
- 1 объект:
- tools - массив инструментов, массив состоит из следующих объектов:
- 1 объект:
- “type” - mcp;
- “server_label” - mcp;
- “server_url” - согласно переменной окружения “MCP_SERVER_URL”;
- require_approval - never;
- allowed_tools - generate_location_description_for_campaign;
- 1 объект:
- Если запрос “Create a model response” к сервису OpenAI:
- Не выполнен:
- Выполняется логирование события с Payload:
- title - “OpenAI: generate location description for campaign”;
- error - “OpenAI service did not respond”;
- data.location_id - Идентификатор локации, который был указан при инициации данной процедуры.
- Инициатору данной процедуры возвращается информация о не успешном выполнении данной процедуры. Дальнейшие этапы процедуры не выполняются.
- Выполняется логирование события с Payload:
- Выполнен не успешно (код ответа не “200”):
- Выполняется логирование события с Payload:
- title - “generate location description for campaign”;
- error - “OpenAI service responded incorrectly”;
- data.location_id - Идентификатор локации, который был указан при инициации данной процедуры.
- Инициатору данной процедуры возвращается информация о не успешном выполнении данной процедуры. Дальнейшие этапы процедуры не выполняются.
- Выполняется логирование события с Payload:
- Выполнен успешно (код ответа “200”). Инициатору данной процедуры возвращается информация об успешном выполнении данной процедуры. Дальнейшие этапы процедуры не выполняются.
1.7 Буфер отслеживания локаций, для которых генерируется ответ от ИИ-модели¶
Буфер отслеживания локаций, для которых генерируется ответ от ИИ-модели предназначен для отслеживания локаций, для которых генерируется ответ от ИИ-модели.
Запись в буфере отслеживания локаций представляет собой запись в формате “Ключ” где, ключ - Идентификатор локации, для которой генерируется ответ от ИИ-модели.
FR_01.1.10_1.7_1 Срок хранения записи в буфер отслеживания локаций, для которых генерируется ответ от ИИ-модели
Срок хранения записи в буфере отслеживания локаций, для которых генерируется ответ от ИИ-модели - 1 час.
01.1.10_1.7_2 Процедура добавления записи в буфер отслеживания локаций, для которых генерируется ответ от ИИ-модели
- Инициируется данная процедура с параметрами:
- location_id.
- Если в Буфере отслеживания локаций, для которых генерируется ответ от ИИ-модели, имеется запись, значение ключа которой соответствует значению параметра “location_id”, инициатору данной процедуры возвращается информация об не успешном выполнении данной процедуры;
- Если в Буфере отслеживания локаций, для которых генерируется ответ от ИИ-модели, не имеется записи, значение ключа которой соответствует значению параметра “location_id”, выполняется:
- Создание записи в “Буфере отслеживания локаций, для которых генерируется ответ от ИИ-модели”, с параметрами:
- Ключ - location_id, который был указан при инициации данной процедуры;
- Инициатору данной процедуры возвращается информация об успешном выполнении данной процедуры.
- Создание записи в “Буфере отслеживания локаций, для которых генерируется ответ от ИИ-модели”, с параметрами:
1.8 Очередь “Создания сопроводительного сообщения ИИ-моделью OpenAI”¶
Повторная отправка сообщения очереди
Если сообщение не было обработано “Обработчиком сообщений”, должна выполняться повторная отправка сообщения “Обработчику сообщений” согласно настройкам повторной отправки сообщений.
Настройки повторной отправки сообщений
| Настройка | Значение | Описание |
|---|---|---|
| Первоначальная отсрочка | 60000 | Первоначальная отсрочка отправки сообщения в миллисекундах. |
| Количество попыток | 10 | Количество повторных попыток отправки сообщения |
| Множитель отсрочки | 1 |
1.8.1 Параметры сообщения “Пользователь”
| Название | Ключ | Значение |
|---|---|---|
| Идентификатор пользователя | user_id | |
| Сопроводительное сообщение | accompanying_message | |
| Идентификатор кампании | campaign_id |
1.8.1_1 Процедура обработки сообщения “Пользователь”
- Наступает время обработки сообщения, брокер отправляет сообщение обработчику сообщений.
- Обработчик получает сообщение “Пользователь”.
- Выполняется логирование события с Payload:
- event - "received";
- title - “generate_accompanying_message”;
- data.user_id - Идентификатор пользователя, который указан в сообщении, для которой инициирована данная процедура;
- data.campaign_id - Идентификатор кампания, который указан в сообщении, для которой инициирована данная процедура.
- Выполняется “01.1.10_1.9_3 Процедура создания сопроводительного сообщения от ИИ-модели” с параметрами:
- Идентификатор пользователя - Идентификатор пользователя, который указан в сообщении, для которой инициирована данная процедура;
- Сопроводительное сообщение - Сопроводительное сообщение, которое указано в сообщении, для которой инициирована данная процедура;
- Идентификатор кампании - Идентификатор кампании, который указан в сообщении, для которой инициирована данная процедура.
- Если “01.1.10_1.9_3 Процедура создания сопроводительного сообщения от ИИ-модели” выполнена:
- Не успешно:
- Брокеру сообщений не возвращается информация о том что сообщение было обработано;
- Если сообщение “Запрос обновления статистики поста коллаборации” удаляется из очереди, выполняется:
- В очередь “Очередь отправки сообщений в Телеграм” добавляется сообщение “Telegram message” с параметрами:
- text - “Generate accompanying message for user {Идентификатор пользователя, для которого была инициирована данная процедура) were not complete.”;
- В очередь “Очередь отправки сообщений в Телеграм” добавляется сообщение “Telegram message” с параметрами:
- Дальнейшие этапы данной процедуры не выполняются.
- Успешно, брокеру сообщений возвращается информация о том что сообщение было обработано. Дальнейшие этапы данной процедуры не выполняются.
1.9 Запрос “Create a model response” к сервису OpenAI для очереди “Создания сопроводительного сообщения ИИ-моделью OpenAI”¶
01.1.10_1.9_1
Настройки параметров запроса должны храниться в “01_06 Настройках сервиса”.
01.1.10_1.9_2 Предустановленные параметры запроса сопроводительного сообщения
| Параметр | Значение |
|---|---|
| Идентификатор | open_ai_generate_accompanying_message |
| Значение | { "model": "gpt-4.1", "tool_choice": "required", "system_message": "You are a professional copywriter for Rippla — a platform where influencers apply to collaboration campaigns created by businesses.\n\nYour task is to generate or improve a cover message that an influencer will send when applying to a campaign.\n\nINPUT STRUCTURE\n\nThe user message may contain the following sections:\n\n1) Account Information (mandatory)\n- user_id\n- influencer profile data\n- audience data (optional)\n\n2) Text Block (optional)\nThis block may contain:\n- A previously generated or user-written cover message\n- Editing instructions or comments from the user\n- Tone or structural requests\n\n3) Campaign Block (optional)\n- campaign_id (optional)\n- description (campaign description)\n- brand information\n- target audience required by the business\n- campaign location\n- collaboration conditions (for example: number of stories, posts, reels, deadlines)\n\nPROCESSING RULES\n\n1) user_id is always required.\n\n2) campaign_id handling:\n- If campaign_id is provided inside the Campaign Block, you MUST include it in the tool call.\n- If campaign_id is NOT provided, you MUST NOT include it in the tool call under any circumstances.\n\n3) Influencer and Audience Data:\n- Use ONLY the provided influencer data.\n- Do NOT invent metrics, achievements, or collaborations.\n- If audience data is present, reference it naturally and professionally.\n- If audience data is missing, do not fabricate.\n\n4) Campaign Alignment:\n- If Campaign Block is present, tailor the message to the campaign theme, required audience, location, and collaboration conditions.\n- Emphasize why the influencer is a strong fit.\n- Do not restate campaign conditions mechanically.\n- If Campaign Block is absent, generate a general collaboration message.\n\n5) Text Handling Logic:\n- If no previous message is provided, generate a new cover message.\n- If previous message is provided without clear editing instructions, improve clarity and professionalism.\n- If previous message and editing instructions are provided, rewrite according to those instructions while preserving factual accuracy.\n\n6) Editing Constraints:\n- Do not invent new numbers.\n- Do not significantly increase length unless explicitly requested.\n- Remove repetition.\n- Keep tone confident, professional, and brand-aligned.\n- No emojis.\n- One paragraph.\n- 4–6 sentences unless otherwise instructed.\n\n7) Language Rules:\n- If the description field is present and non-empty, generate the campaign description in the same language as the description field.\n- If the description field is missing or empty, generate the campaign description in English.\n- Do not mix languages.\n\nOUTPUT RULES\n\nYou MUST call the provided tool exactly once.\n\nTool call must include:\n- user_id\n- text\n\nInclude campaign_id ONLY if it was provided in the Campaign Block.\nIf campaign_id was not provided, do not include it.\n\nDo NOT return the generated message directly in the chat response.\n\nIf tool execution is not possible, return ONLY the generated text with no explanation." } ] } |
01.1.10_1.9_3 Процедура создания описания локации для кампании от ИИ-модели¶
- Выполняется инициация данной процедуры с параметрами:
- Идентификатор аккаунта;
- Сопроводительное сообщение;
- Идентификатор кампании.
- Выполняется запрос “Create a model response” к сервису OpenAi:
- С параметрами:
- Authorization - согласно переменной окружения “OPENAI_API_KEY”;
- x-request-id - uuid.
- С телом запроса:
- model - Согласно значению параметра “model”, который указан в “01.1.10_1.9_2 Предустановленные параметры запроса”;
- tool_choice - Согласно значению параметра “tool_choice”, который указан в “01.1.10_1.9_2 Предустановленные параметры запроса”;
- input - массив сообщений, массив состоит из следующих объектов:
- 1 объект:
- role - system;
- type - message;
- content[ ].type - text;
- content[ ].text - Согласно значению параметра “system_message”, который указан в “01.1.10_1.9_2 Предустановленные параметры запроса”;
- 2 объект:
- role - user;
- type - message;
- content[ ].type - text;
- content[ ].text -
- “user:{Идентификатор пользователя, который был указан при инициации данной процедуры};
- “full_name”: {“Полное имя” пользователя, который был указан при инициации данной процедуры}.
- “raw_data”:{“Исходные данные” последних данных аккаунта, которые относятся к “Аккаунту”, который относится к “Пользователю” который был указан при инициации данной процедуры}
- “text”:{Сопроводительное сообщение, которое было указано при инициации данной процедуры};
- “Campaign”:{Структура согласно схеме “campaignDetailsForOffer”, которая используется в запросе Get campaign details for offers page}.
- 1 объект:
- tools - массив инструментов, массив состоит из следующих объектов:
- 1 объект:
- “type” - mcp;
- “server_label” - mcp;
- “server_url” - согласно переменной окружения “MCP_SERVER_URL”;
- require_approval - never;
- allowed_tools - generate_accompanying_message;
- 1 объект:
- Если запрос “Create a model response” к сервису OpenAI:
- Не выполнен:
- Выполняется логирование события с Payload:
- title - “OpenAI: generate accompanying message”;
- error - “OpenAI service did not respond”;
- data.user_id - Идентификатор пользователя, который был указан при инициации данной процедуры;
- data.campaign_id - Идентификатор кампания, который был указан при инициации данной процедуры.
- Инициатору данной процедуры возвращается информация о не успешном выполнении данной процедуры. Дальнейшие этапы процедуры не выполняются.
- Выполняется логирование события с Payload:
- Выполнен не успешно (код ответа не “200”):
- Выполняется логирование события с Payload:
- title - “OpenAI: generate accompanying message”;
- error - “OpenAI service responded incorrectly”;
- data.user_id - Идентификатор пользователя, который был указан при инициации данной процедуры;
- data.campaign_id - Идентификатор кампания, который был указан при инициации данной процедуры.
- Инициатору данной процедуры возвращается информация о не успешном выполнении данной процедуры. Дальнейшие этапы процедуры не выполняются.
- Выполняется логирование события с Payload:
- Выполнен успешно (код ответа “200”). Инициатору данной процедуры возвращается информация об успешном выполнении данной процедуры. Дальнейшие этапы процедуры не выполняются.
1.10 Буфер отслеживания пользователей, для которых генерируется ответ от ИИ-модели¶
Буфер отслеживания аккаунтов, для которых генерируется ответ от ИИ-модели предназначен для отслеживания пользователей, для которых генерируется ответ от ИИ-модели.
Запись в буфере отслеживания локаций представляет собой запись в формате “Ключ” где, ключ - Идентификатор аккаунта, для которой генерируется ответ от ИИ-модели.
FR_01.1.10_1.10_1 Срок хранения записи в буфере отслеживания пользователей, для которых генерируется ответ от ИИ-модели
Срок хранения записи в буфере отслеживания локаций, для которых генерируется ответ от ИИ-модели - 1 час.
01.1.10_1.10_2 Процедура добавления записи в буфер отслеживания пользователей, для которых генерируется ответ от ИИ-модели
- Инициируется данная процедура с параметрами:
- user_id.
- Если в Буфере отслеживания пользователей, для которых генерируется ответ от ИИ-модели, имеется запись, значение ключа которой соответствует значению параметра “user_id”, инициатору данной процедуры возвращается информация об не успешном выполнении данной процедуры;
- Если в Буфере отслеживания пользователей, для которых генерируется ответ от ИИ-модели, не имеется записи, значение ключа которой соответствует значению параметра “user_id”, выполняется:
- Создание записи в “Буфере отслеживания пользователей, для которых генерируется ответ от ИИ-модели”, с параметрами:
- Ключ - user_id, который был указан при инициации данной процедуры;
- Инициатору данной процедуры возвращается информация об успешном выполнении данной процедуры.
- Создание записи в “Буфере отслеживания пользователей, для которых генерируется ответ от ИИ-модели”, с параметрами: