기존 워크플로 주제에서 내가 작성한 게시글에 대한 후속입니다. 원하는 동작을 구현하는 방법을 찾았습니다. 물론 이건 전부 테스트 단계이지만, 아래는 이 시스템이 수행하는 내용입니다:
이것은 AI를 활용하여 사이트가 한산할 때 토론을 촉발하고 재참여를 높이는 재참여(re-engagement) 시스템입니다.
Phase A: 탐색 및 요약
30일 이상 지난 게시글 중 다음 조건에 해당하는 항목을 찾습니다:
- 한동안 새 게시글이 없는 인기 주제.
- 많은 조회수를 기록하고 있지만 한동안 답변이 없는 주제.
- 지난 1년간 일부 활동이 있었으나 이후 중단된 주제.
하나를 찾으면 Discourse의 ‘AI Summary’ 에이전트를 실행합니다. AI 에이전트가 요약을 작성하도록 합니다. 이를 위해 요약 API 엔드포인트에 http 요청을 POST합니다. 요약이 완료되면 워크플로의 존재를 데이터 테이블에 저장합니다.
(이것은 1시간마다 실행되지만, 더 자주 실행될 수도 있습니다).
Phase B: 후속 조치를 위한 요약 평가
또 다른 예약 워크플로가 자체 스케줄에 따라 독립적으로 실행됩니다. 데이터 테이블에서 요약되었지만 평가되지 않은 행을 확인합니다. 데이터 테이블에서 주제를 하나 가져오고 해당 주제의 최근 5~10개 게시글을 가져옵니다.
분류(triage)를 담당하는 AI 에이전트로 전달됩니다. 에이전트는 판단을 내립니다. 이 주제를 부활시켜야 하는가? 그렇다면 어떻게 해야 하는가? 주제를 부스트(bump)해야 하는지, 주제를 다시 참여하게 할 게시글을 작성해야 하는지(질문하기, 후속 질문하기, 아무것도 하지 않기)를 결정합니다.
데이터 테이블에 결정을 업데이트합니다.
(이것은 Phase A와 비슷한 빈도로 실행되어야 하며, Phase A에서 트리거하거나 Phase A와 결합할 수도 있습니다.)
Phase C: 주제 재참여
또 다른 예약 워크플로가 자체 스케줄에 따라 덜 자주 실행됩니다. 첫 번째 단계는 최근 포럼의 활동 수준을 확인하는 것입니다. 지난 3시간 동안 시간당 평균 게시글 수를 확인하여 이를 수행합니다. 그 후 지난 2개월간 같은 요일의 같은 시간대 3시간 주기별 포럼의 평균 바쁨 정도를 계산합니다. 사이트가 같은 요일의 같은 시간대에 비해 평소보다 한산하다면 '이제 재참여를 수행할 수 있다’고 판단합니다.
그 후 최대 10개의 사용 가능한 재참여 기회를 가져옵니다. AI 에이전트로 보내고 목록에서 재참여를 위한 가장 강력한 후보를 선출하도록 요청합니다. AI가 결정하고 topic_id를 반환합니다. Phase B의 분류기는 3가지 옵션 중 하나를 결정했습니다: 주제 부스트, 후속 게시글 작성, 아무것도 하지 않기.
워크플로는 후속 조치가 지정되지 않는 한 부스트를 수행합니다. 후속 조치가 지정된 경우, 주제 ID를 가져와 해당 주제의 최신 게시글을 가져옵니다. 이를 AI 에이전트로 전달하여 주제를 다시 참여하게 할 최선의 응답을 결정하도록 합니다. 응답이 매우 기본적이면서도 주제에 부합하고 추천이나 논평을 제공하지 않도록 하는 가드레일이 있습니다. 주로 업데이트를 요청하거나, 원 포스터가 발생한 일에 대해 업데이트가 있는지 묻는 등의 내용을 담습니다. 답변을 게시하고 완료 날짜로 데이터 테이블을 업데이트합니다.
아마도 제가 알지 못했던 Discourse의 숨겨진 기능을 중복 구현한 것은 아니길 바랍니다! 시행착오가 있었지만 결국 완료했습니다.


