La recuperación de resumen de IA está atascada, sigue regenerando el mismo tema

Estoy intentando rellenar los últimos 90 días. Rellenó con éxito aproximadamente 500 de 2000 temas, pero ahora el progreso está estancado porque sigue procesando el mismo tema cada vez que se ejecuta el trabajo (cada 5 minutos). No tengo idea de por qué: el tema ya tiene un resumen válido y no tiene nuevas publicaciones en los últimos 12 días. La tabla AI Audit Logs muestra que cada solicitud es exitosa. El estado de Sidekiq está OK. Nada relevante en /logs. ¿Cómo depuro esto?

SELECT request_tokens,
       response_tokens,
       raw_response_payload,
       topic_id,
       created_at AS summary_created_at,
       language_model
FROM ai_api_audit_logs
WHERE raw_request_payload LIKE '%Franklin Lexington%'
ORDER BY created_at DESC
LIMIT 40

Todas las cargas útiles de respuesta sin procesar parecen válidas. Cada una es ligeramente diferente como se esperaba. Aquí hay un ejemplo (he redactado la mayor parte del texto del contenido):


{
  "id": "msg_016C2dHZik2Miwe16pRHFe9z",
  "type": "message",
  "role": "assistant",
  "model": "claude-3-5-sonnet-20241022",
  "content": [
    {
      "type": "text",
      "text": "El Franklin Lexington Private Markets Fund (FLEX) es un nuevo fondo secundario de capital privado... [REDACTED]"
    }
  ],
  "stop_reason": "end_turn",
  "stop_sequence": null,
  "usage": {
    "input_tokens": 13848,
    "cache_creation_input_tokens": 0,
    "cache_read_input_tokens": 0,
    "output_tokens": 416
  }
}

No sé si esto es una pista, pero ¿el 103 significa que cree que solo ha resumido hasta la publicación 103, y hay 108 publicaciones, por lo que necesita un nuevo resumen?

Consulta generada por SQL Helper:

-- [params]
-- integer :summary_type = 0
-- integer :max_age_days = 30
-- integer :min_word_count = 100

WITH topic_candidates AS (
  SELECT 
    t.id as topic_id,
    t.title,
    t.created_at,
    t.word_count,
    t.highest_post_number,
    t.last_posted_at,
    ais.id as summary_id,
    ais.content_range,
    ais.created_at as summary_created_at,
    UPPER(ais.content_range) as content_range_upper
  FROM topics t
  LEFT OUTER JOIN ai_summaries ais ON 
    t.id = ais.target_id AND
    ais.target_type = 'Topic' AND
    ais.summary_type = :summary_type
  WHERE 
    -- Umbral de recuento de palabras
    t.word_count >= :min_word_count
    -- Restricción de edad
    AND t.updated_at > CURRENT_TIMESTAMP - (:max_age_days || ' DAYS')::INTERVAL
    -- O no existe resumen O el resumen necesita actualizarse
    AND (
      ais.id IS NULL OR 
      (
        UPPER(ais.content_range) < t.highest_post_number + 1
        AND ais.created_at < (CURRENT_TIMESTAMP - INTERVAL '5 minutes')
      )
    )
)
SELECT 
  topic_id,
  title,
  word_count,
  highest_post_number,
  created_at,
  last_posted_at,
  summary_id,
  content_range,
  summary_created_at,
  content_range_upper
FROM topic_candidates
ORDER BY summary_created_at DESC NULLS FIRST, last_posted_at DESC
1 me gusta

Hay 5 publicaciones ocultas o eliminadas en este tema. 108-103=5. ¿Es posible que no esté manejando correctamente las publicaciones ocultas y eliminadas? Sí, 108 es la publicación más alta, pero solo se pasan 103, por lo que continuamente piensa que hay 5 publicaciones nuevas que resumir.

@Falco @sam

1 me gusta

Tengo otro tema que también sigue regenerando el resumen. Ese tema no tiene publicaciones ocultas ni eliminadas, pero está fijado, lo que crea una publicación “este tema se fijó globalmente…”. Entonces, la publicación máxima es 8, pero ¿esa última publicación realmente no se pasa?

Sí, creo que estás en algo aquí @Roman

best_replies no garantiza que incluya la última publicación pública de un tema. Deberíamos agregar la última publicación incondicionalmente incluso al elegir best_replies.

1 me gusta

Gracias por investigarlo. Y solo para aclarar el impacto, no se trata solo de la ineficiencia de regenerar el mismo resumen repetidamente, sino que detiene por completo el backfill. Digamos que tiene el backfill configurado en 24 temas por hora. Cada 5 minutos intenta 2 temas. Eventualmente, ambos temas tienen un problema (temas eliminados, un tema fijado o algo más) y sigue intentando los mismos 2 temas cada 5 minutos. Ni siquiera intenta ningún otro tema.

2 Me gusta

¿Necesita también .where("NOT deleted")? No entiendo la diferencia entre oculto y eliminado, pero tengo ambos ocultos y eliminados en mi tema problemático.

Hola Mark:

Actualmente estoy investigando esto e intentando averiguar qué está pasando. Lo que señaló @sam es cierto: que best_replies no incluya la última publicación podría hacer que el trabajo se detenga. Estoy a punto de terminar una solución para eso e introducir un mecanismo de seguridad para convertir el trabajo en una operación nula y registrar un error si hay un error en la consulta. Esto no es ideal y no debería suceder, pero es mejor que regenerar el mismo resumen una y otra vez.

Por otro lado, estoy analizando el ejemplo de Franklin Lexington... que compartiste, que sospecho que es un problema diferente porque:

  1. Ya tiene un resumen (149).
  2. UPPER(ais.content_range) < t.highest_post_number + 1 debería ser FALSE. UPPER debería devolver 109, que es igual a highest_post_number + 1.

El final del intervalo content_range necesitaría ser menor para que el trabajo se detenga debido a eso. En realidad, no nos importan las publicaciones ocultas o eliminadas al decidir si un resumen está desactualizado; solo queremos evitar resumir esas.

¿Tienes ai_summary_gists_enabled habilitado? Si es así, ¿puedes confirmar que tienes dos resúmenes para ese tema, uno con el tipo 0 y otro con el tipo 1? Además, en la consulta ai_api_audit_logs que compartiste, ¿cuál es el valor en la columna feature_name?

Te mantendré informado de lo que encuentre.

Gracias por investigar esto. Estaré encantado de proporcionar los registros de errores cuando su solución esté lista.

https://meta.discourse.org/t/summarize-gists/340269/3

No veo cómo habilitarlo, así que no creo que esté habilitado.

“summarize”

Esto desbloqueará la cola y hará que el trabajo sea más resistente a este tipo de problemas:

¿Podrías informarme cómo se ven las cosas después de actualizar tu sitio?

3 Me gusta

Ya no está regenerando resúmenes para temas que ya tenían uno, lo cual es bueno.

Pero no está resumiendo muchos temas, incluso cuando hay nuevas publicaciones, debido a:

Por lo tanto, backfill piensa que ha terminado, pero tal vez el 75% de los temas más recientes no tienen un resumen, a pesar de que tienen nuevas publicaciones, simplemente porque fueron creados hace más de 90 días. Estoy seguro de que esa no es la intención. Por favor, cámbialo o ayúdame a entender por qué.

He bifurcado el repositorio de IA para poder cambiar created_at por updated_at y seguir adelante. Me complace informar que resumió con éxito los más de 400 temas que esperaba que resumiera. Algunos fallaron en el primer intento de relleno, posiblemente porque estábamos por encima de la cuota por minuto, pero los resumió con éxito en el segundo intento.

En particular, el tema de Franklin Lexington ahora tiene un resumen.

Nuevamente, el relleno no funcionará bien todavía para otros, debido al problema de created_at.

1 me gusta

Sí, estoy de acuerdo, necesitamos considerar updated_at o last_posted_at, que es un poco menos radical.

Al final del día, si vamos a rellenar retrospectivamente, deberíamos basarlo en el cambio de contenido.

2 Me gusta

Si la diferencia son ediciones, votaría por regenerar en las ediciones. Tenemos una wiki en la primera publicación de cada tema que los miembros editan con información crítica que podría afectar el resumen.

Pero si no eliges hacer eso, puedo seguir ejecutando mi fork.

Disculpa el silencio de radio. Intentaré dedicar tiempo a esto pronto.

1 me gusta

Esto se fusionó esta mañana:

El trabajo de relleno ahora usa last_posted_at en lugar de created_at. También hice cambios en la lógica para determinar si un resumen está desactualizado al verificar si el last_revised_at de alguna de las publicaciones es más nuevo que el resumen, para tener en cuenta las ediciones.

4 Me gusta

Este tema se cerró automáticamente después de 3 días. Ya no se permiten nuevas respuestas.