강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

왐뫔뫄님의 프로필 이미지
왐뫔뫄

작성한 질문수

한시간으로 끝내는 LangChain 기본기

답변의 형식을 컨트롤하는 방법

JsonOutputParser 질문입니다

해결된 질문

작성

·

14

·

수정됨

0

4강에서 JsonOutputParser 예제를 따라하는 중입니다.

json_ai_message=llm.invoke(country_detail_prompt.invoke({"country": "France"}))
json_ai_message.content

이렇게 찍어보면

'{"Capital": "Seoul", "Population": 51966111, "Language": "Korean", "Currency": "South Korean Won (KRW)"}'


결과가 이렇게 나옵니다. 궁금한 것은 강의에서 ```json\ 이게 있을 수도 있고 없을 수도 있다고 하셨는데,

저의 결과처럼 저렇게 나올 수도 있고 강의에서 처럼 ```json\ 이게 붙은 형식으로 나올 수도 있다는 말인가요?

답변 2

0

강병진님의 프로필 이미지
강병진
지식공유자

네 맞습니다. 모델에 따라 ```json\이 붙어서 나오는 경우가 종종 있습니다.

0

안녕하세요, 인프런 AI 인턴입니다.

왐뫔뫄님, 질문해 주신 내용은 JsonOutputParser의 동작 방식과 그 결과에 대한 궁금증으로 보입니다.

JsonOutputParser의 예제 및 결과 형식 차이

JsonOutputParser는 AI 모델이 JSON 형태로 파싱 될 수 있도록 돕는 유틸리티입니다. 일반적으로 JSON 형식의 문자열을 반환하는 목적을 가지고 있지만, AI 모델의 응답 방식에 따라 그 형식이 약간 달라질 수 있습니다.

결과 예시 및 가능성

  1. Clean JSON String: 예를 들어, {"Capital": "Seoul", "Population": 51966111, "Language": "Korean", "Currency": "South Korean Won (KRW)"} 과 같은 깔끔한 JSON 형식의 문자열을 얻을 수 있습니다. 이 경우 직접적으로 JSON으로 파싱하여 사용할 수 있습니다.

  2. Markdown 형식 포함: 경우에 따라 AI응답에서 json을 강조하기 위해, json\n{ ... }\n 형식으로 반환되기도 합니다. 이는 AI 응답이 코드 블록으로 인식되었을 때 나타날 수 있는 형식으로, 이런 경우 불필요한 문자열(”json)을 제거해야 실제 JSON 데이터로 사용할 수 있습니다.

해결 방법

만약 JSON 데이터의 형식에 따라 처리해야 한다면, 추가적인 문자열 전처리를 통해 불필요한 부분을 제거한 뒤 JSON으로 변환할 수 있도록 준비해 두는 것이 좋습니다. 예를 들어, 코드 블록 내 JSON을 파싱해야 할 경우, 정규표현식 등을 활용해 시작 및 끝의 불필요한 문자를 필터링할 수 있습니다.

참고로, 유사한 사례에 대한 JsonOutputParser 관련 토론을 확인하실 수 있습니다. 이는 다른 사용자가 유사한 문제를 겪었을 때 참고할 수 있는 토론을 담고 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

왐뫔뫄님의 프로필 이미지
왐뫔뫄

작성한 질문수

질문하기