news 2026/4/23 11:10:32

CodeSpirit.Amis.AiForm 智能表单使用指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CodeSpirit.Amis.AiForm 智能表单使用指南

目录

概述

功能特点

使用方法

1. 控制器端配置

2. AI表单特有属性

3. 后端服务实现

3.1 AI任务服务

3.2 AI生成服务

3.3 状态查询API

UI界面说明

界面结构

交互流程

轮询机制

任务状态

AiTaskStatus 枚举

AiTaskStatusDto 结构

最佳实践

1. 任务管理

2. 进度报告

3. 超时设置

4. 用户体验

错误处理

常见错误

调试技巧

示例代码


概述

AiForm是 CodeSpirit.Amis 框架的智能表单功能,专为AI驱动的长时间处理任务设计。它自动生成一个多步骤的用户界面,包含表单输入、进度监控、日志显示和结果展示等功能。

功能特点

  • 🎯自动化UI生成:基于@OperationAttribute自动生成完整的AI表单界面

  • 📊多步骤界面:表单面板、步骤进度、日志面板、结果展示

  • 🔄实时轮询:自动轮询AI任务状态,实时更新进度和日志

  • ⏱️超时控制:支持自定义轮询间隔和最大轮询时间

  • 🚀异步处理:避免长时间AI响应导致的请求超时

使用方法

1. 控制器端配置

在控制器方法上使用@HeaderOperation特性:

ounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(line [HttpPost("ai/generate-async")] [HeaderOperation("AI智能生成问卷", "aiForm", Icon = "fa-solid fa-magic", StatusApi = "/survey/api/survey/Surveys/ai/task-status", PollingInterval = 2000, MaxPollingTime = 300000, FormTitle = "问卷生成配置", StepsTitle = "AI生成进度", LogTitle = "生成日志", ResultTitle = "生成结果")] [DisplayName("AI智能生成问卷")] public async Task<ActionResult<ApiResponse<string>>> GenerateSurveyAsync([FromBody] GenerateSurveyRequest request) { var taskId = await _surveyAiGeneratorService.GenerateAsync(request); return SuccessResponse(taskId); }

2. AI表单特有属性

属性

类型

默认值

说明

StatusApi

string

-

必填

,AI任务状态查询API地址

PollingInterval

int

2000

轮询间隔(毫秒)

MaxPollingTime

int

300000

最大轮询时间(毫秒)

SuccessRedirect

string

-

成功后跳转的URL

FormTitle

string

"配置信息"

表单面板标题

StepsTitle

string

"处理进度"

步骤面板标题

LogTitle

string

"处理日志"

日志面板标题

ResultTitle

string

"处理结果"

结果面板标题

3. 后端服务实现

3.1 AI任务服务

实现IAiTaskService接口用于管理任务状态:

ounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(line public class AiTaskService : IAiTaskService, ISingletonDependency { public async Task<string> CreateTaskAsync(string taskType, object parameters) { // 创建任务并返回任务ID } public async Task<AiTaskStatusDto?> GetTaskStatusAsync(string taskId) { // 返回任务状态信息 } // 其他方法实现... }
3.2 AI生成服务

继承BaseAiGeneratorService基类:

ounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(line public class SurveyAiGeneratorService : BaseAiGeneratorService<GenerateSurveyRequest, GeneratedSurveyDto>, IScopedDependency { protected override string GetTaskType() => "问卷生成"; protected override async Task<GeneratedSurveyDto> DoGenerateAsync( GenerateSurveyRequest request, Action<double, string>? progressCallback = null) { // 实现具体的AI生成逻辑 // 使用 progressCallback 报告进度 progressCallback?.Invoke(0.3, "正在分析需求..."); // 生成逻辑... return generatedSurvey; } }
3.3 状态查询API

创建状态查询接口:​​​​​​​

ounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(line [HttpGet("ai/task-status")] [DisplayName("获取AI任务状态")] public async Task<ActionResult<ApiResponse<AiTaskStatusDto>>> GetTaskStatus([FromQuery] string taskId) { var status = await _aiTaskService.GetTaskStatusAsync(taskId); if (status == null) { return BadResponse<AiTaskStatusDto>("任务不存在", statusCode: 404); } return SuccessResponse(status); }

UI界面说明

界面结构

AI表单生成的界面包含4个标签页:

  1. 表单面板:显示输入表单和"开始生成"按钮

  2. 步骤面板:显示4步进度条(初始化 → AI处理 → 结果处理 → 完成)

  3. 日志面板:实时显示任务执行日志

  4. 结果面板:显示任务状态、进度、耗时和最终结果

交互流程

  1. 用户在表单面板填写参数

  2. 点击"开始生成"按钮

  3. 自动切换到步骤面板显示进度

  4. 实时更新日志面板的执行日志

  5. 完成后在结果面板显示结果和详情链接

轮询机制

使用Amis的标准事件动作系统实现:

  • 循环动作:使用loop动作类型进行循环轮询

  • 等待间隔:使用wait动作设置轮询间隔(PollingInterval毫秒)

  • AJAX查询:使用ajax动作查询任务状态

  • 条件判断:使用condition动作检查任务状态并执行相应操作

  • 自动停止:任务完成或失败时自动停止轮询

  • 超时控制:最大循环次数为MaxPollingTime / PollingInterval

任务状态

AiTaskStatus 枚举

  • Pending(0):待开始

  • InProgress(1):进行中

  • Completed(2):已完成

  • Failed(3):失败

  • Cancelled(4):已取消

AiTaskStatusDto 结构

ounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(line public class AiTaskStatusDto { public string TaskId { get; set; } // 任务ID public AiTaskStatus Status { get; set; } // 任务状态 public string StatusText { get; set; } // 状态描述 public int Step { get; set; } // 当前步骤(0-3) public int Progress { get; set; } // 进度百分比(0-100) public List<string> Logs { get; set; } // 任务日志 public object? Result { get; set; } // 任务结果 public DateTime StartTime { get; set; } // 开始时间 public DateTime? EndTime { get; set; } // 结束时间 public string ElapsedTime { get; set; } // 耗时显示 public string? DetailUrl { get; set; } // 结果详情页URL }

​​​​​​​​​​​​​​最佳实践

1. 任务管理

  • 使用ISingletonDependency确保任务状态在应用程序生命周期内保持

  • 定期清理过期的任务记录

  • 对于分布式部署,考虑使用Redis存储任务状态

2. 进度报告

  • 在AI生成过程中适时调用progressCallback报告进度

  • 日志消息应该简洁明了,便于用户理解

  • 错误处理要及时更新任务状态为失败

3. 超时设置

  • 根据实际AI响应时间合理设置MaxPollingTime

  • PollingInterval不宜设置过小,避免频繁请求

  • 考虑网络延迟因素调整轮询参数

4. 用户体验

  • 提供有意义的状态文本和日志信息

  • 完成后提供合适的详情页面链接

  • 支持任务取消功能(可选)

错误处理

常见错误

  1. 依赖注入错误:确保IAiTaskService和具体的AI生成服务已正确注册

  2. 状态API找不到:检查StatusApi路径是否正确

  3. 轮询超时:适当增加MaxPollingTime

  4. 任务丢失:检查任务存储机制,确保任务状态持久化

调试技巧

  • 查看浏览器网络面板的轮询请求

  • 检查后端日志的任务创建和状态更新

  • 使用开发者工具监控前端状态更新

示例代码

完整的示例可以参考:

  • Src/ApiServices/CodeSpirit.SurveyApi/Controllers/SurveysController.cs

  • Src/ApiServices/CodeSpirit.SurveyApi/Services/Implementations/SurveyAiGeneratorService.cs

  • Src/CodeSpirit.Shared/Services/AiTaskService.cs


通过 AI表单功能,您可以轻松为长时间运行的AI任务创建用户友好的界面,提供实时反馈和进度监控,显著提升用户体验。

引入地址

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 22:23:09

Unsloth vs 传统微调:显存降低70%的GPU优化实战对比案例

Unsloth vs 传统微调&#xff1a;显存降低70%的GPU优化实战对比案例 1. 为什么微调大模型总卡在显存上&#xff1f; 你是不是也遇到过这样的情况&#xff1a;想给Llama-3或Qwen微调一个专属模型&#xff0c;刚跑几轮就报错“CUDA out of memory”&#xff1f;明明有24G显存的…

作者头像 李华
网站建设 2026/4/20 6:42:55

人像占比大?BSHM镜像处理效果超出预期

人像占比大&#xff1f;BSHM镜像处理效果超出预期 你有没有遇到过这样的情况&#xff1a;一张精心拍摄的人像照片&#xff0c;背景杂乱、光线不均&#xff0c;想换背景却卡在抠图这一步&#xff1f;用传统工具费时费力&#xff0c;AI工具又常常把头发丝、透明纱裙、飘动发丝边…

作者头像 李华
网站建设 2026/4/18 7:58:46

科哥版FSMN VAD功能测评:中文语音检测表现如何

科哥版FSMN VAD功能测评&#xff1a;中文语音检测表现如何 1. 为什么需要专门测中文VAD&#xff1f;不是所有语音检测都一样 1.1 语音活动检测&#xff08;VAD&#xff09;到底在做什么 你可能用过语音助手&#xff0c;也听过“请开始说话”的提示音——但你有没有想过&…

作者头像 李华
网站建设 2026/3/26 16:22:46

AI编程助手智能协作:Claude Coder零基础配置指南

AI编程助手智能协作&#xff1a;Claude Coder零基础配置指南 【免费下载链接】claude-coder Kodu is an autonomous coding agent that lives in your IDE. It is a VSCode extension that can help you build your dream project step by step by leveraging the latest techn…

作者头像 李华
网站建设 2026/4/16 11:48:21

build-your-own-x:从零构建技术项目的实战指南

build-your-own-x&#xff1a;从零构建技术项目的实战指南 【免费下载链接】build-your-own-x 这个项目是一个资源集合&#xff0c;旨在提供指导和灵感&#xff0c;帮助用户构建和实现各种自定义的技术和项目。 项目地址: https://gitcode.com/GitHub_Trending/bu/build-your…

作者头像 李华
网站建设 2026/4/19 0:39:12

3步掌握离线音频转文字:Buzz新手实战指南

3步掌握离线音频转文字&#xff1a;Buzz新手实战指南 【免费下载链接】buzz Buzz transcribes and translates audio offline on your personal computer. Powered by OpenAIs Whisper. 项目地址: https://gitcode.com/GitHub_Trending/buz/buzz 本地音频处理不再依赖云…

作者头像 李华