探究:鱼皮“零代码应用生成平台” AI 驱动的智能决策系统原理

最近在研究鱼皮大佬的项目零代码应用生成平台,对于项目模式自动决策很感兴趣,能自动根据用户的需求自动确定前端该用那种模式

以下是借助cursor的回答:

codeGenType 自动确定机制详解

1. 整体流程

codeGenType 的自动确定是通过 AI 智能路由服务 实现的,整个流程如下:

复制代码
用户输入提示词 → AI 路由服务分析 → 自动选择生成类型 → 保存到数据库 → 前端显示

2. 核心组件

2.1 AI 路由服务接口

src/main/java/com/yupi/yuaicodemother/ai/AiCodeGenTypeRoutingService.java

java 复制代码
@SystemMessage(fromResource = "prompt/codegen-routing-system-prompt.txt")
CodeGenTypeEnum routeCodeGenType(String userPrompt);

2.2 路由服务工厂

java:src/main/java/com/yupi/yuaicodemother/ai/AiCodeGenTypeRoutingServiceFactory.java 复制代码
public AiCodeGenTypeRoutingService createAiCodeGenTypeRoutingService() {
    ChatModel chatModel = SpringContextUtil.getBean("routingChatModelPrototype", ChatModel.class);
    return AiServices.builder(AiCodeGenTypeRoutingService.class)
            .chatModel(chatModel)
            .build();
}

3. 自动确定时机

codeGenType应用创建时 自动确定,具体在 AppServiceImpl.createApp() 方法中:

src/main/java/com/yupi/yuaicodemother/service/impl/AppServiceImpl.java

java 复制代码
@Override
public Long createApp(AppAddRequest appAddRequest, User loginUser) {
    // ... 参数校验和对象构造 ...
    
    // 使用 AI 智能选择代码生成类型(多例模式)
    AiCodeGenTypeRoutingService aiCodeGenTypeRoutingService = 
        aiCodeGenTypeRoutingServiceFactory.createAiCodeGenTypeRoutingService();
    CodeGenTypeEnum selectedCodeGenType = 
        aiCodeGenTypeRoutingService.routeCodeGenType(initPrompt);
    app.setCodeGenType(selectedCodeGenType.getValue());
    
    // ... 保存到数据库 ...
}

4. AI 决策逻辑

AI 路由服务基于系统提示词进行决策:

src/main/resources/prompt/codegen-routing-system-prompt.txt

txt 复制代码
你是一个专业的代码生成方案路由器,需要根据用户需求返回最合适的代码生成类型。

可选的代码生成类型:
1. HTML - 适合简单的静态页面,单个 HTML 文件,包含内联 CSS 和 JS
2. MULTI_FILE - 适合简单的多文件静态页面,分离 HTML、CSS、JS 代码
3. VUE_PROJECT - 适合复杂的现代化前端项目

判断规则:
- 如果用户需求简单,只需要一个展示页面,选择 HTML
- 如果用户需要多个页面但不涉及复杂交互,选择 MULTI_FILE
- 如果用户需求复杂,涉及多页面、复杂交互、数据管理等,选择 VUE_PROJECT

5. 生成类型枚举

系统支持三种代码生成类型:

java:src/main/java/com/yupi/yuaicodemother/model/enums/CodeGenTypeEnum.java 复制代码
public enum CodeGenTypeEnum {
    HTML("原生 HTML 模式", "html"),
    MULTI_FILE("原生多文件模式", "multi_file"),
    VUE_PROJECT("Vue 工程模式", "vue_project");
}

6. 前端显示

前端通过 formatCodeGenType 函数格式化显示:

yu-ai-code-mother-frontend/src/utils/codeGenTypes.ts

typescript 复制代码
export const formatCodeGenType = (type: string | undefined): string => {
  if (!type) return '未知类型'
  
  const config = CODE_GEN_TYPE_CONFIG[type as CodeGenTypeEnum]
  return config ? config.label : type
}

7. 工作流程示例

7.1 简单需求 → HTML 类型

arduino 复制代码
用户输入:"做一个简单的个人介绍页面"
AI 分析:简单展示页面,无复杂交互
决策结果:HTML

7.2 中等需求 → MULTI_FILE 类型

arduino 复制代码
用户输入:"做一个公司官网,需要首页、关于我们、联系我们三个页面"
AI 分析:多页面但相对简单
决策结果:MULTI_FILE

7.3 复杂需求 → VUE_PROJECT 类型

arduino 复制代码
用户输入:"做一个电商管理系统,包含用户管理、商品管理、订单管理,需要路由和状态管理"
AI 分析:复杂业务逻辑,需要现代化框架
决策结果:VUE_PROJECT

8. 容错机制

如果 AI 路由失败,系统会使用默认类型:

src/main/java/com/yupi/yuaicodemother/langgraph4j/node/RouterNode.java

java 复制代码
try {
    generationType = routingService.routeCodeGenType(context.getOriginalPrompt());
    log.info("AI智能路由完成,选择类型: {} ({})", generationType.getValue(), generationType.getText());
} catch (Exception e) {
    log.error("AI智能路由失败,使用默认HTML类型: {}", e.getMessage());
    generationType = CodeGenTypeEnum.HTML; // 默认使用 HTML 类型
}

9. 技术特点

  • AI 驱动:基于大语言模型的智能决策
  • 实时分析:根据用户输入动态确定
  • 多例模式:每次创建新的路由服务实例
  • 类型安全:完整的 TypeScript 类型支持
  • 容错处理:AI 失败时的降级策略

总结

codeGenType 的自动确定是一个 AI 驱动的智能决策系统,它通过分析用户的自然语言描述,自动选择最合适的代码生成策略。这种设计让用户无需关心技术细节,只需要描述需求,系统就能自动选择最优的代码生成方案。

相关推荐
Running_slave7 分钟前
Web跨标签页通信应该怎么玩?
javascript·css·后端
二闹17 分钟前
如何精确记录用户操作行为?Spring AOP实现日志审计方案
后端
CYRUS_STUDIO1 小时前
Miniconda 全攻略:优雅管理你的 Python 环境
前端·后端·python
用户298698530141 小时前
如何使用 Spire.Doc 删除 Word 中的表格?
后端
blueblood1 小时前
🗄️ JFinal 项目在 IntelliJ IDEA 中的 Modules 配置指南
java·后端
lovebugs1 小时前
Kubernetes 实战:Java 应用配置与多环境管理
后端·面试·kubernetes
赵得C2 小时前
Java 多线程环境下的全局变量缓存实践指南
java·开发语言·后端·spring·缓存
打不过快跑3 小时前
YOLO 入门实战(二):用自定义数据训练你的第一个检测模型
人工智能·后端·python
敲代码的火锅3 小时前
基于pyroscope-go项目性能数据持续收集
后端·go
码事漫谈3 小时前
VS Code C#调试完全指南
后端