NIRVANA

[LangChain] LangChain 노트 CH03 정리 본문

AI/LangChain

[LangChain] LangChain 노트 CH03 정리

녜잉 2024. 7. 12. 10:17

CH03 출력 파서 (output parser)

LangChain의 출력 파서는 언어 모델의 출력을 더 유용하고 구조화된 형태로 변환하는 중요 컴퍼넌트이다. 

 

1. 출력파서의 역할

  • LLM의 출력을 받아 더 적합한 형식으로 변환
  • 구조화된 데이터 생성에 매우 유용
  • LangChain 프레임워크에서 다양한 종류의 출력 데이터를 파싱하고 처리 

 

2. 주요 특징

1) 다양성: LangChain은 많은 종류의 출력 파서를 제공

2) 스트리밍 지원: 많은 출력 파서들은 스트리밍을 지원

3) 확장성: 최소한의 모듈부터 복잡한 모듈까지 확장 가능한 인터페이스를 제공 

 

3. 출력파서의 이점 

1) 구조화:LLM의 자유 형식 텍스트 출력을 구조화된 데이터로 변환

2) 일관성: 출력 형식을 일관되게유지, 후속 처리를 용이하게 함

3) 유연성: 다양한 출력 형식(JSON, 리스트, 딕셔너리 등)으로 변환이 가능 

 

 

LangChain의 출력파서는 LLM 기반 애플리케이션 개발에 있어 중요한 도구로, 개발자는 이를 통해 LLM의 출력을 보다 효과적으로 활용하고, 구조화된 데이터로 쉽게 변환할 수 있음 

 


01. Pydantic 출력 파서

pydanticOutputParser

PydanticOutputParser는 언어 모델의 출력을 더 구조화된 정보로 변환하는 데 도움이 되는 클래스로, 단순 텍스트 형태의 응답 대신 사용자가 필요로 하는 정보를 명확하고 체계적인 형태로 제공함. 

 

PydanticOutputParser에는 두 가지 핵심 메서드가 존재

  • get_format_instructions()
    • 언어 모델이 출력해야 할 정보의 형식을정의하는 지침을 제공
    • 설정하는 지팀의 역할이 매우 중요, 지침에 따라 언어 모델이 출력을 구조화하고 이를 특정 데이터 모델에 맞게 변환 가능 
  • parse()
    • 언어 모델의 출력(문자열로 가정)을 받아들이고, 이를 특정 구조로 분석 및 변환
    • Pydantic과 같은 도구를 사용, 입력된 문자열을 사전 정의된 스키마에 따라 검증하고 해당 스키마를 따르는 데이터 구조로 변환 

 

with_structured_output(Pydantic) 을 사용하여 출력 파서를 추가할 경우, 출력을 Pydantic 객체로 변경 가능하다.
 
 
 

02. 콤마 구분자 출력 파서(CommaSeparatedListOutputParser)

  • 쉼표로 구분된 항목 목록을 반환할 필요가 있을 때 유용하게 사용 
  • 사용자가 입력한 데이터나 요청한 정보를 수미포로 구분하여 명확하고 간결한 목록 형태로 제공 받는 것이 가능 

ex) 여러 개의 데이터 포인트, 이름, 항목 또는 다른 종류의 값들을 나열할 때 이를 통해 효과적으로 정보 정리 및 사용자 전달 가능 

  • 정보를 구조화하고, 가독성을 높이고, 데이터를 다루거나 리스트 형태의 결과를 요구하는 경우에 매우 유용 

 


 

03. 구조화된 출력 파서(StrucutredOutputParser)

  • LLM에 대한 답변을 dict 형식으로 구성, Key-value 쌍으로 갖는 여러필드를 반환하고자 할 때 사용
  • Pydantic/Json 파서보다 덜 강력하지만, GPT 등 인텔리전스가 낮은(= parameter 수가 낮은) 모델에 유용 

 

StructuredOutputParser는 response_schemas를 사용하여 초기화, 정의된 응답에 따라 출력을 구조화 

 

 


04. JSON 출력 파서

사용자가 원하는 JSON 스키마를 지정할 수 있게 하며, 그 스키마에 맞게 LLM에서 데이터를 조회하여 결과를 도출

단, LLM이 데이터를 정확하고 효율적으로 처리하여 원하는 형태의 JSON을 생성하기 위해서는 모델의 용량이 충분해야 함 

 


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

DataFrame

  • python 프로그래밍 언어에서 널리 사용되는 데이터 구조
  • 데이터 조작 및 분석을 위해 흔히 사용됨
  • 구조화된 데이터를 다루기 위한 포괄적 도구 세트를 제공
  • 데이터 정제, 변환 및 분석 등 작업에 다양하게 활용 
format_parser_output() 함수는 파서를 출력 사전 형식으로 변환, 출력 형식을 지정하는 데 사용됨 
 
 

 

06. 날짜 형식 출력 파서(DatetimeOutputParser)

LLM의 출력을 datetime 형식으로 파싱하는 데 사용

 


 

07. 열거형 출력 파서(EnumOutputParser)

실습 코드 참고

 


08. 출력 수정 파서(OutputFixingParser)

  • 출력 파싱 과정에서 발생할 수 있는 오류를 자동으로 수정하는 기능 
    • 추가적인 LLM 호출을 통해 오류를 수정 

 

출력 수정 파서의 접근 방식

1) 첫번째 시도에서 스키마를 준수하지 않은 결과가 나올 경우, 출력 수정 파서가 자동으로 형식이 잘못된 출력을 인식

2) 잘못된 형식을 수정하기 위해 새로운 명령어와 함께 모델에 다시 제출

3) 다시 제출하는 과정에서, 수정을 위한 명령어는 오류를 정확히 지적하고, 올바른 형식으로 데이터를 재구성할 수 있도록 구체적인 지시를 포함해야 함 

 

 

 

 


 

해당 강의를 보고 정리하였습니다!

 

https://wikidocs.net/book/14314

 

<랭체인LangChain 노트> - LangChain 한국어 튜토리얼🇰🇷

**추천**은 공유할 수 있는 무료 전자책을 집필하는데 정말 큰 힘이 됩니다. **추천** 한 번씩만 부탁 드리겠습니다🙏🙏 ✅ **랭체인 한국어 튜토리얼 강의** …

wikidocs.net