Riassunto argomento Discourse AI 🤖

|||
-|-|-|
:information_source: | Riepilogo | Utilizza un modello linguistico AI remoto per preparare e pubblicare un riepilogo di un argomento.
:hammer_and_wrench: | Link al Repository | GitHub - merefield/discourse-ai-topic-summary: Uses a remote AI language model to prepare and post a summary of a Topic
:open_book: | Guida all’installazione | Come installare plugin in Discourse
:heart: | Sponsorizzazione | Si prega di considerare di diventare uno sponsor del mio lavoro open source a un livello che si adatti alle risorse e alle esigenze tue o della tua organizzazione, per garantire che questo plugin riceva la manutenzione che merita e continui a funzionare per il tuo sito in futuro.

Ti piace questo plugin? Per favore, :star: su GitHub ! :pray:

Funzionalità

  • Riepiloghi degli argomenti generati dall’AI:
    • Puoi scegliere quando vengono generati per la prima volta e il numero di nuovi post richiesti per ricrearli, rendendo il plugin economicamente vantaggioso.
    • Scelta della posizione di visualizzazione dell’argomento, in alto o in una barra laterale (richiede il componente tema Bars)
    • Sistema di votazione per consentire alla community di votare negativamente i riepiloghi scadenti. Se i voti superano una soglia, viene cercato un nuovo riepilogo.
    • Esponili nell’elenco degli argomenti: i riepiloghi AI vengono mostrati al posto degli estratti quando disponibili.
  • Sistema di auto-tagging
    • Riutilizza il riepilogo per taggare in modo intelligente il tuo argomento.
    • Scegli tra due strategie per adattarsi al meglio al tuo caso d’uso.
  • Genera automaticamente un’immagine di anteprima dell’argomento che lo raffiguri.
  • Tutti i prompt sono modificabili in Personalizza → Testo.
  • Questo plugin è stato il primissimo plugin AI per Discourse :1st_place_medal:

(NB, questa è solo un’anteprima dell’interfaccia utente che utilizza alcuni dati di sviluppo casuali e orribili, i risultati sono molto migliori sui dati reali)

Dopo un numero minimo di post, se un argomento si trova in una categoria inclusa nell’ambito, il plugin invierà il testo dell’argomento a un modello linguistico di grandi dimensioni di OpenAI con un prompt e pubblicherà la risposta, intesa come riepilogo dei contenuti, cosa che riesce a fare abbastanza bene. È possibile scegliere il modello.

I riepiloghi sono spesso sorprendentemente buoni, occasionalmente sublimi. Tuttavia, quando uno non è abbastanza buono, ho aggiunto un meccanismo di voto negativo della community per forzare un aggiornamento dei riepiloghi scadenti dopo una soglia prestabilita.

In ogni caso, i riepiloghi vengono richiesti nuovamente quando vengono effettuati un certo numero di post aggiuntivi.

Puoi modificare il prompt e le soglie.

NOTA IMPORTANTE: i riepiloghi non vengono mai esposti agli anonimi, quindi il testo non sarà indicizzabile (potresti o non potresti pensare che sia una buona cosa, ma almeno i crawler opereranno solo sui tuoi dati umani autentici).

Supporto per l’auto-tagging:

Stanco di taggare gli argomenti? Lascia che l’AI lo faccia per te! (Relativamente in modo intelligente!)

A volte l’AI diventa troppo creativa nonostante la direzione che le stiamo dando qui, quindi puoi limitarla all’insieme di quelli esistenti.

Puoi creare rapidamente un utente non amministratore a questo scopo dalla console rails usando:

rake admin:create (non dare a questo utente privilegi di amministratore)

(Questa è una soluzione di ripiego un po’ grezza perché l’attuale “API interna” di Discourse per il tagging attualmente non consente di specificare “nessun nuovo tag”, quindi l’unico modo per evitarlo facilmente al momento è crearli come utente che non ha tale privilegio (cioè livello di fiducia inferiore a min_trust_to_create_tag))

Facoltativamente, sovrascrivi gli estratti nell’elenco degli argomenti con il riepilogo AI

L’impostazione ai_topic_summary_expose_as_excerpt quando abilitata sovrascriverà l’estratto negli elenchi degli argomenti che mostrano gli estratti (ad esempio, tramite il componente tema come Topic List Previews o Topic List Excerpts), con il riepilogo AI se disponibile.

Attivazione/disattivazione degli estratti:

Puoi usarlo per il mio componente tema Topic List Previews (TLP) - #592 by merefield

Immagine opzionale che raffigura l’argomento trattato

Ho aggiunto una funzionalità opzionale di generazione di miniature a questo plugin.

Raffigurerà il riepilogo in un’immagine che aggiungerà automaticamente all’inizio dell’OP.

  • Devi abilitarla nelle impostazioni del plugin
  • Puoi facoltativamente scegliere di eliminare automaticamente l’ultima immagine in alto ogni volta
  • Puoi modificare il prompt tramite il link nelle impostazioni del plugin in modo da poter influenzare lo stile e il contenuto (ma questo verrà applicato a tutte le immagini generate successivamente)

Buon divertimento :framed_picture:

Limitazioni

A causa dei limiti di token, attualmente è utile solo per circa 160 post al massimo (a seconda del modello!), quindi non includerà materiale nei post dopo un certo punto. Ciò cambierà quasi certamente in futuro man mano che i modelli diventeranno più potenti e i servizi più sofisticati.

Limiti di frequenza e costi

Il recupero dei dati da OpenAI non è gratuito. Tuttavia, i limiti di frequenza si basano implicitamente sulla pubblicazione. Hai il controllo su quanti post sono necessari prima che vengano richiesti nuovi riepiloghi. È improbabile che questo sia un problema.

Supporto per le barre laterali!!

Ora c’è un widget compatibile con Bars che viene fornito con il plugin. Devi solo installare il componente tema Bars e configurarlo:

Una volta installato, puoi disattivare il riepilogo standard in cima all’argomento e fare affidamento sul widget nella barra laterale.

Note

Disclaimer: Non sono responsabile di ciò che risponde l’LLM. Si prega di comprendere i pro e i contro di un LLM, ciò che sono e non sono in grado di fare e i loro limiti. Sono molto bravi a creare testi convincenti e consapevoli del contesto, ma possono essere fattualmente errati.

Nota importante sulla privacy: I dati del tuo forum vengono inviati a OpenAI. Sebbene quasi certamente non verranno incorporati nei loro modelli pre-addestrati, verranno utilizzati nei loro analytics e log. Assicurati di aggiungere questo fatto all’informativa sulla privacy e ai TOS del tuo forum. Link correlati: Termini di utilizzo, Informativa sulla privacy

Copyright: OpenAI ha rilasciato una dichiarazione sul Copyright qui: Will OpenAI claim copyright over what outputs I generate with the API? | OpenAI Help Center

TODO

  • Aggiungere test front-end e back-end :construction:
  • Aggiungere più configurazioni utente per influenzare lo stile della risposta :white_check_mark:
  • Aggiungere il supporto per nomi di modelli personalizzati :white_check_mark:
  • Aggiungere il supporto GPT-4 quando disponibile :white_check_mark:
  • Rendere l’impostazione del modello un elenco a discesa :white_check_mark:
  • Aggiungere il supporto widget per il plugin Layouts :white_check_mark:
30 Mi Piace

Era solo questione di tempo prima che ottenessimo questo!

Ma la mia domanda principale è quanto può diventare costoso per noi?

4 Mi Piace

È attivo su uno dei miei forum da qualche giorno. È attivo su quasi tutte le categorie pubbliche.

È difficile rispondere perché non so quanto sia attivo il tuo forum.

Il mio suggerimento è di provarlo in una categoria e vedere come va.

C’è una dashboard discreta.

Dopo aver sviluppato due plugin basati su GPT3 (il modello più costoso) e averli resi attivi su un sito alla fine del mese scorso, il mio per febbraio si presenta così:

Quindi probabilmente meno dei costi della tua email.

10 Mi Piace

Oh, questo potrebbe essere utile per espandere gli argomenti del nostro glossario.

Dovrebbe funzionare in spagnolo?

3 Mi Piace

Non ho idea, potresti dover cambiare il prompt nelle impostazioni. Ma provaci!

(questa dovrebbe essere una stringa localizzata, la cambierò presto)

4 Mi Piace

Grazie @merefield - questo sembra un ottimo plugin!

L’ho abilitato e inserito la mia chiave API, abilitato le categorie ecc., ma non ho ancora visto alcun riassunto. C’è un modo per monitorare i suoi progressi sul mio forum Discourse? Non vedo nulla nei log o in sidekiq (anche se devo ammettere che non ho ancora dato un’occhiata approfondita).

3 Mi Piace

Ehi Chris, reagisce ai nuovi post. Se rientrano nelle soglie e soddisfano i criteri di posizione della categoria, creerà un riepilogo.

3 Mi Piace

Capisco, grazie per aver chiarito @merefield

2 Mi Piace

Ciao,

La mia ricompilazione fallisce quando abilito questo plugin di riepilogo. Non so se questo sia dovuto alla mia configurazione sottostante o a plugin in conflitto. Allego alcuni dettagli nel caso fossero utili.

Commentare il plugin ai-topic-summary risolve il problema e la build ha successo.

Grazie mille per qualsiasi indicazione.

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 è già alla versione compatibile più recente
discourse-assign è già alla versione compatibile più recente
discourse-chat-integration è già alla versione compatibile più recente
discourse-chatbot è già alla versione compatibile più recente
discourse-checklist è già alla versione compatibile più recente
discourse-solved è già alla versione compatibile più recente
docker_manager è già alla versione compatibile più recente

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: impossibile attivare ruby-openai-3.4.0, già attivato 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>'
(Vedi il trace completo eseguendo il task con --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: Il modulo `::Ruby::OpenAI` è stato rimosso e tutte le classi sono state spostate nel modulo di primo livello `::OpenAI`. Per aggiornare, cambia `require 'ruby/openai'` in `require 'openai'` e cambia tutti i riferimenti a `Ruby::OpenAI` in `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: Il modulo `::Ruby::OpenAI` è stato rimosso e tutte le classi sono state spostate nel modulo di primo livello `::OpenAI`. Per aggiornare, cambia `require 'ruby/openai'` in `require 'openai'` e cambia tutti i riferimenti a `Ruby::OpenAI` in `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:  ricevuta richiesta di arresto rapido
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:  annullamento di tutte le transazioni attive
2023-03-12 17:24:38.046 UTC [41] LOG:  worker di background "logical replication launcher" (PID 50) terminato con codice di uscita 1
2023-03-12 17:24:38.049 UTC [45] LOG:  spegnimento in corso
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:  il sistema di database è spento


FAILED
--------------------
Pups::ExecError: cd /var/www/discourse & su discourse -c 'bundle exec rake db:migrate' fallito con ritorno #<Process::Status: pid 1043 exit 1>
Posizione del fallimento: /usr/local/lib/ruby/gems/3.2.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn'
exec fallito con i parametri {"cd"=>"$home", "hook"=>"db_migrate", "cmd"=>["su discourse -c 'bundle exec rake db:migrate'"]}
bootstrap fallito con codice di uscita 1
3 Mi Piace

Oops, colpa mia. È un conflitto tra i miei due plugin AI. Risolverò e ti farò sapere! :sweat_smile: Mi scuso!

5 Mi Piace

Prova questo: FIX: conflict with chatbot · merefield/discourse-ai-topic-summary@0067eaf · GitHub

5 Mi Piace

Molte grazie per la rapida risposta. Ci proverò domani. Non vedo l’ora di vedere questo plugin in azione!

3 Mi Piace

Aggiornamento rapido: ho avuto il mio primo vero riassunto attivato e ha fatto un lavoro abbastanza ragionevole. @merefield Penso che tu abbia centrato questo plugin :-). Penso anzi che mettere chatgpt al lavoro in questo modo abbia un potenziale futuro di gran lunga migliore rispetto al semplice inserimento in un thread di discussione.

Ecco il riassunto che è stato generato e che si è posizionato in cima all’argomento, facendo un ottimo lavoro nell’incoraggiare gli altri a leggere - o meno.

Ho ricevuto un errore (errore 500) durante la pubblicazione di un aggiornamento che avrebbe attivato il riassunto. Questo perché avevo provato a usare gpt-3.5-turbo nelle impostazioni. Forse, se c’è un errore nell’API di chatgpt, sarebbe meglio consentire l’invio del post piuttosto che l’utente riceva un errore 500 con cui non sa cosa fare.

Nei log era chiaro cosa avevo sbagliato

StandardError (Questo è un modello di chat e non è supportato nell’endpoint v1/completions. Intendevi usare v1/chat/completions?)

Potenziali evoluzioni:

  • Consentire al proprietario dell’argomento / amministratore di rimuovere il riassunto se non è pertinente / appropriato?
  • Forse un posto dove andare per visualizzare tutti i riassunti in una categoria / nel complesso

A parte questo, non vedo l’ora di vedere come si evolverà. Molte grazie per quello che hai fatto finora. Il mio sito è molto piccolo con solo pochi utenti, ma posso davvero vederne il potenziale.

4 Mi Piace

Ottimi feedback, grazie. Sono belle idee.

Sì, un pulsante admin/autore potrebbe essere molto utile. Lo aggiungerò alla roadmap.

Bello!

Mi chiedo se l’elenco “il posto dove vedere i riepiloghi” sia in realtà un estratto alternativo nell’elenco degli argomenti?

Lo aggiungerò alla roadmap.

Sì, dovrei convertirlo in un menu a discesa come ho fatto con Chatbot. Bel tentativo però :wink:

Arriverà anche GPT-4, che migliorerà notevolmente i riepiloghi e gestirà argomenti molto più lunghi.

6 Mi Piace

Puoi dirmi se il plugin supporta attualmente ChatGPT 4 e l’API dell’applicazione POE (piattaforma di chat AI sviluppata da Quora)?

3 Mi Piace

Lol, dammi una possibilità! :sweat_smile: afaia è stato annunciato solo ieri?

Pochissimi sviluppatori hanno avuto accesso all’API finora. C’è una lista d’attesa. Quindi è improbabile che gli utenti del plugin possano connettersi in ogni caso.

(Hai notato il titolo dell’argomento, tra l’altro?)

No e al momento non ci sono piani. Quale sarebbe il beneficio? È noto per eccellere nella sintesi?

2 Mi Piace

^^
scusa per la poca chiarezza ^^ volevo solo sapere se sei interessato a integrarli in futuro? Sto seguendo le notizie su GPT 04 ed è sorprendente e speciale per noi della comunità vietnamita

3 Mi Piace

Grazie per il tuo interesse. Per quanto riguarda il supporto a GPT-4, ti rispondo così:

Hell Yeah Dcuniverse GIF by DC

Probabilmente lo aggiungerò prima a Chatbot, ma sicuramente mi occuperò presto anche di AI Topic Summary.

Sto aspettando l’email da OpenAI… (e poi un po’ di tempo libero!)

5 Mi Piace

In realtà, ho pensato a una soluzione leggermente più semplice per evitare di affollare l’interfaccia utente:

Che ne dici di fornire semplicemente impostazioni per il “peso del voto” per Amministratore e Autore?

Quindi puoi impostare il peso del voto dell’Autore su 3 e, se la soglia è 3, ciò comporterà la generazione di un nuovo riepilogo.

Lo svantaggio di entrambe le soluzioni (pulsante o ponderazione che corrisponde alla soglia) è che l’Autore potrebbe semplicemente inviare spam per nuovi riepiloghi, con un costo elevato in termini di chiamate API.

Quindi suggerisco di far pesare il voto degli autori appena al di sotto della soglia (ma più di un utente normale) e l’amministratore alla soglia?

Quindi non dobbiamo modificare l’interfaccia utente e possiamo semplicemente integrarlo nella logica e nelle impostazioni del backend.

I downvote dell’amministratore creeranno sempre un nuovo riepilogo e reimposteranno il conteggio.

Pensieri @JamesPick?

4 Mi Piace

Concordo con la tua preoccupazione riguardo allo spam di nuovi riassunti.
Penso che non si tratti tanto dell’IA che fornisce un riassunto scadente, quanto del fatto che l’argomento non si presta a un buon riassunto. Forse l’argomento ha perso la sua focalizzazione o è diventato più una chat e i post chiave si perdono da ciò che viene inviato a chatGPT.

In definitiva, quando l’amministratore / proprietario dell’argomento vede chiaramente che il riassunto non produrrà nulla di significativo per l’argomento, è in grado di annullarlo.

Suppongo che col tempo si possano aggiungere funzionalità per selezionare i post specifici che possono essere scelti per essere inviati all’API per il riassunto.

Stavo pensando a questo per qualcosa come questo thread. Potresti contrassegnare il tuo primo post come quello che viene sempre incluso in un riassunto? E poi forse aggiungerne altri che si adattano meglio a un riassunto.

Potresti anche avere un’opzione “genera riassunto” dove anche quando un argomento ha un solo post, un riassunto può essere generato. Questo si adatta bene al tuo commento precedente

4 Mi Piace