Retry a failed turn with feedback and traceback.
(self, feedback: str, traceback: str, error_idx: int)
| 354 | writer.write(turn.to_dict()) |
| 355 | |
| 356 | def retry(self, feedback: str, traceback: str, error_idx: int): |
| 357 | """ |
| 358 | Retry a failed turn with feedback and traceback. |
| 359 | """ |
| 360 | assert error_idx > 0, "error_idx must be greater than 0" |
| 361 | prompt = self.retry_template.render(feedback=feedback, traceback=traceback) |
| 362 | history = [] |
| 363 | for turn in self.history[-error_idx:]: |
| 364 | history.extend(turn.message) |
| 365 | response, message = self.llm( |
| 366 | prompt, |
| 367 | history=history, |
| 368 | return_message=True, |
| 369 | ) |
| 370 | turn = Turn( |
| 371 | id=len(self.history), |
| 372 | prompt=prompt, |
| 373 | response=response, |
| 374 | message=message, |
| 375 | ) |
| 376 | return self.__post_process__(response, self.history[-error_idx:], turn) |
| 377 | |
| 378 | def __repr__(self) -> str: |
| 379 | return f"Role(name={self.name}, model={self.model})" |
no test coverage detected