LLM(GPT、BERTなど)でトピックを要約する?

Discourseチーム様

Discourseには、長いスレッドを要約する機能があります。私の理解では、リアクションや返信数などのエンゲージメント指標を使用して、どの投稿を保持するかを特定しています。私のコミュニティ(社内コミュニケーション)では、スレッドが20ページあってもこれはほとんどトリガーされません(返信数は私たちにとって最適なトリガーではありません)。

より強力なアプローチは、GPT-3やBERTのようなLLMを使用して、オンデマンドでスレッド全体を要約することです(投稿をフィルタリングするだけではなく)。要約はLLMが得意とするユースケースです(ほぼポスターチャイルドです)。現在の弱いシグナルに基づいたアプローチよりもはるかに効果的だと信じています(一部のコミュニティでは、人々がリアクションを使用しなかったり、特定の投稿に返信しなかったりする場合があります)。

一方で、GPTを実行してテキストを要約するには、高価になる可能性があり、1kトークンあたり最大0.02ドルかかります。この機能は、トラフィックの多い公開コミュニティよりも、一部のプライベートコミュニティでより意味があるでしょう。

この機能は次のように機能すると想像しています。

  • 初めて長いスレッドを読むとき(設定で定義された「長い」)、まだ要約されていない場合は、オンデマンドで要約することを提案します。
  • 要約はスレッドに挿入されます(例:それ以前のすべてが要約されます)。
  • スレッドの上部からリンクされます(例:要約にジャンプ)。
  • 理想的には、:+1: :-1: フィードバックメカニズムがあります。
  • N件の返信の後、新しい要約を発行し、上部のリンクを更新することを提案します。
  • プラグインはOpenAIキーで構成されます(これが使用されるLLMであると仮定します)。最終的には、成功した場合、さまざまなモデルへのアクセスを提供したいと思うでしょう。

少なくとも理論上はそうです :slight_smile:。実際には、どの程度優れているか、または要約の度合いをどのように構成するかについては未知数があります。私の直感では、これは一部のコミュニティにとって非常にROIが高いです。私が聞く一番の問題は、人々がスレッドのキャッチアップを嫌うことです。これは非常に役立つでしょう。

ご意見をお聞かせください。

「いいね!」 8

当社のAIチームはこの分野をまさに探求しています。要約は、より興味深い可能性の1つです。

お見せできるものがあり次第、ここに返信します。

「いいね!」 8

FWIW:

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  # 各チャンクの最大長
# 各チャンクの最大長
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は、GPT-3やBERTのようなLLMを使用して、オンデマンドで長いスレッドを要約する可能性を検討しています。この機能はopenaiキーで設定され、特にプライベートコミュニティに役立つ可能性があります。要約はスレッドに挿入され、上部にリンクとフィードバックメカニズムが配置されます。AIチームは現在この可能性を検討しており、何かお見せできるものがあれば更新します。
Discourse is exploring the possibility of using an LLM such as GPT-3 or BERT to summarize long threads on demand. This feature would be configured with an openai key and could be especially useful for private communities. The summarization would be inserted in the thread, with a link at the top and a feedback mechanism. The AI team is currently exploring this possibility and will update when they have something to show.

興味深いですが、かなりムラがあります
It’s interesting but reasonably uneven

「いいね!」 9

自分で試さずにはいられませんでした。

これは非常に実験的で、現時点では問題が発生した場合のセーフガードがほとんどないため、絶対にプロの使用には適していません(!!)

トークン制限のため、現在考慮できるのは最初の約40件の投稿のみです(私のフォーラムの活動に基づいています)。

ダウン投票システムがあります。UIプレビュー:

(ちなみに、この例は開発フィクスチャのかなりランダムなデータに基づいています。実際のデータでははるかに優れたパフォーマンスを発揮します。)

ちなみに、これまでに構築するために$0.33を呼び出しに「費やしました」:smiley:

($18は無料割り当てです)

「いいね!」 8

@Julienlavigne これを安定性、柔軟性、管理者のフィードバックの点で大幅に改善しました。

たとえば、モデルによって返されたエラーが記録されるようになったため、モデルの制限を超えたかどうかを簡単に確認できるようになりました。

もしあなたが(または誰かが)試してみたいのであれば、しばらくの間、ちょっとしたサポートを提供できるかもしれませんし、妥当な範囲でフィードバックを取り入れることができるかもしれません。

設定の全セットは以下のとおりです。

「いいね!」 5

@merefield 素晴らしいですね!

残念ながら、私はDiscourseのビジネスバージョンを使用しており、カスタムプラグインをデプロイできないため、これを簡単にテストできません。バックアップを使用してDiscourseをローカルで実行し、試してみるかもしれません。進捗があり次第、お知らせします。

「いいね!」 3

@sam この取り組みに進展はありましたか?

私のプラグインは、長い間これを提供してきました。

CDCKはその後、同様の要約ソリューションを備えたDiscourse AIプラグインもリリースしました。

どうぞご利用ください。

@merefield Robert、ありがとうございます。はい、それも見ました。そして、この件に関するあなたの仕事にも感謝します。しかし、@sam(またはDiscourseサポート担当者)が、ネイティブDiscourseとの完全な統合を備えたLLM要約機能に取り組んでいることを期待していました。明らかに、Discourseビジネスプランの顧客が、個別のOpenAI(またはプロバイダーが判明したもの)キーに対して少し追加料金を支払うだけで済むのであれば、構成、上位互換性、および保守の観点から、それははるかに簡単になるでしょう。すべて順調であることを願っています。

「いいね!」 1

CDCKについては断言できませんが、ニュアンスとしては、多くのサイトがこれをオプションにすることを好むと私は推測します。AIを恐れているサイトもあれば(完全に受け入れたいサイトもありますが)。

そのため、これはオプションのプラグインとして残され、CDCKが製品提供を自社および顧客の判断でカスタマイズできるようになると推測します。

しかし、エンジニアとして言えば、それはほぼ完全にネイティブな体験を可能にし、機能的な観点から意味のある制限をもたらさないでしょう。

請求/OpenAIアカウントの設定については話せません。

マイクさん、こんにちは。最近AIボットをリリースしました。詳細は以下をご覧ください。

これはお客様の環境でも利用可能になりました。AnthropicまたはOpenAIの認証情報を設定してください。

ロードマップとしては、次に「embedding」をリリースする予定です。これにより、意味的に関連するトピックを取得できるようになります。その後、「AIヘルパー」と「要約」の機能を追加する予定です。

これらの機能がビジネスプランでいつ利用可能になるか正確な日付は申し上げられませんが、今後数ヶ月かけて展開していく予定です。

セルフホストおよびエンタープライズのお客様は、本日よりアクセス可能です。


特に要約機能は興味深いです。A100サーバーを数台購入しており、今後数週間で設置が完了する予定です。Mistralは驚くほど高性能で高速です。容量が確保でき次第、お客様自身でキーを設定しなくても、ビジネスプランのお客様にも要約機能を提供できる可能性がありますが、まずはパフォーマンス特性を調査してから、コミットメントを行います。

「いいね!」 4

サムさん、ありがとうございます。この機能には非常に興味がありますし、他のホスティング顧客も同様だと思います。頑張ってください。

「いいね!」 1