42 lines
1.0 KiB
Python
42 lines
1.0 KiB
Python
"""AI-specific domain events (published by the AI Gateway / workers)."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from typing import Any, Dict, Optional
|
|
from uuid import UUID
|
|
|
|
from asf_events.base import ASFEvent
|
|
|
|
|
|
class AIInferenceRequested(ASFEvent):
|
|
event_type: str = "ai.inference.requested"
|
|
job_id: Optional[UUID] = None
|
|
capability: str
|
|
provider: str
|
|
preferred_model: Optional[str] = None
|
|
payload: Dict[str, Any]
|
|
|
|
|
|
class AIInferenceCompleted(ASFEvent):
|
|
event_type: str = "ai.inference.completed"
|
|
job_id: Optional[UUID] = None
|
|
execution_id: UUID
|
|
capability: str
|
|
provider: str
|
|
model_used: str
|
|
duration_ms: Optional[int] = None
|
|
input_tokens: Optional[int] = None
|
|
output_tokens: Optional[int] = None
|
|
estimated_cost: Optional[float] = None
|
|
payload: Dict[str, Any]
|
|
|
|
|
|
class AIInferenceFailed(ASFEvent):
|
|
event_type: str = "ai.inference.failed"
|
|
job_id: Optional[UUID] = None
|
|
execution_id: UUID
|
|
capability: str
|
|
provider: str
|
|
error: str
|
|
payload: Dict[str, Any] = {}
|