-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsubgoal.py
More file actions
50 lines (44 loc) · 1.51 KB
/
subgoal.py
File metadata and controls
50 lines (44 loc) · 1.51 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
from dataclasses import dataclass, field
from typing import List, Optional
@dataclass
class BranchResult:
branch_id: int
answer: str
sample_count: int
verification_confidence: float = 0.0
is_winner: bool = False
failure_reason: Optional[str] = None
solution_text: Optional[str] = None
@dataclass
class SubgoalState:
subgoal_id: int
description: str
dependencies: List[int] = field(default_factory=list)
result: Optional[str] = None
confidence: float = 0.0
branches: List[BranchResult] = field(default_factory=list)
negative_knowledge: List[str] = field(default_factory=list)
raw_samples: Optional[list] = None
@property
def is_resolved(self) -> bool:
return self.result is not None and self.confidence > 0
def to_dict(self) -> dict:
return {
"subgoal_id": self.subgoal_id,
"description": self.description,
"dependencies": self.dependencies,
"result": self.result,
"confidence": self.confidence,
"negative_knowledge": self.negative_knowledge,
"branches": [
{
"branch_id": b.branch_id,
"answer": b.answer,
"sample_count": b.sample_count,
"verification_confidence": b.verification_confidence,
"is_winner": b.is_winner,
"failure_reason": b.failure_reason,
}
for b in self.branches
],
}