[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.
-
背景
当前的 LobeChat 的插件机制基本 follow ChatGPT 。 ChatGPT 里的插件基本都是展示型的组件,没有富交互能力。
Vercel 的ai sdk 文档里也提到了function call 的三阶段,第三阶段就是富交互,允许用户和插件进行除基础展示外的复杂交互。
由于当前的插件机制,缺少发送会话数据的时机控制,因此无法实现在插件中进行若干操作后,再继续进行会话。
目标
实现高自由度的会话时序控制,以支持复杂会话功能的实现。
思路
当前插件中触发 FunctionCall 的实现如下:
核心触发FC的代码在
triggerFunctionCall
中:为了支持用户更加灵活的时序控制,我们需要在该方法上增加对应的功能。
目前与插件交互的步骤有两个如下:
更加灵活意味着,插件可以自行决定:
Beta Was this translation helpful? Give feedback.
All reactions