AI 平台
概述
AI 平台提供完整的 AI 应用开发能力,包括模型管理、知识库、AI 工作流、智能对话、提示词模板等。
架构设计
┌─────────────────────────────────────────────┐
│ AI 平台 │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ 模型管理 │ │ 知识库 │ │ AI 工作流 │ │
│ │ Provider │ │ Knowledge │ │ Workflow │ │
│ │ LLMModel │ │ Segment │ │ Node │ │
│ └────┬─────┘ └────┬─────┘ └────┬─────┘ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌──────────────────────────────────────┐ │
│ │ AI 应用 (AIApp) │ │
│ │ chatbot / agent / workflow │ │
│ └──────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────────────────────────┐ │
│ │ 对话管理 (Conversation) │ │
│ │ SSE 流式输出 / 历史管理 │ │
│ └──────────────────────────────────────┘ │
└─────────────────────────────────────────────┘数据模型
模型管理
| 模型 | 表名 | 说明 |
|---|---|---|
LLMProvider | ai_llm_provider | 模型供应商(OpenAI、百度、阿里等) |
LLMModel | ai_llm_model | 具体模型配置 |
LLMProvider 字段:name, provider_type, api_key, api_base, is_active, config(JSONB)
LLMModel 字段:provider_id, name, model_name, model_type(chat/completion/embedding/rerank), is_active, max_tokens, config(JSONB)
支持的模型类型:
| model_type | 说明 | 用途 |
|---|---|---|
chat | 对话模型 | 聊天、推理、生成 |
completion | 补全模型 | 文本补全 |
embedding | 向量模型 | 文本向量化 |
rerank | 重排序模型 | 检索结果重排序 |
AI 应用
| 模型 | 表名 | 说明 |
|---|---|---|
AIApp | ai_app | AI 应用 |
AIAgent | ai_agent | AI Agent 配置 |
AIApp 字段:name, app_type(chatbot/agent/workflow), description, icon, model_id, system_prompt, temperature, max_tokens, knowledge_base_ids, tools_config, is_published
对话管理
| 模型 | 表名 | 说明 |
|---|---|---|
Conversation | ai_conversation | 对话会话 |
Message | ai_message | 对话消息 |
AI 工作流
| 模型 | 表名 | 说明 |
|---|---|---|
AIWorkflow | ai_workflow | AI 工作流定义 |
AIWorkflow 字段:name, description, flow_definition(JSONB), is_published, version
知识库
模块结构
knowledge/
├── models/
│ ├── knowledge_base.py # 知识库模型
│ ├── knowledge_segment.py # 分段模型
│ └── annotation_model.py # Q&A 标注模型
├── schemas/ # Pydantic Schema
├── services/
│ ├── indexing_service.py # 索引服务
│ ├── retrieval_service.py # 检索服务
│ ├── rerank_service.py # Rerank 重排序
│ ├── cleaning_service.py # 文本清洗
│ └── indexing_progress_service.py # 索引进度 SSE
├── chunking/
│ ├── text_chunker.py # 文本分块
│ └── qa_chunker.py # Q&A 自动拆分
└── vector_store/ # 向量存储(Qdrant)索引流程
文件上传 → 文本提取 → 文本清洗 → 分块 → 向量化 → 存入 Qdrant
↓
清洗规则:
- 合并空格
- 移除 URL/邮箱
- 移除 HTML 标签
- 合并空行
- 去行尾空白分块策略
| 策略 | 说明 |
|---|---|
| 文本分块 | 按固定大小/自然段落分块 |
| Q&A 拆分 | 使用 LLM 将文本拆分为问答对 |
检索与 Rerank
python
results = await RetrievalService.retrieve(
db=db,
knowledge_base_ids=["kb_1", "kb_2"],
query="如何请假",
top_k=5,
score_threshold=0.5,
rerank_enabled=True,
rerank_model_id="rerank_model_1"
)Rerank 流程:初始检索 3x 候选 → Rerank 重排序 → 截断到 top_k
索引技术
| indexing_technique | 说明 |
|---|---|
high_quality | 标准模式:Embedding + Qdrant 向量检索 |
economy | 经济模式:跳过 Embedding,使用关键词全文检索 |
Q&A 标注
手动创建问答对,检索时优先匹配标注结果:
POST /knowledge/{kb_id}/annotations
{
"question": "如何请假?",
"answer": "进入工作流-发起流程,选择请假流程..."
}创建时自动向量化 question,检索时优先匹配标注。
AI 工作流节点
基础节点
| 节点 | 说明 |
|---|---|
start | 开始节点,定义输入变量 |
end | 结束节点,定义输出 |
llm | LLM 调用,支持系统提示词 + 用户输入 |
knowledge_retrieval | 知识库检索 |
code | 代码执行(Python) |
template | 模板渲染 |
variable | 变量赋值 |
http | HTTP 请求 |
database | 数据库操作 |
流程控制节点
| 节点 | 说明 |
|---|---|
condition | 条件分支 |
parallel | 并行执行 |
merge | 合并节点 |
loop | 循环节点 |
intent | 意图识别 |
subflow | 子流程调用 |
业务功能节点
| 节点 | 说明 |
|---|---|
form_create | 创建表单 |
form_basic_info | 表单基本信息 |
form_ui_design | 表单 UI 设计 |
form_database_design | 表单数据库设计 |
form_database_create | 创建数据库表 |
form_list_design | 表单列表设计 |
form_publish | 发布表单 |
form_data | 表单数据操作 |
dashboard_create | 创建仪表盘 |
dashboard_basic_info | 仪表盘基本信息 |
dashboard_design | 仪表盘设计 |
dashboard_publish | 发布仪表盘 |
app_create | 创建应用 |
app_design | 应用设计 |
app_settings | 应用设置 |
app_update | 更新应用 |
text_to_sql | 自然语言转 SQL |
dialog | 对话交互(确认/输入/选择) |
system_summary | 系统摘要 |
snowflake_cortex | Snowflake Cortex 集成 |
子流程节点
- 调用已发布的 AI 工作流作为子流程
- 变量传递模式:
all/selected/none - 结果传递模式:
all/selected/none - 循环依赖检测
- 最大嵌套深度:5 层
对话服务
SSE 流式输出
GET /api/core/ai/chat/stream?conversation_id=xxx&message=你好
event: message
data: {"content": "你", "type": "text"}
event: message
data: {"content": "好", "type": "text"}
event: done
data: {"message_id": "xxx"}对话历史
自动管理对话上下文,支持:
- 创建/删除会话
- 消息历史分页查询
- 上下文窗口控制
API 列表
模型管理
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /ai/providers | 供应商列表 |
| POST | /ai/providers | 创建供应商 |
| GET | /ai/models | 模型列表 |
| POST | /ai/models | 创建模型 |
| POST | /ai/models/{id}/test | 测试模型 |
AI 应用
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /ai/apps | 应用列表 |
| POST | /ai/apps | 创建应用 |
| POST | /ai/apps/{id}/publish | 发布应用 |
知识库
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /ai/knowledge | 知识库列表 |
| POST | /ai/knowledge | 创建知识库 |
| POST | /ai/knowledge/{id}/documents | 上传文档 |
| GET | /ai/knowledge/{id}/segments | 分段列表 |
| GET | /ai/knowledge/{id}/indexing/progress | 索引进度(SSE) |
| POST | /ai/knowledge/{id}/annotations | 创建 Q&A 标注 |
AI 工作流
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /ai/workflows | 工作流列表 |
| POST | /ai/workflows | 创建工作流 |
| POST | /ai/workflows/{id}/run | 运行工作流 |
| POST | /ai/workflows/{id}/publish | 发布工作流 |
对话
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /ai/conversations | 会话列表 |
| POST | /ai/conversations | 创建会话 |
| GET | /ai/chat/stream | 流式对话(SSE) |