62 lines
2.7 KiB
Markdown
62 lines
2.7 KiB
Markdown
# 第八阶段:AI 底座与教师端对话
|
||
|
||
状态:基础包和边界已引入,业务接口待实现。
|
||
|
||
## 使用场景
|
||
|
||
### 租户教师 AI 对话
|
||
|
||
- 教师在租户后台发起对话。
|
||
- AI 根据当前租户 Provider 配置调用模型。
|
||
- 对话历史按租户和教师隔离保存。
|
||
- 后续预留 function calling,但只能调用受审计的后端业务函数。
|
||
- function 有写操作时必须复用 RBAC、DataScope、Tenant Scope 和 AuditLog。
|
||
|
||
### AI 审核题目反馈
|
||
|
||
- 输入:题目反馈、题目摘要、反馈类型、提交用户上下文摘要。
|
||
- 输出:审核建议、风险等级、归类标签、是否建议人工复核。
|
||
- 不做 function calling。
|
||
- 不直接修改题目、反馈状态或用户数据。
|
||
|
||
## 存储模型
|
||
|
||
不要把 Semantic Kernel 的 `ChatHistory`、`ChatMessageContent`、`KernelContent`、tool call object graph 或 provider 原始 response 作为 EF Core 持久化模型。
|
||
|
||
数据库保存 provider-neutral 消息:
|
||
|
||
- `AiConversation`:租户、教师、标题、场景、Provider、模型、状态、metadata。
|
||
- `AiConversationMessage`:租户、会话、序号、role、文本、tool call id/name/arguments/result summary、token、metadata。
|
||
- `AiToolCallLog`:租户、会话、消息、函数名、输入摘要、结果、耗时、错误码。
|
||
- `AiFeedbackReview`:租户、题目反馈、建议、风险、标签、人工复核标记、metadata。
|
||
|
||
运行时由 Infrastructure adapter 把规范化消息转换为 SK / OpenAI-compatible 请求。DeepSeek 等 provider 只接收目标接口允许的 `role`、`content`、`tool_calls`、`tool_call_id` 字段;SK metadata 不得原样回放给模型 API。
|
||
|
||
## Provider 与密钥边界
|
||
|
||
- AI Provider 使用 `TenantExternalProvider(capability=ai)`。
|
||
- 租户 API Key 存 `TenantSecret`,通过 `SecretRef` 关联。
|
||
- `ConfigPublic` 只允许 provider、model、endpoint、deployment、temperature、max token 等公开配置。
|
||
- `ConfigPublic` 禁止 `secret`、`token`、`apiKey`、`key`、`privateKey` 等敏感字段。
|
||
- `Microsoft.SemanticKernel` 只引用在 `Tiku.Infrastructure`。
|
||
- `Tiku.Api`、`Tiku.Application`、`Tiku.Domain` 不直接引用 Semantic Kernel namespace。
|
||
|
||
## 第一批接口
|
||
|
||
- `POST /api/tenant-admin/ai/conversations`
|
||
- `GET /api/tenant-admin/ai/conversations`
|
||
- `GET /api/tenant-admin/ai/conversations/{conversationId}`
|
||
- `POST /api/tenant-admin/ai/conversations/{conversationId}/messages`
|
||
- `POST /api/tenant-admin/ai/question-feedback/review`
|
||
|
||
第一批先接 fake/local AI provider 跑通对话、日志和隔离,再接真实模型。
|
||
|
||
## 暂不做
|
||
|
||
- 学生端 AI。
|
||
- 复杂 RAG。
|
||
- 自动改题或自动发布题目。
|
||
- 自动处理反馈状态。
|
||
- 让客户端指定任意 function call。
|
||
- 明文 API Key 配置。
|