The difference between "mentioned" and "answered"

개요

기술은 단순히 정보가 언급되었는지를 넘어, 질문에 대한 실질적인 답변이 이루어졌는지 여부를 판단하여 법적 또는 업무적 요구사항을 충족시키는 차세대 AI 에이전트 개발에 초점을 맞춘다.

주요 내용

* "언급"과 "답변"의 차이점: 기존 AI 스크라이브는 대화에서 특정 주제가 언급되면 해당 항목이 완료된 것으로 처리하지만, 이는 법적 서류 작성과 같은 정확성이 요구되는 상황에서 중요한 정보 누락을 야기할 수 있다. 예를 들어, "몇 번 휘청거렸다"는 답변은 "지난 12개월간 낙상 횟수 및 당시 상황"이라는 질문에 대한 명확한 답변이 되지 못한다.
* 판단력의 중요성: "몇 번 휘청거렸다"는 것이 양식의 요구사항을 충족하는지에 대한 판단은 LLM 제품이 오류를 범하기 쉬운 영역이며, 이러한 판단을 신뢰성 있게 수행하여 보고서 생성을 제어할 수 있는지가 핵심이다.
* 평가 우선 설계 (Eval Harness): UI 구축 전에 47개의 레이블링된 케이스를 포함하는 평가 도구(eval harness)를 구축하여, 요구사항별로 실제 답변으로 간주될 경우와 그렇지 않은 경우를 구분하고, AI가 부적절한 답변을 적절하다고 판단하는 경우를 즉시 감지하도록 설계되었다.
* 대칭적이지 않은 기준: 잘못된 "부족함" 판단은 추가 질문 한 번으로 해결될 수 있지만, 잘못된 "충분함" 판단은 법적 문서의 누락된 정보로 이어져 치명적이다. 따라서 기본값은 "부족함"으로 설정한다.
* 함정과 수정: "세 번 넘어졌고, 마지막은 5월 계단에서였다. 아니, 잠시만 - 이건 내 여동생 생각이다. 기억나는 한 넘어지진 않았다."와 같은 사례에서 AI는 취소를 깨끗한 0 반환으로 읽고 항목을 완료했지만, 이는 실제로는 모순이었으며, 이후 수정 규칙을 통해 명확한 답변이나 거부가 있을 때만 이전 발언이 적용되도록 했다.
* 아키텍처 및 의사 결정: Google ADK 2.6.2, Cloud Run, Gemini 3.6 Flash on Vertex AI를 사용하며, 세션 상태는 Firestore에 저장한다. "전사(transcribe) → 라우팅(route) → 판단(adjudicate, fanned out) → 코칭(coach)"의 파이프라인을 사용하며, 대화 전체를 누적하지 않고 각 호출에 열린 항목, 고정된 크기의 현재 값, 새로운 오디오를 전달하여 비용 효율성을 높인다.
* 판단(Adjudication)의 분산 처리: 각 항목에 대한 판단을 독립적으로 수행하여 한 항목의 오류가 다른 항목에 영향을 미치지 않도록 하고, 개별 항목별로 점수 평가가 가능하며, 병렬 호출이 거의 무료로 수행되는 장점이 있다.
* 라우터(Router)의 역할: 각 열린 항목이 모든 오디오 청크에 대해 개별적으로 판단되는 것을 방지하기 위해, 라우터는 먼저 관련 항목을 분류하여 비용을 절감한다.
* 프롬프트가 아닌 타입으로 강제되는 규칙: AI는 도메인 콘텐츠를 직접 작성하지 않고, 사람이 작성한 양식에 대한 커버리지를 추적하며 의존한 부분을 인용한다. "항목 M14에 대한 기록된 답변 없음"과 같이 말하며, "이는 낙상 위험을 나타낼 수 있다"와 같은 해석적 추측을 하지 않도록 출력 스키마를 설계했다.
* 개인 정보 보호 강화: 사용자 신원은 세션 단위로 제한되며, 영구 메모리는 전문가에게만 국한된다. 답변은 원본 그대로 인용하며, 민감 정보는 세션 문서에만 존재하고 세션 종료 시 함께 삭제된다.
* 학습 및 거부: AI는 특정 전문가의 인터뷰를 돕는 데 더 능숙해지지만, 인터뷰 대상자에 대한 정보는 학습하지 않는다. 첫 질문에 항목을 닫는 질문 형식이나 전문가가 무시하는 항목 ID 등을 학습하지만, 개인의 건강 상태에 대한 AI 자체적인 추측이나 해석은 거부한다.
* 보고서 생성 전 상태: 보고서 생성 전, 모든 필수 항목은 "답변됨 (원본 인용)", "공식적으로 거부됨 (양식 허용 시)", "에스컬레이션됨 (AI가 후속 조치 초안 작성 및 라우팅)"의 세 가지 상태 중 하나로 결정된다.
* 에스컬레이션 기능: 미해결 항목에 대해 양식의 용어 그대로 아직 기록되지 않은 내용, 종결되지 않은 이유, 그리고 미리 정의된 목록에서 목적지를 선택하여 에스컬레이션한다. (예: "주택 접근 및 위험 · 방문 중 기록되지 않음 → 작업 치료 큐.")
* 개발 중 문제점: GOOGLE_GENAI_USE_VERTEXAI=TRUE 설정 누락, SequentialAgent의 Deprecated 및 호환성 문제, Workflow와 LlmAgent의 중첩 방식 오류, 문서보다는 설치된 패키지의 시그니처 확인의 중요성 등을 경험했다.
* 오디오 입력 문제 발견: 실제 마이크를 사용한 테스트에서 오디오 청크가 도착하고 파이프라인이 실행되었으나, AI가 실제 작업을 수행하지 못하는 문제가 발생했다. 이는 트랜스크라이버가 단일 사용자를 전문가로 잘못 분류하여 인터뷰이의 발언을 무시했기 때문이었다. 이 문제를 해결하기 위해 트랜스크라이버가 방의 인원수를 파악하여 단일 목소리를 인터뷰이로 정확히 레이블링하도록 수정했다.
* 현황 및 향후 계획: 47개의 레이블링된 케이스에서 "충분함"으로 100% 정확도를 보이며, 인간이 "부족함"으로 레이블링한 답변을 "충분함"으로 잘못 판단한 적은 없다. 133개의 백엔드 테스트가 있으며, AI 판단 대신 결정론적 코드로 평가되는 파이프라인 행동 평가에서 18/18점을 받았다. 또한, 보험 손해 사정 분야에서도 동일한 엔진으로 코드 변경 없이 적용되는 것을 통해 수직적 확장성을 확인했다. 다음 단계로는 사용자별 고유 ID를 구현하여 보안을 강화할 계획이다.

시사점

AI 에이전트는 단순 정보의 언급을 넘어, 맥락과 정확성을 판단하여 실질적인 답변을 제공하는 방향으로 발전하고 있으며, 이러한 정확성 확보는 법적, 업무적 신뢰도 향상에 필수적이다.

원문 읽기 →
원문을 불러오는 중...

댓글

GitHub Discussions