使用 LLM(GPT、BERT 等)总结主题?

尊敬的 Discourse 团队:

Discourse 能够总结长帖子。我的理解是,它使用参与度指标(如点赞或回复数量)来识别应保留哪些帖子。在我的社区(公司内部沟通)中,尽管帖子有 20 页长,但这几乎从未触发(回复数量对我们来说不是最佳触发器)。

更强大的方法是使用像 GPT-3 或 BERT 这样的 LLM 来按需总结整个帖子(而不是仅仅过滤帖子)。总结是 LLM 大放异彩的用例(几乎是海报儿童),我相信这比当前基于弱信号的方法(在某些社区中,人们可能不使用点赞或回复特定帖子)要有效得多。

另一方面,运行 GPT 来总结文本可能很昂贵,每 1k 个 token 高达 0.02 美元。此功能可能在一些私有社区中比高流量公共社区更有意义。

我设想该功能的工作方式如下:

  • 首次阅读一个长帖子时(长帖子由设置定义),如果从未总结过,则按需提供总结选项。
  • 总结将插入到帖子中(例如:之前的所有内容都已总结)。
  • 它将从帖子顶部链接(例如:跳转到总结)。
  • 理想情况下,会有一个 :+1: :-1: 反馈机制。
  • 在增加 N 条回复后,提供发布新总结并更新顶部的链接。
  • 该插件将使用 openai 密钥进行配置(假设这是使用的 LLM)。最终,如果证明成功,您将希望提供访问不同模型的权限。

至少这是理论 :slight_smile:。在实践中,关于它能有多好,或者如何配置总结的程度,都存在未知数。我的直觉是,这对某些社区来说是极高的投资回报率。我听到的首要问题是,人们讨厌追赶帖子。这将是巨大的帮助。

有什么想法?

8 个赞

我们的人工智能团队当然在探索这个领域。摘要是最有趣的可能之一。

一旦我们有东西可以展示,我们会在这里回复。

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  # 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 团队目前正在探索此可能性,并将在有东西展示时进行更新。

很有趣,但相当参差不齐

9 个赞

我今天忍不住试了一下:

它还处于非常实验性的阶段,目前几乎没有防止出现问题的保障措施,所以绝对_不_适合专业用途(!!)

请注意,由于令牌限制,目前只能考虑前约 40 篇帖子(基于我论坛的活动)。

有一个点踩系统。UI 预览:

(顺便说一句,这个例子是基于开发夹具中相当随机的数据,在真实数据上表现_好得多)。

顺便说一句,到目前为止,我为构建这个东西花费了 0.33 美元 :smiley:

(18 美元是免费额度)

8 个赞

@Julienlavigne 我在稳定性、灵活性和管理反馈方面对此进行了重大改进。

例如,模型返回的错误现在会被记录下来,因此您现在可以轻松地知道是否已超出模型限制。

如果您(或任何人)想尝试一下,我可以在一段时间内提供一些随意的支持,并且在合理的情况下可以采纳反馈。

完整的设置集现在是:

5 个赞

@merefield 听起来太棒了!

遗憾的是,我使用的是 Discourse 的商业版本,无法部署自定义插件,因此无法轻松测试。不过,我可能会尝试在本地运行 Discourse 并使用备份进行测试。我会及时向您汇报。

3 个赞

@sam 这项工作有进展吗?

我的插件长期以来一直提供这个。

CDCK 随后也发布了 Discourse AI 插件,其中包含一个类似的摘要解决方案。

随意使用。

谢谢 @merefield Robert,是的,我看到了,感谢你在这方面所做的工作。但我希望 @sam(或有 Discourse 支持的人)正在开发一个 LLM 摘要功能,并与原生 Discourse 完全集成。显然,如果 Discourse 的商业计划客户只需要为他们自己的 OpenAI(或最终确定的任何提供商)密钥额外付费,那么从配置、高级兼容性和维护的角度来看,这将更加简单。一切顺利。

1 个赞

我无法代表 CDCK 发表评论,但这里的细微差别在于,我怀疑许多网站更希望这是可选的,因为有些网站对人工智能感到紧张(而另一些则希望完全拥抱它)。

因此,我怀疑这将仍然是一个可选的插件,并允许 CDCK 根据他们和客户的意愿定制产品。

然而,从工程师的角度来看,这几乎可以提供完全原生的体验,并且在功能上不会带来任何有意义的限制。

我无法谈论账单/openai 账户配置。

嗨 Mike,我们最近推出了 ai bot,请看:

现在您的安装已可用,您可以为 anthropic 或 openai 插入凭据。

关于路线图,我们正在考虑下一步推出“embedding”,这将为您提供语义相关的主题。在此之后,我认为接下来的两个将是 ai helper 和 summary。

我无法给出这些功能将在 business plan 上推出的确切日期,但我们打算在未来几个月内推出它们。

Self hosters 和 enterprise 客户今天就可以访问它们。


Summarization(摘要)尤其有趣,我们正在购买几台 A100 服务器,并将在未来几周内投入使用。Mistral 的能力和速度令人惊讶,一旦我们部署了容量,我们甚至可能能够为 business plan 提供摘要,而无需自带密钥,但在此之前我们需要先探索性能特征,然后再做出任何承诺。

4 个赞

谢谢你,Sam。我们对这个功能非常感兴趣,我猜其他托管客户也会感兴趣。祝一切顺利。

1 个赞