Создание варианта опроса при помощи гигачата #1

Closed
skeris wants to merge 0 commits from gigachat into main
Owner

надо написать воркер, который будет потреблять из редиса или редпанды задачу на создание варианта под определённую аудиторию. в рамках этой задачи надо:

  1. реализовать клиент к гигачату, который умеет в создание нового чата и оправку запросов в этот же чат. чат создаётся для пары опрос+аудитория

  2. воркер при потреблении задачи из очереди должен завести собственную персистентную очередь задач на создание варианта каждого вопроса. возможно возможно общаться не последовательно, а как то параллельно, но я не вижу простого варианта как это сделать и не знаю ограничений гигачата на количество одновременных чатов или запросов.

  3. по факту, формат работы я вижу такой: воркер получает из входной очереди задачу мол "сделай варианты вопросов для вот этой аудитории". воркер получает из базы аудиторию, опрос, вопросы для этого опроса и создаёт набор задач на последовательное "перформулирование" вопроса для этой конкретной аудитории (от аудитории тут надо только пол и age)

  4. далее воркер по одной выгребает задачи на переформулирование вопроса из очереди и обращается к гигачату в ЧАТ, КАСАЮЩИЙСЯ ЭТОГО ВОПРОСА И ЭТОЙ АУДИТОРИИ, в рамках этого чата выдаёт текст и промпт, который я ниже скину, дожидается ответа и создаёт вопрос, который повторяет этот вопрос, но с новым заголовком и описанием. возможно нужно будет ещё распарсить конфиг и передать варианты ответа( но я надеюсь, что удастся убедить без этого обойтись

  5. после того как все вопросы переформулированы, чат нужно закрыть

Есть 3 НО в этом моменте:

  • иногда гигачат строит из себя непонятно что и отказывается делать переформулировку типа image.png. в такой ситуации запрос надо просто повторить. проблема в том, что т.к. это нейронка, мы не можем четко этот момент отловить однозначно. поэтому это потребует исследования и доработок.
  • очевидно, что к модели вопроса надо добавить поле auditory, но сделать надо это аккуратно - у нас есть ещё некоторое ведро запросов, куда из за этого поля могут вылезти лишние данные
  • скорее всего будут проблемы с экспортом... большие проблемы. и со статой. но это я чуть позже отдельными задачами поставлю

промпт:
Ты маркетолог и копирайтер и переделываешь вопрос из маркетингового квиза в вопрос подходящий определенной целевой аудитории согласно возрастному промежутку и полу при этом новая формулировка не меняет смысл вопроса. я пишу вопрос, ты пишешь итоговый ответ. Начнем?

формат вопроса:
18-25 лет женский пол.
На какую дату вы хотите забронировать отель?

т.е. в начале чата пишешь промпт
потом на каждый вопрос указываешь аудиторию в таком формате, ниже заголовок вопроса, ниже описание вопроса

надо написать воркер, который будет потреблять из редиса или редпанды задачу на создание варианта под определённую аудиторию. в рамках этой задачи надо: 1) реализовать клиент к гигачату, который умеет в создание нового чата и оправку запросов в этот же чат. чат создаётся для пары опрос+аудитория 2) воркер при потреблении задачи из очереди должен завести собственную персистентную очередь задач на создание варианта каждого вопроса. возможно возможно общаться не последовательно, а как то параллельно, но я не вижу простого варианта как это сделать и не знаю ограничений гигачата на количество одновременных чатов или запросов. 3) по факту, формат работы я вижу такой: воркер получает из входной очереди задачу мол "сделай варианты вопросов для вот этой аудитории". воркер получает из базы аудиторию, опрос, вопросы для этого опроса и создаёт набор задач на последовательное "перформулирование" вопроса для этой конкретной аудитории (от аудитории тут надо только пол и age) 4) далее воркер по одной выгребает задачи на переформулирование вопроса из очереди и обращается к гигачату в ЧАТ, КАСАЮЩИЙСЯ ЭТОГО ВОПРОСА И ЭТОЙ АУДИТОРИИ, в рамках этого чата выдаёт текст и промпт, который я ниже скину, дожидается ответа и создаёт вопрос, который повторяет этот вопрос, но с новым заголовком и описанием. возможно нужно будет ещё распарсить конфиг и передать варианты ответа( но я надеюсь, что удастся убедить без этого обойтись 5) после того как все вопросы переформулированы, чат нужно закрыть Есть 3 НО в этом моменте: - иногда гигачат строит из себя непонятно что и отказывается делать переформулировку типа ![image.png](/attachments/61321223-e29e-4049-9b05-1c1b98566a71). в такой ситуации запрос надо просто повторить. проблема в том, что т.к. это нейронка, мы не можем четко этот момент отловить однозначно. поэтому это потребует исследования и доработок. - очевидно, что к модели вопроса надо добавить поле auditory, но сделать надо это аккуратно - у нас есть ещё некоторое ведро запросов, куда из за этого поля могут вылезти лишние данные - скорее всего будут проблемы с экспортом... большие проблемы. и со статой. но это я чуть позже отдельными задачами поставлю промпт: Ты маркетолог и копирайтер и переделываешь вопрос из маркетингового квиза в вопрос подходящий определенной целевой аудитории согласно возрастному промежутку и полу при этом новая формулировка не меняет смысл вопроса. я пишу вопрос, ты пишешь итоговый ответ. Начнем? формат вопроса: 18-25 лет женский пол. На какую дату вы хотите забронировать отель? т.е. в начале чата пишешь промпт потом на каждый вопрос указываешь аудиторию в таком формате, ниже заголовок вопроса, ниже описание вопроса
239 KiB
pasha1coil was assigned by skeris 2025-05-04 19:36:05 +00:00
pasha1coil added 1 commit 2025-05-07 17:11:51 +00:00
pasha1coil added 1 commit 2025-05-07 17:26:04 +00:00
Member

обсуждали переработку с Мишей в чате пришли к текущей логики которая реализована в коммитах выше
из переработанного это промпт:

Ты маркетолог и копирайтер. Твоя задача — переформулировать маркетинговый вопрос так, чтобы он лучше подходил определённой целевой аудитории по полу и возрасту. 
Ответ должен строго состоять из двух строк:

{
  "title": "<переформулированный заголовок>",
  "description": "<переформулированное описание>"
}

Я напишу возраст, пол, заголовок и описание вопроса, а ты вернёшь только отформатированный результат.

нужно обновить комон, текущая ветка не подходит - https://gitea.pena/SQuiz/common/src/branch/gigachat она с ветки imp

обсуждали переработку с Мишей в чате пришли к текущей логики которая реализована в коммитах выше из переработанного это промпт: ``` Ты маркетолог и копирайтер. Твоя задача — переформулировать маркетинговый вопрос так, чтобы он лучше подходил определённой целевой аудитории по полу и возрасту. Ответ должен строго состоять из двух строк: { "title": "<переформулированный заголовок>", "description": "<переформулированное описание>" } Я напишу возраст, пол, заголовок и описание вопроса, а ты вернёшь только отформатированный результат. ``` нужно обновить комон, текущая ветка не подходит - https://gitea.pena/SQuiz/common/src/branch/gigachat она с ветки imp
pasha1coil added 1 commit 2025-05-08 20:38:01 +00:00
pasha1coil added 1 commit 2025-05-10 10:23:03 +00:00
pasha1coil added 1 commit 2025-05-10 14:11:58 +00:00
pasha1coil added 1 commit 2025-05-14 10:51:15 +00:00
pasha1coil added 1 commit 2025-05-14 11:19:24 +00:00
Member

коммит выше по сути финальный для задачи
воркер который фетчит кафку получился сильно проще чем описано в задаче.
почему так произошло? - отказались от чатов (ну как отказались просто нет такого функционала) думали над деревом контекста, тоже минус,Дима не апрувнул. Пришли к выводу - есть вопрос на переформулирование - отправляем его в гигачат с мейн промптом - получаем ответ переформулированный - создаем тот же вопрос в бд но с новым заголовком и описанием и добавляем id аудитории из таблицы аудитории

если по какой то причине вопрос не изменился, но мы получаем ответ - значит гигачат не смог. повторяем в течении 10 попыток, если безуспешно то скипаем вопрос. если возникла другая ошибка, то скип вопроса (не уверен что это правильно так как опрос получится не полным)

вот думаю при каких случаях это может быть - довольно узкие места

коммит выше по сути финальный для задачи воркер который фетчит кафку получился сильно проще чем описано в задаче. почему так произошло? - отказались от чатов (ну как отказались просто нет такого функционала) думали над деревом контекста, тоже минус,Дима не апрувнул. Пришли к выводу - есть вопрос на переформулирование - отправляем его в гигачат с мейн промптом - получаем ответ переформулированный - создаем тот же вопрос в бд но с новым заголовком и описанием и добавляем id аудитории из таблицы аудитории если по какой то причине вопрос не изменился, но мы получаем ответ - значит гигачат не смог. повторяем в течении 10 попыток, если безуспешно то скипаем вопрос. если возникла другая ошибка, то скип вопроса (не уверен что это правильно так как опрос получится не полным) вот думаю при каких случаях это может быть - довольно узкие места
pasha1coil added 1 commit 2025-05-14 11:48:32 +00:00
Member

так ну фиксанули получается сразу эту дилемму

осталось тоже самое что и в коре я писал это беды с комоном и не соответсвие версий за которые я не берусь так как это мейн

вот проблемы:
86769e3c02/answerwc/to_client.go (L208)

86769e3c02/answerwc/to_client.go (L336)

86769e3c02/answerwc/to_client.go (L338)

так ну фиксанули получается сразу эту дилемму осталось тоже самое что и в коре я писал это беды с комоном и не соответсвие версий за которые я не берусь так как это мейн вот проблемы: https://gitea.pena/SQuiz/worker/src/commit/86769e3c029b943835f2f62e8193f25881b643aa/answerwc/to_client.go#L208 https://gitea.pena/SQuiz/worker/src/commit/86769e3c029b943835f2f62e8193f25881b643aa/answerwc/to_client.go#L336 https://gitea.pena/SQuiz/worker/src/commit/86769e3c029b943835f2f62e8193f25881b643aa/answerwc/to_client.go#L338
pasha1coil added 1 commit 2025-05-14 12:59:07 +00:00
skeris added 47 commits 2025-05-15 16:57:22 +00:00
delete rpc customer client, import from pj customer pkg, and rework check...

See merge request backend/quiz/worker!4
fix mail

See merge request backend/quiz/worker!5
Fix mail

See merge request backend/quiz/worker!6
gitea ci implements
Some checks failed
Deploy / CreateImage (push) Failing after 1m18s
Deploy / DeployService (push) Has been skipped
acd44c0b97
skeris added 1 commit 2025-05-15 17:21:56 +00:00
pasha1coil added 1 commit 2025-05-16 08:33:30 +00:00
skeris closed this pull request 2025-06-02 12:58:52 +00:00

Pull request closed

Sign in to join this conversation.
No reviewers
No Milestone
No project
No Assignees
2 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: SQuiz/worker#1
No description provided.