110 lines
4.8 KiB
Python
110 lines
4.8 KiB
Python
"""记忆 API schema。"""
|
||
|
||
from pydantic import BaseModel, ConfigDict, Field
|
||
|
||
|
||
class MemoryCreateRequest(BaseModel):
|
||
model_config = ConfigDict(
|
||
json_schema_extra={
|
||
"examples": [
|
||
{
|
||
"type": "user",
|
||
"title": "回答偏好",
|
||
"content": "用户喜欢简洁、直接、带验证结果的中文回答。",
|
||
"source": "user_explicit",
|
||
"confidence": 1.0,
|
||
"importance": 0.8,
|
||
"sensitivity": "low",
|
||
"evidence_ids": ["message_462927da6f0e4af780dd28fd58f73314"],
|
||
"character_id": "character_ec83d55746c54e47ab6f98d683032626",
|
||
}
|
||
]
|
||
}
|
||
)
|
||
|
||
type: str = Field(
|
||
default="user", max_length=60, description="记忆类型,取值见契约字典 memory.type。"
|
||
)
|
||
title: str = Field(max_length=200, description="记忆标题。")
|
||
content: str = Field(min_length=1, description="记忆正文。")
|
||
source: str = Field(
|
||
default="user_explicit", description="记忆来源,取值见契约字典 memory.source。"
|
||
)
|
||
confidence: float = Field(default=1.0, ge=0.0, le=1.0, description="置信度,范围 0.0–1.0。")
|
||
importance: float = Field(default=0.5, ge=0.0, le=1.0, description="重要性,范围 0.0–1.0。")
|
||
sensitivity: str = Field(default="low", description="敏感等级:none / low / medium / high。")
|
||
evidence_ids: list[str] = Field(default_factory=list, description="证据 ID 列表。")
|
||
character_id: str | None = Field(default=None, description="人物 ID;为空时使用当前激活人物。")
|
||
|
||
|
||
class MemoryUpdateRequest(BaseModel):
|
||
model_config = ConfigDict(
|
||
json_schema_extra={
|
||
"examples": [
|
||
{
|
||
"title": "回答偏好(已确认)",
|
||
"importance": 0.9,
|
||
"status": "active",
|
||
"evidence_ids": ["message_462927da6f0e4af780dd28fd58f73314"],
|
||
}
|
||
]
|
||
}
|
||
)
|
||
|
||
type: str | None = Field(default=None, max_length=60, description="记忆类型。")
|
||
title: str | None = Field(default=None, max_length=200, description="记忆标题。")
|
||
content: str | None = Field(default=None, description="记忆正文。")
|
||
confidence: float | None = Field(
|
||
default=None, ge=0.0, le=1.0, description="置信度,范围 0.0–1.0。"
|
||
)
|
||
importance: float | None = Field(
|
||
default=None, ge=0.0, le=1.0, description="重要性,范围 0.0–1.0。"
|
||
)
|
||
sensitivity: str | None = Field(default=None, description="敏感等级。")
|
||
status: str | None = Field(
|
||
default=None, description="记忆状态:active / archived / deleted / superseded。"
|
||
)
|
||
evidence_ids: list[str] | None = Field(default=None, description="证据 ID 列表。")
|
||
|
||
|
||
class MemoryResponse(BaseModel):
|
||
model_config = ConfigDict(
|
||
json_schema_extra={
|
||
"examples": [
|
||
{
|
||
"id": "memory_4d9c6e3b18bb4ef5a6b8ed2e902d1f1a",
|
||
"character_id": "character_ec83d55746c54e47ab6f98d683032626",
|
||
"type": "user",
|
||
"title": "回答偏好",
|
||
"content": "用户喜欢简洁、直接、带验证结果的中文回答。",
|
||
"source": "user_explicit",
|
||
"confidence": 1.0,
|
||
"importance": 0.8,
|
||
"sensitivity": "low",
|
||
"evidence_ids": ["message_462927da6f0e4af780dd28fd58f73314"],
|
||
"status": "active",
|
||
"created_at": "2026-06-19T09:12:00.000000Z",
|
||
"updated_at": "2026-06-19T09:12:00.000000Z",
|
||
"deleted_at": None,
|
||
"expires_at": None,
|
||
}
|
||
]
|
||
}
|
||
)
|
||
|
||
id: str = Field(description="记忆 ID,前缀为 memory_。")
|
||
character_id: str = Field(description="所属人物 ID。")
|
||
type: str = Field(description="记忆类型。")
|
||
title: str = Field(description="记忆标题。")
|
||
content: str = Field(description="记忆正文。")
|
||
source: str = Field(description="记忆来源。")
|
||
confidence: float = Field(description="置信度。")
|
||
importance: float = Field(description="重要性。")
|
||
sensitivity: str = Field(description="敏感等级。")
|
||
evidence_ids: list[str] = Field(description="证据 ID 列表。")
|
||
status: str = Field(description="记忆状态。")
|
||
created_at: str = Field(description="创建时间,UTC ISO 8601 字符串。")
|
||
updated_at: str = Field(description="更新时间,UTC ISO 8601 字符串。")
|
||
deleted_at: str | None = Field(description="删除时间;未删除时为空。")
|
||
expires_at: str | None = Field(description="过期时间;永不过期时为空。")
|