Files
tiku-backend.net/docs/migration/phase-8-ai-foundation.md

62 lines
2.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 第八阶段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 配置。