Jev · AI 에이전트 · LangChain

Jev로 에이전트 하네스의 판단 분리하기

생성형 LLM이 맡던 반복 분류를 Jev의 구조화된 판단으로 분리하고 에이전트 실행 흐름에 배치합니다.

무료 공개 · 최근 수정

반복 판단을 하네스에서 분리하기

AI 에이전트(AI Agent)는 상태를 읽고 다음 행동을 정한 뒤 도구의 결과를 다시 관찰하는 과정을 반복합니다. 이 과정에서 요청 분류, 모델 선택, 도구 호출 위험 판정처럼 답의 범위가 정해진 질문도 자주 등장합니다. 작은 판단마다 생성형 대규모 언어 모델(Large Language Model; LLM)을 호출하면 응답 생성 시간과 비용이 전체 실행에 누적됩니다.

에이전트 하네스(Agent Harness)는 모델, 도구, 상태, 실행 정책을 연결하고 통제하는 바깥 실행 구조입니다. LangChain의 Jev 소개 글은 개방형 생성은 LLM에 맡기고, 정해진 선택지 안의 반복 판단은 Jev에 맡기는 구성을 제안합니다.

다음 그림은 두 역할을 한 하네스 안에서 나누는 흐름을 보여 줍니다.

에이전트 입력을 Jev의 구조화된 판단과 생성형 LLM 작업으로 나누는 하네스 흐름

하네스는 Jev가 반환한 확률과 신뢰도를 정책에 대입합니다. 신뢰도가 낮거나 영향이 큰 작업은 사람의 확인으로 보내고, 조건을 충족한 작업만 다음 단계로 넘깁니다. Jev의 출력 자체가 실행 권한을 대신하지는 않습니다.

Jev의 입력과 출력 이해하기

Jev는 TypeSafe AI가 System One 모델이라고 부르는 분류 모델입니다. 텍스트를 이어 쓰는 대신 상태와 질문을 입력받아 미리 정한 형식의 답과 확률을 반환합니다. 이 구조화된 판단은 일반 코드의 조건문과 라우터가 바로 사용할 수 있습니다. TypeSafe AI의 Jev 발표는 이를 구조화되지 않은 상태를 형식화된 확률 판단으로 바꾸는 모델로 설명합니다.

[참고] 시스템 1과 시스템 2

심리학자 대니얼 카너먼은 『생각에 관한 생각』(원제: Thinking, Fast and Slow)에서 빠르고 자동적이며 직관적인 사고를 시스템 1, 느리고 의식적이며 노력이 필요한 사고를 시스템 2라는 두 행위자의 비유로 설명합니다. TypeSafe AI는 이 구분에서 영감을 받아 빠른 구조화 판단 모델을 “System One Model”이라고 이름 붙였습니다. 이는 명칭과 역할을 설명하기 위한 비유이며, Jev가 인간의 인지 체계를 그대로 구현했다는 뜻은 아닙니다.

질문은 세 유형으로 나뉩니다.

  • Noul: 참인지 거짓인지 묻고 참일 확률을 반환합니다.
  • Choice: 정해진 선택지 가운데 하나를 고르고 선택지별 확률과 전체 신뢰도를 반환합니다.
  • Score: 낮음·보통·높음처럼 순서가 있는 수준을 점수화하고 분포와 신뢰도를 반환합니다.

Noul0.5는 중간 수준이라는 뜻이 아니라 참과 거짓의 가능성이 비슷하다는 뜻입니다. 단계가 있는 상태는 Score로 표현해야 합니다. 같은 상태에 여러 질문을 담으면 각 질문을 한 요청에서 평가할 수 있습니다. 반환값은 일반 코드의 조건문, 라우터, 정책 검사에서 직접 사용할 수 있습니다.

LangChain에서 분류 호출하기

공식 LangChain 통합은 TypeSafeClassifierRunnable로 제공합니다. 다음 예제는 장애 메시지를 상태로 전달하고 긴급 여부와 담당 영역을 함께 묻습니다. 실행에는 Python 3.10 이상, langchain-typesafe 패키지, TypeSafe API 키와 네트워크 연결이 필요합니다.

pip install langchain-typesafe
export TYPESAFE_API_KEY="발급받은_API_키"

API 키를 소스 코드나 저장소에 넣지 않습니다. 환경 변수를 준비한 뒤 다음 코드를 실행합니다.

이 문서 작성일 현재 PyPI에 공개된 langchain-typesafe0.0.1a3 사전 릴리스입니다. 재현 가능한 환경이 필요하면 버전을 고정하고, 업데이트 전에 변경 이력을 확인합니다.

from langchain_typesafe import Choice, Noul, TypeSafeClassifier
 
classifier = TypeSafeClassifier()
 
result = classifier.invoke(
    {
        "state": "배포 뒤 결제 요청이 실패하고 고객 문의가 급증했습니다.",
        "questions": {
            "urgent": Noul(
                instructions="즉시 대응이 필요한 장애인가?",
            ),
            "owner": Choice(
                instructions="어느 영역에서 먼저 확인해야 하는가?",
                criteria={
                    "application": "애플리케이션 코드와 배포 문제",
                    "billing": "결제 설정과 청구 문제",
                },
            ),
        },
    }
)
 
print(result.nouls["urgent"].noul)
print(result.choices["owner"].choice)
print(result.choices["owner"].confidence)

출력값은 입력과 서비스 모델 버전에 따라 달라지므로 특정 숫자를 정답으로 가정하지 않습니다. urgent에는 참일 확률이, owner에는 선택한 영역과 신뢰도가 들어갑니다. LangChain TypeSafe 통합 문서는 현재 statequestions를 모두 invoke()에 전달하도록 안내합니다.

이 예제는 API 자격 증명이 필요한 외부 호출이므로 이 문서 작성 환경에서는 실행하지 않았습니다. 코드의 Python 문법과 현재 공식 API 형태를 확인했으며, 실제 도입 전에는 사용하는 계정과 모델 버전으로 응답 구조를 다시 검증해야 합니다.

에이전트의 결정 지점에 배치하기

Jev가 잘 맞는 지점은 가능한 답과 후속 코드 경로를 미리 정의할 수 있는 곳입니다.

  • 모델 라우팅: 요청의 복잡도나 작업 유형을 분류해 알맞은 모델을 선택합니다.
  • 도구 실행 전 검사: 도구 호출이 위험하거나 권한이 부족할 가능성을 평가합니다.
  • 작업 분배: 지원 요청이나 장애를 담당 팀으로 보냅니다.
  • 품질 판정: 생성 결과가 정한 기준을 충족할 가능성을 점검합니다.

LangChain의 ModelRouterMiddlewareAutoModeMiddleware는 이런 배치 방식을 보여 주는 실험적 미들웨어입니다. 이 기능을 사용하려면 pip install "langchain-typesafe[experimental]"로 실험적 추가 패키지를 설치해야 합니다. 공식 문서는 실험적 API가 예고 없이 바뀔 수 있으며, AutoModeMiddleware가 사람에게 승인을 요청하는 기능은 아니라고 설명합니다. 사람의 승인이 필요하면 별도의 사람 개입(human-in-the-loop) 흐름을 결합해야 합니다.

하네스에서는 확률을 바로 실행 명령으로 바꾸기보다 정책·라우팅 계층을 명시합니다. 예를 들어 낮은 위험 확률에서는 자동 실행하고, 중간 구간에서는 사람에게 확인을 요청하며, 높은 구간에서는 호출을 차단할 수 있습니다. 임계값은 실제 평가 데이터와 실패 비용을 바탕으로 정해야 합니다.

적용 범위와 한계 구분하기

Jev는 보고서 작성, 코드 생성, 열린 질문의 추론처럼 문자열을 만들어야 하는 작업을 대체하지 않습니다. 가능한 답을 미리 정의하기 어려운 문제는 생성형 LLM이 더 적합합니다. 반대로 결과가 if 문이나 정해진 분기로 이어지는 반복 판단은 Jev와 같은 분류 모델을 검토할 수 있습니다.

TypeSafe AI와 LangChain 글에 나온 속도·비용 개선치는 공급사와 통합 제공자가 발표한 수치입니다. 실제 효과는 입력 길이, 질문 수, 네트워크 위치, 비교 모델과 평가 기준에 따라 달라집니다. 도입 전에는 자체 데이터로 정확도, 보정 상태, 지연 시간, 비용과 오분류 영향을 함께 측정해야 합니다.

상태나 도구 인자에 비밀 정보가 있다면 외부 서비스로 전송해도 되는지 먼저 확인합니다. 분류 호출이 실패하거나 신뢰도가 낮을 때 사용할 기본 경로도 정해야 합니다. 안전에 영향을 주는 결정은 단일 모델의 확률만으로 자동화하지 않고 명시적인 권한 검사와 사람의 판단을 함께 둡니다.

참고 문서

설명이 어렵거나 잘못된 부분을 발견하셨나요?

문서 수정 의견 보내기