ys 48e19cb154 feat: 文件管理预览增强和AI聊天代码高亮 4 days ago
..
.github b9ad063dc3 1 4 days ago
sql b9ad063dc3 1 4 days ago
yushu-admin 48e19cb154 feat: 文件管理预览增强和AI聊天代码高亮 4 days ago
yushu-common b9ad063dc3 1 4 days ago
yushu-framework b9ad063dc3 1 4 days ago
yushu-generator b9ad063dc3 1 4 days ago
yushu-quartz b9ad063dc3 1 4 days ago
yushu-system b9ad063dc3 1 4 days ago
.gitignore b9ad063dc3 1 4 days ago
API-TEST-GUIDE.md b9ad063dc3 1 4 days ago
FINAL-COMPILATION-STATUS.md b9ad063dc3 1 4 days ago
LOMBOK-FIX.md b9ad063dc3 1 4 days ago
QUICK-FIX-SUMMARY.md b9ad063dc3 1 4 days ago
QUICK-START-TEST.md b9ad063dc3 1 4 days ago
README-AI.md b9ad063dc3 1 4 days ago
README-NEW-MESSAGE-SYSTEM.md b9ad063dc3 1 4 days ago
README.md e40d8df13c 5 4 days ago
SQL-ERROR-FIX.md b9ad063dc3 1 4 days ago
TEST-NEW-SYSTEM.md b9ad063dc3 1 4 days ago
compile-test.md b9ad063dc3 1 4 days ago
pom.xml b9ad063dc3 1 4 days ago
ys.bat b9ad063dc3 1 4 days ago
ys.sh b9ad063dc3 1 4 days ago

README-AI.md

AI 模块 - 服务注册表模式

SQL文件: sql/ai.sql
旧版(废弃): sql/ai-complete-deprecated.sql

🎯 设计理念

核心原则:配置驱动 + 抽象统一接口

❌ 旧版:厂商表 → 模型表 → 配置表(三层实体 + 多张表 + 多步操作)
✅ 简化版:一个服务表 + 一个统一接口 + 一个服务ID

新增 AI = 插入一行配置 = 5分钟搞定!


📦 架构对比

旧版(复杂)

ai_provider (厂商表)
    ↓
ai_model (模型表,关联厂商)
    ↓
ai_model_config (配置表,关联模型)
    ↓
ai_conversation / ai_message (对话表)

简化版

ai_service (服务表,合并厂商+模型+配置)
    ↓
ai_conversation / ai_message (对话表)

🗂️ 数据库结构

ai_service 服务表(核心)

字段 类型 说明
service_id BIGINT 服务ID
service_name VARCHAR(100) 服务名称(如:GPT-4o)
service_code VARCHAR(50) 服务代码(唯一,如:openai-gpt4o)
provider VARCHAR(50) 厂商标识(openai/zhipu/alibaba等)
provider_name VARCHAR(50) 厂商名称
model_code VARCHAR(100) 模型代码(gpt-4o/glm-4等)
api_url VARCHAR(500) API地址
api_key VARCHAR(500) API密钥
temperature DECIMAL(3,2) 温度参数
max_tokens INT 最大Token数
system_prompt TEXT 系统提示词
supports_stream CHAR(1) 支持流式:0=否 1=是
supports_vision CHAR(1) 支持视觉:0=否 1=是
enabled CHAR(1) 是否启用:0=否 1=是
is_default CHAR(1) 是否默认:0=否 1=是

🚀 快速添加新 AI

方式一:SQL 插入

INSERT INTO ai_service (
  service_name, service_code, provider, provider_name, model_code,
  api_url, api_key, temperature, max_tokens, enabled, create_time
) VALUES (
  'Claude 3.5 Sonnet',           -- 服务名称
  'claude-sonnet',               -- 服务代码(唯一)
  'anthropic',                   -- 厂商标识
  'Anthropic',                   -- 厂商名称
  'claude-3-5-sonnet-20241022',  -- 模型代码
  'https://api.anthropic.com/v1/messages',  -- API地址
  'sk-xxx',                      -- API密钥
  0.7,                           -- 温度
  4096,                          -- 最大Token
  '1',                           -- 启用
  NOW()
);

方式二:管理界面

  1. 进入 AI助手 → 服务配置
  2. 点击 新增
  3. 填写:服务名称、服务代码、选择厂商、模型代码、API地址、API密钥
  4. 保存即可

📁 代码结构

后端

yushu-system/
├── domain/AiService.java          # 服务实体
├── mapper/AiServiceMapper.java    # Mapper接口
├── service/IAiServiceService.java # Service接口
└── service/impl/AiServiceServiceImpl.java

yushu-admin/controller/
└── AiServiceController.java       # 服务管理API

前端

src/api/system/ai/
└── service.js                     # 服务管理API

src/views/system/ai/
├── service/index.vue              # 服务配置页面
└── chat/index.vue                 # 对话页面(已更新)

🔧 API 接口

服务管理

方法 路径 说明
GET /system/ai/service/list 查询服务列表
GET /system/ai/service/enabled 查询已启用服务(下拉框)
GET /system/ai/service/{id} 获取服务详情
POST /system/ai/service 新增服务
PUT /system/ai/service 修改服务
DELETE /system/ai/service/{ids} 删除服务
PUT /system/ai/service/default/{id} 设为默认服务

对话(更新)

方法 路径 说明
POST /system/ai/chat/send 发送消息(使用 serviceId)
POST /system/ai/chat/conversation 创建会话(使用 serviceId)

✅ 预置服务

SQL 已包含以下 AI 服务配置(只需填入 API Key):

服务名称 厂商 模型代码
GPT-4o OpenAI gpt-4o
GPT-4o Mini OpenAI gpt-4o-mini
GPT-3.5 Turbo OpenAI gpt-3.5-turbo
GLM-4 智谱AI glm-4
GLM-4-Flash 智谱AI glm-4-flash
通义千问-Max 阿里云 qwen-max
Kimi 128K 月之暗面 moonshot-v1-128k
DeepSeek Chat DeepSeek deepseek-chat
Claude 3.5 Sonnet Anthropic claude-3-5-sonnet
Ollama Llama3 本地部署 llama3

🔄 迁移指南

如果从旧版迁移:

  1. 执行 sql/ai-service-simplified.sql
  2. 将旧的 ai_model_config 数据导入 ai_service
  3. 更新前端代码使用新 API
  4. (可选)删除旧表

🎉 好处总结

优势 说明
极简操作 新增AI只需一条SQL或填一个表单
统一抽象 所有AI共用相同接口,无需关心厂商差异
配置驱动 不改代码即可接入新模型
易于维护 单表设计,无复杂关联
支持本地部署 Ollama、vLLM 等本地模型同样支持

YuShu Team © 2024