06. Human-in-the-loop (human intervention)

Human-in-the-loop

에이전트는 신뢰할 수 없으며 작업을 성공적으로 수행하기 위해 인간의 입력이 필요할 수 있습니다.

마찬가지로, 일부 작업에 대해서는 모든 것이 의도한 대로 실행되고 있는지 확인하기 위해 실행 전에 사람이 직접 개입하여 "승인" 을 요구하고 싶을 수 있습니다.

LangGraph는 여러 가지 방법으로 human-in-the-loop 워크플로를 지원합니다.

이번 튜토리얼의 시작은 LangGraph의 interrupt_before 기능을 사용하여 항상 도구 노드를 중단하도록 하겠습니다.

# API 키를 환경변수로 관리하기 위한 설정 파일
from dotenv import load_dotenv

# API 키 정보 로드
load_dotenv()
True
# LangSmith 추적을 설정합니다. https://smith.langchain.com
# !pip install -qU langchain-teddynote
from langchain_teddynote import logging

# 프로젝트 이름을 입력합니다.
logging.langsmith("CH17-LangGraph-Modules")
LangSmith 추적을 시작합니다.
[프로젝트명]
CH17-LangGraph-Modules

이제 그래프를 컴파일하고, tools 노드 전에 interrupt_before를 지정하십시오.

그래프 상태를 확인하여 제대로 작동했는지 확인해 봅시다.

(이전의 튜토리얼에서는) __END__ 도달했기 때문에 .next 가 존재하지 않았습니다.

하지만, 지금은 .nexttools 로 지정되어 있습니다.

이제 그럼 도구 호출을 확인해 봅시다.

다음으로는 이전에 종료된 지점 이후부터 이어서 그래프를 진행 해 보는 것입니다.

LangGraph 는 계속 그래프를 진행하는 것 쉽게 할 수 있습니다.

  • 단지 입력에 None을 전달하면 됩니다.

이제, interrupt를 사용하여 챗봇에 인간이 개입할 수 있는 실행을 추가하여 필요할 때 인간의 감독과 개입을 가능하게 했습니다. 이는 추후에 시스템으로 구현할때, 잠재적인 UI를 제공할 수 있ㅅ브니다.

이미 checkpointer를 추가했기 때문에, 그래프는 무기한 일시 중지되고 언제든지 다시 시작할 수 있습니다. 아래는 get_state_history 메서드를 사용하여 상태 기록을 가져오는 방법입니다.

상태 기록을 통해 원하는 상태를 지정하여 해당 지점에서 다시 시작 할 수 있습니다.

그래프의 모든 단계에 대해 체크포인트가 저장된다는 점에 주목 할 필요가 있습니다.

원하는 지점은 to_replay 변수에 저장합니다. 이를 활용하여 다시 시작할 수 있는 지점을 지정할 수 있습니다.

to_replay.configcheckpoint_id 가 포함되어 있습니다.

checkpoint_id 값을 제공하면 LangGraph의 체크포인터가 그 시점의 상태를 로드 할 수 있습니다.

  • 단, 이때는 입력값을 None으로 전달해야 합니다.

아래의 예제를 통해 확인해 봅시다.

Last updated