카테고리 없음
langchain 기초(4)
도그사운드
2025. 4. 17. 15:56
🔧 문제 인식
- 출력은 단순 텍스트로 되어 있어 백엔드에서 활용하기 어려움
- 이를 직렬화(serialize) 하여 **프론트엔드 또는 다른 시스템과의 통신에 적합한 구조화된 데이터(JSON 등)**로 바꾸는 작업이 필요함
🧩 해결 방법 – LangChain의 PydanticOutputParser
- LangChain의 Output Parser를 사용해 LLM의 텍스트 출력을 구조화된 데이터로 변환
- PydanticOutputParser는 LLM의 텍스트를 Pydantic 객체로 파싱함
✅ 구현 요약
- Summary 클래스 정의 (Pydantic 사용)
- summary: str (요약)
- facts: List[str] (흥미로운 사실 목록)
- PydanticOutputParser 생성
summary_parser = PydanticOutputParser(pydantic_object=Summary) - 프롬프트 템플릿 구성
- format_instructions placeholder 추가
- partial_variables={"format_instructions": summary_parser.get_format_instructions()}
- LangChain Expression Language(LCEL) 활용
- summary_prompt_template | llm | summary_parser 구조로 체인 작성
- 결과
- LLM 응답을 Summary 객체로 받아옴
- .summary, .facts 등 속성으로 접근 가능
- .to_dict()로 직렬화 가능
📦 장점
- 출력 데이터를 JSON으로 직렬화 가능 → 다른 시스템에서 사용 용이
- 구조화된 출력 덕분에 프론트엔드와의 연결이 수월해짐
- 복잡한 스키마도 LangChain + Pydantic으로 깔끔하게 구현 가능