Discourse ha la capacità di riassumere lunghi thread. La mia comprensione è che utilizzi metriche di coinvolgimento come reazioni o numero di risposte per identificare quali post conservare. Nella mia community (comunicazione interna all’azienda) questo non si attiva quasi mai nonostante thread lunghi 20 pagine (il conteggio delle risposte non è il miglior trigger per noi).
Un approccio più potente sarebbe utilizzare un LLM come GPT-3 o BERT per riassumere l’intero thread su richiesta (vs. filtrare solo i post). La sintesi è un caso d’uso in cui gli LLM eccellono (praticamente il loro fiore all’occhiello) e credo che questo sarebbe molto più efficace dell’approccio attuale basato su segnali deboli (in alcune community, le persone potrebbero non usare reazioni o rispondere a post specifici).
D’altra parte, eseguire GPT per riassumere il testo può essere costoso, fino a $0,02 per 1k token. Questa funzionalità avrebbe probabilmente più senso in alcune community private che in quelle pubbliche ad alto traffico.
Immagino che la funzionalità funzioni in questo modo:
quando si legge un lungo thread per la prima volta (lungo definito da un’impostazione) che non è mai stato riassunto, suggerire di riassumerlo su richiesta.
la sintesi verrebbe inserita nel thread (ad esempio, tutto ciò che precede viene riassunto)
è collegata dall’alto del thread (ad esempio, salta al riassunto)
idealmente, c’è un meccanismo di feedback
dopo N altre risposte, offri di pubblicare un nuovo riassunto e aggiornare il link in alto.
il plugin sarebbe configurato con una chiave openai (supponendo che questo sia l’LLM utilizzato). Alla fine, se si dimostrasse di successo, si vorrebbe offrire l’accesso a diversi modelli.
Almeno questa è la teoria . In pratica ci sono incognite su quanto sarebbe buono, o come configurare il grado di sintesi. Il mio istinto è che questo sia un ROI estremamente elevato per alcune community. Il problema numero uno che sento è che le persone odiano mettersi al passo con i thread. Questo sarebbe di enorme aiuto.
import openai
import requests
from bs4 import BeautifulSoup
openai.api_key = "KEY"
url = "https://meta.discourse.org/t/summarising-topics-with-an-llm-gpt-bert/254951.json"
response = requests.get(url)
data = response.json()
messages = []
messages.append("Title: " + data["title"])
for post in data['post_stream']['posts']:
soup = BeautifulSoup(post['cooked'], 'html.parser')
messages.append("Post #" + str(post["post_number"]) + " by " + post["username"])
messages.append(soup.get_text())
text_blob = "\n".join(messages)
print(text_blob)
max_chunk_len = 4000 # Maximum length of each chunk
chunks = [text_blob[i:i+max_chunk_len] for i in range(0, len(text_blob), max_chunk_len)]
summaries = []
for chunk in chunks:
print("processing chunk")
response = openai.Completion.create(
engine="text-davinci-003",
prompt="prompt:\n" + chunk + "\nsummary:",
temperature=0.7,
max_tokens=200,
top_p=1,
frequency_penalty=0,
presence_penalty=0
)
summary = response.choices[0].text.strip()
print("\nSUMMARY")
print(summary)
print("\nSUMMARY")
Discourse sta esplorando la possibilità di utilizzare un LLM come GPT-3 o BERT per riassumere lunghi thread su richiesta. Questa funzionalità sarebbe configurata con una chiave openai e potrebbe essere particolarmente utile per le community private. La sintesi verrebbe inserita nel thread, con un link in cima e un meccanismo di feedback. Il team AI sta attualmente esplorando questa possibilità e fornirà aggiornamenti quando avrà qualcosa da mostrare.
È molto sperimentale e ci sono pochissime protezioni per quando le cose vanno male al momento, quindi non è assolutamente adatto all’uso professionale (!!)
Nota: a causa dei limiti dei token, attualmente può tenere conto solo dei primi ~40 post (basato sull’attività di uno dei miei forum).
Ha un sistema di downvoting. Anteprima dell’interfaccia utente:
(tra l’altro, questo esempio si basa sui dati piuttosto casuali nei fixture di sviluppo, funziona molto meglio con dati reali).
@Julienlavigne Ho apportato miglioramenti significativi in termini di stabilità, flessibilità e feedback amministrativo.
Gli errori restituiti dal modello vengono ora registrati, ad esempio, in modo da poter facilmente verificare se si sono superati i limiti del modello.
Se tu (o chiunque altro) desidera provarlo, potrei fornire un po’ di supporto informale per un po’ di tempo e potrei essere in grado di incorporare feedback ove ragionevole.
Purtroppo sto usando la versione business di Discourse e non posso distribuire plugin personalizzati, quindi non posso testarlo facilmente. Potrei provare a eseguire Discourse localmente con un backup e giocarci un po’. Ti terrò aggiornato.
Grazie @merefield Robert, e sì, l’avevo visto, e grazie per il tuo lavoro su questo. Speravo, tuttavia, che @sam (o qualcuno con il supporto di Discourse) stesse lavorando su una funzionalità di riepilogo LLM con piena integrazione con Discourse nativo. Ovviamente, se ai clienti del piano aziendale di Discourse dovesse semplicemente essere addebitato un piccolo extra per la propria chiave OpenAI (o qualunque sia il provider), sarebbe molto più semplice dal punto di vista della configurazione, della compatibilità di alto livello e della manutenzione. Tutto il meglio.
Non posso parlare per CDCK qui, ma la sfumatura è che sospetto che molti siti preferiscano che questo sia opzionale poiché alcuni sono nervosi riguardo all’IA (mentre altri desiderano abbracciarla appieno).
Quindi sospetto che questo rimarrà un plugin opzionale e consentirà a CDCK di personalizzare l’offerta di prodotti come ritengono opportuno e come i clienti vedono.
Tuttavia, parlando come ingegnere, ciò consente un’esperienza completamente nativa e non presenterebbe alcuna limitazione significativa dal punto di vista funzionale.
Non posso parlare della fatturazione/configurazione dell’account OpenAI.
Ciao Mike, abbiamo recentemente sbloccato il bot AI vedi:
Questo è ora disponibile sulla tua installazione, puoi procedere e inserire le credenziali per Anthropic o OpenAI.
Per quanto riguarda la roadmap, stiamo pensando di sbloccare prima “embedding”, che ti darà argomenti semanticamente correlati. Successivamente, penso che i prossimi 2 saranno l’assistente AI e il riassunto.
Non posso fornire una data esatta su quando tutte queste funzionalità saranno disponibili sul piano business, ma intendiamo implementarle nei prossimi mesi.
Gli utenti self-hoster e i clienti enterprise possono già accedervi oggi.
La sommatoria è particolarmente interessante, stiamo acquistando alcuni server A100 e dovremmo averli installati nelle prossime settimane. Mistral è sorprendentemente capace e veloce, una volta che avremo la capacità implementata potremmo essere in grado di fornire riassunti anche ai piani business senza chiavi BYO, ma dobbiamo prima esplorare le caratteristiche di performance prima di prendere qualsiasi impegno in merito.