7장 응답 계약으로 환각의 피해를 줄인다
자유 형식 문장은 사람이 읽기에는 좋지만 코드가 소비하기에는 약하다. 실제 어댑터는 Structured Outputs의 JSON Schema를 사용한다. 세 필드를 모두 필수로 하고 추가 속성을 막는다. 스키마 검증은 내용의 진실을 보장하지 않지만 파싱 실패와 형식 흔들림을 크게 줄인다.
text: {
format: {
type: 'json_schema',
name: 'brief_analysis',
strict: true,
schema
}
}
스키마 다음에도 애플리케이션 검증이 필요하다. 질문 배열 길이, 금지된 개인정보, 근거 없는 법률·의료 판단을 확인한다. AI 출력은 명령이 아니라 신뢰하지 않는 입력으로 취급한다. 화면에 HTML로 삽입하지 않고, 도구 호출 인자는 허용 목록과 승인 정책을 다시 통과시킨다.
실패를 일부러 만들기
mock의 questions를 문자열로 바꾼 뒤 테스트가 실패하는지 확인하고 즉시 되돌린다. 계약 테스트가 없었다면 오류는 화면 렌더링까지 이동했을 것이다. 실패 위치를 경계 가까이에 둘수록 원인을 찾기 쉽다.