EnumOutputParser

출력 파싱

LLM 출력을 구조화된 데이터로 변환하는 다양한 파서를 다룬다.

AI
RAG
LangChain
저자

Kwangmin Kim

공개

2025년 01월 23일

LangChain의 EnumOutputParser는 언어 모델의 출력을 미리 정의된 열거형(Enum) 값 중 하나로 파싱하는 도구입니다. 이 파서의 주요 특징과 사용법은 다음과 같습니다.

1 주요 특징

  • 열거형 파싱: 문자열 출력을 미리 정의된 Enum 값으로 변환합니다.
  • 타입 안전성: 파싱된 결과가 반드시 정의된 Enum 값 중 하나임을 보장합니다.
  • 유연성: 공백이나 줄바꿈 문자를 자동으로 처리합니다.

2 사용 방법

EnumOutputParser는 언어 모델의 출력에서 유효한 Enum 값을 추출하는 데 유용합니다. 이를 통해 출력 데이터의 일관성을 유지하고 예측 가능성을 높일 수 있습니다. 파서를 사용하려면, 미리 정의된 Enum 값을 설정하고 해당 값을 기준으로 문자열 출력을 파싱합니다.

from dotenv import load_dotenv

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

# 프로젝트 이름을 입력합니다.
logging.langsmith("CH03-OutputParser")
from langchain.output_parsers.enum import EnumOutputParser
  • enum 모듈을 사용하여 Colors 클래스를 정의합니다.
  • Colors 클래스는 Enum을 상속받으며, RED, GREEN, BLUE 세 가지 색상 값을 가집니다.
from enum import Enum


class Colors(Enum):
    RED = "빨간색"
    GREEN = "초록색"
    BLUE = "파란색"

EnumOutputParser 를 생성합니다.

# EnumOutputParser 인스턴스 생성
parser = EnumOutputParser(enum=Colors)
from langchain_core.prompts import PromptTemplate
from langchain_openai import ChatOpenAI

# 프롬프트 템플릿을 생성합니다.
prompt = PromptTemplate.from_template(
    """다음의 물체는 어떤 색깔인가요?

Object: {object}

Instructions: {instructions}"""
    # 파서에서 지시사항 형식을 가져와 부분적으로 적용합니다.
).partial(instructions=parser.get_format_instructions())

# 체인을 생성합니다.
chain = prompt | ChatOpenAI() | parser
  • chain.invoke 함수를 사용하여 “하늘”에 대한 정보를 요청합니다.
# 체인을 실행합니다.
response = chain.invoke({"object": "하늘"})
print(response)

결과를 확인합니다.

# 출력의 타입을 확인합니다.
type(response)
# 출력의 값을 확인합니다.
response.value

Subscribe

Enjoy this blog? Get notified of new posts by email: