Jevfast.com의 판단 차트로 추적하는 Jev의 응답부터 실행까지
요약
본 글은 AI가 내린 판단(응답)과 그 응답에 사용된 입력 과정을 추적하는 방법을 다룹니다. Jevfast.com의 'What Jev decides'는 지시, 상태, 응답을 차트로 보여주며, 이를 통해 AI의 의사결정 과정을 투명하게 검토할 수 있습니다. 특히 `validate_choice`와 같은 기능을 활용하여 후보 ID, 확률 일관성 등을 코드 레벨에서 검증하는 방법을 설명합니다.
핵심 포인트
- AI 판단 과정 추적: 응답과 입력 과정을 함께 확인해야 합니다.
- Jevfast의 차트 분석: 지시(Instruction), 상태(State), 응답(Response)를 시각화합니다.
- 코드 기반 검증: `validate_choice` 등을 이용해 후보 ID와 확률 일관성을 검사할 수 있습니다.
- 자동 권한 검토기 (fx): 악의적인 동작이나 정책 위반 여부를 판정하는 데 사용됩니다.
브라우저 조작 로그에 단순히 CLICK만 남아 있어도, 어떤 화면을 보고 어느 후보를 선택했는지는 알 수 없습니다. AI의 판단을 검토하려면, 응답과 그 응답에 전달된 입력을 함께 확인할 필요가 있습니다.
Jevfast.com의 'What Jev decides'는 소스 코드를 확인한 프로젝트에 대해, Jev에게 전달하는 지시와 상태, 그리고 응답을 나열한 차트입니다. 이 글에서는 Jev Ultrafast와 fx를 사용하여, 응답이 실제 조작으로 바뀌는 부분을 읽어봅니다. 마지막으로, 브라우저 조작 검토용 작은 테스트 예시를 보여드리겠습니다.
Jev는 TypeSafe AI의 판단용 모델입니다. 여기서 다루는 Choice는 앱이 전달한 후보 중에서 답을 선택하는 형태입니다. 후보를 만드는 처리와 그 답을 실행하는 처리는 각 프로젝트의 코드에 있습니다.
[IMG:N]은 기록된 응답의 예시이며, 3문제 중 2문제를 보여주고 있습니다.
이 장면의 목표는 취리히에서 런던으로 가는 편도 티켓을 찾는 것입니다. 화면은 왕복 설정 상태이며, 출발지와 목적지는 아직 비어 있습니다.
- 조작 질문에서는
CLICK이 0.77입니다. - 클릭 대상 질문에서는[12] Change ticket type: Round trip이 0.88입니다.
이 두 값은 서로 다른 질문의 후보에 붙은 확률입니다. 예약 성공률로 읽거나 곱해서 태스크 전체의 성공률을 계산할 수는 없습니다.
고정 커밋의 model.py를 읽어보면, 화면에서 관측한 요소를 조작별 후보에 모아 놓았습니다. 조작이 결정되면, 그 조작에 대응하는 대상 응답을 검증하고, 후보에 붙은 액션 ID를 추출합니다. 사용하지 않는 조작의 대상 응답이 그대로 다른 조작을 일으키는 구조로 되어 있지는 않습니다.
또한, validate_choice는 후보 ID, 확률 범위와 합계, 선택된 후보와 최대 확률의 일관성 등을 검사합니다. 응답이 JSON으로 읽을 수 있을 뿐만 아니라, 앱이 준비한 후보와도 일치하는지 확인할 수 있습니다.
차트 왼쪽의 화면 상태와 오른쪽에서 선택된 대상을 비교하면, 이 대응 관계를 코드에서 찾기 쉽습니다. Jevfast의 Ultrafast 페이지에는 차트와 소스 링크가 있습니다.
[IMG:N]의 답변은 설명용입니다. 실제 Jev 응답을 기록한 것은 아닙니다.
fx는 Zig 사의 코딩 에이전트로, 임의 설정으로 Jev를 사용하는 자동 권한 검토기(automatic permission reviewer)가 있습니다. 이 경로에서는 구체적인 프롬프트 인젝션이나 악의적인 동작이 있는지 clear / caution로 판정합니다.
고정 커밋의 요청 구성 처리에는 다음 입력들이 있습니다:
| 입력 | 검토 시 확인할 것 |
|---|---|
review_policy | 무엇을 허가/거부할 기준인지 |
review_context | 판정에 필요한 주변 정보가 있는지 |
pending_action_tool | 대상 툴 이름이 맞는지 |
pending_action_arguments | 실제로 실행할 인자와 일치하는지 |
pending_action_call_id | 어느 호출에 대한 응답인지 추적 가능한지 |
차트에서는 권한 질문에도 대상 조작을 입력하고 있음을 읽어낼 수 있습니다. 예를 들어, 툴 이름만 같더라도, 작성할 경로나 전송지가 다르면 검토 대상도 달라집니다.
이 검토기의 clear는 해당 정책으로 구체적인 악의를 발견하지 못했다는 분류입니다. 삭제나 전송을 포함한 조작 전반의 안전성을 보장하는 값으로는 취급할 수 없습니다. fx는 응답을 기존의 permission_decision 인터페이스에 전달하고, 확률이나 confidence를 추적용으로 기록합니다. 이것들을 추가적인 판정 임계치로 사용하지는 않습니다.
fx의 Jevfast 페이지에서 질문 범위를 확인한 후 코드를 읽으면, 어디까지를 모델에게 판단하게 했는지 추적할 수 있습니다.
Ultrafast의 예를 참고하면, 처음에 검토할 수 있는 것은 '선택된 조작에 그 대상이 포함되는가'입니다.
아래는 이 글을 위한 Python 최소 예시입니다. 원 프로젝트의 구현이나 Jev API 클라이언트가 아닙니다. 확률 검증, 화면 재획득, 권한 확인은 포함하지 않고, 조작과 대상의 대응 관계만 검사합니다. 코드는 브라우저를 조작하지 않습니다.
이 테스트가 통과하더라도, 버튼이 의도한 목적에 맞는지 여부는 별도로 확인해야 합니다. 화면이 업데이트되었다고 해서 저장된 번호가 동일한 요소를 가리킨다고 단정할 수 없습니다. 실제로 구현할 때는 관측된 화면과 후보 목록을 함께 저장하고, 실행 직전의 대상과의 대응 관계까지 확인할 수 있는 설계가 필요합니다.
두 가지 예시에서는 판단에 사용되는 입력값과 응답을 전달하는 목적지가 다릅니다. 따라서 동작(operation)을 추가할 때에는 다음 항목들을 하나의 판단 단위로 추적할 수 있도록 하면, 실패한 부분을 조사하기 쉬워집니다.
| 기록 | 확인하고 싶은 문제 |
|---|---|
| 지시와 상태 | 모델에 필요한 정보를 전달했는지 |
| ... | |
| 이러한 기록에 비밀 정보나 개인 정보가 포함되는 경우, 저장할 항목과 접근 권한을 제한해야 합니다. 공개 기사의 그림에도 실제 응답인지 설명용 답변인지를 함께 표기하면, 독자가 결과를 평가하는 데 도움이 됩니다. |
Jevfast.com의 판단 차트는 이 검토를 시작하기 위한 청사진으로 활용될 수 있습니다. 사용하고 싶은 패턴을 찾았다면, 링크된 고정 커밋(fixed commit)에서 응답 검증과 실행 처리까지 확인해 보세요.
작성자는 Jevfast.com 운영자입니다. Jevfast는 TypeSafe AI와 독립적인 사이트입니다. 본문은 AI의 지원으로 작성 및 교정되었으며, 기재된 소스 코드와 차트를 확인했습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기