3.5. 데이터프레임 출력 파서 (PandasDataFrameOutputParser)

PandasDataFrameOutputParser는 특히 표 형태의 데이터를 처리하거나 분석해야 할 때 유용하며, 데이터 과학 및 분석 작업에서 강력한 도구로 활용됩니다.

PandasDataFrameOutputParser는 LangChain의 출력 파서 중 하나로, LLM의 텍스트 출력을 Pandas 데이터프레임 형태로 구조화합니다. Pandas는 Python에서 데이터 분석을 위한 강력한 라이브러리로, 데이터프레임은 행과 열로 구성된 표 형태의 데이터 구조입니다. 이 파서를 사용하면 LLM 모델이 생성한 비정형 텍스트를 데이터프레임으로 변환하여 데이터 분석, 시각화, 또는 추가 처리를 쉽게 수행할 수 있습니다.

주요 특징

  • 구조화된 출력: 텍스트 기반의 LLM 출력을 표 형태로 변환.
  • 유연한 데이터 처리: 다양한 형식의 입력을 처리하여 데이터프레임으로 변환.
  • Pandas 통합: 데이터프레임의 강력한 기능을 활용하여 데이터 조작 및 분석 가능.

PandasDataFrameOutputParser 사용 방법

PandasDataFrameOutputParser는 LLM의 출력을 데이터프레임으로 변환하기 위해 다음과 같은 단계를 거칩니다:

  1. 프롬프트 템플릿을 정의하여 모델이 구조화된 출력을 생성하도록 유도.
  2. PandasDataFrameOutputParser를 사용하여 출력을 파싱.
  3. 결과 데이터프레임을 활용하여 분석 또는 후속 작업 수행.

예제: 데이터프레임 출력 생성

아래는 EXAONE-3.5 모델과 PandasDataFrameOutputParser를 사용하여 간단한 데이터프레임을 생성하는 예제입니다. 이 예제에서는 학생들의 이름과 점수를 포함한 데이터프레임을 생성합니다.

from langchain_ollama import ChatOllama
from langchain.output_parsers import PandasDataFrameOutputParser
from langchain.prompts import PromptTemplate
import pandas as pd

# 1. 데이터프레임 생성
data = {
    "학생": ["Alice", "Bob", "Charlie"],
    "점수": [85, 90, 78]
}
df = pd.DataFrame(data)

# 2. PandasDataFrameOutputParser 초기화 (dataframe 인자 필수)
parser = PandasDataFrameOutputParser(dataframe=df)

# 3. 프롬프트 템플릿 정의 (query를 입력 변수로 사용)
prompt = PromptTemplate(
    template=(
        "다음 데이터프레임에서 '{query}'에 해당하는 정보를 "
        "아래의 출력 형식({format_instructions})에 맞게 반환하세요.\n"
        "데이터프레임:\n{df}\n"
        "출력 형식 외의 설명이나 예시는 절대 포함하지 마세요."
    ),
    input_variables=["query"],
    partial_variables={
        "format_instructions": parser.get_format_instructions(),
        "df": df.to_string(index=False)
    }
)

# 4. 체인 구성
chain = prompt | ChatOllama(model="exaone3.5", temperature=0) | parser

# 5. 체인 실행 (예시: 전체 표 반환)
result = chain.invoke({"query": "평균 점수를 알려주세요."})

# 6. 결과 출력
print(result)
{‘mean’: 84.33333333333333}
  • 모델 초기화: ChatOllama를 사용하여 EXAONE-3.5 모델을 로드합니다. temperature=0은 모델의 출력을 일관되게 유지합니다.
  • 프롬프트 템플릿: PromptTemplate을 사용하여 모델이 데이터를 생성하도록 지시합니다. parser.get_format_instructions()은 파서가 기대하는 출력 형식을 제공합니다.
  • 체인 구성: 프롬프트, LLM, 파서를 연결하여 체인을 구성합니다.
  • 결과 처리: 체인을 실행하여 모델의 출력을 데이터프레임으로 변환합니다.

주의사항 및 최적화 팁

  • 프롬프트 설계: 모델이 기대한 형식으로 출력을 생성하도록 명확한 프롬프트를 작성하세요. 
  • 출력 형식 확인: parser.get_format_instructions()를 사용하여 파서가 요구하는 정확한 출력 형식을 확인하세요.
  • 성능 최적화: 대량의 데이터를 처리할 때는 모델의 응답 시간을 고려하여 배치 처리를 구현하거나, 데이터 크기를 제한하세요.
  • 오류 처리: 모델이 비정형 출력을 생성할 경우를 대비해 예외 처리를 추가하세요. 예를 들어, try-except 블록을 사용하여 파싱 오류를 관리할 수 있습니다.
이 글은 카테고리: 랭체인 (LangChain)에 포함되어 있습니다. 고유주소를 북마크하세요.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다