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

2.7 KiB
Raw Blame History

第八阶段AI 底座与教师端对话

状态:基础包和边界已引入,业务接口待实现。

使用场景

租户教师 AI 对话

  • 教师在租户后台发起对话。
  • AI 根据当前租户 Provider 配置调用模型。
  • 对话历史按租户和教师隔离保存。
  • 后续预留 function calling但只能调用受审计的后端业务函数。
  • function 有写操作时必须复用 RBAC、DataScope、Tenant Scope 和 AuditLog。

AI 审核题目反馈

  • 输入:题目反馈、题目摘要、反馈类型、提交用户上下文摘要。
  • 输出:审核建议、风险等级、归类标签、是否建议人工复核。
  • 不做 function calling。
  • 不直接修改题目、反馈状态或用户数据。

存储模型

不要把 Semantic Kernel 的 ChatHistoryChatMessageContentKernelContent、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 只接收目标接口允许的 rolecontenttool_callstool_call_id 字段SK metadata 不得原样回放给模型 API。

Provider 与密钥边界

  • AI Provider 使用 TenantExternalProvider(capability=ai)
  • 租户 API Key 存 TenantSecret,通过 SecretRef 关联。
  • ConfigPublic 只允许 provider、model、endpoint、deployment、temperature、max token 等公开配置。
  • ConfigPublic 禁止 secrettokenapiKeykeyprivateKey 等敏感字段。
  • Microsoft.SemanticKernel 只引用在 Tiku.Infrastructure
  • Tiku.ApiTiku.ApplicationTiku.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 配置。