LangChain | 동적 변수 처리 partial_variables | 프롬프트 템플릿

박성문·2025년 1월 18일

partial_variables란

프롬프트 템플릿에서 동적으로 값을 주입할 수 있게 해주는 매개변수
함수나 고정값을 변수에 매핑하여 실행 시점에 값을 결정
템플릿 생성 시 일부 변수를 자동화하는 메커니즘

기본 문법과 구조

  • 오늘 날짜를 구하는 def 함수를 선언해서 프롬프트 템플릿에 할당하는데 RunnableLambda와 유사하다고 생각되지만 차이가 있다.

RunnableLambda와의 차이점

사용 범위의 차이


RunnableLambda 방식에서의 def 선언은 여러 체인에서 재사용이 가능하지만
partial_variabels에서는 해당 프롬프트에서만 사용된다.

맥도날드의 서구점의 배달에 비유하면 :

RunnableLambda는 배민 기사님이라서
넓은 범위에 배달이 가능하다.
여러 지역의 주문에서 동일한 배달 가능 여부 확인 함수를 사용한다.
각 체인(지역)에서 필요할 때마다 호출하여 사용한다.

Partial_variables는
맥도날드의 직원인데 멀리 가지 못하고
해당 프롬프트 (서구점)에서만 사용이 가능하다.
주문이 들어올 때마다 자동으로 배달 가능 여부 확인을 한다.

실행 시점의 차이

쉽게 말해서

RunnableLambda 방식은 맥도날드 PDA 부산지점 관리자 아이디이다.
관리자 아이디로 로그인을 하면 부산안의 맥도날드 지점들이 뜨고
서구점 매장을 선택하고 재고 확인을 눌렀을 때 def가 실행되는 반면

partial_variables는 맥도날드 PDA 서구점 사장님의 아이디이다.
서구점 사장님의 아이디로 로그인을하면 나의 매장밖에 조회가 안되고 자동으로 def 함수가 실행된다.

input_variables와의 차이점

기본 구조

  • input_variables

  • partial_variables

사용 범위의 차이

메일로 예를 들면

input_variables는 네이버 메일이다.

  • 누구나 사용 가능하고
  • 모든 정보를 직접 입력하고
  • 매번 새로운 이메일 주소로 보내기 가능하다.
  • 공적, 사적 등 다양한 목적으로 활용한다.

partial_variables는 사내 이메일이다.

  • 회사 전용 메일로 회사 정보가 미리 설정되어 있다.
  • 회사 도메인 내에서만 사용 가능하고
  • 업무용 목적으로 제한된다.

실행 시점의 차이

input_variables는
로그인 할 때마다 고정된 값들을 매번 입력해주어야한다.

  • 매번 입력해야 하는 변수들
  • PDA로 치면 "실행할 때 마다 입력해야 하는 정보"
  • 예 : 날짜, 품목, 수량 등 매번 바뀌는 정보

하지만 partial_variables는
고정된 값을 제외한 매번 바뀌는 나머지만 입력하면 된다.

  • 미리 고정해놓는 변수들
  • PDA로 치면 "처음 설정하면 바뀌지 않는 정보"
  • 예 : 매장명, 담당자 등 잘 바뀌지 않는 정보

결과적으로

partial_variables는 특정 상황에서 반복적으로 사용되는 값들을 미리 설정해두어 효율성을 높이는 메서드이다. input_variables의 범용성과 RunnableLambda의 동적 처리 능력과 달리, partial_variables는 고정된 환경에서 일관된 결과를 빠르게 생성하는데 특화되어 있다. 마치 사내 메일 시스템처럼, 특정 컨텍스트 내에서 최적화된 성능을 발휘하도록 설계된 메서드라고 할 수 있다.

profile
성문이

0개의 댓글