File size: 3,151 Bytes
cd9bca9 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
from pydantic import BaseModel, Field
from typing import Optional, Dict, Any, List
from datetime import datetime
from enum import Enum
class QueryType(str, Enum):
"""查詢類型枚舉"""
SEARCH = "search"
CREATE = "create"
UPDATE = "update"
DELETE = "delete"
ANALYTICS = "analytics"
UNKNOWN = "unknown"
class NLPAnalysisRequest(BaseModel):
"""NLP 分析請求模型"""
message: str = Field(..., description="用戶輸入的訊息")
user_id: Optional[str] = Field(None, description="用戶ID")
context: Optional[Dict[str, Any]] = Field(default_factory=dict, description="上下文資訊")
class NLPAnalysisResult(BaseModel):
"""NLP 分析結果模型"""
query_type: QueryType = Field(..., description="查詢類型")
intent: str = Field(..., description="用戶意圖")
entities: Dict[str, Any] = Field(default_factory=dict, description="提取的實體")
confidence: float = Field(..., ge=0.0, le=1.0, description="信心度")
parameters: Dict[str, Any] = Field(default_factory=dict, description="查詢參數")
class DatabaseQuery(BaseModel):
"""資料庫查詢模型"""
table_name: str = Field(..., description="資料表名稱")
operation: str = Field(..., description="操作類型")
conditions: Optional[Dict[str, Any]] = Field(default_factory=dict, description="查詢條件")
data: Optional[Dict[str, Any]] = Field(default_factory=dict, description="要操作的資料")
limit: Optional[int] = Field(None, description="查詢限制數量")
offset: Optional[int] = Field(None, description="查詢偏移量")
class DatabaseResult(BaseModel):
"""資料庫查詢結果模型"""
success: bool = Field(..., description="是否成功")
data: Optional[List[Dict[str, Any]]] = Field(default_factory=list, description="查詢結果資料")
count: Optional[int] = Field(None, description="結果數量")
error: Optional[str] = Field(None, description="錯誤訊息")
class LineMessage(BaseModel):
"""LINE 訊息模型"""
user_id: str = Field(..., description="用戶ID")
message: str = Field(..., description="訊息內容")
timestamp: datetime = Field(default_factory=datetime.now, description="時間戳記")
message_type: str = Field(default="text", description="訊息類型")
class UserProfile(BaseModel):
"""用戶資料模型"""
user_id: str = Field(..., description="用戶ID")
display_name: Optional[str] = Field(None, description="顯示名稱")
status_message: Optional[str] = Field(None, description="狀態訊息")
picture_url: Optional[str] = Field(None, description="頭像URL")
created_at: datetime = Field(default_factory=datetime.now, description="建立時間")
updated_at: datetime = Field(default_factory=datetime.now, description="更新時間")
class APIResponse(BaseModel):
"""API 回應模型"""
success: bool = Field(..., description="是否成功")
message: str = Field(..., description="回應訊息")
data: Optional[Any] = Field(None, description="回應資料")
error: Optional[str] = Field(None, description="錯誤訊息") |