|
|
|
|
|
from typing import Any, Optional, List, Dict |
|
|
from datetime import datetime, timezone |
|
|
from pydantic import BaseModel, Field, ConfigDict |
|
|
|
|
|
|
|
|
|
|
|
class CloudEvent(BaseModel): |
|
|
specversion: str = "1.0" |
|
|
id: str |
|
|
type: str |
|
|
source: str |
|
|
time: datetime |
|
|
datacontenttype: str = "application/json" |
|
|
data: Optional[Any] = None |
|
|
|
|
|
@staticmethod |
|
|
def now_utc() -> datetime: |
|
|
return datetime.now(timezone.utc) |
|
|
|
|
|
@classmethod |
|
|
def wrap(cls, *, event_id: str, event_type: str, source: str, data: Any) -> "CloudEvent": |
|
|
return cls( |
|
|
id=event_id, |
|
|
type=event_type or ("NullOrEmpty" if data is None else type(data).__name__), |
|
|
source=source, |
|
|
time=cls.now_utc(), |
|
|
data=data, |
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
class FunctionCallData(BaseModel): |
|
|
function: Optional[str] = None |
|
|
name: Optional[str] = None |
|
|
arguments: Optional[Dict[str, Any]] = None |
|
|
parameters: Optional[Dict[str, Any]] = None |
|
|
|
|
|
|
|
|
|
|
|
class FunctionState(BaseModel): |
|
|
IsFunctionCall: bool = False |
|
|
IsFunctionCallResponse: bool = False |
|
|
IsFunctionCallError: bool = False |
|
|
IsFunctionCallStatus: bool = False |
|
|
IsFunctionStillRunning: bool = False |
|
|
|
|
|
|
|
|
|
|
|
class UserInfo(BaseModel): |
|
|
UserID: Optional[str] = None |
|
|
DateCreated: datetime = Field(default_factory=lambda: datetime.now(timezone.utc)) |
|
|
HostLimit: int = 0 |
|
|
DisableEmail: bool = False |
|
|
Status: Optional[str] = "" |
|
|
Name: Optional[str] = "" |
|
|
Given_name: Optional[str] = "" |
|
|
Family_name: Optional[str] = "" |
|
|
Nickname: Optional[str] = "" |
|
|
Sub: Optional[str] = "" |
|
|
Enabled: bool = True |
|
|
MonitorAlertEnabled: bool = True |
|
|
PredictAlertEnabled: bool = False |
|
|
AccountType: Optional[str] = "Default" |
|
|
Email: Optional[str] = "" |
|
|
Email_verified: bool = False |
|
|
Picture: Optional[str] = "" |
|
|
Updated_at: datetime = Field(default_factory=lambda: datetime.now(timezone.utc)) |
|
|
LastLoginDate: datetime = Field(default_factory=lambda: datetime.now(timezone.utc)) |
|
|
CustomerId: Optional[str] = "" |
|
|
CancelAt: Optional[datetime] = None |
|
|
TokensUsed: int = 0 |
|
|
|
|
|
|
|
|
LoadServer: Dict[str, Any] = Field(default_factory=dict) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class LLMServiceObj(BaseModel): |
|
|
|
|
|
model_config = ConfigDict(populate_by_name=True) |
|
|
|
|
|
|
|
|
SessionId: str = "" |
|
|
JsonFunction: str = "" |
|
|
LlmMessage: str = "" |
|
|
ResultMessage: str = "" |
|
|
UserInput: str = "" |
|
|
RequestSessionId: str = "" |
|
|
FunctionName: str = "" |
|
|
TimeZone: str = "" |
|
|
LLMRunnerType: str = "TurboLLM" |
|
|
SourceLlm: str = "" |
|
|
DestinationLlm: str = "" |
|
|
MessageID: str = "" |
|
|
LlmSessionStartName: str = "" |
|
|
SwapFunctionName: str = "" |
|
|
ChatAgentLocation: str = "" |
|
|
ToolsDefinitionId: Optional[str] = None |
|
|
JsonToolsBuilderSpec: Optional[str] = None |
|
|
|
|
|
|
|
|
TokensUsed: int = 0 |
|
|
IsUserLoggedIn: bool = False |
|
|
IsFuncAck: bool = False |
|
|
IsProcessed: bool = False |
|
|
IsSystemLlm: bool = False |
|
|
Timeout: Optional[int] = None |
|
|
|
|
|
|
|
|
FunctionCallId: str = "" |
|
|
function_call_data: FunctionCallData = Field(default_factory=FunctionCallData, alias="FunctionCallData") |
|
|
user_info: UserInfo = Field(default_factory=UserInfo, alias="UserInfo") |
|
|
StartTimeUTC: datetime = Field(default_factory=lambda: datetime.now(timezone.utc)) |
|
|
|
|
|
|
|
|
LlmStack: List[str] = Field(default_factory=list) |
|
|
FunctionCallIdStack: List[str] = Field(default_factory=list) |
|
|
FunctionNameStack: List[str] = Field(default_factory=list) |
|
|
IsProcessedStack: List[bool] = Field(default_factory=list) |
|
|
MessageIDStack: List[str] = Field(default_factory=list) |
|
|
|
|
|
|
|
|
IsFunctionCall: bool = False |
|
|
IsFunctionCallResponse: bool = False |
|
|
IsFunctionCallError: bool = False |
|
|
IsFunctionCallStatus: bool = False |
|
|
IsFunctionStillRunning: bool = False |
|
|
|
|
|
|
|
|
class ResultObj(BaseModel): |
|
|
Message: str = "" |
|
|
Success: bool = False |
|
|
Data: Optional[Any] = None |
|
|
|