Discourse a la capacité de résumer de longs fils de discussion. Je crois comprendre qu’il utilise des métriques d’engagement comme les réactions ou le nombre de réponses pour identifier les messages à conserver. Dans ma communauté (communication interne au sein de l’entreprise), cela ne se déclenche presque jamais malgré des fils de discussion de 20 pages (le nombre de réponses n’est pas le meilleur déclencheur pour nous).
Une approche plus puissante serait d’utiliser un LLM comme GPT-3 ou BERT pour résumer l’ensemble du fil de discussion à la demande (par opposition à simplement filtrer les messages). La summarisation est un cas d’utilisation où les LLM excellent (pratiquement l’enfant prodige) et je pense que ce serait beaucoup plus efficace que l’approche actuelle basée sur des signaux faibles (dans certaines communautés, les gens peuvent ne pas utiliser de réactions ou répondre à des messages spécifiques).
D’un autre côté, exécuter GPT pour résumer du texte peut être coûteux, jusqu’à 0,02 $ par 1 000 jetons. Cette fonctionnalité aurait probablement plus de sens dans certaines communautés privées que dans celles à fort trafic.
J’imagine la fonctionnalité fonctionner comme suit :
lors de la lecture d’un long fil de discussion pour la première fois (longueur définie par un paramètre) qui n’a jamais été résumé, proposer de le résumer à la demande.
la summarisation serait insérée dans le fil de discussion (par exemple, tout ce qui précède est résumé).
elle serait liée depuis le haut du fil de discussion (par exemple, sauter au résumé).
idéalement, il y aurait un mécanisme de retour d’information .
après N réponses supplémentaires, proposer de publier un nouveau résumé et de mettre à jour le lien en haut.
le plugin serait configuré avec une clé OpenAI (en supposant que ce soit le LLM utilisé). Éventuellement, s’il s’avère fructueux, vous voudrez offrir l’accès à différents modèles.
C’est du moins la théorie . En pratique, il y a des inconnues quant à sa qualité ou à la manière de configurer le degré de summarisation. Mon instinct est que cela offre un retour sur investissement extrêmement élevé pour certaines communautés. Le problème numéro un que j’entends est que les gens détestent rattraper les fils de discussion. Cela serait d’une aide précieuse.
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 explore la possibilité d’utiliser un LLM tel que GPT-3 ou BERT pour résumer de longs fils de discussion à la demande. Cette fonctionnalité serait configurée avec une clé openai et pourrait être particulièrement utile pour les communautés privées. La résumé serait inséré dans le fil de discussion, avec un lien en haut et un mécanisme de retour d’information. L’équipe IA explore actuellement cette possibilité et mettra à jour lorsqu’elle aura quelque chose à montrer.
C’est très expérimental et il y a très peu de protections en cas de problème pour le moment, donc ce n’est absolument pas pour un usage professionnel (!!)
Notez qu’en raison des limites de jetons, il ne peut actuellement prendre en compte que les ~40 premiers messages (basé sur l’activité de l’un de mes forums).
Dispose d’un système de vote négatif. Aperçu de l’interface utilisateur :
(au fait, cet exemple est basé sur les données plutôt aléatoires des fixtures de développement, il fonctionne beaucoup mieux sur des données réelles).
@Julienlavigne J’ai apporté des améliorations significatives à cet égard en termes de stabilité, de flexibilité et de retour d’information administratif.
Les erreurs renvoyées par le modèle sont désormais enregistrées, par exemple, vous pouvez donc désormais indiquer facilement si vous avez dépassé les limites du modèle.
Si vous (ou quelqu’un d’autre) souhaitez l’essayer, je pourrai peut-être vous fournir un petit support occasionnel pendant un certain temps et je pourrai peut-être intégrer les commentaires dans la mesure du raisonnable.
L’ensemble complet des paramètres est maintenant :
Malheureusement, j’utilise la version professionnelle de Discourse et je ne peux pas déployer de plugins personnalisés, donc je ne peux pas tester cela facilement. Je vais peut-être essayer de faire tourner Discourse localement avec une sauvegarde et de jouer avec. Je vous tiendrai au courant.
Merci @merefield Robert, et oui je l’avais vu, et merci pour votre travail à ce sujet. J’espérais cependant que @sam (ou quelqu’un avec le support de Discourse) travaillait sur une fonctionnalité de résumé LLM avec une intégration complète avec Discourse natif. Évidemment, si les clients du plan professionnel de Discourse doivent simplement payer un supplément pour leur propre clé OpenAI (ou quel que soit le fournisseur final), ce serait beaucoup plus simple du point de vue de la configuration, de la compatibilité de haut niveau et de la maintenance. Tout le meilleur.
Je ne peux pas parler au nom de CDCK ici, mais la nuance est que je soupçonne que de nombreux sites préfèrent que cela soit facultatif, car certains sont nerveux à propos de l’IA (tandis que d’autres souhaitent l’adopter pleinement).
Je soupçonne donc qu’il s’agira d’un plugin facultatif qui permettra à CDCK de personnaliser l’offre de produits comme bon lui semble et comme le souhaitent les clients.
Cependant, en tant qu’ingénieur, cela permet une expérience entièrement native et ne présenterait aucune limitation significative d’un point de vue fonctionnel.
Je ne peux pas parler de la facturation/configuration du compte OpenAI.
Salut Mike, nous avons récemment débloqué le bot IA, voir :
Ceci est maintenant disponible sur votre installation, vous pouvez brancher les identifiants pour Anthropic ou OpenAI.
Concernant la feuille de route, nous pensons débloquer ensuite « l’embedding », qui vous donnera des sujets sémantiquement liés. Ensuite, je pense que les deux prochaines fonctionnalités seront l’assistant IA et le résumé.
Je ne peux pas donner de date précise pour le déblocage de toutes ces fonctionnalités sur le plan professionnel, mais nous avons l’intention de les déployer au cours des prochains mois.
Les auto-hébergeurs et les clients d’entreprise y ont déjà accès aujourd’hui.
La synthèse est particulièrement intéressante, nous achetons quelques serveurs A100 et devrions les installer dans les prochaines semaines. Mistral est étonnamment performant et rapide, une fois que nous aurons la capacité déployée, nous pourrons peut-être proposer la synthèse même pour les plans professionnels sans clés BYO, mais nous devons d’abord explorer les caractéristiques de performance avant de prendre des engagements à cet égard.
Merci, Sam. Nous serions très intéressés par cette fonctionnalité, et je soupçonne que d’autres clients d’hébergement le seraient aussi. Tous mes vœux de succès.