Files
fquiz/api/app/schemas/ai_chat.py
T
chengkai3 21f9839dd6 feat: [FL-166] 实现AI问答功能
- 后端实现:
  - 添加 ai_chat_conversations 和 ai_chat_messages 数据模型
  - 创建 AI 问答 API 路由(/api/v1/ai-chat)
  - 实现对话管理和消息发送服务
  - 集成 OpenAI API 进行对话交互
  - 支持流式对话历史和上下文管理

- 前端实现:
  - 创建 ChatGPT 风格的聊天界面(/admin/ai-chat)
  - 支持新建、选择、删除对话
  - 实现消息发送和实时显示
  - 使用 Ant Design 组件构建响应式 UI

- 系统参数配置:
  - ai_chat.openai_api_key: OpenAI API 密钥
  - ai_chat.model: 使用的 AI 模型(默认 gpt-3.5-turbo)
  - ai_chat.base_url: API 基础 URL(支持第三方兼容接口)

- 数据库迁移:
  - 002_add_ai_chat.sql: 创建对话和消息表
  - 003_add_ai_chat_params.sql: 添加系统参数默认配置

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-20 23:20:26 +08:00

58 lines
1.2 KiB
Python

from __future__ import annotations
from datetime import datetime
from pydantic import BaseModel, Field
from .user import UserPublic
class AiChatMessageSummary(BaseModel):
id: int
conversation_id: int
role: str
content: str
created_at: datetime
class AiChatConversationSummary(BaseModel):
id: int
title: str
user_id: str
created_at: datetime
updated_at: datetime
user: UserPublic | None = None
message_count: int = 0
class AiChatConversationDetail(BaseModel):
id: int
title: str
user_id: str
created_at: datetime
updated_at: datetime
user: UserPublic | None = None
messages: list[AiChatMessageSummary] = []
class AiChatConversationListResponse(BaseModel):
items: list[AiChatConversationSummary]
total: int
class AiChatConversationCreateRequest(BaseModel):
title: str = Field(default="新对话", min_length=1, max_length=256)
class AiChatConversationUpdateRequest(BaseModel):
title: str = Field(min_length=1, max_length=256)
class AiChatMessageSendRequest(BaseModel):
content: str = Field(min_length=1, max_length=20000)
class AiChatMessageResponse(BaseModel):
message: AiChatMessageSummary
reply: AiChatMessageSummary