AI 응답을 JSON으로 안전하게 받기 — Output Parser 실전
AI가 만든 답을 화면에 그냥 보여주기만 할 거면 문제가 없습니다. 그런데 그 답을 데이터베이스에 저장하거나 다른 시스템에 넘기려면 이야기가 달라집니다. 자유롭게 쓴 문장은 프로그램이 다루기 나쁘거든요. 이걸 해결하는 게 Output Parser입니다. 신입들이 꼭 한 번 겪는 실수 제가 팀에서 자주 보는 장면이 있습니다. 프롬프트에 "JSON으로 답해"라고만 적고 json.loads() 로 바로 파싱하는 거예요. 데모에선 잘 됩니다. 그러다 어느 순간 모델이 ```json 코드블록으로 감싸거나 "네, 결과입니다:"를 앞에 붙이면서 파싱이 깨집니다. Output Parser는 이 "형식이 들쭉날쭉한 문제"를 표준화해 줍니다. JsonOutputParser 기본 사용 from langchain_core.prompts import ChatPromptTemplate from langchain_core.output_parsers import JsonOutputParser from langchain_openai import ChatOpenAI parser = JsonOutputParser() prompt = ChatPromptTemplate.from_template( "다음 상품평에서 감정과 별점을 뽑아줘.\n{format}\n상품평: {review}" ).partial(format=parser.get_format_instructions()) chain = prompt | ChatOpenAI(model="gpt-4o-mini") | parser print(chain.invoke({"review": "배송은 느렸지만 품질은 만족해요"})) # {'sentiment': '긍정', 'rating': 4} 같은 dict로 바로 나옴 핵심은 get_format_instructions()...