XGEN 15일 무료 체험 — 설치 없이 브라우저에서 바로 시작하세요체험 신청
PlateerAI Labs
·Reading Time | 2 min
작성 | 유지수

설정을 바꿔도 결과가 같으면 결함입니다(4편)

GS인증 3차 결함 36건의 다수는 에이전트 노드 옵션이었습니다. 고장난 옵션 수리, 보이지 않는 옵션의 가시화, 숫자 파라미터 전수 점검 과정을 정리합니다.

설정을 바꿔도 결과가 같으면 결함입니다(4편) — 커버 일러스트Series · GS인증 개발기시리즈 4번째 글 · 전체 5편 보기

6월 10일에 받은 3차 결함리포트 36건의 다수는 에이전트플로우 노드의 옵션이었습니다. 결함 요약은 대부분 같은 문장이었습니다. "OO 기능이 정상적으로 작동하지 않음." 그런데 코드를 열어 하나씩 재현해 보니 이 문장 뒤에는 서로 다른 두 부류가 섞여 있었습니다. 절반은 실제로 고장나 있었고, 절반은 정확히 동작하고 있었습니다. 그리고 정확히 동작하던 옵션이 더 어려운 숙제였습니다.

시험원의 판정 기준은 1편에서 쓴 그대로입니다. 설정을 바꾸고 실행했을 때 화면에 관찰되는 차이가 없으면 결함입니다. 이 기준으로 노드 옵션을 전부 다시 보게 됐습니다.

고장난 옵션은 고치면 됐습니다

DB 조회 노드의 'Max Rows'는 설정값을 SQL의 LIMIT 절로만 적용하고 있었습니다. 사용자가 쿼리에 자체 LIMIT을 쓰면 설정값이 통째로 무시되어 초과 조회가 일어났습니다. 쿼리를 조작하는 대신 결과를 반환하기 직전에 행 수를 항상 설정값으로 자르도록 바꿔, 쿼리 내용과 무관하게 상한이 지켜지게 했습니다.

웹 검색 노드의 '요약 답변 포함'은 검색 라이브러리가 요약을 부가 데이터 영역에만 담고, AI가 실제로 읽는 도구 출력에는 넣지 않고 있었습니다. 옵션을 켜도 답변이 달라질 수 없는 구조였습니다. API 호출 노드의 '응답 대기 시간'은 타임아웃 이후 에이전트가 같은 도구를 재호출할 때마다 설정 시간만큼 다시 기다려, 사용자에게는 로딩이 끝나지 않는 것처럼 보였습니다. 시간이 초과된 도구는 재호출돼도 실제 호출 없이 즉시 실패로 처리하게 했습니다. 이런 부류는 원인을 찾으면 수정 방향이 자명했습니다.

동작하는 옵션이 더 어려웠습니다

포맷 출력 노드의 '시간 표시'는 반복 실행 기록이 있을 때 각 반복의 타임스탬프를 보여 주는 옵션이었습니다. 그런데 시험 플로우에는 반복 기록을 만드는 노드가 없었고, 표시할 데이터가 없으니 켜도 아무것도 나타나지 않았습니다. 코드에는 결함이 없었지만 시험 판정은 결함이었습니다. 저희는 옵션의 의미를 바꾸는 쪽을 택했습니다. 반복 기록 유무와 무관하게, 켜면 출력 생성 시각이 항상 상단에 표시되도록 재정의했습니다.

이메일 전송 노드의 '전체 출력 포함'도 같은 구조였습니다. 내부 처리 데이터가 없는 플로우에서는 켜고 꺼도 전송 결과가 같았습니다. 켜면 본문 상단에 전송 시각과 원본 출력 길이가 담긴 실행 정보 헤더가 붙도록 바꿔, 어떤 플로우에서든 두 설정의 차이가 눈에 보이게 만들었습니다. 차이가 존재하는 것으로는 부족하고, 차이가 관찰되어야 했습니다.

옵션의 효과가 보이는 위치를 문장으로 밝혔습니다

구조상 최종 답변에 차이가 나타날 수 없는 옵션도 있습니다. '최대 결과 수'는 검색 도구가 수집하는 자료 건수를 제한할 뿐, AI가 답변에 나열하는 항목 수와는 무관합니다. '원본 콘텐츠 포함'의 효과는 도구 출력 로그에서만 확인됩니다. 이런 옵션들은 동작을 바꾸는 대신, 효과를 어디에서 확인할 수 있는지를 안내 문구와 회신에 명시했습니다. 에이전트 노드의 '중간 과정 보여주기'를 켜면 도구 출력에서 차이를 볼 수 있다는 식입니다.

옵션 설명 문구 자체가 결함의 원인인 경우도 있었습니다. '다중 이미지 허용'은 워크플로우 데이터 경로의 이미지 전달을 제어하는 옵션인데, 채팅창에서 직접 첨부하는 이미지는 별도 경로라 이 옵션의 영향을 받지 않습니다. 경로가 다르다는 설명이 없으면 사용자는 옵션이 고장났다고 판단할 수밖에 없습니다.

숫자 파라미터 전체를 다시 점검했습니다

리포트에 적힌 노드만 고치고 끝낼 수도 있었지만, 같은 유형의 지적이 계속 나온다는 것은 표본의 문제가 아니라 모집단의 문제였습니다. 6월 11일, 전체 노드의 숫자형 파라미터를 전수 점검했습니다. 유효 범위 제약이 빠진 파라미터에 범위를 걸고, 안내 문구에 유효 범위 표기를 보완하고, 범위를 벗어난 입력이 들어와도 오류 없이 안전하게 처리되도록 정리했습니다.

이 과정에서 파라미터 설명의 한국어/영어 표기도 함께 손봤습니다. 옵션 하나의 결함 처리 흐름이 "이 옵션이 왜 있는지, 무엇을 바꾸는지, 그 변화를 어디서 확인하는지"를 문장으로 쓰는 일로 끝난다는 것을 이때 배웠습니다. 쓸 수 없다면 그 옵션은 사용자에게 제공할 준비가 안 된 것입니다.

옵션은 코드가 아니라 사용자가 관찰할 수 있는 차이로 존재합니다. 마지막 편에서는 이 기준을 문서와 언어로 확장합니다. 매뉴얼 결함이 왜 전체의 3분의 1을 차지했는지, PDF 매뉴얼을 버리고 위키로 옮긴 이유를 다룹니다.


이전 편 → 실패를 실패라고 말하게 만드는 오류 처리 정비 (3편)

다음 편 → 매뉴얼도 제품이었습니다, GS인증 3주가 남긴 기준 (5편)

#GS인증#에이전트 노드#관찰 가능성#파라미터 검증#XGEN
블로그 목록으로