核心概念
接入 chatkit 要理解三个概念:适配器、配置、插槽。本页各用一段话说清楚,再补上读文档时会遇到的几个名词。
适配器:对接后端
适配器是唯一认识后端协议的地方:把后端的流翻译成界面能显示的内容,把发送、停止这些操作翻译成请求。
同一组会话共用一个稳定的实例,交给 useChatSessions 或 useChatRuntime。
适配器只做协议翻译:每项能力由接入方写一个发请求的函数,请求发到哪、带什么凭据、用哪个模型或应用,都在函数里决定。 生产环境让请求走自己的代理,用户是谁由登录态决定,密钥不放进前端。
适配器决定界面能使用哪些后端能力。会话列表由外部数组和操作回调控制,提供 regenerate 或 edit 后可显示对应操作;还要满足功能开关和当前消息状态的条件。调用后端 abort 后继续接收输出并保留执行位;终态事件或历史明确终态确认后才结束运行。失败或未确认不能伪造中止;缺少 abort 时不显示停止按钮。详见能力一览。
chatkit 不把对话持久化到浏览器存储:当前内容保留在内存中,刷新后能否恢复取决于历史接口。会话列表与历史是独立能力,提供其中一项不会自动具备另一项。 对话界面被销毁重建时对话会不会丢,见会话与历史从哪来。
配置:settings 与 features
settings只填值:语言、占位文字、欢迎语、最大宽度、执行过程的显示方式……没有函数,没有界面内容,可以整个放进配置中心。features管内置功能:支持开关的功能可以用false关掉;需要业务方提供实现的功能(上传、赞踩回调、语音识别)在这里给函数;带控件的功能可以用slot换位置。
全部配置项见配置参考。
插槽:slots 与 renderers
slots按位置放:聊天区有 17 个固定位置(顶栏、消息上下、输入框工具栏、右侧面板……),业务组件放进去,和内置功能排在一起。见插槽。renderers按类型显示:后端返回的某类内容怎么显示。业务卡片按数据类型登记,工具按工具名登记,失败卡片按错误码登记。见业务卡片、工具展示。
拿不准用哪个时看 settings / features / slots / renderers 怎么选。
五层架构
从上到下是:接入方应用、界面(聊天区 <Chatkit> 与会话列表 SessionList)、会话层(useChatSessions,管会话列表和每个会话的运行时)、运行时(每个打开的会话一个,负责排队、停止、历史和一轮的结论)、适配器(整个应用一个实例,每次调用都带会话 id)。接入方日常只接触最上面和最下面:上面写配置与插槽,下面选或写适配器。
不同形态的产品能用哪些层
各入口能在哪里运行见入口与导出。