LLM에 대한 답변을 dict 형식으로 구성하고
key / value 쌍으로 갖는 여러 필드를 반환하고자 할 때 사용 할 수 있다.
Pydantic / JSON 파서가 더 강력하지만, 이는 덜 강력한 모델에 유용하다
(로컬모델과 같은 인텔리전스가 GPT, Claude 모델보다 인텔리전스가 낮은(parameter 수가 낮은) 모델)
로컬 모델은 Pydantic 파서가 동작하지 않는 경우가 많으므로,
대안으로 StructuredOutputParser를 사용할 수 있다.

StructuredOutputParser만의 특징 중 하나인
ResponseSchema이다.
필요한 만큼 필드 추가가 가능하다.

다른 파서들과 마찬가지로 파서 객체를 생성 및 초기화하고
.get_format_instructions()로 형식 지침을 가져온다

체인 구성 역시 다른 파서들처럼 마지막에 파서를 연결해주어야 한다

ResponseSchema 클래스를 사용해서 사용자의 질문에 대한 답변과 사용된 소스(웹사이트)에 대한 설명을 포함하는 응답 스키마를 정의한다.

StructuredOutputParser를 response_schemas를 사용하여 초기화하여, 정의된 응답 스키마에 따라 출력을 구조화한다.
StructuredOutputParser의 역할







StructuredOutputParser의 장점





데이터의 출처 추적이 중요할 때,
여러 소스의 정보를 통합할 때,
정보의 신뢰성 검증이 필요할 때
쓸 수 있다.
for s in chain.stream({"question": "세종대왕의 업적은 무엇인가요?"}):
# 스트리밍 출력
print(s)
이 파서 역시 chain.stream을 통해 스트림 응답을 받을 수 있다.