POST/chat/create
创建一个新聊天 Session,后续所有请求均复用返回的 Session ID。
{
"title": "c2"
}
保存新建会话的 ID,并作为后续请求的 session_id。示例流程中使用 "510"。
ChatV2 / Interrupt / Resume
描述从创建 Session、初始化聊天、提交 Pre-dispatch 确认、填写表单,到使用 Action 消息更新卡片状态的完整调用顺序、参数继承关系和关键返回值。
调用初始化事件时传 "question": "" 和 "event_type": "init"。
正式调用时根据用户所选智能体确定;仅允许调试阶段临时写死。
session_id、路由参数及 resume 内相关标识必须与上一条 interrupt 返回保持一致。
使用 action_id 查找此前 interrupt_id 或 action_id 相同的消息并切换状态。
蓝色表示前端请求,紫色表示需要用户处理的 interrupt,绿色表示更新已有卡片状态的 action。
POST /chat/create
请求:title
保存返回的 session_id
POST /chatv2
question = ""
event_type = init
question_type = confirm
渲染确认 / 取消按钮
缓存完整 interrupt 标识
POST /chatv2
action = confirm
confirmed = true
card_type = form_card
渲染 form_definition
保存 submit_params
创建一个新聊天 Session,后续所有请求均复用返回的 Session ID。
{
"title": "c2"
}
保存新建会话的 ID,并作为后续请求的 session_id。示例流程中使用 "510"。
以 init 事件启动所选智能体。正常进入 Pre-dispatch 确认时,返回 event=interrupt。
{
"session_id": "510",
"stage": "enrollment",
"agent_type": "patient_common",
"question": "",
"event_type": "init",
"event_payload": {
"projectId": "35",
"patientId": "73"
}
}
question 为空;stage 与 agent_type 根据所选智能体动态传入。
| 返回字段 | 前端用途 |
|---|---|
interrupt_id 等标识 | 完整缓存,供第 3 步 resume 原样提交。 |
question_type=confirm | 使用确认框展示。 |
title / message | 确认框标题与正文。 |
confirm_text / cancel_text | 确认与取消按钮文案。 |
emit_operation_message=true | 提交时,前端先显示对应的用户操作消息。 |
confirm_operation_message | 用户确认时显示的用户消息。 |
cancel_operation_message | 用户取消时显示的用户消息。 |
{
"event": "interrupt",
"interrupt_id": "c91812370b62437ab76d75a5efa651ba:init_crf_01_form_confirm",
"thread_id": "510",
"request_id": "c91812370b62437ab76d75a5efa651ba",
"action_code": "init_crf_01_form_confirm",
"action_type": "message_ask",
"origin_type": "llm_node",
"origin_node_code": "pre_dispatch_confirmation",
"origin_tool_name": "pre_dispatch_confirmation",
"required": true,
"action_params": {
"question_type": "confirm",
"title": "您是否现在要做入组评估",
"question": "张瑞玥 嘱托 [小每] 一定要在健康管理服务前,评估您的当前的个人状态,以便为您提供更契合您自身情况的服务,请“立即评估”吧~",
"message": "张瑞玥 嘱托 [小每] 一定要在健康管理服务前,评估您的当前的个人状态,以便为您提供更契合您自身情况的服务,请“立即评估”吧~",
"confirm_text": "立即评估",
"cancel_text": "暂不评估",
"status": "pending",
"emit_operation_message": true,
"confirm_operation_message": "我要立即评估",
"cancel_operation_message": "暂不评估,以后再说"
},
"requestId": "c91812370b62437ab76d75a5efa651ba",
"seq": 4
}
用户点击确认后,用上一条 Confirm Interrupt 的标识恢复流程;随后通常返回表单 Interrupt。
session_id、stage、agent_type 及 resume 内的 interrupt_id、request_id、action_code、action_type、origin_node_code、origin_tool_name 必须与第 2 步返回一致。
{
"session_id": "510",
"stage": "enrollment",
"request_id": "c91812370b62437ab76d75a5efa651ba",
"agent_type": "patient_common",
"resume": {
"interrupt_id": "c91812370b62437ab76d75a5efa651ba:init_crf_01_form_confirm",
"request_id": "c91812370b62437ab76d75a5efa651ba",
"action_code": "init_crf_01_form_confirm",
"action_type": "message_ask",
"origin_node_code": "pre_dispatch_confirmation",
"origin_tool_name": "pre_dispatch_confirmation",
"response": {
"question_type": "confirm",
"action": "confirm",
"confirmed": true
}
}
}
| 表单 Interrupt 字段 | 前端用途 |
|---|---|
card_type=form_card | 渲染表单卡片。 |
form_definition | 表单定义,用于生成字段与控件。 |
title / message | 卡片标题与说明文字。 |
allow_skip_form | 为 false 时不显示取消/跳过按钮。 |
skip_form_text | 跳过填写按钮文案。 |
submit_form_text | 提交按钮文案。 |
submit_params | 提交表单时必须附带的业务参数。 |
将表单值与 submit_params 组装到 resume.response.form_data 中。
session_id、路由参数、interrupt_id、request_id、action_code 必须与第 3 步返回的表单 Interrupt 一致;question_type 和 action 使用固定值。
{
"session_id": "510",
"agent_type": "patient_common",
"stage": "enrollment",
"resume": {
"interrupt_id": "c91812370b62437ab76d75a5efa651ba:init_crf_01_form",
"request_id": "c91812370b62437ab76d75a5efa651ba",
"action_code": "init_crf_01_form",
"response": {
"question_type": "form",
"action": "submit_form",
"form_data": {
"recordId": 504,
"formData": {
"fasting_glucose": 100,
"sample_type": "VENOUS_BLOOD",
"test_method": "GLUCOMETER",
"hba1c": "4.7%",
"ga": "1%"
}
}
}
}
}
response.question_type = "form"response.action = "submit_form"
除 Action 状态消息外,还会继续返回下一条 event=interrupt,前端渲染下一张表单卡片。
仅返回 event=action,用于标记当前表单卡片的最终状态。
Confirm 提交和表单提交的结果均通过 event=action 更新已有消息,不创建新的待处理卡片。
interrupt_id = Xaction_params.status = pending
action_id = Xstatus = finishedsubmit_status = success
收到 Action 后,用 action_id 查找此前 interrupt_id 或 action_id 相同的消息,然后更新其状态与结果文案。
{
"event": "action",
"request_id": "c91812370b62437ab76d75a5efa651ba",
"session_id": "510",
"action_id": "c91812370b62437ab76d75a5efa651ba:init_crf_01_form",
"action_code": "init_crf_01_form",
"action_type": "message_ask",
"origin_type": "llm_node",
"origin_node_code": "interaction_policy",
"origin_tool_name": "interaction_policy",
"action_result_message": "表单提交成功",
"action_params": {
"status": "finished",
"submit_status": "success",
"title": "init_crf_01_form"
}
}
建议前端将每条 Interrupt 的原始标识与 action_params 一起保存,构造 Resume 时直接读取,避免手工拼接错误。
| 字段 | 初始化请求 | 确认 Resume | 表单 Resume | 规则 |
|---|---|---|---|---|
session_id | 来自创建 Session | 原样沿用 | 原样沿用 | 整个调用链保持一致。 |
stage | 按所选智能体确定 | 原样沿用 | 原样沿用 | 不要在正式代码中写死。 |
agent_type | 按所选智能体确定 | 原样沿用 | 原样沿用 | 不要在正式代码中写死。 |
interrupt_id | 无 | 来自确认 Interrupt | 来自表单 Interrupt | 每次使用最近待处理 Interrupt 的值 |
request_id | 无 | 来自确认 Interrupt | 来自表单 Interrupt | 与对应 Interrupt 一致 |
action_code | 无 | 来自确认 Interrupt | 来自表单 Interrupt | 与对应 Interrupt 一致 |
origin_node_code / origin_tool_name | 无 | 来自确认 Interrupt | 按返回契约携带 | 需要时原样透传 |
response.question_type | 无 | 固定 confirm | 固定 form | 由当前卡片类型决定。 |
response.action | 无 | 固定 confirm | 固定 submit_form | 取消/跳过场景使用对应动作值。 |
action_id | 无 | 用于前端状态更新 | 匹配历史消息的 interrupt_id 或 action_id。 | |