최근 크루 실행에서 태스크 재실행하기

최근 크루 실행에서 태스크 재실행하기

크루 실행을 마친 뒤, 일부 태스크만 다시 돌려보고 싶을 때가 있어요. 예를 들어 특정 태스크에서 잘못된 결과가 나왔거나, 데이터를 다시 가져오지 않고 캐시된 컨텍스트로 특정 작업만 재시도하고 싶은 경우죠. CrewAI는 가장 최근의 크루 실행에서 원하는 태스크부터 재실행(replay)할 수 있는 기능을 제공해요.

출처: 공식문서

본문

재실행 기능은 크루 실행이 끝난 뒤 특정 태스크만 다시 돌리고 싶을 때 유용해요. 데이터를 다시 가져올 필요 없이, 에이전트가 이미 커기프 실행에서 컨텍스트를 저장해 두었으므로 원하는 태스크만 재실행하면 돼요.

참고: 태스크를 재실행하려면 먼저 crew.kickoff()를 실행해야 해요. 현재는 가장 최근 커기프만 지원하므로, kickoff_for_each를 쓴 경우에도 가장 최근 크루 실행부터만 재실행할 수 있어요.

CLI로 특정 태스크부터 재실행하기

재실행 기능을 쓰려면 다음 단계를 따라가면 돼요.

  1. 터미널이나 명령 프롬프트를 엽니다.
  2. CrewAI 프로젝트가 있는 디렉터리로 이동합니다.
  3. 다음 명령어를 실행합니다. 최근 커기프의 태스크 ID를 확인하려면:
crewai log-tasks-outputs

재실행할 task_id를 확보했다면:

crewai replay -t <task_id>

참고: 개발 환경에 crewai가 올바르게 설치·구성되어 있어야 해요.

프로그래매틱하게 태스크부터 재실행하기

프로그래매틱하게 재실행하려면 다음 단계를 따라가면 돼요.

  1. 재실행 과정에 사용할 task_id와 입력 파라미터를 지정합니다.
  2. 잠재적 오류를 처리하려면 try-except 블록 안에서 재실행 명령을 실행합니다.
def replay():
    """
    Replay the crew execution from a specific task.
    """
    task_id = '<task_id>'
    inputs = {"topic": "CrewAI Training"}  # This is optional; you can pass in the inputs you want to replay; otherwise, it uses the previous kickoff's inputs.
    try:
        YourCrewName_Crew().crew().replay(task_id=task_id, inputs=inputs)

    except subprocess.CalledProcessError as e:
        raise Exception(f"An error occurred while replaying the crew: {e}")

    except Exception as e:
        raise Exception(f"An unexpected error occurred: {e}")

YourCrewName_Crew().crew().replay(task_id=..., inputs=...)가 핵심이에요. inputs는 선택 항목으로, 지정하면 해당 입력으로 재실행하고 생략하면 이전 커기프의 입력을 그대로 사용해요.

더 알아보기