本项目是一个基于 Koa2、SQL Server 和 Ollama (本地大模型) 构建的智能业务助理系统。它通过三层 (Layer) 语义解析架构,将模糊的自然语言指令精准转化为结构化的数据库操作。
系统将一次用户输入拆解为三次连续的 Ollama 逻辑推理,确保操作的精准度:
- Layer 1 (Category): 识别业务模块。根据插件定义的
@Module和@Desc,判断指令该由哪个业务模块处理。 - Layer 2 (Action): 识别具体动作。在选定模块内,判断具体意图(如:查询列表、修改信息、新增记录)。
- Layer 3 (Args Extraction): 核心解析层。AI 接收插件定义的
@ArgTemp(标准请求示例),将用户口语“翻译”并填充进 JSON 模版,同时自动处理“第二个”、“上一个”等上下文指代逻辑。
| 目录/文件 | 说明 |
|---|---|
/plugins |
业务扩展区。放置插件文件,AI 会自动扫描其元数据并学习新技能。 |
/services/agent |
调度中心。包含三层解析逻辑 (layer1-3) 及 Ollama 适配器。 |
/db |
数据库工具。封装了对 SQL Server 的查询与参数化支持。 |
/public |
管理界面。基于 Vue3 实时展示 AI 的每一步推理日志与执行结果。 |
app.js |
后端入口。负责路由自动挂载、中间件配置与服务启动。 |
- 安装 Ollama: 访问 ollama.com 下载并安装服务端。
- 下载模型: 终端运行
ollama run qwen2.5:3b(推荐使用 3b 或 7b 版本以兼顾速度与准确率)。 - 数据库: 确保 SQL Server 已启动,并准备好相应的业务数据表。
-
修改配置:
- 在
/db/config.js填入你的 SQL Server 连接信息。 - 在
/services/agent/aiProvider.js检查 Ollama 的 API 地址。
- 在
-
安装依赖:
npm install
npm start- 启动后,访问 http://localhost:3000 即可通过对话框下达指令。
- 模糊查询: "帮我看看最近有哪些待处理的单子"
- 指代消解: "把第二个订单的金额改成 1200"(系统自动从历史查询结果中提取目标 ID)
- 复杂新增: "新加一个客户叫张三,单号是 SN1024,金额 88"
- 稳定性: aiProvider.js 中的 temperature 建议设为 0,以确保参数提取的严谨性。
- 热插拔: 只要在 /plugins 下添加符合规范的 .js 文件,系统无需重启(或仅需简单刷新)即可识别新功能。
- 安全性: 所有的数据库操作均在插件的 handler 中通过参数化查询实现,有效防止 SQL 注入。