ToolHost 对话演示

AI 对话中需要收集用户信息时,会调用 ToolHost 弹出交互式表单卡片。用户填写并提交后,表单数据以结构化的 ToolResult 返回给 AI,AI 继续处理。

下方是一个完整的对话演示——模拟用户请求创建项目,AI 调用 fill-form 模板收集项目信息,提交后返回 ToolResult。

流程: 用户发起请求 → AI 判断需要工具调用 → ToolHost 弹出表单 → 用户填写并提交 → 返回 ToolResult → AI 继续响应

AI 端调用 ToolHost 的代码如下:

import { renderToolCall } from "slexkit/toolhost";

const { promise } = renderToolCall({
  name: "fill-form",
  arguments: {
    title: "创建新项目",
    description: "请填写项目的基本信息。",
    submitLabel: "提交",
    ignoreLabel: "取消",
    fields: [
      { name: "name", label: "项目名称", type: "text", required: true },
      { name: "type", label: "项目类型", type: "select", options: [
        { label: "Web 应用", value: "web" },
        { label: "API 服务", value: "api" },
        { label: "CLI 工具", value: "cli" },
      ]},
      { name: "priority", label: "优先级", type: "select", options: [
        { label: "低", value: "low" },
        { label: "中", value: "medium" },
        { label: "高", value: "high" },
      ]},
    ],
  },
}, container);

// 用户提交后,promise resolve 为 ToolResult
const result = await promise;
// → { toolName: "fill-form", status: "submitted", value: { name, type, priority } }