Resumen del tema de Discourse AI 🤖

|||
-|-|-|
:information_source: | Resumen | Utiliza un modelo de lenguaje de IA remoto para preparar y publicar un resumen de un tema.
:hammer_and_wrench: | Enlace al Repositorio | GitHub - merefield/discourse-ai-topic-summary: Uses a remote AI language model to prepare and post a summary of a Topic
:open_book: | Guía de Instalación | Cómo instalar plugins en Discourse
:heart: | Patrocinio | Por favor, considera convertirte en un patrocinador de mi trabajo de código abierto a un nivel que se ajuste a los recursos y necesidades de tu organización para asegurar que este plugin reciba el mantenimiento que merece y siga funcionando para tu sitio en el futuro.

¿Disfrutas de este plugin? ¡Por favor, dale :star: en GitHub ! :pray:

Características

  • Resúmenes de Temas generados por IA:
    • Puedes elegir cuándo se generan por primera vez y el número de publicaciones nuevas que se requieren para recrearlos, haciendo que el plugin sea rentable.
    • Elección de la ubicación de visualización del tema, ya sea en la parte superior o en una barra lateral (se requiere el componente de tema Bars).
    • Sistema de votación para permitir a la comunidad votar negativamente los resúmenes deficientes. Si los votos superan un umbral, se busca un nuevo resumen.
    • Exponerlos en la Lista de Temas: los resúmenes de IA se muestran en lugar de los extractos cuando están disponibles.
  • Sistema de etiquetado automático
    • Reutiliza el resumen para etiquetar inteligentemente tu tema.
    • Elige entre dos estrategias para que se ajusten mejor a tu caso de uso.
  • Genera automáticamente una miniatura del tema que representa el tema.
  • Todas las indicaciones son editables en Personalizar → Texto.
  • Este plugin fue el primer plugin de IA para Discourse :1st_place_medal:

(NB, esta es solo una vista previa de la interfaz de usuario utilizando algunas horribles ficciones de desarrollo aleatorias, los resultados son mucho mejores con datos reales)

Después de un número mínimo de publicaciones, si un tema se encuentra en una categoría incluida, el plugin enviará el texto del tema a un modelo de lenguaje grande de OpenAI con una indicación y publicará la respuesta, que pretende ser un resumen del contenido, lo cual logra bastante bien. Hay una opción de modelo.

Los resúmenes suelen ser sorprendentemente buenos, ocasionalmente sublimes. Sin embargo, cuando uno no es lo suficientemente bueno, he añadido un mecanismo de votación comunitaria para forzar la actualización de los resúmenes deficientes después de un umbral establecido.

En cualquier caso, se buscan nuevos resúmenes cuando se han realizado un número determinado de publicaciones adicionales.

Puedes modificar la indicación y los umbrales.

NOTA IMPORTANTE: los resúmenes nunca se exponen a los anónimos, por lo que el texto no será rastreable (puede que pienses que esto es bueno o no, pero al menos los rastreadores solo operarán sobre tus datos humanos genuinos).

Soporte de etiquetado automático:

¿Cansado de etiquetar temas? ¡Deja que la IA lo haga por ti! (¡Relativamente inteligentemente!)

A veces, la IA se vuelve demasiado creativa a pesar de la dirección que le estamos dando aquí, por lo que puedes restringirla al conjunto de las existentes.

Puedes crear rápidamente un usuario no administrador para este propósito desde la consola de Rails usando:

rake admin:create (no le des privilegios de administrador a este usuario)

(Esta es una solución un poco improvisada porque la “API interna” actual de Discourse para etiquetar actualmente no te permite especificar “sin etiquetas nuevas”, por lo que la única forma de evitar esto fácilmente en este momento es creándolas como un usuario que no tiene ese privilegio (es decir, nivel de confianza inferior a min_trust_to_create_tag)).

Opcionalmente, anula los extractos en la Lista de Temas con el Resumen de IA

La configuración ai_topic_summary_expose_as_excerpt cuando está habilitada anulará el extracto en las Listas de Temas que muestran extractos (por ejemplo, a través de un componente de tema como Topic List Previews o Topic List Excerpts), con el resumen de IA si está disponible.

Alternar Extractos:

Puedes usarlo para mi Componente de Tema Topic List Previews (TLP) - #592 by merefield

Imagen opcional que representa el tema

He añadido una función opcional de generación de miniaturas a este plugin.

Representará el resumen en una imagen que añadirá automáticamente a la parte superior del OP.

  • Debes habilitarlo en la configuración del plugin
  • Opcionalmente, puedes elegir eliminar automáticamente la última imagen superior cada vez
  • Puedes editar la indicación a través del enlace en la configuración del plugin para influir en el estilo y el contenido (pero esto se aplicará a todas las imágenes generadas posteriormente)

Disfruta :framed_picture:

Limitaciones

Debido a los límites de tokens, actualmente solo es bueno para un máximo de 160 publicaciones (¡dependiendo del modelo!), por lo que no incluirá material de las publicaciones después de cierto punto. Esto casi seguramente cambiará en el futuro a medida que los modelos se vuelvan más potentes y los servicios más sofisticados.

Límites de tasa y costos

Recuperar datos de OpenAI no es gratuito. Sin embargo, los límites de tasa se basan implícitamente en las publicaciones. Tienes control sobre cuántas publicaciones se necesitan antes de que se busquen nuevos resúmenes. Es poco probable que esto sea un problema.

¡¡Soporte para “Barras” laterales!!

Ahora hay un widget compatible con Bars que se incluye con el plugin. Solo tienes que instalar el Componente de Tema Bars y configurarlo:

Una vez instalado, puedes desactivar el resumen estándar en la parte superior del tema y confiar en el widget en la barra lateral.

Notas

Descargo de responsabilidad: Yo no soy responsable de lo que responda el LLM. Por favor, comprenda los pros y los contras de un LLM y lo que pueden y no pueden hacer, y sus limitaciones. Son muy buenos creando texto convincente y consciente del contexto, pero pueden ser factualmente incorrectos.

Nota de privacidad importante: Tus datos del foro se envían a OpenAI. Si bien es casi seguro que no se incorporarán a sus modelos preentrenados, utilizarán los datos en sus análisis y registros. Asegúrate de añadir este hecho a los Términos de Servicio y declaraciones de privacidad de tu foro. Enlaces relacionados: Términos de uso, Política de privacidad

Copyright: OpenAI hizo una declaración sobre Copyright aquí: ¿Reclamará OpenAI los derechos de autor sobre los resultados que genero con la API? | Centro de ayuda de OpenAI

TODO

  • Añadir pruebas frontales y posteriores :construction:
  • Añadir más configuración de usuario para afectar el estilo de la respuesta :white_check_mark:
  • Añadir soporte para nombres de modelo personalizados :white_check_mark:
  • Añadir soporte GPT-4 cuando esté disponible :white_check_mark:
  • Hacer que la configuración del modelo sea una lista desplegable :white_check_mark:
  • Añadir soporte de widget para el plugin Layouts :white_check_mark:
30 Me gusta

¡Era solo cuestión de tiempo hasta que tuviéramos esto!

Pero mi pregunta principal es, ¿cuánto nos puede costar esto?

4 Me gusta

Lleva activo en uno de mis foros desde hace unos días. Está activo en casi todas las categorías públicas.

Es difícil responder porque no sé cuán activo es tu foro.

Mi sugerencia es que lo pruebes en una categoría y veas cómo te va.

Tiene un panel de control decente.

Después de desarrollar dos plugins basados en GPT3 (el modelo más caro) y lanzarlo en un sitio a finales del mes pasado, el mío se ve así para febrero:

Probablemente menos que los costos de tu correo electrónico.

10 Me gusta

Oh, that could be good to growth our glossary topics.

It should work in spanish?

3 Me gusta

No tengo idea, podrías necesitar cambiar el prompt en la configuración. ¡Pero inténtalo!

(esta debería ser una cadena localizada, la cambiaré pronto)

4 Me gusta

Gracias @merefield - ¡este parece ser un gran plugin!

Lo he habilitado y he introducido mi clave de API, he habilitado las categorías, etc., pero aún no he visto ningún resumen. ¿Hay alguna forma de que pueda seguir su progreso en mi foro de Discourse? No veo nada en los registros ni en Sidekiq (aunque admito que aún no he echado un vistazo profundo).

3 Me gusta

Hola Chris, reacciona a las nuevas publicaciones. Si están dentro de los umbrales y cumplen los criterios de ubicación de la categoría, creará un resumen.

3 Me gusta

Entendido, gracias por la aclaración @merefield

2 Me gusta

Hola,

Mi reconstrucción falla cuando habilito este plugin de resumen. No sé si esto tiene algo que ver con mi configuración subyacente o con plugins en conflicto. Adjunto algunos detalles por si son útiles.

Comentar el plugin ai-topic-summary resuelve el problema y la compilación es exitosa.

Muchas gracias por cualquier orientación.

I, [2023-03-12T17:24:25.390052 #1]  INFO -- : cd /var/www/discourse & su discourse -c 'LOAD_PLUGINS=0 bundle exec rake plugin:pull_compatible_all'
I, [2023-03-12T17:24:31.668769 #1]  INFO -- : discourse-ai-topic-summary ya está en la última versión compatible
discourse-assign ya está en la última versión compatible
discourse-chat-integration ya está en la última versión compatible
discourse-chatbot ya está en la última versión compatible
discourse-checklist ya está en la última versión compatible
discourse-solved ya está en la última versión compatible
docker_manager ya está en la última versión compatible

I, [2023-03-12T17:24:31.677801 #1]  INFO -- : cd /var/www/discourse & su discourse -c 'bundle exec rake db:migrate'
rake aborted!
Gem::LoadError: no se puede activar ruby-openai-3.4.0, ya está activado ruby-openai-3.3.0
/var/www/discourse/lib/plugin_gem.rb:26:in `load'
/var/www/discourse/lib/plugin/instance.rb:796:in `gem'
/var/www/discourse/plugins/discourse-chatbot/plugin.rb:9:in `activate!'
/var/www/discourse/lib/plugin/instance.rb:693:in `instance_eval'
/var/www/discourse/lib/plugin/instance.rb:693:in `activate!'
/var/www/discourse/lib/discourse.rb:352:in `block in activate_plugins!'
/var/www/discourse/lib/discourse.rb:349:in `each'
/var/www/discourse/lib/discourse.rb:349:in `activate_plugins!'
/var/www/discourse/config/application.rb:216:in `block in <class:Application>'
/var/www/discourse/lib/plugin.rb:6:in `initialization_guard'
/var/www/discourse/config/application.rb:216:in `<class:Application>'
/var/www/discourse/config/application.rb:75:in `<module:Discourse>'
/var/www/discourse/config/application.rb:74:in `<top (required)>'
/var/www/discourse/Rakefile:7:in `require'
/var/www/discourse/Rakefile:7:in `<top (required)>'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/rake-13.0.6/exe/rake:27:in `<top (required)>'
/usr/local/bin/bundle:25:in `load'
/usr/local/bin/bundle:25:in `<main>'
(See full trace by running task with --trace)
I, [2023-03-12T17:24:38.020166 #1]  INFO -- : gem install httparty -v 0.21.0 -i /var/www/discourse/plugins/discourse-ai-topic-summary/gems/3.2.1 --no-document --ignore-dependencies --no-user-install
When you HTTParty, you must party hard!
Successfully installed httparty-0.21.0
1 gem installed
gem install ruby-openai -v 3.3.0 -i /var/www/discourse/plugins/discourse-ai-topic-summary/gems/3.2.1 --no-document --ignore-dependencies --no-user-install
Note if upgrading: The `::Ruby::OpenAI` module has been removed and all classes have been moved under the top level `::OpenAI` module. To upgrade, change `require 'ruby/openai'` to `require 'openai'` and change all references to `Ruby::OpenAI` to `OpenAI`.
Successfully installed ruby-openai-3.3.0
1 gem installed
gem install httparty -v 0.21.0 -i /var/www/discourse/plugins/discourse-chatbot/gems/3.2.1 --no-document --ignore-dependencies --no-user-install
When you HTTParty, you must party hard!
Successfully installed httparty-0.21.0
1 gem installed
gem install ruby-openai -v 3.4.0 -i /var/www/discourse/plugins/discourse-chatbot/gems/3.2.1 --no-document --ignore-dependencies --no-user-install
Note if upgrading: The `::Ruby::OpenAI` module has been removed and all classes have been moved under the top level `::OpenAI` module. To upgrade, change `require 'ruby/openai'` to `require 'openai'` and change all references to `Ruby::OpenAI` to `OpenAI`.
Successfully installed ruby-openai-3.4.0
1 gem installed

I, [2023-03-12T17:24:38.021523 #1]  INFO -- : Terminating async processes
I, [2023-03-12T17:24:38.022106 #1]  INFO -- : Sending INT to HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/13/bin/postmaster -D /etc/postgresql/13/main pid: 41
2023-03-12 17:24:38.022 UTC [41] LOG:  received fast shutdown request
I, [2023-03-12T17:24:38.022874 #1]  INFO -- : Sending TERM to exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf pid: 102
102:signal-handler (1678641878) Received SIGTERM scheduling shutdown...
2023-03-12 17:24:38.035 UTC [41] LOG:  aborting any active transactions
2023-03-12 17:24:38.046 UTC [41] LOG:  background worker "logical replication launcher" (PID 50) exited with exit code 1
2023-03-12 17:24:38.049 UTC [45] LOG:  shutting down
102:M 12 Mar 2023 17:24:38.053 # User requested shutdown...
102:M 12 Mar 2023 17:24:38.054 * Saving the final RDB snapshot before exiting.
102:M 12 Mar 2023 17:24:38.120 * DB saved on disk
102:M 12 Mar 2023 17:24:38.122 # Redis is now ready to exit, bye bye...
2023-03-12 17:24:38.153 UTC [41] LOG:  database system is shut down

FAILED
--------------------
Pups::ExecError: cd /var/www/discourse & su discourse -c 'bundle exec rake db:migrate' failed with return #<Process::Status: pid 1043 exit 1>
Location of failure: /usr/local/lib/ruby/gems/3.2.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn'
exec failed with the params {"cd"=>"$home", "hook"=>"db_migrate", "cmd"=>["su discourse -c 'bundle exec rake db:migrate'"]}
bootstrap failed with exit code 1
3 Me gusta

Oops, lo siento. Es un conflicto entre mis dos plugins de IA. ¡Lo resolveré y te avisaré! :sweat_smile: ¡Disculpas!

5 Me gusta

Pruébalo: FIX: conflict with chatbot · merefield/discourse-ai-topic-summary@0067eaf · GitHub

5 Me gusta

Muchas gracias por tu rápida respuesta. Lo intentaré mañana. ¡Tengo muchas ganas de ver este plugin en acción!

3 Me gusta

Actualización rápida: tuve mi primer resumen real activado e hizo un trabajo bastante razonable. @merefield Creo que has clavado este plugin :-). De hecho, creo que poner a ChatGPT a trabajar de esta manera tiene un potencial futuro mucho mejor que simplemente añadirlo a un hilo de discusión.

Aquí está el resumen que se generó y que se colocó en la parte superior del tema, hace un gran trabajo al animar a otros a leer, o no.

Recibí un error (error 500) al publicar una actualización que habría activado el resumen. Esto se debió a que intenté usar gpt-3.5-turbo en la configuración. Quizás si hay un error en la API de ChatGPT, sería mejor permitir la publicación en lugar de que el usuario reciba un error 500 con el que no sabe qué hacer.

En los registros estaba claro lo que había hecho mal

StandardError (Este es un modelo de chat y no es compatible con el endpoint v1/completions. ¿Querías decir v1/chat/completions?)

Posibles evoluciones:

  • ¿Permitir al propietario del tema / administrador eliminar el resumen si no es relevante / apropiado?
  • Quizás un lugar para ver todos los resúmenes en una categoría / en general

Aparte de eso, espero ver cómo evoluciona esto. Muchas gracias por lo que has hecho hasta ahora. Mi sitio es muy pequeño con solo unos pocos usuarios, pero realmente puedo ver su potencial.

4 Me gusta

Genial, gracias por tus comentarios. Son buenas ideas.

Sí, un botón de administrador/autor podría estar muy bien. Lo añadiré al plan de desarrollo.

¡Genial!

Me pregunto si la lista “el lugar para ver los resúmenes” es en realidad un extracto alternativo en la lista de temas.

Lo añadiré al plan de desarrollo.

Sí, debería convertir esto a un menú desplegable como hice con Chatbot. Buen intento de todos modos :wink:

GPT-4 está en camino, lo que mejorará enormemente los resúmenes y podrá manejar temas mucho más largos.

6 Me gusta

¿Puede decirme si el plugin actualmente admite ChatGPT 4 y la API de la aplicación POE (plataforma de chat de IA desarrollada por Quora)?

3 Me gusta

¡Jaja, dame una oportunidad! :sweat_smile: ¿Acaso no se anunció ayer?

Muy pocos desarrolladores han tenido acceso a la API hasta ahora. Hay una lista de espera. Por lo tanto, es poco probable que los usuarios del plugin puedan conectarse en cualquier caso.

(¿Te diste cuenta del título del tema, por cierto?)

No y no hay planes de hacerlo por el momento. ¿Cuál sería el beneficio? ¿Se sabe que destaca en la resumen?

2 Me gusta

^^
Disculpa por no ser claro ^^ solo quería saber si te interesa integrarlos en el futuro. Estoy siguiendo las noticias sobre GPT 04 y es sorprendente y especial para nuestra comunidad vietnamita.

3 Me gusta

Gracias por tu interés. En cuanto al soporte de GPT-4, te responderé de esta manera:

Hell Yeah Dcuniverse GIF by DC

Probablemente lo añadiré primero a Chatbot, pero sin duda lo haré pronto para Resumen de Temas de IA.

Estoy esperando el correo electrónico de Open AI… (¡y luego un poco de tiempo libre!)

5 Me gusta

En realidad, he pensado en una solución un poco más simple para no tener que abarrotar la interfaz de usuario:

¿Qué tal si simplemente damos ajustes para el “peso del voto” para Administrador y Autor?

Así puedes establecer el peso del voto del Autor en 3 y si el umbral es 3, eso resulta en la generación de un nuevo resumen.

La desventaja de ambas soluciones (botón o ponderación que coincide con el umbral) es que el Autor podría simplemente enviar spam para obtener nuevos resúmenes, lo que te costaría mucho en llamadas a la API.

Así que sugiero que hagas que el voto de los autores tenga un peso justo por debajo del umbral (pero más que un usuario normal) y el administrador en el umbral.

Entonces no tenemos que cambiar la interfaz de usuario y simplemente integrar esto en la lógica y la configuración del backend.

Los votos negativos del administrador siempre crearán un nuevo resumen y restablecerán el recuento.

¿Opiniones @JamesPick?

4 Me gusta

Estoy de acuerdo con tu preocupación sobre el spam de nuevos resúmenes.
Creo que no se trata tanto de que la IA proporcione un mal resumen, sino de que el tema no se presta a un buen resumen. Quizás el tema perdió su enfoque o se convirtió más en un chat y las publicaciones clave se pierden de lo que se envía a ChatGPT.

En última instancia, cuando el administrador / propietario del tema ve claramente que el resumen no va a producir nada significativo para el tema, puede cancelarlo.

Supongo que con el tiempo se podrían añadir funciones para seleccionar las publicaciones específicas que se pueden enviar a la API para resumir.

Estaba pensando en esto para algo como este hilo. ¿Podrías marcar tu primera publicación para que siempre se incluya en un resumen? Y luego, quizás añadir algunas más que se adapten mejor a un resumen.

Incluso podrías tener una opción de “generar resumen” donde, incluso cuando un tema solo tiene una publicación, se puede generar un resumen. Esto encaja bien con tu comentario anterior

4 Me gusta