Como funciona a regeneração de resumos?

Alguém pode, por favor, explicar as regras para regenerar resumos? Houve alguma discussão de que a equipe pode regenerar resumos após uma hora, mas não é isso que estou vendo. (Não tenho certeza do que estou vendo - parece inconsistente.) Se houver uma nova postagem, ela deve oferecer a opção de regenerar? E para qualquer pessoa, ou apenas para a equipe?

Após experimentar, eis o que vejo:

  • Para tópicos com menos de 100 posts, o botão de regenerar está habilitado imediatamente apenas para a equipe.
  • Para tópicos com mais de 100 posts, o botão de regenerar não é habilitado, mesmo após esperar uma hora.

Mesmo que o botão de regenerar fosse habilitado, não é um fluxo de trabalho viável para nossa equipe ficar clicando nos botões continuamente, então planejo implementar um webhook que escute por novos posts e regenere o resumo usando https://forum.example.com/discourse-ai/summarization/t/12345. Um cálculo rápido diz que isso custaria cerca de US$ 500/ano para o nosso fórum. Percebo que o Discourse está tentando proteger contra um custo inesperado e grande.

Olá @markschmucker,

Estamos trabalhando em uma estratégia de preenchimento para resumos de tópicos no DiscourseAI. Planejamos lançá-la na próxima semana e atualizarei você aqui quando chegar.

4 curtidas

Já temos o recurso @markschmucker, você pode ajustá-lo através da configuração do site ai summary backfill maximum topics per hour.

Defini isso para 12 e no meu painel Anthropic vejo um evento a cada 5 minutos, como esperado. Mas não consigo ver a carga útil desse painel. Como posso ver qual resumo o Discourse está a regenerar?

Está tudo armazenado na tabela ai_api_audit_logs. Se tiver o Explorador de Dados, pode usar a seguinte consulta:

SELECT
  *
FROM
  ai_api_audit_logs
ORDER BY
  id DESC
LIMIT
  100

Depois de brincar com isso, parece que o preenchimento gera resumos para alguns dos Tópicos mais recentes (parece cerca de 100 tópicos ou tópicos que foram atualizados nas últimas semanas?).

Durante ou após o ciclo de preenchimento, se um tópico com um resumo receber uma nova postagem, seu resumo não é atualizado automaticamente. (Se tiver menos de 100 postagens, há um botão “Regenerar” que a equipe pode acionar manualmente.)

Quando o tópico com uma nova postagem deve ser atualizado?

Ele deve ser atualizado em até 5 minutos após uma resposta ser postada, pelo menos para tópicos normais com menos de 50 respostas.

Sua comunidade é mais voltada para mega-tópicos?

cc @Roman

Agora vejo que houve uma falha no job SummariesBackfill - atingi um limite de taxa diário na Anthropic. Esse pode ser o motivo pelo qual ele parece ter parado após talvez os 100 tópicos mais recentes, e também por que o tópico atualizado não recebeu um novo resumo.

Se eu não atingisse um limite de taxa, o SummariesBackfill resumiria todos os nossos 60.000 tópicos? Mesmo aqueles que estão inativos há anos?

A maioria dos tópicos tem mais de 100 respostas. Temos 8 tópicos com mais de 1000 respostas.

Sim, ele inicia a cada 5 minutos para fazer um lote, priorizando os mais recentes ativos e pulando aqueles que já têm um resumo atualizado.

Se você configurar seu limite máximo por hora para ser maior do que quantos tópicos com nova atividade você tem por hora, em média, ele eventualmente preencherá todos os seus tópicos.

2 curtidas

Solicitação de recurso: algo como ai summary backfill maximum age, para que não incorramos em muitos custos ao resumir tópicos antigos sem atividade nos últimos seis meses, por exemplo. Estimo que custaria US$ 3.000 para resumir todos os 60.000, a maioria dos quais não nos importamos.

cc @Roman

Só confirmando, você está usando haiku 3.5, ele deve produzir bons resumos

Estou usando o sonnet 3.5, sem um bom motivo. O Haiku 3.5 deveria reduzir bastante o custo. Acho que a solicitação de recursos ainda vale a pena ser considerada.

1 curtida

sim, certamente.

Acho que podemos possivelmente criar um algoritmo sofisticado de preenchimento retroativo em automação, pois há muitas opções que você pode querer ajustar além da idade.

  • Apenas estas categorias
  • Conteúdo com mais de X visualizações
  • Conteúdo com mais de N curtidas
  • Conteúdo com respostas aceitas
  • Conteúdo mais novo que X

Adicionar 10 configurações de site para isso sobrecarregará os usuários.

2 curtidas

Concordo com o Mark. Se formos implementar isso para o nosso fórum, não queremos que posts antigos sem nova atividade sejam resumidos. A IA é muito cara no momento, considerando que os resumos são apenas uma pequena parte de todas as ferramentas de IA.

1 curtida

Já existe ai summary backfill topic max age days, e o padrão é 30 dias.

Tópicos antigos não são “resumidos” a menos que haja nova atividade.

3 curtidas

Limpei todos os resumos com rails c AiSummaries.destroy_all e iniciei uma nova execução com um LLM diferente, usando ai summary backfill topic max age days = 60. No início, defini ai summary backfill maximum topics per hour muito alto, então muitos dos tópicos mais recentes falharam devido a limites de taxa. Isso foi minha culpa, mas eu esperava que, após o preenchimento retroativo de 60 dias, ele iniciasse um novo loop e preenchesse os tópicos falhados. No entanto, ele não está fazendo isso - ele preencheu retroativamente até 60 dias e depois parou.

O trabalho está sendo executado com sucesso a cada 5 minutos, mas leva apenas milissegundos, então obviamente não está encontrando nada para preencher retroativamente.

Estou monitorando o progresso (ou a falta dele) com o Data Explorer, usando as tabelas ai_summaries e ai_api_audit_logs.

Se eu clicar manualmente no botão Resumir em um tópico que não foi preenchido retroativamente, ele gera um novo resumo, então estou devidamente conectado ao provedor de IA e os tópicos são “resumíveis”.

Nenhum erro em /logs.

Ideias?

Encontrei o problema. Ele está comparando ai summary backfill topic max age days com topic.created_at, e não com updated_at. Acho que isso deveria ser alterado para updated_at - tenho muitos tópicos muito ativos criados há dois anos que ainda recebem novas postagens toda semana, mas se eu usar uma idade máxima de 90 dias ou até um ano, esses tópicos não serão resumidos.
Por favor, considere mudar isso.

.where("topics.created_at > current_timestamp - INTERVAL '#{max_age_days.to_i} DAY'")

Posso atualizar estes resumos se um tópico for atualizado, pois tenho muitos tópicos de postagem única que são muito editados (documentos)?

Sugira alterar o intervalo para o trabalho de preenchimento de lacunas de 5 minutos para 1 minuto, se possível. A maioria(?) dos provedores de IA tem limites de taxa por minuto, portanto, se o trabalho fosse executado a cada minuto, você poderia obter 5 vezes mais resumos sem exceder os limites de taxa por minuto.