LangChain Output Parser: 다양한 출력 파서 설명
LangChain 라이브러리에서는 다양한 형식의 출력을 다루기 위한 여러 종류의 Output Parser를 제공함.
Output Parser는 AI 모델의 출력 결과를 구조화된 형식으로 변환하는 역할을 하며, 상황에 따라 적절한 Parser를 선택하여 사용할 수 있음.
아래에서는 LangChain에서 제공하는 주요 Output Parser들을 소개하고, 각 Parser의 특징과 사용 사례를 설명함.
1. PydanticOutputParser
PydanticOutputParser
는 Pydantic 모델을 활용하여 출력 결과를 검증하고 구조화하는 Parser임.
Pydantic은 Python의 데이터 유효성 검사 라이브러리로, 모델을 정의하여 데이터 구조를 명확하게 지정하고, 유효성 검사를 수행할 수 있게 함.
AI 모델의 출력이 정해진 스키마를 따르도록 하고 싶을 때 유용함.
- 주요 특징: 데이터 구조 유효성 검사, 강력한 타입 지원
- 사용 예시: AI 모델의 출력이 특정 JSON 형식이나 데이터 모델을 따를 때
- 문서 링크: PydanticOutputParser 공식 문서
from langchain.output_parsers import PydanticOutputParser
from pydantic import BaseModel
class Person(BaseModel):
name: str
age: int
parser = PydanticOutputParser(pydantic_object=Person)
output = '{"name": "Alice", "age": 25}'
person = parser.parse(output)
print(person)
2. CommaSeparatedListOutputParser
CommaSeparatedListOutputParser
는 쉼표로 구분된 리스트 형식의 출력을 처리하는 Parser임.
AI 모델의 출력이 단순한 리스트 형식으로 되어 있는 경우, 이를 쉽게 파싱하여 Python 리스트로 변환할 수 있음.
- 주요 특징: 단순 리스트 출력 파싱, 쉼표 구분 지원
- 사용 예시: 여러 항목을 나열하는 형태의 출력 (예: "apple, banana, cherry")
- 문서 링크: CommaSeparatedListOutputParser 공식 문서
from langchain.output_parsers import CommaSeparatedListOutputParser
parser = CommaSeparatedListOutputParser()
output = "apple, banana, cherry"
parsed_output = parser.parse(output)
print(parsed_output) # ['apple', 'banana', 'cherry']
3. StructuredOutputParser
StructuredOutputParser
는 구조화된 데이터를 다루기 위해 설계된 Parser로, AI 모델의 출력이 특정한 데이터 구조(예: 사전, 딕셔너리)를 따르도록 할 때 사용함.
데이터의 각 필드가 명확하게 정의된 형태일 때 유용함.
- 주요 특징: 명확한 데이터 필드 구분, 구조화된 데이터 처리
- 사용 예시: 복잡한 응답 형식을 처리할 때 (예: {"name": "John", "age": 30})
- 문서 링크: StructuredOutputParser 공식 문서
from langchain.output_parsers import StructuredOutputParser
output = '{"name": "John", "age": 30}'
parsed_output = StructuredOutputParser().parse(output)
print(parsed_output["name"], parsed_output["age"])
4. JsonOutputParser
JsonOutputParser
는 JSON 형식의 출력을 처리하는 Parser로, AI 모델의 출력이 JSON 문자열로 제공될 때 사용함.
JSON은 웹과 API에서 흔히 사용하는 데이터 형식이므로, AI 응답을 JSON으로 받을 때 많이 활용됨.
- 주요 특징: JSON 형식의 데이터 파싱
- 사용 예시: JSON 기반 API 응답 처리
- 문서 링크: JsonOutputParser 공식 문서
from langchain.output_parsers import JsonOutputParser
parser = JsonOutputParser()
output = '{"name": "Bob", "age": 22}'
parsed_output = parser.parse(output)
print(parsed_output)
5. PandasFrameOutputParser
PandasFrameOutputParser
는 Pandas DataFrame 형식의 출력을 다루는 Parser임.
AI 모델의 출력이 표 형태의 데이터일 때, 이를 직접 DataFrame으로 변환하여 분석할 수 있음.
- 주요 특징: 표 형식 데이터 파싱, 데이터 분석을 위한 Pandas 호환
- 사용 예시: 테이블 형태의 데이터를 반환할 때 (예: 데이터 분석 결과, 표 형식의 요약 정보)
- 문서 링크: PandasFrameOutputParser 공식 문서
import pandas as pd
from langchain.output_parsers import PandasFrameOutputParser
parser = PandasFrameOutputParser()
output = '[{"name": "Alice", "age": 25}, {"name": "Bob", "age": 22}]'
df = parser.parse(output)
print(df)
6. DatetimeOutputParser
DatetimeOutputParser
는 날짜와 시간을 다루는 데이터를 파싱하기 위해 설계된 Parser임.
AI 모델의 출력이 날짜나 시간과 관련된 데이터일 때, 이를 Python의 datetime
객체로 변환하여 사용할 수 있음.
- 주요 특징: 날짜와 시간 데이터 파싱, datetime 호환
- 사용 예시: 일정, 타임라인, 이벤트 날짜 등이 포함된 출력
- 문서 링크: DatetimeOutputParser 공식 문서
from datetime import datetime
from langchain.output_parsers import DatetimeOutputParser
parser = DatetimeOutputParser()
output = "2023-11-03"
parsed_date = parser.parse(output)
print(parsed_date)
7. EnumOutputParser
EnumOutputParser
는 특정 열거형(Enum) 값만을 허용하는 출력 파서임.
AI 모델의 출력이 미리 정의된 값 중 하나로 제한되어야 할 때 사용함.
- 주요 특징: 제한된 값 허용, 열거형 검증
- 사용 예시: 상태 값 (예: "SUCCESS", "FAILURE", "PENDING")와 같은 특정한 출력 값만을 허용할 때
- 문서 링크: EnumOutputParser 공식 문서
from enum import Enum
from langchain.output_parsers import EnumOutputParser
class Status(Enum):
SUCCESS = "SUCCESS"
FAILURE = "FAILURE"
PENDING = "PENDING"
parser = EnumOutputParser(enum=Status)
output = "SUCCESS"
status = parser.parse(output)
print(status)
정리
LangChain에서 제공하는 다양한 Output Parser들은 AI 모델의 출력을 상황에 맞게 구조화하여 다루기 쉽게 해줌.
각 Parser는 특정한 데이터 형식에 최적화되어 있으므로, 출력 데이터의 특성과 요구 사항에 맞게 적절한 Parser를 선택하는 것이 중요함.
이를 통해 AI 모델의 응답을 효율적으로 처리하고, 데이터의 일관성과 구조를 유지할 수 있음.
이와 같은 Output Parser를 적절히 활용하면, AI 응답을 데이터 분석이나 웹 애플리케이션에 손쉽게 통합할 수 있음.
'LangChain' 카테고리의 다른 글
[LangChain] Cache (0) | 2024.11.06 |
---|---|
[LangChain] RAG 프로세스 (1) | 2024.10.29 |
[LangChain] load prompt 파일 형식 (0) | 2024.10.26 |
[LangChain] Output Parser (1) | 2024.10.23 |
배움에 즐거움을 느끼는 마네의 연구소입니다. 이미지 출처 : https://www.instagram.com/hoseobiiiiiii._.0410/
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!