File size: 2,196 Bytes
14aad8e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
67
68
69
70
"""
Agent Models - Pydantic Models for Agents
"""
from pydantic import BaseModel, Field
from typing import Optional, List, Dict, Any
from enum import Enum


class AgentType(str, Enum):
    SKILL = "skill"
    LONG_CHAIN = "long_chain"
    SCRIPT = "script"


class TaskStatus(str, Enum):
    PENDING = "pending"
    RUNNING = "running"
    COMPLETED = "completed"
    FAILED = "failed"


class SkillRequest(BaseModel):
    """Request model for Skill Agent"""
    prompt: str = Field(..., description="The task prompt")
    skill_type: str = Field(..., description="Type of skill to execute")
    context: Optional[Dict[str, Any]] = Field(default=None, description="Additional context")
    tools: Optional[List[str]] = Field(default=None, description="Available tools")


class SkillResponse(BaseModel):
    """Response model for Skill Agent"""
    status: TaskStatus
    result: Optional[Dict[str, Any]] = None
    error: Optional[str] = None
    execution_time: float = 0.0


class ChainRequest(BaseModel):
    """Request model for Long Chain Agent"""
    workflow: str = Field(..., description="Workflow name or definition")
    input_data: Dict[str, Any] = Field(..., description="Input data for workflow")
    steps: Optional[List[str]] = Field(default=None, description="Specific steps to execute")


class ChainResponse(BaseModel):
    """Response model for Long Chain Agent"""
    status: TaskStatus
    workflow: str
    steps_completed: List[Dict[str, Any]] = []
    final_result: Optional[Dict[str, Any]] = None
    error: Optional[str] = None
    total_time: float = 0.0


class ScriptRequest(BaseModel):
    """Request model for Script Agent"""
    language: str = Field(default="python", description="Programming language")
    prompt: str = Field(..., description="Code generation prompt")
    template: Optional[str] = Field(default=None, description="Code template to use")
    optimize: bool = Field(default=False, description="Whether to optimize the code")


class ScriptResponse(BaseModel):
    """Response model for Script Agent"""
    status: TaskStatus
    code: Optional[str] = None
    language: str
    explanation: Optional[str] = None
    error: Optional[str] = None