ZAI 调用与数据模型说明
Z AI 数据模型
Z AI 默认为用户提供如下所示四张数据表来记录与 AI 进行对话时产生的数据,各位开发者可以直接使用这四张数据表来进行 AI 应用数据展示以及交互判断
会话表
用于记录某一次会话内容的数据表,在 Z AI 配置界面调试以及调用下方【开始会话】时,就会自动向会话表中添加一条新的数据
字段说明
账户 ID: 整数类型,是账户表与会话表建立1:N(一对多)关系产生的关系字段,用于记录这条会话是哪一位用户发起的 入参: 在开始会话时,会将这个 AI 配置的相关内容保存在该字段中,即该 AI 的提示词、知识库配置、工具配置、输出配置 状态: 记录这次会话的状态,默认以下六种状态,可以根据对话状态来设定业务逻辑
- CREATED:创建的初始状态
- IN_PROGRESS:发给 AI 之后在等AI回复的状态
- STREAMING:AI 正在进行流式输出回复的状态
- COMPLETED:AI 回复完成
- FAILED:各种各样的失败状态
CANCELED:停止回复之后的状态## 消息表 用于记录某个会话下的消息记录,但不是具体的消息内容
字段说明
账户 ID: 整数类型,是账户表与消息表建立1:N(一对多)关系产生的关系字段,用于记录这条消息是属于哪一个用户 角色: 文本类型,默认以下三种角色,记录这条消息的发送者是谁
system:触发【开始会话】时,会将提示词(包括用户输入的入参)、知识库返回的结果、工具调用的结果发送给 AI ,该条消息会以 system 作为角色来记录
- assistant:AI 返回的结果会以 assistant 作为角色来记录
user:点击继续会话时,用户从输入框中输入,发送给 AI 的内容,该条消息会以 user 作为角色来记录会话 ID:整数类型,是会话表与消息表建立1:N(一对多)关系产生的关系字段,用于记录这条消息是属于哪一个会话
⚠️ 非常重要,请一定要理解!!!
单轮对话时,消息表中只会出现 system 与 assistant 两种角色
多轮对话时,【开始会话】触发的首条消息是 system 发送的,assistant 根据 system 的内容返回结果;【继续会话】时,消息则是以 user 身份发送的,assistant 则继续根据之前的所有消息进行处理后返回结果
消息内容表
用于记录具体的消息内容,由于在给 AI 发送内容时,可能同时包含图片和文本,Z AI 会把图片和文本分开保存在消息内容表中,并自动将其与某条消息进行关联
字段说明
类型: 文本类型,默认以下三种类型,记录这条数据的类型
TEXT:文本类型
- IMAGE:图片类型
- JSON:JSON 类型
文本:文本类型, 如果这条消息是一段文本,则保存在该字段中 图片:图片类型, 如果这条消息是一张图片,则保存在该字段中 JSON:JSON 类型, 如果这条消息是一段 JSON,则保存在该字段中 消息 ID:整数类型, 是消息表与消息内容表建立1:N(一对多)关系产生的关系字段,用于记录这条具体的消息内容是属于哪一条消息
工具使用记录表
用于记录 AI 运行时工具的使用情况,由于 AI 在处理某条消息的任务时,可能会调用多个工具,所以 Z AI 会把某个工具的使用记录保存在该表中,并自动将其与某条消息进行关联
字段说明
名称:文本类型, 记录工具的名称 工具调用ID:文本类型, 记录工具调用ID 类型:文本类型,默认以下四种类型, 记录调用的工具类型
- ACTION_FLOW:行为流
- TPA:第三方 API
- ZAI:其它 AI
- OBTAIN_MORE_INFORMATION:获取更多信息
请求:JSON 类型, 调用工具时发起的请求 响应:JSON 类型, 调用工具时返回的结果 消息ID:整数类型, 是工具使用记录表与消息表建立1:N(一对多)关系产生的关系字段,用于记录这条工具使用记录是属于哪一条消息
AI 行为调用说明
Z AI 提供了如下所示五种调用 AI 的行为,你可以在点击时行为下找到 AI 然后选择需要的行为进行配置
开始会话
【开始会话】一般用于开启多轮 AI 对话的首轮对话或者完成一次性 AI 对话 【开始会话】通过点击触发,开启一个新的 AI 会话,即在「会话表」中添加一条新会话记录,在消息表中添加一条以system 为角色的消息记录,并记录该条消息属于哪一个对话;在消息内容表中添加内容记录,并记录该消息内容属于哪一条消息;如果调用了工具,则会在工具使用记录表中添加工具使用记录,并记录该工具使用记录属于哪一条消息。
配置指南
在【开始会话】的行为中选择要调用的 AI ,如果该 AI 有入参,则绑定或者直接输入对应的入参即可。
⚠️ 注意:为了在【继续会话】、【删除会话】、【停止回复】中准确绑定会话 ID,一般会页面上添加一个整数类型(BIGINT)的页面数据,命名为 conversation_id ,在【开始会话】成功时设置该页面数据,赋值为:结果数据/开始会话/ID
继续会话
当进行多轮对话,在【开始会话】后,要继续给 AI 发送消息并且自动带上上下文时,则使用【继续会话】行为 【继续会话】通过点击触发,触发后同开始会话一样,会自动向消息表、消息内容表以及工具使用记录表中添加相关数据
配置指南
在【继续会话】的行为中选择与上一次调用的【开始会话】相同的 AI ,并且在「选择会话」中绑定因【开始会话】而产生的会话 ID,同时直接输入或绑定消息文本内容,如果有图片则绑定图片内容即可
删除会话
【删除会话】即删除某一次的会话,删除会话的同时会删除与会话相关联的消息、消息内容、工具调用记录
停止回复
【停止回复】即【开始会话】或【继续会话】过程中,会话还未结束,则可以触发【停止回复】停止当前对话,停止回复后,依旧可以使用【继续会话】继续刚才的多轮对话
提供工具信息
待更新...
AI 调用结果
默认输出
为了直接显示 AI 请求回来的结果,一般在页面上添加一个页面数据,然后为按钮组件的点击时行为添加需要的 AI 请求,完成 AI 请求的入参配置,在其成功时设置页面数据,赋值为结果数据中的内容
img | img |
---|---|
自定义输出
当配置 AI 时,配置了自定义输出,你将需要按照如下格式设置输出的字段类型、名称(一定要是英文,最好是能够与你期待的输出结果意义相同的英文单词或短句),AI 将会按照字段名称把对应的结果写入到该字段中
在调用该 AI 时,你将可以在 AI 结果数据中选择需要引用的字段内容,例如下方案例中是将 AI 返回的问题类型数据 question_type 与「搭建项目」进行比较
流式输出
当配置 AI 时,打开了「流式输出」的模式,那么在调用 AI 时,会出现「将流式输出数据赋值给」的配置,在配置中需要选择事先在页面中创建好的页面数据进行赋值,而后可将该页面数据绑定给【文字组件】,当 AI 调用成功时,文字组件就会将结果以流的方式进行输出呈现
img | img | img |
---|---|---|
请求时显示加载动画: 默认打开,发起 AI 请求时,在请求结果回来之前显示如下加载动画