2.7 KiB
2.7 KiB
第八阶段: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/conversationsGET /api/tenant-admin/ai/conversationsGET /api/tenant-admin/ai/conversations/{conversationId}POST /api/tenant-admin/ai/conversations/{conversationId}/messagesPOST /api/tenant-admin/ai/question-feedback/review
第一批先接 fake/local AI provider 跑通对话、日志和隔离,再接真实模型。
暂不做
- 学生端 AI。
- 复杂 RAG。
- 自动改题或自动发布题目。
- 自动处理反馈状态。
- 让客户端指定任意 function call。
- 明文 API Key 配置。