output_parsers는 LLM이 생성한 텍스트를 구조화된 데이터로 변환하는 기능을 제공합니다.
1. PydanticOutputParser (Pydantic 모델을 이용한 데이터 변환)
from langchain_core.output_parsers import PydanticOutputParser
from langchain_core.pydantic_v1 import BaseModel, Field
from langchain_openai import ChatOpenAI
# Pydantic 모델 정의
class ProductInfo(BaseModel):
name: str = Field(..., description="Product name")
price: float = Field(..., description="Price in USD")
# PydanticOutputParser 설정
parser = PydanticOutputParser(pydantic_object=ProductInfo)
# LLM 생성
llm = ChatOpenAI(model="gpt-4")
# 프롬프트 실행 및 파싱
raw_output = llm.invoke("Give me a product name and price in JSON format")
parsed_output = parser.parse(raw_output.content)
print(parsed_output)
2. CommaSeparatedListOutputParser (쉼표로 구분된 텍스트를 리스트로 변환)
from langchain_core.output_parsers import CommaSeparatedListOutputParser
# 쉼표 구분 리스트 파서 생성
parser = CommaSeparatedListOutputParser()
# 예제 입력
raw_text = "apple, banana, cherry, date"
# 변환 실행
parsed_output = parser.parse(raw_text)
print(parsed_output) # ['apple', 'banana', 'cherry', 'date']
3. StructuredOutputParser (구조화된 JSON 출력)
from langchain_core.output_parsers import StructuredOutputParser
from langchain_core.pydantic_v1 import BaseModel, Field
# 데이터 모델 정의
class Person(BaseModel):
name: str = Field(..., description="Full name")
age: int = Field(..., description="Age of the person")
# JSON 구조 파서 설정
parser = StructuredOutputParser.from_pydantic(Person)
# 예제 실행
raw_json = '{"name": "Alice", "age": 30}'
parsed_output = parser.parse(raw_json)
print(parsed_output) # Person(name='Alice', age=30)
4. JsonOutputParser (일반 JSON 변환)
from langchain_core.output_parsers import JsonOutputParser
# JSON 파서 생성
parser = JsonOutputParser()
# 예제 JSON 문자열
raw_json = '{"city": "Seoul", "population": 10000000}'
# 변환 실행
parsed_output = parser.parse(raw_json)
print(parsed_output) # {'city': 'Seoul', 'population': 10000000}
5. PandasDataFrameOutputParser (데이터프레임 변환)
: 쉼표(,)로 구분된 텍스트를 pandas.DataFrame으로 변환
from langchain_core.output_parsers import PandasDataFrameOutputParser
import pandas as pd
# 판다스 데이터프레임 파서
parser = PandasDataFrameOutputParser()
# 예제 테이블 데이터
raw_text = """
name,age,city
Alice,30,New York
Bob,25,Los Angeles
Charlie,35,Chicago
"""
# 변환 실행
df = parser.parse(raw_text)
print(df)
6. DatetimeOutputParser (날짜 변환)
: 날짜 문자열을 datetime 객체로 변환
from langchain_core.output_parsers import DatetimeOutputParser
# 날짜 파서
parser = DatetimeOutputParser()
# 날짜 문자열
raw_date = "2024-04-01T12:00:00Z"
# 변환 실행
parsed_date = parser.parse(raw_date)
print(parsed_date) # 2024-04-01 12:00:00+00:00
날짜 문자열을 datetime 객체로 변환합니다.
7. EnumOutputParser (열거형 변환)
from langchain_core.output_parsers import EnumOutputParser
from enum import Enum
# Enum 정의
class Emotion(Enum):
HAPPY = "happy"
SAD = "sad"
ANGRY = "angry"
# Enum 파서 생성
parser = EnumOutputParser(enum=Emotion)
# 변환 실행
parsed_enum = parser.parse("happy")
print(parsed_enum) # Emotion.HAPPY
'Data & Research' 카테고리의 다른 글
[LLM & RAG] LCEL Runnable (0) | 2025.04.03 |
---|---|
[LLM & RAG] Langchain 기초 - Memory (0) | 2025.04.03 |
[LLM & RAG] Langchain 기초 - LLM (0) | 2025.04.03 |
[LLM & RAG] Langchain 기초 - Prompt (0) | 2025.04.03 |
[LLM & RAG] Langchain 기초 - Chain (0) | 2025.04.03 |