narcolepticchicken commited on
Commit
2cbe770
·
verified ·
1 Parent(s): 04b4ddf

Upload aco/optimizer.py with huggingface_hub

Browse files
Files changed (1) hide show
  1. aco/optimizer.py +29 -0
aco/optimizer.py CHANGED
@@ -12,6 +12,7 @@ from .verifier_budgeter import VerifierBudgeter, VerifierDecision
12
  from .retry_optimizer import RetryOptimizer, RecoveryAction
13
  from .meta_tool_miner import MetaToolMiner, MacroTool
14
  from .doom_detector import DoomDetector, DoomAssessment
 
15
 
16
  class ACOOptimizer:
17
  def __init__(self, config: ACOConfig = None):
@@ -33,6 +34,10 @@ class ACOOptimizer:
33
  )
34
  self.meta_tool_miner = MetaToolMiner()
35
  self.doom_detector = DoomDetector()
 
 
 
 
36
  self._current_trace: Optional[AgentTrace] = None
37
  self._step_num = 0
38
  self._traces: List[AgentTrace] = []
@@ -123,6 +128,30 @@ class ACOOptimizer:
123
  return self.tool_gate.gate(tool_name, args, self._current_trace.task_type,
124
  self._step_num, self._step_num + 1, 0.5)
125
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
126
  def get_recovery(self, failure_tag: str, current_tier: int,
127
  retry_num: int, previous_actions: List[str] = None,
128
  run_cost: float = 0.0) -> RecoveryAction:
 
12
  from .retry_optimizer import RetryOptimizer, RecoveryAction
13
  from .meta_tool_miner import MetaToolMiner, MacroTool
14
  from .doom_detector import DoomDetector, DoomAssessment
15
+ from .execution_feedback import ExecutionFeedbackRouter, CascadeResult, FeedbackSignal
16
 
17
  class ACOOptimizer:
18
  def __init__(self, config: ACOConfig = None):
 
34
  )
35
  self.meta_tool_miner = MetaToolMiner()
36
  self.doom_detector = DoomDetector()
37
+ self.execution_feedback = ExecutionFeedbackRouter(
38
+ tier_costs=self.config.tier_costs,
39
+ task_floors=self.config.task_floors,
40
+ )
41
  self._current_trace: Optional[AgentTrace] = None
42
  self._step_num = 0
43
  self._traces: List[AgentTrace] = []
 
128
  return self.tool_gate.gate(tool_name, args, self._current_trace.task_type,
129
  self._step_num, self._step_num + 1, 0.5)
130
 
131
+ def cascade_step(self, request: str, initial_tier: int,
132
+ cheap_logprobs: List[float],
133
+ cheap_response: str,
134
+ strong_response: str = "",
135
+ task_type: str = None) -> CascadeResult:
136
+ """Execution-feedback cascade: use cheap model output to decide escalation."""
137
+ if not self._current_trace:
138
+ task_type = task_type or "unknown_ambiguous"
139
+ else:
140
+ task_type = task_type or self._current_trace.task_type
141
+ floor = self.config.task_floors.get(task_type, 1)
142
+ return self.execution_feedback.cascade(
143
+ request, initial_tier, cheap_logprobs,
144
+ cheap_response, strong_response,
145
+ task_type=task_type, task_floor=floor,
146
+ )
147
+
148
+ def analyze_output_confidence(self, token_logprobs: List[float],
149
+ task_type: str = "unknown",
150
+ current_tier: int = 2) -> FeedbackSignal:
151
+ """Analyze model output confidence for routing decisions."""
152
+ return self.execution_feedback.analyze_output(
153
+ token_logprobs, task_type=task_type, current_tier=current_tier)
154
+
155
  def get_recovery(self, failure_tag: str, current_tier: int,
156
  retry_num: int, previous_actions: List[str] = None,
157
  run_cost: float = 0.0) -> RecoveryAction: