43 lines
1.4 KiB
Python
43 lines
1.4 KiB
Python
"""统计相关Schema"""
|
|
from datetime import datetime
|
|
from decimal import Decimal
|
|
from typing import Optional
|
|
from pydantic import BaseModel, Field
|
|
|
|
|
|
class AICallEventCreate(BaseModel):
|
|
"""AI调用事件上报"""
|
|
tenant_id: int = Field(..., description="租户ID")
|
|
user_id: Optional[int] = Field(None, description="用户ID")
|
|
app_code: str = Field(..., description="应用编码")
|
|
module_code: str = Field(..., description="模块编码")
|
|
trace_id: Optional[str] = Field(None, description="链路追踪ID")
|
|
prompt_name: str = Field(..., description="Prompt名称")
|
|
model: str = Field(..., description="模型名称")
|
|
input_tokens: int = Field(0, description="输入token")
|
|
output_tokens: int = Field(0, description="输出token")
|
|
cost: Decimal = Field(Decimal("0"), description="成本")
|
|
latency_ms: int = Field(0, description="延迟(ms)")
|
|
status: str = Field("success", description="状态")
|
|
event_time: datetime = Field(..., description="事件时间")
|
|
|
|
|
|
class AICallEventResponse(BaseModel):
|
|
"""AI调用事件响应"""
|
|
id: int
|
|
tenant_id: int
|
|
app_code: str
|
|
prompt_name: str
|
|
model: str
|
|
input_tokens: int
|
|
output_tokens: int
|
|
event_time: datetime
|
|
|
|
class Config:
|
|
from_attributes = True
|
|
|
|
|
|
class BatchReportRequest(BaseModel):
|
|
"""批量上报请求"""
|
|
events: list[AICallEventCreate]
|