forked from nicofretti/DataGenFlow
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmodels.py
More file actions
117 lines (85 loc) · 2.79 KB
/
models.py
File metadata and controls
117 lines (85 loc) · 2.79 KB
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
from datetime import datetime
from enum import Enum
from typing import Any
from pydantic import BaseModel, Field
class RecordStatus(str, Enum):
PENDING = "pending"
ACCEPTED = "accepted"
REJECTED = "rejected"
EDITED = "edited"
class BlockDefinition(BaseModel):
type: str
config: dict[str, Any] = Field(default_factory=dict)
class Pipeline(BaseModel):
name: str
blocks: list[BlockDefinition]
class SeedInput(BaseModel):
repetitions: int = Field(default=1, description="Number of times to execute pipeline")
metadata: dict[str, Any] = Field(..., description="Variables for pipeline execution")
class Record(BaseModel):
id: int | None = None
output: str | None = None
metadata: dict[str, Any] = Field(default_factory=dict)
status: RecordStatus = RecordStatus.PENDING
trace: list[dict[str, Any]] | None = None
created_at: datetime | None = None
updated_at: datetime | None = None
class GenerationConfig(BaseModel):
model: str | None = None
endpoint: str | None = None
temperature: float = Field(default=0.7, ge=0.0, le=2.0)
max_tokens: int | None = Field(default=None, ge=1)
class RecordUpdate(BaseModel):
model_config = {"extra": "allow"}
output: str | None = None
status: RecordStatus | None = None
metadata: dict[str, Any] | None = None
class SeedValidationRequest(BaseModel):
pipeline_id: int
seeds: list[dict[str, Any]]
class LLMProvider(str, Enum):
OPENAI = "openai"
ANTHROPIC = "anthropic"
GEMINI = "gemini"
OLLAMA = "ollama"
class LLMModelConfig(BaseModel):
name: str = Field(..., min_length=1, max_length=100)
provider: LLMProvider
endpoint: str | None = None
api_key: str | None = None
model_name: str = Field(..., min_length=1)
class EmbeddingModelConfig(BaseModel):
name: str = Field(..., min_length=1, max_length=100)
provider: LLMProvider
endpoint: str | None = None
api_key: str | None = None
model_name: str = Field(..., min_length=1)
dimensions: int | None = None
class ConnectionTestResult(BaseModel):
success: bool
message: str
latency_ms: int | None = None
class Job(BaseModel):
"""job record from database"""
id: int
pipeline_id: int
status: str
total_seeds: int
current_seed: int = 0
records_generated: int = 0
records_failed: int = 0
progress: float = 0.0
current_block: str | None = None
current_step: str | None = None
error: str | None = None
started_at: str
completed_at: str | None = None
created_at: str | None = None
usage: dict[str, Any] | None = None
class PipelineRecord(BaseModel):
"""pipeline record from database"""
id: int
name: str
definition: dict[str, Any]
created_at: str
validation_config: dict[str, Any] | None = None