AiPromptBox AI 输入台
大模型调用的聚合输入台:模型选择、场景 chips、能力开关(深度思考 / 联网搜索等)、额度展示、发送与停止,一键交出完整调用上下文。组件不内置任何请求——send 事件把 { text, scene, capabilities, model, attachments } 一次交出,模型调用(fetch / SSE / SDK)由使用方注入,流式回写可配合 useChatEngine。
界面文案(发送 / 停止 / 添加附件 / 场景 / 设置 / 选择模型 / 占位文本等)取自语言包 eb.chat,随 EbConfigProvider 的 locale 走——机制见 Chatbot · 多语言。
本页组件在独立包
@wil-works/evoke-chat里,安装与注册见 Chatbot 对话窗口顶部说明。
基础用法
选中场景后输入台内出现可移除的场景 tag;能力开关可多选;发送后面板清空并交出上下文(下方演示直接展示载荷):
停止生成
stoppable 开启后,loading 期间发送钮切换为停止钮,点击触发 stop(AbortController 建议由请求方自持)。演示用 4 秒定时任务模拟一次生成:
输入内容并发送开始模拟生成
组合成工作台
需要完整 AI 工作台(欢迎标题 + 示例问题 + 会话流)时,直接使用编排组件 AiConsole,无需自行拼装。
AiPromptBox Props
| 参数 | 说明 | 类型 | 默认值 |
|---|---|---|---|
| v-model | 输入文本 | string | |
| placeholder | 占位文本;不传时取当前语言包(`eb.chat.promptBox.placeholder`) | string | — |
| disabled | 禁用整个输入台 | boolean | false |
| loading | 请求进行中;配合 stoppable 显示停止钮 | boolean | false |
| scenes | 场景定义(key / label / icon) | { key, label, icon? }[] | [] |
| v-model:scene | 当前场景 key;选中后输入台内显示可移除 tag | string | |
| capabilities | 能力开关定义(词汇表由使用方定) | { key, label, icon? }[] | [] |
| v-model:activeCapabilities | 激活的能力 key 集合 | string[] | [] |
| models | 模型注册表;非空时工具栏右侧(上下文长度之后)显示模型 pill | { key, label, icon? }[] | [] |
| v-model:model | 当前模型 key | string | |
| quota | 额度展示;传 null 不渲染。给了 percent 只渲染数值(如 `82%`),label 全文下沉到 aria/title | string | { label, percent } | null |
| showSettings | 工具行显示设置按钮 | boolean | false |
| allowAttachments | 允许附件 | boolean | true |
| maxAttachments | 附件数量上限 | number | 5 |
| accept | 附件类型白名单(.ext / mime/* / mime/type,逗号分隔);拖拽与粘贴路径同样按它校验 | string | — |
| maxFileSize | 单个附件字节上限,0 为不限 | number | 0 |
| allowDrop | 允许拖拽进输入台与粘贴剪贴板图片 | boolean | true |
| maxLength | 文本长度上限,真正约束 textarea;未传不限长 | number | — |
| showWordCount | 显示字数统计 | boolean | false |
| maxRows | 输入区最大行数(超出滚动) | number | 8 |
| sendOnEnter | Enter 发送、Shift+Enter 换行;输入法组字中的 Enter 交还输入法,不会误发 | boolean | true |
| stoppable | loading 时发送钮切换为停止钮 | boolean | false |
AiPromptBox Events
| 参数 | 说明 | 类型 | 默认值 |
|---|---|---|---|
| send | 发送,载荷含完整调用上下文 | ({ text, scene, capabilities, model, attachments }) => void | — |
| stop | 停止生成(stoppable 时) | () => void | — |
| update:scene / scene-change | 场景切换(含取消) | (key: string) => void | — |
| update:activeCapabilities / capability-change | 能力开关变化 | (keys: string[], key: string) => void | — |
| update:model / model-change | 模型切换 | (key: string) => void | — |
| quota-click | 点击额度胶囊 | () => void | — |
| settings-click | 点击设置按钮 | () => void | — |
| attachment-add | 附件通过校验后触发;第二参数是列表内的响应式对象,宿主回写 status / progress 即驱动 chip 显示上传中与失败 | (file: File, item) => void | — |
| attachment-reject | 附件被拒;reason 取 type / size / limit / empty,提示文案由宿主决定 | (file: File, reason: string) => void | — |
AiPromptBox Slots
| 参数 | 说明 | 类型 | 默认值 |
|---|---|---|---|
| toolbar-extra | 工具行左侧追加内容 | — | — |
| (窄容器降级,非 prop) | 输入台宽度 ≤560px 时(容器查询)能力项只留图标、额度只留数值;模型 pill 文本保留 | — | — |
| toolbar-meta | 工具行右侧追加内容(上下文占用、统计读数这类贴输入台的读数) | — | — |
| scenes-append | 场景 chips 行末尾追加 | — | — |