21f9839dd6
- 后端实现: - 添加 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>
58 lines
1.2 KiB
Python
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
|