| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- from pydantic import BaseModel, Field, ConfigDict
- from typing import List, Optional, Dict, Any
- from datetime import datetime
- from ..core.ark_client import config
- class ChatMessage(BaseModel):
- role: str # "user" | "assistant" | "system"
- content: str
- timestamp: Optional[datetime] = None
- response_id: Optional[str] = None
- thinking: Optional[str] = None
- searching: Optional[str] = None
- # 帖子请求
- class CommentRequest(BaseModel):
- id: str # 帖子的主键
- # 兴趣圈提示词模版
- class CirclePromptConfig(BaseModel):
- appName: str # 包名,作为唯一标识
- name: str # 兴趣圈名称
- role: str # AI 扮演的角色
- style: str # 回复风格描述
- keywords: List[str] = [] # 推荐使用的关键词
- forbidden: List[str] = [] # 禁止使用的词语
- extra_instruction: str # 是给模型更细化的行为指引,可以包含在最终提示词中。
- # Ai的请求对象
- class ChatRequest(BaseModel):
- model_config = ConfigDict(populate_by_name=True)
- messages: List[ChatMessage]
- model: Optional[str] = config.MODEL_NAME
- stream: Optional[bool] = False
- source: Optional[str] = None # source=app 时走第三方 token 认证
- token: Optional[str] = None # App 端传入的第三方 token
- session_id: Optional[str] = Field(None, alias="sessionId") # 会话ID,前端传 sessionId
- # Ai的返回对象
- class ChatResponse(BaseModel):
- message: ChatMessage
- model: str
- usage: Optional[Dict[str, Any]] = None
- response_id: Optional[str] = None
- # 流式对象
- class StreamResponse(BaseModel):
- content: str
- finished: bool
- model: str
- timestamp: datetime
- type: str = "answer" # "thinking"=AI思考开过车delta | "searching"=搜索状态/关键词 | "answer" = 正式回答 delta(现有逻辑)
- # 历史人物
- class HistoricalFigure(BaseModel):
- id: str = Field(alias="_id") # MongoDB _id
- name: str # 姓名,如 "孔子"
- era: str # 朝代/时期,如 "春秋时期"
- description: str # 简介,如 "儒家创始人"
- prompt: str # 说话风格提示词,用于 AI 润色
- model_config = ConfigDict(populate_by_name=True)
- # 历史人物新增/修改(不含 id,由 MongoDB 生成)
- class FigureUpsert(BaseModel):
- name: str
- era: str
- description: str
- prompt: str
- # 润色请求
- class RephraseRequest(BaseModel):
- figureId: str # 历史人物 _id
- text: str # 用户原文
|