chatbot_support_vision
)*需要注册外部(非附属)API 服务。设置中的链接。
有两种模式:
RAG 模式非常聪明,知道论坛上发布的事实。
基本机器人模式有时会出错,但运行成本较低,因为它对大型语言模型的调用较少:
该机器人可以在您论坛的公共空间中使用。为了使机器人特别有用,有 RAG 模式(每个机器人信任级别一个设置)。默认情况下未设置此值。
在 RAG 模式下,默认情况下,通过设置chatbot embeddings strategy
(默认benchmark_user
)对信任级别 1 用户将看到的所有内容保密来控制机器人。因此,如果在面向公众的主题中进行交互,如果您倾向于通过类别权限将内容控制在信任级别 0 或 1 级别,则机器人有可能“泄漏”信息。选择此级别是因为根据经验,大多数网站通常不会以低信任级别访问敏感内容,但这取决于您的具体需求。
对于此模式,请确保您至少有一个信任级别为 1 的用户,并且除了自动组之外没有其他组成员身份。 (请记住,机器人将了解 TL1 级别用户所了解的所有内容并可以分享)。如果您的信任级别 0 用户除了自动组之外没有其他组成员身份,则可以选择降低chatbot embeddings benchmark user trust level
。
或者:
chatbot embeddings strategy
切换为category
,并使用您希望机器人了解的类别填充chatbot embeddings categories
。 (请注意,如果您添加任何私有类别,它应该知道这些以及机器人在公共场合所说的任何内容,任何地方都可能泄露给特权较低的用户,因此请小心您添加的内容)。basic
模式下使用机器人(但机器人将看不到任何帖子)您可以看到这个设置是一个折衷方案。为了使机器人有用,它需要了解您网站上的内容。目前,机器人无法有选择地读取仅限会员的内容并仅与会员共享,某些管理员可能会发现这是有限制的,但在机器人能够公开交谈的同时,没有办法轻松解决这个问题。如果您有特殊需求并想赞助该领域的一些工作,请联系我。通过语义搜索进行机器人许可是一个不小的问题。该系统目前已针对速度进行了优化。注意:机器人永远不会读取私人消息。
如果您希望聊天机器人了解您网站上的内容,请打开此设置:
chatbot_embeddings_enabled
仅当您想要使用 RAG 类型的机器人并确保它了解论坛上的内容而不仅仅是当前主题时才需要。
最初,我们需要为所有范围内的帖子创建嵌入,以便机器人可以找到论坛信息。一旦启用此设置,此操作就会在后台发生,您无需执行任何操作。
对于非常大的站点,此播种工作可能需要几天的时间。
这是由几个设置决定的:
chatbot_embeddings_strategy
可以是“benchmark_user”或“category”chatbot_embeddings_benchmark_user_trust_level
设置前者的相关信任级别chatbot_embeddings_categories
如果设置了category
策略,则允许机器人访问指定类别中的所有帖子。如果更改这些设置,随着时间的推移,嵌入的数量将会发生变化。
进入容器:
./launcher enter app
并运行以下 rake 命令:
rake chatbot:refresh_embeddings[1]
由于未知原因,目前将运行两次(抱歉!请随意 PR),但[1]
确保第二次它只会添加缺失的嵌入(即第一次运行后不会立即添加),因此有点没有实际意义。
万一您受到 OpenAI 的速率限制(不太可能!),您可以通过执行以下操作来完成嵌入:
rake chatbot:refresh_embeddings[1,1]
这将填补缺失的部分(因此错误不会造成任何损失),但会继续更加谨慎地在每次调用 Open AI 之间设置 1 秒的延迟。
与机器人交互相比,嵌入的创建成本并不高,但无论如何请在 Open AI 仪表板上观察您的使用情况。
注意:嵌入仅为帖子创建,并且仅为信任一级用户有权访问的帖子创建。这似乎是一个合理的妥协。它不会为来自信任级别 2+ 仅可访问内容的帖子创建嵌入。
@37Rb 写道:“这是我与 Data Explorer 插件一起使用的 SQL 查询,用于监视和验证嵌入......以防它对其他人有帮助。”
SELECT e.id, e.post_id AS post, p.topic_id AS topic, p.post_number,
p.topic_id, e.created_at, e.updated_at, p.deleted_at AS post_deleted
FROM chatbot_post_embeddings e LEFT JOIN posts p ON e.post_id = p.id
您可能会收到如下错误:
OpenAI HTTP Error (spotted in ruby-openai 6.3.1): {"error"=>{"message"=>"This model's maximum context length is 8192 tokens, however you requested 8528 tokens (8528 in your prompt; 0 for the completion). Please reduce your prompt; or completion length.", "type"=>"invalid_request_error", "param"=>nil, "code"=>nil}}
这就是你解决它的方法...
根据您的错误消息,嵌入模型的限制为:
8192 tokens
however you requested 8528
您需要删除此设置的当前值:
chatbot_open_ai_embeddings_char_limit:
大约 4 倍的差异,看看它是否有效(令牌大约是 4 个字符)。
因此,在此示例中,4 x (8528 - 8192) = 1344
因此,为了安全起见,请将chatbot_open_ai_embeddings_char_limit
当前值降低 1500。然而,默认值是根据对英语帖子的大量测试而设置的,但对于其他语言可能需要降低。
然后,这将切断更多文本和请求令牌,并希望嵌入能够完成。如果没有,您将需要确认差异并相应地进一步减少。最终它会足够低,所以你不需要再看它。
除了更改设置之外,您不需要做任何事情:后台作业会逐渐处理所有事情。
如果您确实想加快该过程,请执行以下操作:
chatbot_open_ai_embeddings_model
设置更改为您新的首选模型./launcher enter app
rails c
::DiscourseChatbot::PostEmbedding.delete_all
exit
(返回容器内的根目录)rake chatbot:refresh_embeddings[1]
chatbot_forum_search_function_similarity_threshold
,否则您可能不会得到任何结果:)。我将默认值从0.8
降低到0.6
,但您的里程可能会有所不同。 花点时间阅读整套插件设置。 chatbot bot type
设置是关键,每个聊天机器人都有一个“信任级别”:
RAG 模式更优越,但会增加对 API 的调用,可能会增加成本。也就是说,它最终输出“幻觉”的倾向的减少可能会帮助您从 GPT-4 下降到 GPT-3.5,并且尽管输出的实用性和可靠性显着增加,您最终可能会减少支出。从响应时间来看,GPT 3.5 也更适合代理类型。潜在的双赢!实验!
要使聊天机器人在聊天中工作,您必须启用聊天。
这主要由一个设置控制: chatbot_reply_job_time_delay
,您可以自行决定。
进行此设置的目的是:
现在默认为“1”秒,现在可以减少到零?️,但要注意上述风险。
将这个值设置为零,即使在“代理”模式下,机器人也会变得更加“敏捷”。
显然,这可能有点人为,没有人会真正打字那么快……但请根据您的品味和钱包大小进行设置。
请注意,我无法直接控制 Open AI API 的响应速度 - 一般规则是您设置的模型越复杂,响应通常越慢。因此,GPT 3.5 比 GPT 4 快得多……尽管这可能会随着较新的 GPT 4 Turbo 型号而改变。
要使聊天机器人在聊天中工作,您必须启用聊天。
您必须从 https://platform.openai.com/ 获取令牌才能使用当前的机器人。设置了默认语言模型(最复杂的模型之一),但您可以尝试更便宜的替代方案,列表在这里
设置有一个自动化部分:在添加到 Discourse 后,该插件当前会设置具有以下属性的 AI 机器人用户
您可以根据需要编辑姓名、头像和简介(请参阅管理 -> 自定义 -> 文本中的区域设置字符串),但要使其易于提及。
最初,没有人可以访问该机器人,甚至员工也无法访问。
初始免费分配到期后,调用 Open AI API 并非免费!因此,我实施了配额制度来控制这种情况,降低成本并防止滥用。这些小型互动的成本并不疯狂,但如果它变得流行起来,成本可能会增加。您可以在 OpenAI 的定价页面上了解有关 OpenAI 定价的更多信息。
为了与机器人交互,您必须属于一个已添加到三个级别的可信组集(低、中和高信任组集)之一的组。您可以在相应的设置中修改每个受信任组集每周允许的交互次数。
您还必须填充这些组。该配置完全取决于您。它们一开始是空白的,因此最初没有人可以访问该机器人。另外三个设置中有相应的配额。
请注意,用户根据其所属的最高受信任组获取配额。
有几个区域设置文本“设置”会影响机器人接收的内容以及机器人的响应方式。
您应该考虑更改的最重要的一项是机器人的system
提示。每次您与机器人交谈时都会发送此信息。
对于基本机器人,您可以尝试如下系统提示:
“你是一级方程式赛车的狂热粉丝,你喜欢与赛车运动有关的一切及其高辛烷值的兴奋感”,而不是默认的。
(对于代理机器人,您必须保留“您是一个有用的助手”之后的所有内容,否则您可能会破坏代理行为。如果遇到问题,请重置它。再次实验!)
尝试选择最适合您论坛主题的一种。有创意!
更改这些区域设置字符串可能会使机器人的行为截然不同,但无法即时修改。我建议仅更改系统提示符,因为其他提示符在代理行为或提供有关谁对机器人说了些什么的信息中发挥着重要作用。
注意:在主题中,除了帖子窗口(由回溯设置确定)之外,还会发送第一个帖子和主题标题,以便为机器人提供更多上下文。
您可以在chatbot.prompt.
discourse-chatbot/config/locales/server.en.yml
262a0a4 中的第 45 行
该机器人支持聊天消息和主题帖子,包括私人消息(如果配置)。
您可以通过回复或 @ 提及来提示机器人做出响应。您可以设置机器人向后看多远以获得响应的上下文。值越大,每次调用的成本就越高。
有一个浮动的快速聊天按钮,可以立即将您连接到机器人。可以在设置中禁用此功能。您可以选择是否将机器人加载到一对一聊天或个人消息中。
现在您可以选择您喜欢的图标(默认?),或者如果设置留空,将拾取机器人用户的头像! ?
请记住,您还可以通过使用“管理”->“自定义”->“文本” chatbot.
删除它所需的唯一步骤是从app.yml
中删除克隆语句。
我对机器人的响应不承担任何责任。考虑到该插件处于测试阶段,事情可能会出错。它将随着反馈而改进。但不一定是机器人的反应?请了解法学硕士的优点和缺点,以及它们能做什么、不能做什么以及它们的局限性。他们非常擅长创造令人信服的文本,但往往可能是错误的。
一旦提示回复(显然这仅限于当前主题或聊天频道),您在论坛上写的任何内容都可能会被转发到 Open AI,作为机器人扫描最后几篇帖子的一部分。虽然它几乎肯定不会被纳入他们的预训练模型中,但他们将在分析和日志记录中使用这些数据。请务必将此事实添加到论坛的服务条款和隐私声明中。相关链接:https://openai.com/policies/terms-of-use、https://openai.com/policies/privacy-policy、https://platform.openai.com/docs/data-usage-policies
Open AI 在此发表了有关版权的声明:https://help.openai.com/en/articles/5008634-will-openai-claim-copyright-over-what-outputs-i-generate-with-the-api