|
2 | 2 | from typing import Any, Optional, Tuple |
3 | 3 |
|
4 | 4 | import requests |
5 | | -from lavague.sdk.action import DEFAULT_PARSER, ActionParser |
| 5 | +from lavague.sdk.action import DEFAULT_PARSER, ActionParser, Instruction, Action |
6 | 6 | from lavague.sdk.trajectory import Trajectory |
7 | 7 | from lavague.sdk.trajectory.controller import TrajectoryController |
8 | 8 | from lavague.sdk.trajectory.model import StepCompletion |
@@ -86,7 +86,30 @@ def next_step(self, run_id: str) -> StepCompletion: |
86 | 86 | f"/runs/{run_id}/step", |
87 | 87 | "POST", |
88 | 88 | ) |
89 | | - return StepCompletion.model_validate_json(content) |
| 89 | + return StepCompletion.from_data(content) |
| 90 | + |
| 91 | + def generate_instruction(self, run_id: str) -> Instruction: |
| 92 | + content = self.request_api( |
| 93 | + f"/runs/{run_id}/step/instruction", |
| 94 | + "POST", |
| 95 | + ) |
| 96 | + return Instruction.model_validate_json(content) |
| 97 | + |
| 98 | + def generate_action(self, run_id: str, instruction: Instruction) -> StepCompletion: |
| 99 | + content = self.request_api( |
| 100 | + f"/runs/{run_id}/step/action", |
| 101 | + "POST", |
| 102 | + instruction.model_dump(), |
| 103 | + ) |
| 104 | + return StepCompletion.from_data(content) |
| 105 | + |
| 106 | + def execute_action(self, run_id: str, action: StepCompletion) -> StepCompletion: |
| 107 | + content = self.request_api( |
| 108 | + f"/runs/{run_id}/step/execution", |
| 109 | + "POST", |
| 110 | + action.model_dump(), |
| 111 | + ) |
| 112 | + return StepCompletion.from_data(content) |
90 | 113 |
|
91 | 114 | def stop(self, run_id: str) -> None: |
92 | 115 | self.request_api( |
|
0 commit comments