Skip to content

Commit cf8ebe7

Browse files
committed
Refactor agent and blueprint modules: update LLM completion call and enhance task update method to handle optional parameters.
1 parent 3a75d5b commit cf8ebe7

File tree

3 files changed

+34
-20
lines changed

3 files changed

+34
-20
lines changed

weaver/agent.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ def execute_task(self, task_id: int):
6464
last_error = None
6565
for attempt in range(1, 4):
6666
try:
67-
response = litellm.llm_completion(
67+
response = litellm.completion(
6868
model=model_cfg["model"],
6969
prompt=prompt,
7070
max_tokens=model_cfg.get("max_tokens")

weaver/blueprint.py

Lines changed: 32 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -150,24 +150,38 @@ def update_task_status(self, task_id: int, status: str) -> None:
150150

151151
def update_task_execution_details(
152152
self,
153-
task_id: int,
154-
final_prompt: str,
155-
raw_result: str,
156-
cost: float,
157-
parsed_result: str = None
158-
) -> None:
159-
"""
160-
Save the results of an LLM execution, timestamps, cost, and set awaiting_human_approval.
161-
"""
162-
end_ts = datetime.utcnow().isoformat()
163-
sql = (
164-
"UPDATE tasks SET final_prompt = ?, raw_result = ?, parsed_result = ?, "
165-
"cost = ?, execution_end_timestamp = ?, status = 'awaiting_human_approval' "
166-
"WHERE task_id = ?"
167-
)
168-
parsed = parsed_result if parsed_result is not None else raw_result
169-
self._execute_query(sql, (final_prompt, raw_result, parsed, cost, end_ts, task_id))
170-
self.conn.commit()
153+
task_id,
154+
final_prompt=None,
155+
raw_result=None,
156+
parsed_result=None,
157+
cost=None,
158+
execution_start_timestamp=None,
159+
execution_end_timestamp=None,
160+
retry_count=None,
161+
error_log=None
162+
):
163+
"""
164+
Update any of these fields on a task. Only non-None args will be written.
165+
"""
166+
updates = {}
167+
if final_prompt is not None: updates['final_prompt'] = final_prompt
168+
if raw_result is not None: updates['raw_result'] = raw_result
169+
if parsed_result is not None: updates['parsed_result'] = parsed_result
170+
if cost is not None: updates['cost'] = cost
171+
if execution_start_timestamp is not None:
172+
updates['execution_start_timestamp'] = execution_start_timestamp
173+
if execution_end_timestamp is not None:
174+
updates['execution_end_timestamp'] = execution_end_timestamp
175+
if retry_count is not None: updates['retry_count'] = retry_count
176+
if error_log is not None: updates['error_log'] = error_log
177+
178+
if not updates:
179+
return
180+
181+
set_clause = ", ".join(f"{col} = ?" for col in updates)
182+
params = list(updates.values()) + [task_id]
183+
sql = f"UPDATE tasks SET {set_clause} WHERE task_id = ?"
184+
self._execute_query(sql, params=params)
171185

172186
def to_csv(self, filepath: str) -> None:
173187
"""

weaver/project.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,7 @@ def run(self, human_feedback: bool = True, steps: int = 0):
173173

174174
# write per-task result file
175175
record = self.blueprint.get_task(task_id)
176-
raw = record.get("raw_result", "")
176+
raw = record.get("raw_result") or ""
177177
(self.results_dir / f"{task_id}.txt").write_text(raw, encoding="utf-8")
178178

179179
# human feedback loop

0 commit comments

Comments
 (0)