82 lines
No EOL
2.2 KiB
Python
82 lines
No EOL
2.2 KiB
Python
from pydantic import BaseModel, Field
|
|
from typing import List, Dict, Any, Optional
|
|
from datetime import datetime
|
|
|
|
class Agent(BaseModel):
|
|
"""Datenmodell für einen Agenten"""
|
|
id: str
|
|
name: str
|
|
type: str
|
|
workspace_id: str
|
|
capabilities: List[str] = []
|
|
description: Optional[str] = None
|
|
instructions: Optional[str] = None
|
|
|
|
class DataObject(BaseModel):
|
|
"""Datenmodell für ein Datenobjekt"""
|
|
id: str
|
|
name: str
|
|
type: str # 'document', 'image', etc.
|
|
size: Optional[str] = None
|
|
upload_date: Optional[str] = None
|
|
content_type: Optional[str] = None
|
|
path: Optional[str] = None
|
|
|
|
class Prompt(BaseModel):
|
|
"""Datenmodell für einen Prompt"""
|
|
id: str
|
|
content: str
|
|
created_at: str
|
|
|
|
class Workspace(BaseModel):
|
|
"""Datenmodell für einen Workspace"""
|
|
id: str
|
|
name: str
|
|
created_at: str
|
|
prompts: List[Prompt] = []
|
|
agents: List[Agent] = []
|
|
dataObjectReferences: List[str] = []
|
|
|
|
class WorkflowRequest(BaseModel):
|
|
"""Anforderung zur Ausführung eines Workflows"""
|
|
workspace_id: str
|
|
prompt: str
|
|
agents: List[str] # Liste von Agent-IDs
|
|
files: List[str] # Liste von Datei-IDs
|
|
workflow_name: Optional[str] = None
|
|
|
|
class WorkflowResponse(BaseModel):
|
|
"""Antwort nach dem Start eines Workflows"""
|
|
workflow_id: str
|
|
status: str
|
|
message: str
|
|
|
|
class LogEntry(BaseModel):
|
|
"""Protokolleintrag während der Workflow-Ausführung"""
|
|
id: str
|
|
message: str
|
|
type: str # 'info', 'error', 'start', 'complete', 'success'
|
|
timestamp: str
|
|
agent_id: Optional[str] = None
|
|
agent_name: Optional[str] = None
|
|
|
|
class Result(BaseModel):
|
|
"""Ergebnis eines Agenten während der Workflow-Ausführung"""
|
|
id: str
|
|
title: str
|
|
agent_id: str
|
|
agent_name: str
|
|
type: str # 'text', 'chart', 'image', etc.
|
|
content: str
|
|
timestamp: str
|
|
metadata: Optional[Dict[str, Any]] = None
|
|
|
|
class WorkflowStatus(BaseModel):
|
|
"""Status eines Workflows"""
|
|
id: str
|
|
name: Optional[str] = None
|
|
status: str # 'running', 'completed', 'failed'
|
|
progress: float # 0.0 - 1.0
|
|
started_at: str
|
|
completed_at: Optional[str] = None
|
|
agent_statuses: Optional[Dict[str, str]] = None |