[RFC] 006 - 支持插件自定义会话时序逻辑 #345
Replies: 2 comments 8 replies
-
LobeChat 与插件的通信机制先来讨论第一个问题: 如何控制从插件侧获取结果消息并写入 content 的时机。 由于 content 是文档会话流的关键信息,content中的内容会发送给 ai 进行总结或者生成。因此我们可以把控制写入 content 作为插件消息的结束时机。 复交互的卡点就是在这里。有些复交互是需要用户进行一些操作后,才会得到相应的 content 。
根据以上讨论,需要支持的核心功能:
这种模式下,所有的前后端逻辑似乎应该全部都在插件侧完成,插件和 LobeChat 的消息通知应该全部走前端 postMessage 逻辑。 那这么看来,更进一步来说,插件似乎可以成为完全独立的应用,在接收到 LobeChat 的消息通知后,自行决定内部的交互逻辑,最后在完成交互后,再通知 LobeChat 得到 content 内容。 |
Beta Was this translation helpful? Give feedback.
-
在这里讨论第二个问题: 触发 ai 请求的控制时机 在随着更多开发者接触到 LobeChat 的插件机制,我们收到了很多对于是否发送 ai 请求、如何控制发送 ai 请求等很多诉求。例如:
上面有两个需求:
针对上述的诉求,我们在消息展示上,可以控制插件的显示内容,从无到完全自定义,总结下来有四类:
在消息触发上,我们同样需要提供一个配置,运行插件控制接下来的消息模式。
|
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
背景
当前的 LobeChat 的插件机制基本 follow ChatGPT 。 ChatGPT 里的插件基本都是展示型的组件,没有富交互能力。
Vercel 的ai sdk 文档里也提到了function call 的三阶段,第三阶段就是富交互,允许用户和插件进行除基础展示外的复杂交互。
由于当前的插件机制,缺少发送会话数据的时机控制,因此无法实现在插件中进行若干操作后,再继续进行会话。
目标
实现高自由度的会话时序控制,以支持复杂会话功能的实现。
思路
当前插件中触发 FunctionCall 的实现如下:
核心触发FC的代码在
triggerFunctionCall
中:为了支持用户更加灵活的时序控制,我们需要在该方法上增加对应的功能。
目前与插件交互的步骤有两个如下:
更加灵活意味着,插件可以自行决定:
Beta Was this translation helpful? Give feedback.
All reactions