40 lines
1.1 KiB
Python
40 lines
1.1 KiB
Python
"""会话及对话轮次,用于多轮上下文和后续持久化"""
|
|
|
|
from datetime import datetime
|
|
from typing import Literal
|
|
|
|
from pydantic import BaseModel
|
|
|
|
|
|
class Turn(BaseModel):
|
|
"""一次任务对应一轮对话,同一个 thread_id 多次写入时覆盖同一轮"""
|
|
|
|
conversation_id: str
|
|
thread_id: str
|
|
message_id: str
|
|
prompt: str # 用户原始输入
|
|
outcome: Literal["completed", "waiting_for_input", "failed", "cancelled"]
|
|
summary: str # 助手一侧的完整回复(回答、追问或失败说明),不截断;不代表前端已执行
|
|
created_at: datetime
|
|
|
|
|
|
class ConversationCreated(BaseModel):
|
|
conversation_id: str
|
|
|
|
|
|
class ConversationDetail(BaseModel):
|
|
conversation_id: str
|
|
turns: list[Turn]
|
|
|
|
|
|
class ConversationSummary(BaseModel):
|
|
"""历史会话列表项,只包含已产生对话的会话"""
|
|
|
|
conversation_id: str
|
|
title: str # 取自首轮用户输入,过长时截断
|
|
updated_at: datetime # 最近一轮对话的创建时间
|
|
|
|
|
|
class ConversationList(BaseModel):
|
|
conversations: list[ConversationSummary]
|