作为一名技术人,我深知大家最关心的不是“有没有AI”,而是“AI怎么实现的?代码质量怎么样?二次开发难不难?”

今天,我就从技术架构代码实现两个维度,深度拆解“海创科技城智慧园区”中的 park-agent(AI智能体)模块

一、为什么要在园区系统中引入大模型?

传统园区系统的痛点:

  • 数据多但洞察少:每天产生海量告警、工单、设备日志,但缺乏智能分析

  • 决策依赖人经验:派单、处置、调度全靠人工判断,效率低下

  • 交互方式单一:只能点点点,不能“问一问”

引入大模型后,以上问题迎刃而解。

二、park-agent 模块架构设计

整体架构分层:

text

┌─────────────────────────────────────────────────────────┐
│                    前端展示层                           │
│    admin-vue3 (/views/agent)   │   uniapp (AI助手页)  │
├─────────────────────────────────────────────────────────┤
│                    API网关层                           │
│           Spring Cloud Gateway 路由转发                │
├─────────────────────────────────────────────────────────┤
│                 业务逻辑层 (park-agent)                 │
│  ┌────────────┬────────────┬────────────┬───────────┐ │
│  │ 智能研判   │ 模型配置   │ 对话服务   │ Prompt管理 │ │
│  ├────────────┼────────────┼────────────┼───────────┤ │
│  │ 安全分析   │ GLM接入   │ 上下文管理 │ 模板引擎  │ │
│  │ 效率分析   │ 参数调优   │ 流式输出   │ 变量替换  │ │
│  └────────────┴────────────┴────────────┴───────────┘ │
├─────────────────────────────────────────────────────────┤
│                   大模型接入层                          │
│  ┌─────────────────────────────────────────────────────┐│
│  │           LLM Provider 接口 (可扩展)               ││
│  ├──────────────┬──────────────┬─────────────────────┤│
│  │ 智谱GLM实现  │ 百度文心实现 │ 阿里通义实现 (预留) ││
│  └──────────────┴──────────────┴─────────────────────┘│
├─────────────────────────────────────────────────────────┤
│              数据与业务中台层                           │
│  ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┐ │
│  │告警  │工单  │设备  │能耗  │停车  │访客  │巡检  │ │
│  └──────┴──────┴──────┴──────┴──────┴──────┴──────┘ │
└─────────────────────────────────────────────────────────┘
三、核心代码实现亮点

1. 大模型接入的抽象设计(开闭原则典范)

java

// 定义通用LLM Provider接口
public interface LlmProvider {
    // 同步对话
    ChatResponse chat(ChatRequest request);
    // 流式对话(SSE)
    void chatStream(ChatRequest request, SseEmitter emitter);
    // 获取模型信息
    ModelInfo getModelInfo();
}

// 智谱GLM具体实现
@Component
@ConditionalOnProperty(name = "agent.llm.provider", havingValue = "zhipu")
public class ZhipuLlmProvider implements LlmProvider {
    // 已实现完整对接
}

// 未来扩展百度文心只需新增实现类
// public class BaiduLlmProvider implements LlmProvider {}

2. 智能研判核心逻辑

java

@Service
public class IntelligenceAnalysisService {
    
    // 安全态势智能分析
    public SafetyReport analyzeSafety() {
        // 1. 采集数据:近30天告警、工单、设备状态
        // 2. 构建Prompt:将数据注入模板
        // 3. 调用大模型:获取分析结果
        // 4. 解析返回:提取结构化建议
        // 5. 持久化存储:记录分析历史
    }
}

3. Prompt模板管理

sql

-- 支持动态配置的Prompt模板
CREATE TABLE agent_prompt_template (
    id BIGINT PRIMARY KEY,
    template_code VARCHAR(50),  -- safety_analysis / efficiency_analysis
    template_name VARCHAR(100),
    template_content TEXT,      -- 支持 ${变量} 替换
    variables JSON,             -- 模板变量定义
    status TINYINT
);
四、后台管理界面(views/agent

我们已经完成了完整的AI管理后台:

页面功能
AI仪表盘模型调用次数、Token消耗、响应时间监控
模型配置选择模型、调整参数(Temperature等)
智能研判查看历史分析报告、手动触发研判
Prompt管理模板列表、编辑、测试
对话记录用户与大模型的完整对话历史
五、二次开发指南

场景1:替换成百度文心大模型

  1. 新建 BaiduLlmProvider 实现 LlmProvider 接口

  2. 在 application.yml 中配置 agent.llm.provider=baidu

  3. 无需修改任何业务代码,开闭原则完美体现

场景2:新增一个“智能巡检建议”功能

  1. 在 AgentController 新增接口

  2. 编写对应的Prompt模板

  3. 调用 LlmProvider.chat() 获取结果

  4. 前端 views/agent 新增菜单即可

六、部署与性能优化建议
  • 并发控制:大模型接口响应较慢(3-5秒),使用 @Async 异步处理 + WebSocket/SSE 推送结果

  • 缓存策略:相同查询条件的结果缓存1小时,减少API调用费用

  • 成本控制:后台可配置每日调用上限,防止费用超支

  • 降级方案:大模型不可用时,自动降级为规则引擎分析

七、源码获取

🎯 你不需要自己对接各家大模型的API,我们已经帮你封装好了!

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐